Xshell后门事件中用到的DNS Tunneling技术分析

最近,Xshell远程终端工具发现被加入了恶意代码,目前官方就此事也做出了回应,要求使用者尽快下载最新版本。在此次事件中,一种作恶手法引起了安全分析人员的注意,那就是通过DNS协议传递受害者电脑信息,并接收服务器指令。这种绕开传统的数据连接,将通信数据封装在DNS协议中的技术,被称为DNS Tunneling。此木马的作者为什么要采取这样的方式,DNSTunneling又为什么能够达到木马作者的目的呢?
l  DNS简介
DNS,全名为Domain Name System,是互联网最关键的基础服务之一。它将人能够识别的域名名称(例如domain.com)和计算机能够识别的IP地址(例如1.2.3.4)之间建立起关联,当用户需要访问具体的域名时,即可通过DNS协议(默认是53端口)快速查询到对应的目标IP,然后再使用其它协议向目标IP发送数据。
l  DNS特点
众所周知,现存的域名数量众多,且变化迅速,难以使用少量的服务器支撑这样量级的查询请求。因此,目前的DNS体系使用分布式的方式,将数据分散保存在不同的服务器上,它具有如下的特点:
一、客户端通常会配置1到2个DNS服务器,从这些服务器中获取所有的DNS解析结果,而无需与其它DNS服务器进行交互。这样的DNS服务器被称为DNS解析器(DNS resolver),它们会尝试从本地缓存和其它DNS服务器上获取DNS数据,直至得到最终结果或者尝试失败,然后返回给客户端。

经常用到的DNS解析器包括谷歌的8.8.8.8、8.8.4.4等,这些服务器地址也被内置到此次木马的代码逻辑中。国内也有厂商提供类似的服务。
二、DNS服务器在查询数据时,通常采用迭代的查询方式,从13组“根域名服务器”开始,从最末位开始依次往前进行查询。例如,查询test.domain.com时,
首先会查询.com域的权威域名服务器地址(NS记录)。
找到后,会继续向该NS记录对应的域名服务器查询domain.com的域名服务器。
再向该域名服务器查询,发现test.domain.com拥有A记录,从此记录中可以获取到域名对应的真实IP地址,向客户端返回。
通常网站主在注册域名后,会指定该域名对应的NS服务器,例如此次木马作者注册的某域名对应的服务器地址目前被设置为如下值:

 
需要注意的是QHoster.net是一个网络服务提供商,并非木马作者所有。如果木马作者设置了自己的服务器作为域名服务器,则可以获取到所有子域名的DNS请求。而木马上传的受害者电脑信息经过编码后隐藏在子域名的字符中,木马作者可以对DNS请求中的子域名部分进行筛选。

三、DNS协议格式中,除了上面提到的NS记录(指定域名服务器)、A记录(指定域名对应的服务器的IPv4地址)外,还包括:
AAAA记录:指定域名对应的服务器的IPv6地址;
CNAME记录:将此记录指向另外一个域名;
MX记录:指定域名下的邮件服务器;
TXT记录:存放管理员指定的任意信息。一个常见的用法是,需要验证某人是否具有域名的管理权限时,就可以要求修改TXT记录,然后通过DNS查询该记录及内容是否与特定的值匹配。

此次木马作者用到的也是TXT记录可以任意存放信息的特点,通过域名服务器对DNS请求进行筛选后,可以向感兴趣的请求返回特定的TXT记录内容,这些内容可以用于解码木马中的恶意模块,对受害者进行进一步的控制。
l  DNS数据传递优势
通过以上分析可以看出,木马作者使用DNS Tunneling技术进行数据传递,有如下优势:
1.可以获取到全球各处的受害者发送的DNS请求。
2.可以向感兴趣的受害者发送特定的结果,不用向所有请求返回信息。
3.受害者电脑只会与指定的DNS服务器发生数据交换,并且使用的是常用的DNS协议,不易被发觉,也很难通过判断数据包的目的IP地址或协议内容进行阻断。
4.只需要设置域名服务器,无需额外的服务器对该域名的其它请求进行响应,进一步隐藏了自己。
l  建议
腾讯安全反病毒实验室建议:
1.尽快根据官方公告,排查用到的Xshell、Xftp等版本是否存在风险,并将软件升级到最新版本。
2.使用腾讯安全反病毒实验室提供的Xshell后门查杀工具进行扫描和清除(https://habo.qq.com/tool/detail/xshellghostkiller)。
3.对于不规则、意义不明或疑似DGA(Domain Generation Algorithm)生成的域名,需要提高警惕。
4.当DNS请求中TXT类型的请求比例异常时,需要排查是否有木马通过DNS Tunneling技术进行数据传输。