DNS的隐秘角落,隐藏性极强的隧道攻击分析

2021-04-16 09:29:15 云杰 120

  0e96e469b822619b5c4bce7ce35fc4a.png

       DNS是网络服务入口,是所有业务访问必经之路。正常业务要通过DNS访问服务,恶意程序也需要通过DNS外联。数据显示,近91.3%的恶意程序被发现使用DNS作为主要入侵手段。这是因为DNS本身的协议脆弱性导致其很容易被利用,且攻击者可以很好地隐藏自己。DNS隧道攻击就是攻击者经常使用的攻击手段之一,本期云学堂解析DNS隧道攻击的原理,分享判断隧道攻击的基本思路.

  DNS隧道攻击原理概述

  利用DNS查询过程,将非法数据压缩编码封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)。

  DNS隧道攻击的应用

  攻击者通过C&C服务器完成点对点数据传播,或者植入木马、蠕虫、恶意软件等完成长期隐藏式的APT攻击。

  DNS隧道攻击的优势

  针对传统的安全设备,如网络防火墙等有较强的穿透性;DNS攻击成本相对较低,但攻击效果明显。

  DNS隧道攻击特点

  攻击者的流量数据封装在DNS协议中,传统安全设备较难发现,从流量数据包来看不容易被识别,不进行专业分析只会被认为是53端口DNS数据,隐蔽性较强。

  利用DNS隧道攻击

  通过DNS隧道实现数据传输

  恶意程序将控制指令封装在DNS协议中进行请求和响应交互,其中请求和响应中的真实控制指令均被编码成一段字符串。

  通常发起请求的域名均采用Base64,Binary编码,NetBios编码、Hex编码等编码方式进行加密,为了传输更多的数据一般情况下采用TXT类型(DNS请求类型的一种)。所以防火墙和入侵检测设备处于正常递归出网的考虑很难做到对DNS流量的分析与过滤,因此,攻击者可以利用它实现诸如远程控制等攻击行为。

  通过DNS隧道实现数据传输

  DNS隧道除了可以实现恶意程序与C&C端的控制指令交互,还可以为攻击者提供一种永远可用的后方隧道来泄露窃取的资料或敏感数据。虽然受限于域名长度的限制,以及UDP传输的不可靠性,利用DNS隧道对外传输大的文件较难,但是传输重要的敏感信息已经足够。上述图中就展示了通过持续的子域名请求传送到控制端,然后在控制端将这些请求按照顺序拼接起来获取敏感数据。

  在试验环境中通过Wireshark等抓包工具分析,可以看出利用DNS隧道传输文件的DNS报文交互过程具备以下特点:请求一系列超长随机子域、请求的域名中包含序列号、高频率访问同一父域、请求应答包较大、请求频率加快、DNS流量剧增。

  DNS隧道攻击判断

  分析方法

  目前,DNS隧道技术已经很成熟,相关工具也很多,而且不同工具也各具特色。目前比较活跃的有iodine,dnscat2,其他的还有DeNise,dns2tcp,Heyoka等等。

  通过前面的介绍,我们不难发现DNS隧道攻击有着极强的伪装性。但是它们都有一个共性——请求和响应看起来都比较奇怪;那么我们该如何去检测?为此,针对DNS隧道攻击的原理及特征,我们梳理了判断攻击的思路方法:

  建模特征对比分析

  我们来看一下将以下特征进行建模对比:

  域名长度、域名合法字符、域名RFC规则,建模特征对比

  特征分析临界值

  通过我们对不同场景下的建模分析,不难发现我们可以针对DNS隧道流量总结出一些特点即临界值,例如域名label字符串长度52、域名合法字符 a-z, A-Z, 0-9、上传下载比例 %500;同时满足会话报文总数大于20个等等。通过针对DNS隧道流量的检测我们匹配临界值即可做到一定有效的防御。

  除此之外我们还可以从其他DNS携带特征、流量分析等层面进行分析从而达到防护的效果。