3

DNS隐藏隧道检测的新思路

 8 months ago
source link: https://joker-vip.github.io/2023/05/25/DNS%E9%9A%90%E8%97%8F%E9%9A%A7%E9%81%93%E6%A3%80%E6%B5%8B%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

DNS隐藏隧道检测的新思路

假设你是一名网络安全专家,正在企业的安全监控中心观察着一系列网络流量的数据包。突然,你的目光被一条看起来非常奇怪的流量所吸引:长长的一串域名,每个域名都充满了无意义的字符。你感到十分不寻常,因为这样的域名不像是一般的合法域名,而更像是一种隐藏信息的通道。

随着深入的调查和分析,你意识到这就是DNS隐藏隧道的典型表现。这种通道利用DNS协议来隐藏和传递信息,可以通过各种方法来规避常规安全检测。你开始思考如何更有效地检测和拦截这种隐藏在DNS流量中的威胁。

在本文中,我们将深入探讨DNS隐藏隧道的工作原理和搭建方式,以及现有的检测方法。我们还将介绍一种新的、创造性的方法——利用AI大模型来检测DNS隐藏隧道。通过这种先进的技术手段,或许我们可以更加准确、快速地发现和应对这种具有潜在危险的网络威胁。

DNS隐藏隧道

DNS隐藏隧道是一种利用域名系统 (DNS) 协议传输数据的技术。它通过将数据片段嵌入 DNS 查询或响应的域名字段中,从而在 DNS 通信流量中隐藏数据,从而达到传输数据的目的。DNS隐藏隧道的优点包括可以穿过网络过滤设备、防火墙和代理服务器等限制网络流量的设备,从而实现通信的隐蔽性和灵活性。

DNS隐藏隧道的实现方法通常包括在 DNS 查询中使用不常用的 DNS RR(Resource Record)类型,例如 TXT、AAAA、MX 等,以及在查询/响应中使用不常用的域名字段。由于数据片段被嵌入到 DNS 通信中,因此需要在数据传输的两端实现自定义的编码和解码算法以确保数据的正确性和完整性。

虽然 DNS隐藏隧道在某些场景下可以是一种有效的通信方式,但它也容易被用于恶意目的,例如在网络攻击中传输命令和控制数据。因此,安全专家需要密切关注 DNS 通信中的异常活动,以检测和防范潜在的安全威胁。

DNS隐藏隧道程序通常有两种模式:中继模式和直连模式。

中继模式的DNS隐藏隧道程序通常会在本地机器和C&C服务器之间建立一条隐藏通道,通过本地域名服务器(例如公司内部DNS服务器)来中继转发隧道流量,以避免被网络防火墙等安全设备检测和拦截。

在中继模式中,DNS隧道程序会向本地域名服务器发送DNS请求,通过DNS请求和响应的负载部分来传输数据,从而达到隐蔽通信的目的。在DNS请求中,DNS隧道程序通常会使用特殊的查询类型(例如TXT、SRV、MX等),并将数据以base64等方式进行编码。

直连模式的DNS隐藏隧道程序通常会在本地机器和C&C服务器之间建立一条直接连接的隐藏通道,通过DNS协议来传输数据。

在直连模式中,DNS隧道程序会直接与C&C服务器建立连接,并将数据以特定的格式(例如DNS-over-HTTP)进行封装和传输。由于直接连接没有经过域名服务器的中转,因此直连模式相对中继模式来说更加难以被检测和拦截。

需要注意的是,随着安全设备和检测技术的不断发展,DNS隐藏隧道程序的中继模式和直连模式也在不断演变和升级,以适应各种网络环境和安全威胁。

常见的DNS隐藏隧道程序

  1. Dnscat2:一种基于DNS的命令和控制通道,可以通过DNS隐藏隧道传输数据和命令,同时支持前向和反向模式。
  1. Iodine:一种IPv4-over-DNS隧道工具,可以在不支持IPv6的网络上使用DNS隧道实现IPv6通信。
  1. Dns2tcp:一种基于DNS的TCP隧道工具,可以将TCP数据流转换为DNS流量,并通过DNS隧道传输数据。
  1. Dnstunnel:一种基于DNS的TCP隧道工具,可以通过DNS隧道传输TCP数据流量。
  1. Dnscapy:一个基于Python编写的DNS处理工具包,可以用于自定义DNS隧道的实现和调试。

DNS隐藏隧道的特征

目前对DNS隐藏隧道的检测方式可以分为基于规则的硬匹配,与通过使用机器学习甚至是深度学习的方式,通过学习已知的DNS隐藏隧道中潜藏的数学规律,去识别已知类型甚至未知的隐藏隧道,基于规则的方式容易被攻击者绕过而产生漏报,而基于机器学习的方式除了漏报外还可能产生误报,尽管存在着一定的不准确性,它们的检测方式还是值得我们学习并尝试改进的。

