最近,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技術進行數據傳輸。
|