- N +

隔离网络环境下的数据渗漏:Meterpreter DNS隧道技术

  对于渗透测试人员来说,Meterpreter是常用的Metasploit环境远程代理,其中内置的多级攻击载荷(payload)非常方便灵活,对管理控制已拿下的远程沦陷机器极为实用。目前来说,Meterpreter支持TCP端口绑定、TCP / IP反向连接以及HTTP进行反向连接的网络代理传输模式。我们在去年的defcon-russia大会上,启动了一个关于Meterpreter下反向DNS隧道实现数据渗漏的开源社区项目,而就在上周,我们也对此在ZeroNights安全会议上也作了演讲。本文中,我想着重对该项目的成果、未来计划、主要优点和特点进行介绍。

  数据渗漏(Data exfiltration):就是黑客将已经在目标网络中获取的信息传递出来的技术,核心就是对欲渗出的数据进行加密、混淆,然后通过一些隐蔽的手段传递出来而不被察觉或检测到。在某些场景中,数据渗漏也可称为数据窃取。

  我们目前的“预发布版”只支持windows平台(包括x64 / x86),主要包含以下组件:

  DNS MSF Bridge是一个用作DNS服务器的Python脚本,它是在互联网上进行域名服务、DNS请求解析和发送封装数据的关键组件,也即行使正常的DNS通道服务。同时,该脚本还为MSF客户端(测试端)绑定了一个TCP端口,以让渗透测试人员利用上述DNS bridge来远程控制已经拿下的目标机器。换句话说,这个脚本的功能就是一个传输代理。目前,我们还没在Ruby中实现“原生”​​的DNS服务,后期会作出考虑。

  该项目主要还在于非常实用:当你做渗透时,只需把这个DNS MSF Bridge脚本放到自架的DNS服务器上,如亚马逊的云端托管服务器EC2,然后把主域名的NS记录和IP对应好,之后,利用MSF框架就可在任何地方与该脚本连接,配合工作。

  除此之外,利用DNS MSF Bridge脚本,我们还实现了多控制端和攻击载荷(Payload)的有效联动支撑,也就是说,对多个目标机器开展工作的两个或多个渗透测试人员可以同时使用DNS MSF Bridge提供的域名和代理服务。目前,DNS MSF Bridge脚本(或代理域名)最多支持26个已攻陷主机的并行控制会话,实现有效数据渗漏。

  目前,该项目支持两种类型的DNS隧道模式:DNSKEY RR(DNS公钥资源记录)和AAAA RR(IPv6地址资源记录),这意味着它可支持shellcode和metsrv代理形式的的所有DNS隧道。

  现在,我们能通过DNS执行整个渗透过程的信息传输,MSF攻击模块传输器(stager)利用DNS通道下载攻击载荷(payload或meterpreer)并在内存运行,而此过程中的meterpreer也是基于同一个DNS传输通道来执行控制任务的,所以,这种管理控制方式相对隐蔽。而使用其它第三方软件(如Powershell/Dnscat2/Iodine)在TCP/IP形式DNS隧道中实现的手段,由于需要指定进程和端口,很容易被目标机器终端杀软或防护软件检测到,与我们采用的数据渗漏方式相比,其隐蔽性明显较差。而且,我们所研究的模式产生的是MSF框架的原生Payload,也就是说,不需要socket套接字和隧道进程/二进制文件/脚本;另外,由于该方式不对TCP/IP头进行封装,只对攻击载荷(Payload)本身和metsrv进程的TLV包(类型-长度-值)封装,所以,从传输速度来说,相对更快。

  AAAA – 速度较慢,但可以在Windows XP中使用。即使目标受害机器中没有使用或安装IPv6架构,也可使用该隧道隧道,为了保证传输顺利通过,我们在响应中只使用保留的IPv6地址。

  编码 – metsvc进程产生的上行通道涉及到一些相应的子域名值,因此我们对其TLV包作了base32编码。

  加密 – 目前我们还没采用其它加密手段,也就是说,Payload能在DNS响应中“透明”有效传输,在AAAA模式下,Payload会被IP地址分段传输,而DNSKEY模式下,Payload则会在每个响应中以16KB片段传输。

  虽然这种数据渗漏传输速度会依环境和网络而有所不同,但在正常的企业网络中,传输速度通常都会很快,如果DNSKEY的shellcodes下载Meterpreter stage需要用时2秒,我觉得在实际中已经足够用了,也还取决其它情况,另外Meterpreter还需几秒时间先加载头文件库StdLib,而且Meterpreter迁移进程也和下载速度有关。

  我还记得曾经我在某公司作为渗透测试人员,当遇到隔离网络环境时,经常会用社工方式发送捆绑PDF exploit的电邮去测试雇员,这种情况下,如果测试成功,如何控制已经拿下的沦陷主机呢?因此,我们研究的这种反向DNS隧道技术就能派上用场了!在某些终端安全防护设备(EDR/EPP)中的限制访问环境下,该技术照样能如入无人之境,渗透于无形,可以说它也是逃离网络沙箱的有效方式。这种反向DNS隧道数据渗漏技术的应用场景在于,如果被拿下的沦陷主机位于LAN/DMZ区域内,只能通过内部企业DNS服务器向外反弹连接的情况。

  另一个很酷的功能就是适用于Windows平台的“无套接字”控制,这主要指我们的代理(meterpreter/pwned进程)不需要生成连接或绑定端口等形式来做DNS解析,因为MS DNS Cache会完成所有工作。这种技术应用打个比仿说,就好像我们把木马程序注入到notepad.exe进程后,notepad.exe会尝试通过本地的企业DNS服务器与我们建立一个DNS隧道,但与该企业DNS服务器的UDP/TCP连接却不是由notepad.exe发起的,而是由svchost.exe完成的,因此在隐蔽性方面效果非常不错。而且,对大多数企业终端安全设备来说,这种技术可以做到遁入无形。

  目前我们正尝试把这种传输技术形成MSF框架分支,一些合并工作也正在进行中,包括创建本地DNS处理程序支持,如果可以使用MSF作为DNS服务器那是最好不过的了。后期如果能与MSF合并成功,将会成为Metasploit的主要模块,届时还可形成更多实用功能,如:

返回列表
上一篇:
下一篇:
评论列表 (暂无评论,共506人参与)

还没有评论,来说两句吧...

发表评论

验证码