专栏首页FreeBuf浅谈HTTP隐蔽隧道下的RDP暴力破解测试

浅谈HTTP隐蔽隧道下的RDP暴力破解测试

0x0 前言

HTTP隧道用于在受限网络连接的条件下在两台计算机之间创建网络链接,用于绕过IDS、Firewall一类的安全设备限制实现基于HTTP协议的通信,常常用于内网里面的端口转发与流量代理由于HTTP通信流量往往与正常流量差异较少一般不容易被检测出来。

由于工作需要就简单的做了一下研究与分析,个人愚见大佬勿喷。

0x1 部署

HTTP隧道的工具种类也比较多就找了一个经典的reGeory,之前也研究过php的Tunna-v1.1版本但是里面涉及到dll的导入函数在新版的php版本当中已经废弃了这里巨坑。

reGeory github连接如下:

https://github.com/sensepost/reGeorg

web服务器使用window2008+java+tomcat的环境:

reGeorg支持多种web环境的脚本,特别区分了一个tomcat5的版本。

Kali本地访问远程服务器上面的tunnel.jsp成功返回后,利用reGeorgSocksProxy.py脚本监听本地的9999端口,这里就建立了一个通信的链路。

同时查看本地端口可以发现9999端口已经开启。

kali本地配置一下proxychains:

0x2 暴力破解测试

传统的web系统服务器往往通过NAT转换后不会讲本地的3389开放到公网,基于互联网的暴力破解很容易就被传统的安全设备捕获到异常很快就被锁定了,使用HTTP隧道进行端口转发可以直接访问到web服务器的3389端口,进行暴力破解的流量特征也不明显。

本地调用hydra对web服务器的3389进行暴力破解:

流量层面捕获到的都是http流量无rdp协议的流量,cap包里面的字段基本无可读性。

暴力破解成功后可以直接映射端口使用rdesktop实现远程登录:

依稀还能看到hydra暴力破解成功后的登录痕迹:

在系统的安全事件当中可以分析到相关的日志,源IP为真实发起攻击的IP地址。

0x3 流量分析

本地查看一个tunnel.jsp的connect方法实现代码,主要调用了socket.channel定义了一个连接到TCP网络套接字的通道。

IP与Port都是从HTTP Header当中的变量获取,cmd的执行命令也是从header当中获取,并用x-status来标记当前的状态值,同时本地设置了一个sessions保存当前的socketchannel回话。

在wireshark获取到的流量中就可以轻易发现,IP与端口在最开始连接的时候都是通过URL进行传递。

Connect连接到IP与端口,3389为rdp暴力破解的端口:

统计一下关于tunnel.jsp的请求参数与变量请求数量如下:

cmd的主要参数包括forward,read,disconnect,connect几个参数,数据包的主要请求几种在read与forward的参数传递过程,每次请求的相隔时间也是非常的短。

关于forward的代码实现如下:

先从session当中获取到socketchannel之后定义了一个buf确认要发送的内容。

SocketChannel.write()方法的调用是在一个while循环中的,由于Write()方法无法保证能写多少字节到SocketChannel,重复调用write()直到buf没有要写的字节为止。

流量层面的表现如下:

客户端在设置header参数的关键代码如下,cookies、content-type、connection选项都有,感觉还是差了一个User-Agent、referred这些常见的头参数完全可以伪造一个这些参数做的更真一些。

有二个情况会触发break操作,传递的data内容为空时或者status状态码不为OK时。

0x4 总结

1.HTTP隧道的流量与正常的网站访问流量差异较少能够较好的避开安全设备的检测,再配合一些web命令执行或上传漏洞能够较好的进入内网开启内网漫游之旅。 2. 日常在运维与日志是审计的时候可以结合行为特征与异常参数识别异常的HTTP请求。 3. reGeorg的脚本特征太过于明显了部分杀软已经可以查杀,但是思路好的稍做二次开发后加入免杀又是一条好汉。

*本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

本文分享自微信公众号 - FreeBuf(freebuf)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 照弹不误:出站端口受限环境下反弹Shell的思考

    “是否允许出站”这件事我一直以为无需过多思考,无非限制出站协议,或者限制出站端口,对于限制端口的目标十有八九也会保留 80、443,向这两个端口反弹基本能拿到 ...

    FB客服
  • HTB | “Heist”靶机渗透详细思路

    先打开网站看看。是一个登陆框,使用弱口令和注入都无果。在网页中发现了 login as guest页面。

    FB客服
  • Kali Linux渗透基础知识整理(四):维持访问

    *本文原创作者:sysorem 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限。使用木马程序、后门程序和rootkit来达到这一目的。...

    FB客服
  • H3C-限速

    h3c s3610的端口限速如何配置 对端口入方向的报文限速,也就是端口下的PC机上传的速率: # 进入系统视图。

    py3study
  • GNS3使用小错误整理

    1、205-VM: unable to enable NIO for slot 0/16

    py3study
  • Python科学测量与计算库Pymeas

    Python这种脚本语言因其语法简单,工具包丰富成熟,使用起来非常方便。在很多领域被广泛使用,今天介绍的是python在仪器控制应用领域,python在仪器控制...

    py3study
  • 颜学伟:实时音视频与PSTN结合的解决办法

    6月29日,音视频及融合通信技术技术沙龙圆满落幕。本期沙龙特邀请腾讯云技术专家分享关于最新的低延迟技术、全新的商业直播方案等话题,针对腾讯云音视频及融合通信产品...

    云加社区技术沙龙
  • 【vulnhub】DC-1

    192.168.149.150,用 nmap 扫一下:nmap -A 192.168.149.150

    yichen
  • PHPUnit 单元测试安装与使用入门教程

    本文实例讲述了PHPUnit 单元测试安装与使用。分享给大家供大家参考,具体如下:

    砸漏
  • qOverload与qNonConstOverload

      可以看出使用static_cast转换函数指针非常繁琐,我们不如使用qOverload试试看:

    Qt君

扫码关注云+社区

领取腾讯云代金券