来源:https://www.sans.org/reading-room/whitepapers/dns/detecting-dns-tunneling-34152
许多DNS隧道化实用程序并没有试图隐藏。他们依赖于DNS经常不被监控这一事实。提出了多种DNS隧道检测技术。检测技术将分为两类,有效载荷分析(Payload Analysis)和流量分析(traffic analysis)。对于有效载荷分析,将分析一个或多个请求和响应的DNS有效载荷,以获得隧道指示器。对于流量分析,流量将随着时间的推移进行分析。将考虑计数、频率和其他请求属性。
一、有效载荷分析
对于有效载荷分析检测技术,我们也可以借鉴域生成算法的研究。DGA生成的域与数据编码中的名称类似。以下技术已在过去的研究中被涵盖。
1.1请求和响应的大小
一种技术涉及到分析请求和响应的大小。在一篇博客文章(Bianco, 2006)中,作者定义了基于源字节和目标字节比率的方法来识别可疑的DNS隧道传输。将作为Snort/Squil入侵检测系统的一部分存储在MySQL数据库中的DNS数据查询源字节和目标字节。然后将该比率与一个限值进行比较。
其他人(Pietraszek, 2004), (Skoudis, 2012)已经提出观察DNS查询和响应的长度来检测隧道。DNS隧道化实用程序通常试图将尽可能多的数据放入请求和响应中。因此,隧道请求可能会有长标签,最多63个字符,长名称最多255个字符。另一个建议是查看所有超过52个字符的主机名请求(Guy, 2009)。
1.2主机名的熵
DNS隧道可以根据请求主机名的熵来检测(Van Horenbeeck, 2006), (Butler, 2011)。合法的DNS名称通常有字典上的单词或看起来有意义的东西。
编码的名称具有更高的熵和更均匀地使用字符集。不过,也有例外,DNS名称用于表示某种类型的信息。内容交付网络有时就是这样。寻找具有高熵的DNS名称可以作为隧道挖掘的指标。
1.3统计分析
查看DNS名称的特定字符构成是另一种可用于检测隧道的方法。合法的DNS名称往往只有几个数字,而编码的名称可能有很多数字。研究域名中数字字符的百分比已经被提出(Bilge, 2011)。观察最长有意义子串(LMS)长度的百分比是另一种基于字符组成的方法(Bilge, 2011)。观察独特字符的数量是另一种可能性。推荐提醒任何超过27个独特字符(盖伊,2009)。
由于合法的域名在一定程度上反映了通用语言,因此可以使用字符频率分析(Born, 2010b)来检测DNS隧道效应产生的域名。
重复辅音可以用来检测DNS隧道效应,或者重复辅音和数字(Lockington, 2012)。隧道实用程序可能会创建具有连续辅音和数字的名称,这些数字在反映通用语言的域名中不太可能看到。
1.4 不常见的记录类型
另一种可能的检测方法是寻找典型客户不常用的记录,如“TXT”记录(Pietraszek, 2004)。
1.5 违反政策
如果策略要求所有DNS查找通过内部DNS服务器,则违反该策略可作为检测方法。流量可以直接监控DNS请求到互联网(Fry, 2009)。请注意,大多数DNS隧道实用程序都设计为在通过内部DNS服务器转发请求时也能正常工作。
1.6 特定的签名
在某些情况下,研究人员为特定的DNS隧道化实用程序提供了签名。签名可用于检查DNS头中的特定属性并检查有效负载中的特定内容。例如,为检测NSTX DNS隧道效应开发了一个Snort签名(Van Horenbeeck, 2006)。
二、流量分析
流量分析涉及在一段时间内查看多个请求/响应对。请求的数量和频率可以用于隧穿的指示。对于流量分析检测技术,在过去的研究中已经涵盖了以下内容。
2.1 每个IP地址的DNS流量(per IP address)
一个基本而直接的方法是查看特定客户端IP地址生成的DNS流量(Pietraszek, 2004), (Van Horenbeeck, 2006)。由于隧道数据通常限制为每个请求512字节,因此通信需要大量的请求。此外,如果客户端轮询服务器,它将持续发送请求。
2.2 每个域的DNS流量(per domain)
另一种基本方法是查看特定域名的大量流量(Butler, 2011)。DNS隧道实用程序都是使用特定域名来传输数据的,因此,所有隧道流量都将是那个域名。我们应该考虑DNS隧道可以配置多个域名的可能性,从而降低每个域的通信量。
2.3 每个域名的主机数量
给定域名的主机数量可以作为一个指标(Guy, 2009)。DNS隧道实用程序对每个请求请求一个唯一的主机名。这可能导致一个比典型的合法域名大得多的数字。此方法将作为使用流量分析的示例实现。
2.4 DNS服务器的地理位置
地理因素是可以使用的另一个因素。正如所提议的,大量的DNS流量到世界上你不做生意的地方”(Skoudis, 2012)。对于没有广泛国际足迹的企业,这种方法可能有用。
2.5 域历史
域历史也可以用来引起对DNS流量的怀疑。检查何时添加了“A”记录或“NS”记录(Zrdnja, 2007)。该方法用于检测恶意活动中涉及的域名。它也与检测DNS隧道效应有关。一个域可能是最近为DNS隧道化而获得的,它的NS记录可以在最近添加。
2.6NXDomain响应量
为了检测DGA生成的名称,提出了寻找过量NXDomain响应的方法。(Antonakakis,2012)。该方法可用于检测能产生大量NXDomain响应的Heyoka。
2.7可视化
研究表明,可视化技术可以用于检测DNS隧道(Guy,2009)。这种方法需要分析人员进行交互工作,但是隧道式的流量非常突出。
2.8 孤立DNS请求
虽然大多数检测方法都是观察我们能看到什么,但另一种方法是观察我们希望看到什么,但却没有。对于一般计算,DNS请求只在另一个请求之前发出,例如http上的web页面请求。考虑到这一点,另一种检测方法是查找没有其他应用程序(如http)相应请求的DNS请求。会有一些例外很容易被过滤掉。安全设备可以反向查找IP地址。反垃圾邮件解决方案使用DNS查询来检查给定的IP地址是否在黑名单上。端点安全产品使用带有FQDN中嵌入的编码文件散列的DNS查询来检查可疑文件的信誉。
2.9 一般隐蔽通道检测
在其他的研究中已经讨论了一些独立于协议的隐蔽通道检测技术(Couture, 2010)。用于隧道检测的实用程序可以查看一天中的请求时间或将流量与统计指纹进行比较。