前瞻洞察|借助机器学习,揪出利用DNS隐蔽隧道作恶黑手

news2024/10/7 11:28:53

黑客会利用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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java多线程编程】Thread类

Thread类是什么? Thread 类是 Java 提供的一个标准库,我们可以通过 Thread 类进行多线程编程。因此,今天我给大家讲解的是如何使用 Thread 类进行线程编程。 详细讲解 Thread 类中的:lambda 表达式、start 方法(启动线…

WiFi(Wireless Fidelity)基础(七)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

Cloud Kernel SIG月度动态:发布ANCK 5.10、4.19新版本,ABS新增仓库构建功能

Cloud Kernel SIG(Special Interest Group):支撑龙蜥内核版本的研发、发布和服务,提供生产可用的高性价比内核产品。 01 SIG 整体进展 发布 ANCK 5.10-014 版本。 发布 ANCK 4.19-027.2 版本。 ABS 平台新增 OOT 仓库临时构建功…

如何远程控制电脑?3个方法轻松搞定!

案例:如何远程控制电脑? 【我不想时时刻刻都带着自己的电脑,听朋友说可以远程电脑。有没有大神分享一下具体的操作方法?感谢!】 随着科技的不断进步,远程控制电脑已经不再是一件难以实现的事情。如今&…

09.python可视化-Seanorn绘制类别关系图boxplot() boxenplot() violinplot()

分类散点图 分类分布图 1). 箱线图 : boxplot() 2).增强箱图boxenplot() 3).小提琴图 :violinplot() 分类统计图 2. 分类分布图 1). 箱线图 应用场景:主要用来显示与类别相关的数据分布。 seaborn.boxplot(xNone, yNone, hueNone, dataNone, orderNone, hue_orde…

GoView 是一个Vue3搭建的低代码数据可视化开发平台

一、总览 开源、精美、便捷的「数据可视化」低代码开发平台 二、整体介绍 框架:基于 Vue3 框架编写,使用 hooks 写法抽离部分逻辑,使代码结构更加清晰; 类型:使用 TypeScript 进行类型约束,减少未知错误…

WiFi(Wireless Fidelity)基础(九)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…

MySql -- 事务

目录 1.概念 2.事务的运用场景 3.事务的四大特点 4.执行事务带来的问题 4.1 脏读 4.2 不可重复度 4.3 幻读 5. MySQL中事务的隔离级别 1.概念 事务就是把若干个独立操作打包成一个整体而诞生的一种功能. 2.事务的运用场景 比如:A——>B 转账500 A的余额-500…

【Qt编程之Widgets模块】-007:QStandardPaths类使用方法

1 头文件&#xff1a; #include <QStandardPaths>2 详细说明 QStandardPaths类提供用于访问标准路径的方法&#xff0c;该类包含用于查询本地文件系统上的标准位置的函数&#xff0c;用于常见任务&#xff0c;如特定于用户的目录或系统范围的配置目录。 所谓系统标准路…

[pgrx开发postgresql数据库扩展]6.返回序列的函数编写(1)单值序列

上篇文章是中规中矩的标准计算函数&#xff0c;就算不用pgrx&#xff0c;也是可以正常理解的&#xff0c;所以基本上没有什么对于pgrx框架有关系的东西&#xff08;唯一有关系的东西&#xff0c;应该就是Rust的时间类型与pgrx的时间类型的计算了&#xff09;。 这篇文章会讲一…

Java面试(1)Java概述

文章目录 Java 概述1.什么是Java2. JDK1.5 之后的三大版本3. Jdk和Jre和JVM的区别4. 什么是跨平台性&#xff1f;原理是什么5. Java 语言有哪些特点?6. 什么是字节码&#xff1f;采用字节码的最大好处是什么7. 为什么不全部使用 AOT&#xff08;since JDK9&#xff09; 呢&…

马赛克处理

去取马赛克的网址&#xff1a; Redact • Photo - Free And Private Image Redaction In The Browser https://redact.photo/ REDACT.PHOTO &#xff08;照片马赛克处理在线工具&#xff09;简介 REDACT.PHOTO是一个照片马赛克处理在线工具&#xff0c;能够帮助我们非常方便…

2023自动化测试的10个最佳实践(建议收藏)

虽然大家都知道坚果是非常健康和有营养的&#xff0c;但是&#xff0c;当你尝试吃它的时候&#xff0c;我猜测过程都不会很顺利。现实就是那么相似&#xff0c;我们都知道测试自动化对软件开发有好处&#xff08;就像坚果对我们的身体一样&#xff01;&#xff09;&#xff0c;…

arcgis插件-带属性TXT转SHP数据(支持独立图层、追加到图层)

20230512记录更新 arcgis插件-带属性TXT转SHP数据&#xff08;支持独立图层、追加到图层&#xff09; 这个版本省略掉新建面图层&#xff0c;再在界面进行选择图层的操作。 界面简化到只需要一步操作&#xff0c;选择&#xff08;或者复制&#xff09;TXT文件所在路径&#x…

机器学习(二)决策树原理剖析及python实现

本篇介绍第二个机器学习算法&#xff1a;决策树算法&#xff0c;我们经常使用决策树处理分类问题&#xff0c;近来的调查表明决策树也是最经常使用的数据挖掘算法。 图1所示的流程图就是一个决策树&#xff0c;长方形代表判断模块&#xff08;decision block&#xff09;&…

[Android]AsyncChannel介绍

背景 在WifiManager.java中&#xff0c;随处可见这样的方法调用实现&#xff1a; 代码路径&#xff1a;frameworks/base/wifi/java/android/net/wifi/WifiManager.java public void connect(int networkId, ActionListener listener) {...getChannel().sendMessage(CONNECT_NE…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

视频怎么压缩到20M以内

视频怎么压缩到20M以内&#xff1f;我们知道在很多聊天软件中是限制传输的内容大小的&#xff0c;比如说视频大小会限制20M以内。还有就是我们在发一些邮件时&#xff0c;我们在上传附件的时候也是限制视频大小在20M以内。所以说我们有需要把视频压缩到20M以内的情况。那么针对…

记录一次Windows7操作系统渗透测试

#本文档仅用于实验&#xff0c;请勿用来使用恶意攻击&#xff01; 《中华人民共和国网络安全法》中&#xff0c;恶意破坏计算机信息系统罪在第二十七条被明确规定&#xff0c;规定内容为&#xff1a; 第二十七条 任何单位和个人不得为达到破坏计算机信息系统安全的目的&#x…

Linux发行版新秀:基于Ubuntu、系统核心 “不可变”

Vanilla OS 是近期才公开发布的 Linux 发行版&#xff0c;基于 Ubuntu 构建&#xff0c;免费且开源&#xff0c;默认桌面环境是 GNOME。虽然 Vanilla OS 的底层是 Ubuntu&#xff0c;但它并不是简单地基于 Ubuntu 进行 "remix"&#xff0c;而且外观看起来也不像 Ubun…