黑客会利用DNS协议进行违法犯罪活动,那DNS协议到底是什么?它有何作用?为什么会被选作进行作恶的手段?会造成什么危害?怎么检测及研究现状如何?一连串疑问接踵而至。本篇文章中,我们会为大家一一解答,同时也会介绍山石网科在此领域的发力措施。
1、DNS协议
根据维基百科给出的定义,域名系统(英语 :Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互对映的一个分布式数据库,能够使人更方便地存取互联网。DNS使用TCP和UDP端口53[1]。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
2、DNS协议的发展
1983年,Paul Mockapetris设计并实现了最初的DNS体系结构,推出了RFCs882和883技术规范。
1984年,首台根域名服务器运行在南加州大学(USC)的信息科学研究所(ISI)为ARPANET提供服务。
1985年,第一个域名系统(DNS)已经在互联网上运行。在同年3月15日,麻省理工学院人工智能实验室的电脑公司Symbolics注册了世界上第一个.com后缀http://Symbolics.com。
1987年,域名系统的技术体系也是在互联网工程任务组(IETF)完成了标准化。IETF RFC 1034和IETF RFC1035是域名系统的核心标准,规范了命名规则、数据格式、通信协议(数据单位)、部署机制等技术要素。
1995年,随着互联网的普及,DNS服务迅速发展成为互联网架构中不可或缺的组成部分,DNS的可扩展性和可靠性得到了显著提高。此时,DNS的主要功能是域名到IP地址的映射。
2000年之后,随着IPv6协议的逐渐推广和域名服务器变得更加复杂,DNS协议也逐渐发展出支持IPv6地址和多种DNS记录类型、DNS安全扩展(DNSSEC)等新特性。
近年来,由于互联网的快速发展,DNS协议也面临着新的挑战和发展方向,比如DNS-over-HTTPS(DoH)、DNS-over-TLS(DoT)等技术不断涌现,这些技术可以提高互联网的安全性、隐私性和稳定性。
3、DNS协议滥用及危害
DNS协议是互联网中重要的协议之一,它主要用于将域名解析为IP地址。DNS协议的广泛应用使得它成为了网络攻击者的攻击目标,攻击者通过滥用DNS协议,从而达到某种目的,其主要危害如下:
-
DNS劫持:DNS劫持是指攻击者通过DNS协议中间人攻击修改网络流量的信息,将DNS请求重定向到欺骗网站上,从而窃取用户的信息,甚至导致受害者访问到恶意网站。
-
DDoS攻击:攻击者通过DNS查询请求和响应,制造大量的网络流量,形成DDoS攻击,从而占用网络资源、拖慢网络速度、导致服务不可用等问题。
-
DNS域名枚举:攻击者通过DNS协议中的域名枚举,可以获取目标网络上的有效域名信息,从而使攻击更加准确和有针对性。
-
DNS缓存投毒:攻击者通过篡改DNS缓存或DNS记录,将恶意URL信息写入DNS缓存服务器中,使用户访问时会被恶意重定向到攻击者指定的网站。
-
DNS隧道攻击:攻击者利用DNS协议中的隧道,将数据或信息传递到攻击者控制的服务器,从而窃取机密信息或者利用被感染的设备进行进一步的攻击。
4、DNS隐蔽隧道原理
DNS隐蔽隧道是指在DNS协议内部传输非DNS流量的一种机制,它通过伪造的DNS请求/响应报文来完成隧道数据的传输。当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备出于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量。因此,攻击者可以利用利用DNS协议允许的一些数据字段,比如DNS请求和响应的Payload,来传输非DNS流量。
具体来讲,DNS隐蔽隧道的数据泄露和c2控制是DNS隐蔽隧道威胁场景的两个主要方面。其具体原理如下:数据泄露方面,攻击者将索要窃取的数据通过DNS协议中的QNAME字段传送出去。由于DNS协议信息容量长度限制的原因,通常通过分片,编码(Hex,Base64,NetBIOS等)加工,加密(XOR,DES等)及加入辅助字串等方式处理后嵌入到QNAME字段,同时加上一些伪装信息,比如域名、查询类型、生存时间等信息,构造DNS泄密数据包,通过正常的DNS请求,按照一定的频率,将信息传送到攻击者搭建的权威域名服务器。经过逆向加工处理,将信息恢复。在此过程中,攻击者就将被控制的客户端的敏感信息窃取出来。C2控制方面,攻击者将命令嵌入到DNS协议中的RDATA字段中。通常使用(A/TXT/AAAA)资源类型,将信息传送到被攻击者的主机。客户端收到后,按照对应的配置文件恢复目标命令并执行。
DNS隐蔽隧道分为直连和中继两种方式。
直连:客户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过。
中继隧道:通过DNS迭代查询而实现的中继DNS隧道,这种方式更为隐秘,且可在绝大部分场景下能够成功部署。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度较直连会慢很多。
5、DNS隐蔽隧道检测技术
目前学术界和业界提出了各种DNS隧道检测方法,总体来说可以分为两类:一类为基于规则的检测方法;一类为基于机器学习的检测方法。
5.1 传统检测技术
基于规则的方法是通过各个特征设定的阈值的综合值来识别是否DNS隧道,比如监控终端请求包payload的长度,n_gram熵值,及域名中特殊字符数量等等,如果综合值超过设定阈值,则会发出警报。此外,DNS隐蔽隧道在C2控制的过程中,使用不常用的DNS记录类型(例如TXT、NULL记录)传递控制命令信息,因此基于TXT、NULL记录比例区分黑白流量是另一种常用的检测方法[3]。基于阈值的检测方法不够灵活、泛化能力差,并可以通过修改请求包payload长度、特殊字符数量等特征可以轻易绕过检测。
Qi等人[2]提出了一种基于双字符频率评分机制的实时检测DNS隧道的方法,能够区分DNS隧道域名和普通域名。但如果改变DNS隧道域名中标签的二元字符频率和长度值,则可以绕过此规则的检测。Kara等人[3]研究了DNS作为恶意负载分发通道的使用,提出了一个系统来分析域名的资源记录活动,并建立DNS区域配置文件来检测有效负载分布通道。但此方案存在两个局限,第一TXT记录被用于合法服务,将造成误报,第二,恶意软件不适用缓存解析器,此部分流量不能被收集从而造成漏报。
5.2 机器学习检测技术
基于机器学习的方法通过学习历史数据特征,可以准确地识别未知流量是否DNS隐蔽隧道,同时兼具误报率低、不易被绕过等优点。基于机器学习的DNS隧道检测方法的特征构建主要从两个方面考虑:一方面为有效载荷分析,这类方法是受DGA检测研究的启示,主要关注DNS子域名的大小,子域名n_gram熵值、数字,大小写字符,辅音,元音和特殊字符频率等特征;另一方面为基于时间窗口或分组的流量分析,这类方法关注DNS请求或响应随着时间变化或不同分组内的统计特征,包括时间窗内子域N-Gram均值和方差、请求和响应时间间隔的均值和方差、payload的大小的均值和标准差,每个域名的主机名数量、各种记录类型(NULL、AAAA、TXT等)的频率等等。
Berg等人[4]使用DNS请求和响应的DNS数据包长度、名称长度和名称熵等特征构建随机森林模型,该实验表明使用DNS请求和响应数据对比只使用请求或响应的特征检测准确率更高,但是该方法对于未知隧道工具召回率较低。章思宇等[5]通过分析恶意流量特性提取区分特征12个,利用决策树、朴素贝叶斯和逻辑回归 3 种机器学习方法训练模型,模型可以检测到已训练及未训练的隐蔽信道流量,但其训练样本数据量较少导致准确率偏低。Liu等[6]使用支持向量机、决策树和逻辑回3种算法结合时间间隔特征、请求包大小特征、记录类型特征、和子域熵特征针对已知的隐蔽信道工具进行了二分类检测,获得了较高的准确率。采用的恶意流量训练集使用常用的 DCC 工具产生的流量,缺少对未知工具的覆盖,且存在数据不平衡问题。
Sammour[7]等人提取了信息熵,请求包长度,IP包发送长度,Ip包响应长度,加密DNS请求名长度,请求应用层熵值,IP包熵和请求名熵值等特征,利用三种机器学习算法SVM、NB和J48训练模型对DNS隐蔽隧道的检测。该方案目前存在的问题就是训练集的充分性及检测的准确率不高。在无监督学习赋能的检测方法,文献[8]使用通过分析分析两个或者多个组织的实时DNS流量,重点强调了DNS查询和响应模式在递归解析器、权威名称服务器和常规主机的不同。同时确定了可以实时有效提取关键DNS流量属性,最后利用期望最大化算法开发了一个无监督的机器学习模型以检测DNS隧道。这种方法不涉及任何特定的DNS记录类型,但由于使用无监督的模型,该方法召回率较低。
6、山石网科如何发力于DNS检测技术
山石网科一直致力于DNS隐蔽隧道方面的研究和致力于提高相关产品的对DNS隐蔽隧道检测能力。DNS隐蔽隧道检测能力经历了由传统检测技术到机器学习检测技术的演进,采用了机器学习检测方案后,检测能力有了很大的提高,误报减少,提高了用户的满意度。
6.1 机器学习检测技术
6.1.1 数据和特征
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。因此,数据在机器学习中起着非常重要的基础作用。我们基于多年在DNS隐蔽隧道方面的数据积累,及攻防实验室高效平台自产DNS隐蔽隧道黑流量的助力,获得了有效的数据支持;后利用公司镜像服务器抓取的白流量,经过数据过滤、去重等处理,得到有效的训练数据,其中黑白流量的比例近似1:1。
我们根据DNS协议的内容,提取了五元组、时间戳、请求包的payload、响应包的payload、请求包资源类型、响应包资源类型等字段的信息。我们在包特征、域名特征、子域名统计信息、资源记录及统计特征等方面,通过特征探索分析,构建了97个特征。
6.1.2 模型训练及应用
通过特征探索获得97个特征后,我们选取了随机森林作为最终的模型。通过python的参数寻优模块。选取最优的训练参数,模型的精确率,f1值及AUC评价指标的值在训练集上达到了100%。
利用训练得到的模型,对攻防实验室自产的黑流量的识别率为99%以上,对于训练数据中未覆盖的工具的黑流量也能够有效的识别出来。将实际中抓取的白流量进行识别,识别准确率达到99%以上,极大降低了误报。
7、总结
本文回顾了DNS协议的发展历史,针对DNS协议滥用引起的DNS隐蔽隧道问题进行了研究,介绍了DNS隐蔽隧道的种类及原理,和学术界、工业界对相关课题的研究和检测应用。我们提出了自己的研究检测方案,通过有效数据的收集,丰富特征的构建,利用随机森林训练了性能优异的模型,在测试集和实际中都取得了很好的识别效果。
参考文献:
[1] P. Mockapetris. RFC 1035 - DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION: Page 32. 1987-11 [2018-04-24]. The Internet supports name server access using TCP [RFC-793] on server port 53 (decimal) as well as datagram access using UDP [RFC-768] on UDP port 53 (decimal).
[2] C. Qi, X. Chen, C. Xu, J. Shi, and P. Liu, “A bigram based real time DNS tunnel detection approach,” Procedia Computer Science, 2013.
[3] Kara A M, Binsalleeh H, Mannan M, et al. Detection of malicious payload distribution channels in DNS//2014 IEEE International Conference on Communications (ICC). Sydney, Australia, 2014: 853-858.
[4] A. Berg and D. Forsberg, "Identifying DNS-tunneled traffic with predictive models", Jun. 2019, [online] Available: http://arxiv.org/abs/1906.11246.
[5] ZHANG S Y, ZOU F T, WANG L H, et al. Detecting DNS-based covert channel on live traffic. Journal on Communications, 2013, 34(05):143-151. (章思宇, 邹福泰, 王鲁华,等. 基于DNS的隐蔽通道流量检测. 通信学报, 2013, 34 (05):143-151
[6] J. Liu, S. Li, Y. Zhang, J. Xiao, P. Chang, and C. Peng. Detecting dns tunnel through binary-classification based on behavior features. In Trustcom/BigDataSE/ICESS, 2017 IEEE,pages 339–346. IEEE, 2017.
[7]Mahmoud Sammour, 2 Burairah Hussin, 3Mohd Fairuz Iskandar Othman,Comparative Analysis for Detecting DNS Tunneling Using Machine Learning Techniques,International Journal of Applied Engineering Research ISSN 0973-4562 Volume 12, Number 22 (2017) pp. 12762-12766
[8] M. Lyu, H. Habibi Gharakheili, C. Russell. “Mapping an Enterprise Network by Analyzing DNS Traffic,” in Proc. Passive and Active Measurement (PAM), Puerto Varas, Chile, Mar 2019.