一、什么是DNS隧道
二、DNS隧道攻击典型步骤
三、攻击者如何利用DNS隧道
四、用于追踪的DNS隧道案例
五、缓解措施
原创 二进制空间安全
一、什么是DNS隧道
DNS隧道是一种利用DNS协议进行数据传输的技术。在网络中, DNS通常用于将域名解析为对应的IP地址, 但是它也可以被利用来传输数据, 而不仅仅是域名和IP地址之间的映射关系。
实现DNS隧道的基本思想是将数据在DNS查询和响应的过程中进行隐藏传输。具体来说, 就是可以通过在DNS请求和响应中嵌入数据,并利用域名解析请求和响应的特性来传输数据。通常情况下, DNS隧道技术可以被用来绕过网络防火墙或其他网络安全设备, 以便在受限制的网络环境下进行数据传输。
实现DNS隧道的技术主要包含以下四类:
【DNS数据包重组和拆分】: 该技术方法是将数据分拆成较小的部分, 然后将其嵌入到DNS请求或响应中。接收端负责将这些部分重新组合成完整的数据。
【域名前缀/后缀编码】:该技术方法是通过在域名的前缀或后缀中将数据编码后进行传输。例如: 将数据编码到子域名中,并将子域名解析请求发送到DNS服务器。
【DNS报文字段利用】:该技术方法是利用DNS报文中的一些字段来隐藏数据。例如: 将数据存储在DNS报文的TTL(Time To Live)字段或校验和字段中。
【利用无效域名和IP地址】:该技术方法是使用看似无效的域名或IP地址来进行数据传输, 利用这些无效地址的解析请求和响应来隐藏数据。
二、DNS隧道攻击典型步骤
攻击者利用DNS隧道进行攻击的整体流程如下图:
利用DNS隧道进行攻击的典型步骤如下:
攻击者首先要注册一个恶意域名:malicious.site, 接着建立一个使用DNS隧道作为通信渠道的C2服务器, 攻击者可以利用多种攻击型工具来丰富C2通道的功能, 例如:Cobalt Strike。
(Cobalt Strike是一款专为红队行动和渗透测试设计的商业化渗透测试工具,由Raphael Mudge开发。它被广泛用于模拟真实世界的网络攻击,用于评估网络防御的强度和安全性。)
攻击者可以创建、开发或获取与服务器通信的恶意软件作为客户端, 并将该恶意软件发送到一个受害的客户端机器。
受害机器通常位于防火墙之后, 无法直接与攻击者服务器通信。然而, 恶意软件可以将数据编码到malicious.site的子域中,并向DNS解析器发出DNS查询。
由于隧道完全限定的域名(FQDN)的独特性, DNS解析器无法从其缓存中找到相应的记录。因此, 解析器将对根域名服务器、顶级域(TLD)名称服务器和攻击者控制的该域的权威名称服务器进行递归DNS查询。
(完全限定域名(Fully Qualified Domain Name,FQDN)是指包含了主机名(Hostname)以及其所在的域名的完整域名标识。它提供了对于特定主机在 DNS 层次结构中的准确定位。FQDN 通常由主机名、域名和根域(Root Domain)组成,形式为:hostname.domain.tld.)
攻击者可以从DNS流量中获取解码后的数据, 并操控DNS响应, 实现将恶意数据渗透到客户端。
三、攻击者如何利用DNS隧道
将DNS隧道与C2服务器进行结合是黑客常用的方式, 该方法隐蔽且方便定制化。
(C2服务器指的是Command and Control服务器,也称为C&C服务器。它是黑客或者恶意软件(如僵尸网络、恶意软件等)的一个关键组件,用于控制被感染或被攻击的计算机或设备。C2服务器通常会被设置在隐秘的位置,例如使用匿名的托管服务、非法的服务器设立地点或者利用合法的网络服务进行隐藏。黑客或者攻击者通过各种手段与受感染设备建立连接,并且通过加密或其他技术手段来隐藏其真实的身份和位置。)
攻击者利用的DNS类型主要包括: IPv4(A)、IPv6(AAAA)、邮件交换(MX)、CNAME名称、文本(TXT)记录。
有部分的VPN厂商也会出于合法目的使用DNS隧道, 例如: 通过DNS隧道绕过防火墙以避免因特网审查或网络服务费用。
除了C2和VPN用途之外, 攻击者还可以利用DNS隧道来进行追踪和扫描。
【用于追踪的DNS隧道】:攻击者可以通过将其身份信息编码到子域负载中, 并向受害者提供恶意域来跟踪受害者在垃圾邮件、钓鱼或广告内容方面的活动。
【用于扫描的DNS隧道】:攻击者可以通过在隧道负载中编码IP地址和时间戳, 并伪装源IP地址来扫描网络基础设施, 之后, 攻击者能够发现开放的解析器, 以便利用解析器的漏洞执行DNS攻击, 这可能会导致恶意重定向或拒绝服务。
四、用于追踪的DNS隧道案例
在传统的C2通信中跟踪受害者行为时, 黑客的恶意软件会将用户行为数据嵌入到恶意URL中, 并通过网络流量传输到C2服务器。在DNS隧道中, 攻击者通过DNS流量中的子域来实现与之相同的效果。
在这种DNS隧道的应用中, 攻击者的恶意软件将有关特定用户及其行为的信息嵌入到DNS查询的唯一子域中。这个子域是隧道负载, 完全限定域名(FQDN)的DNS查询使用了攻击者控制的域。
攻击者控制的域的权威名称服务器接收到DNS查询, 这个由攻击者控制的名称服务器存储了该域的所有DNS查询, 这些DNS查询的唯一子域和时间戳提供了受害者活动的日志记录。攻击者甚至可以利用它来跟踪活动中的多个受害者。
在下面的案例中, 黑客使用了75个IP地址作为域名服务器, 解析了658个攻击者控制的域名, 针对了731个潜在受害者。每个域名只使用一个域名服务器IP地址, 而一个域名服务器IP地址最多可以为123个域名提供服务。这些域名使用相同的DNS配置和相同的子域编码方法。黑客在.com或.info顶级域名下注册了所有域名, 并通过组合两个或三个根单词来设置域名, 这是攻击者用来规避域名生成算法(DGA)检测的一种方法。
以下是“TrkCdn”活动中域名的列表, 该活动使用DNS隧道技术来追踪受害者与其电子邮件内容的交互,包括: FQDN、域名服务器、域名服务器IP地址和注册日期,如下表:
上表仅仅列出了隧道域名使用的与跟踪相关的DNS配置。攻击者将根域名、域名服务器和cdn.simitor.com设置为相同的IP地址:193.9.114.43, 这种行为方式是隧道域名的常见配置指标, 因为攻击者需要为自己建立一个域名服务器, 同时又尽量降低攻击成本,因此, 他们通常只使用一个IP地址来进行域名托管和作为域名服务器。
所有*.trk.simitor.com都通过通配符DNS记录重定向到cdn.simitor.com, 设置方法如下:
simitor.com A 193.9.114.43
ns1.simitor.com A 193.9.114.43
ns2.simitor.com A 193.9.114.43
cdn.simitor.com A 193.9.114.43
*.trk.simitor.com CNAME cdn.simitor.com
在上面的表格中, FQDN内容最前面的Md5哈希值代表DNS流量中的电子邮件地址, 这些Md5值是隧道负载的DNS查询的子域, 例如:电子邮件地址: [email protected]的MD5值为:4e09ef9806fb9af448a5efcd60395815, 那么, 隧道负载的DNS查询的FQDN内容将是:4e09ef9806fb9af448a5efcd60395815.trk.simitor.com。
对这些FQDN的DNS查询可以作为威胁行为者发送的电子邮件的跟踪机制, 例如: 如果受害者打开了这些电子邮件中的其中一封, 嵌入的内容可能会自动生成DNS查询, 或者受害者可能会点击电子邮件中的链接, 无论哪种情况, 感染的主机生成了FQDN的DNS查询后, DNS解析器将联系FQDN的权威名称服务器的IP地址, 由于其通配符配置, 受害者的DNS解析器将获得以下结果:
<br />
4e09ef9806fb9af448a5efcd60395815.trk.simitor.com. 3600 IN CNAME cdn.simitor.com.</p>
<p>cdn.simitor.com. 555 IN A 193.9.114.43
4e09ef9806fb9af448a5efcd60395815.trk.simitor.com. 3600 IN CNAME cdn.simitor.com.
cdn.simitor.com. 555 IN A 193.9.114.43
因此,尽管针对不同目标的完全限定域名(FQDNs)各不相同,它们都被转发到由cdn.simitor.com使用的相同IP地址。然后,这个权威名称服务器返回一个DNS结果,指向一个由攻击者控制的服务器,提供由攻击者控制的内容。这些内容可能包括广告、垃圾邮件或钓鱼内容。
为了跟踪目的,攻击者可以从他们的权威名称服务器查询DNS日志,并将负载与电子邮件地址的哈希值进行比较。这样,攻击者就可以知道特定受害者何时打开了他们的邮件或点击了链接,从而监视活动的表现。
五、缓解措施
可以采取以下措施来减少DNS解析器的攻击面:
(1)控制解析器接受必要查询的服务范围。
(2)及时更新解析器软件版本, 防止N-day漏洞的出现。