信源输出的信息量均值即为信息熵。信息熵的 大小能体现信号的复杂度以及平均不确定性。DNS隐藏隧道的作用通常是用于窃取文件或者传递控制命令等,因此DNS隐藏隧道流量中的数据通常是经过加密和压缩的因此其信息熵相对较高。

信息熵计算式:

img

正常域名则通常包含有意义的单词、短语和标点符号等如包含描述性单词和品牌名称,而恶意域名通常是编码过后的信息,因此它们的重合指数也可能存在显著的差异。

重合指数计算式:

DNS隐藏隧道域名通常包含多个子域名,每个子域名可能包含不同的随机字符和数字,而正常域名则通常只有一个或少量子域名,因此可以选择子域名数作为判断的依据。

DNS隐藏隧道域名通常采用非常短的TTL(Time-to-live)时间,即DNS服务器缓存该域名信息的时间非常短,以便频繁更新域名映射关系。

由于DNS隐藏隧道技术通常使用TXT记录进行数据传输,因此可以通过对DNS响应包的类型进行分析来判断是否为DNS隐藏隧道。

一般情况下,DNS隐藏隧道流量的域名比较长,包含大量的数字和非法字符,同时唯一字符数相对较低,这些特点和正常的域名有很大的不同。

需要注意的是,DNS隐藏隧道攻击具有隐蔽性和灵活性,攻击者可以通过不断改变攻击方式、加密方式、数据格式等手段来规避检测。

用ChatGPT检测DNS隐藏隧道

至此我们已经了解到可以尝试通过信息熵、重合指数、子域名数、TTL、DNS响应包的类型、域名中的数字、非法字符数、唯一字符数这几个维度去尝试分析一个域名是否为恶意域名,通常情况下我们可以采集训练集、测试集,用机器学习甚至是深度学习来进行检测,但是我们可以发现检测DNS隐藏隧道其实质为文本分类问题,而ChatGPT作为一款著名的文本AI大模型,其在语义理解、翻译等都有着惊人的表现,因此我们可以尝试将我们之前了解到的几个分析维度都灌输给它,由它来给我们做判断,从中窥探一些AI大模型在DNS隐藏隧道检测中是否具有可行性。

那本次实验我们将适当降低难度,仅提供几条域名给ChatGPT让它从我们之前了解到的一些分析维度进行识别,因为筛选的域名非常有限,不代表其在实际场景中运用的真实效果。

0c495011391d4e40054d495a4368.yafgcy.ceye.io(2023红明谷初赛hacker流量包出现的恶意域名)

59115a4b465044695a5a56015c4252065e501c130e416f5c5647556b510044.yafgcy.ceye.io(2023红明谷初赛hacker流量包出现的恶意域名)

05b0e5d4b5f5b5b69505c57074f18430c423f5b0c0852105a521d4409476b5.yafgcy.ceye.io(2023红明谷初赛hacker流量包出现的恶意域名)

119acddc-cc9a-4ed3-b52a-a5d896481715.node4.buuoj.cn(buuctf创建的web题练习靶机,正常域名)

a04667aa-e340-4571-86fe-6ab6e5520d3b.node4.buuoj.cn(buuctf创建的web题练习靶机,正常域名)

c14ce4cf-764f-4319-a1d2-3835ab96b1cf.node4.buuoj.cn(buuctf创建的web题练习靶机,正常域名)

www.baidu.com(正常域名)

www.bilibili.com(正常域名)

535yx.cn(正常域名)

64a.life/rW82l(正常域名进行短链接处理后的干扰项)

image-20230525101452031

可以看到ChatGPT准确的识别了其中存在的恶意域名。

本文通过深入探究DNS隐藏隧道的搭建方式和原理,以及现有的DNS隐藏隧道检测技术,我们发现利用AI大模型进行DNS隐藏隧道检测具有很大的潜力。在我们的实验中,ChatGPT能够精准地识别DNS隐藏隧道,这为我们提供了非常有价值的参考,虽然我们的实验只针对少量的dns域名,无法完全反映真实场景,但这项尝试表明利用AI大模型检测DNS隐藏隧道的可能性,并且这种方法有望在未来成为解决各种隐藏隧道问题的有效手段。通过这种方法,我们或许可以为未来的网络安全防御提供一种更加高效、更加全面的方式。相比于开发针对特定问题的安全产品,利用AI大模型可以解决各种类型的隐蔽通信问题,而且无需进行专项训练。我们相信,这将是网络安全防御领域的一个重大突破,带来更加安全、稳定的网络环境。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK