dns隧道原理(被恶意利用的DNS隧道及防范措施)(1)

DNS是网络应用中一个非常重要的基础协议,它将长串的不适合记忆的ip地址映射成可读性较强的字符域名。由于DNS应用的特殊性,DNS所使用的应用端口(53端口)几乎总是在防火墙策略中予以放行,被允许出站连接到互联网,这让攻击者可以利用DNS应用中的这个"漏洞"构造木马程序,建立一个非常难以限制的隐蔽命令控制信道,实现攻击机与一个相对封闭网络中的设备进行交互。

dns隧道原理(被恶意利用的DNS隧道及防范措施)(2)

如上图中,UserA 和User B由于防火墙D的规则限制无法访问外网,但防火墙上对于DNS的流量是放行的。当User A需要解析的域名Local DNS Server无法给出回答时,Local DNS Server就会采用迭代查询通过互联网定位到所查询域的权威DNS Server,形成一个逻辑信道。所以,恶意程序将通信的数据封装在客户端DNS查询的请求数据包中,当数据包最终到达攻击者控制的权威DNS Server时,再从请求数据包中解析出数据,并将反向返回的数据封装在DNS Response中,返回给User A,从而实现失陷主机与C&C Server间的通信。攻击者利用dns隧道实施攻击行为可以充分发挥dns的隐蔽性,绕过防御(如禁止外联)、躲避流量检测(如特征码检测)、躲避ioc检测(如外联恶意ip、恶意域名)。

dns隧道原理(被恶意利用的DNS隧道及防范措施)(3)

DNS主要编码方式

个人架设DNS隧道目前有很多实现工具,比如iodine,dnscat2、DeNise,dns2tcp,Heyoka、dnsshell、OzymanDNS等等。DNS 隧道通信一般常用的编码方式有Base64编码,Binary编码,Hex编码等,请求的Type一般采用txt类型。后门木马中比如QQ粘虫、ALMA Communicator木马等多种恶意软件实例都通过DNS隧道技术实现控制指令的下发和敏感数据的提取。

发现和防范DNS隧道攻击首先需要检测异常DNS流量,通过监控DNS服务器日志或使用工具监控网络数据包情况,跟踪网内主机的DNS查询数量情况,超过阈值的可能就是问题主机;同时对网络内的主机被允许访问的DNS服务器进行限制,以及限定能够发起DNS TXT解析请求的主机范围,控制传入和传出流量中的TXT请求,提高攻击者的信道部署代价。

(本文中部分素材来源于网络,若有偏颇/版权问题,请联系我们删除,谢谢!)

,