最近,Xshell遠(yuǎn)程終端工具發(fā)現(xiàn)被加入了惡意代碼,目前官方就此事也做出了回應(yīng),要求使用者盡快下載最新版本。在此次事件中,一種作惡手法引起了安全分析人員的注意,那就是通過(guò)DNS協(xié)議傳遞受害者電腦信息,并接收服務(wù)器指令。這種繞開傳統(tǒng)的數(shù)據(jù)連接,將通信數(shù)據(jù)封裝在DNS協(xié)議中的技術(shù),被稱為DNS Tunneling。此木馬的作者為什么要采取這樣的方式,DNSTunneling又為什么能夠達(dá)到木馬作者的目的呢?
l DNS簡(jiǎn)介
DNS,全名為Domain Name System,是互聯(lián)網(wǎng)最關(guān)鍵的基礎(chǔ)服務(wù)之一。它將人能夠識(shí)別的域名名稱(例如domain.com)和計(jì)算機(jī)能夠識(shí)別的IP地址(例如1.2.3.4)之間建立起關(guān)聯(lián),當(dāng)用戶需要訪問(wèn)具體的域名時(shí),即可通過(guò)DNS協(xié)議(默認(rèn)是53端口)快速查詢到對(duì)應(yīng)的目標(biāo)IP,然后再使用其它協(xié)議向目標(biāo)IP發(fā)送數(shù)據(jù)。
l DNS特點(diǎn)
眾所周知,現(xiàn)存的域名數(shù)量眾多,且變化迅速,難以使用少量的服務(wù)器支撐這樣量級(jí)的查詢請(qǐng)求。因此,目前的DNS體系使用分布式的方式,將數(shù)據(jù)分散保存在不同的服務(wù)器上,它具有如下的特點(diǎn):
一、客戶端通常會(huì)配置1到2個(gè)DNS服務(wù)器,從這些服務(wù)器中獲取所有的DNS解析結(jié)果,而無(wú)需與其它DNS服務(wù)器進(jìn)行交互。這樣的DNS服務(wù)器被稱為DNS解析器(DNS resolver),它們會(huì)嘗試從本地緩存和其它DNS服務(wù)器上獲取DNS數(shù)據(jù),直至得到最終結(jié)果或者嘗試失敗,然后返回給客戶端。

經(jīng)常用到的DNS解析器包括谷歌的8.8.8.8、8.8.4.4等,這些服務(wù)器地址也被內(nèi)置到此次木馬的代碼邏輯中。國(guó)內(nèi)也有廠商提供類似的服務(wù)。
二、DNS服務(wù)器在查詢數(shù)據(jù)時(shí),通常采用迭代的查詢方式,從13組“根域名服務(wù)器”開始,從最末位開始依次往前進(jìn)行查詢。例如,查詢test.domain.com時(shí),
首先會(huì)查詢.com域的權(quán)威域名服務(wù)器地址(NS記錄)。
找到后,會(huì)繼續(xù)向該NS記錄對(duì)應(yīng)的域名服務(wù)器查詢domain.com的域名服務(wù)器。
再向該域名服務(wù)器查詢,發(fā)現(xiàn)test.domain.com擁有A記錄,從此記錄中可以獲取到域名對(duì)應(yīng)的真實(shí)IP地址,向客戶端返回。
通常網(wǎng)站主在注冊(cè)域名后,會(huì)指定該域名對(duì)應(yīng)的NS服務(wù)器,例如此次木馬作者注冊(cè)的某域名對(duì)應(yīng)的服務(wù)器地址目前被設(shè)置為如下值:

需要注意的是QHoster.net是一個(gè)網(wǎng)絡(luò)服務(wù)提供商,并非木馬作者所有。如果木馬作者設(shè)置了自己的服務(wù)器作為域名服務(wù)器,則可以獲取到所有子域名的DNS請(qǐng)求。而木馬上傳的受害者電腦信息經(jīng)過(guò)編碼后隱藏在子域名的字符中,木馬作者可以對(duì)DNS請(qǐng)求中的子域名部分進(jìn)行篩選。

三、DNS協(xié)議格式中,除了上面提到的NS記錄(指定域名服務(wù)器)、A記錄(指定域名對(duì)應(yīng)的服務(wù)器的IPv4地址)外,還包括:
AAAA記錄:指定域名對(duì)應(yīng)的服務(wù)器的IPv6地址;
CNAME記錄:將此記錄指向另外一個(gè)域名;
MX記錄:指定域名下的郵件服務(wù)器;
TXT記錄:存放管理員指定的任意信息。一個(gè)常見(jiàn)的用法是,需要驗(yàn)證某人是否具有域名的管理權(quán)限時(shí),就可以要求修改TXT記錄,然后通過(guò)DNS查詢?cè)撚涗浖皟?nèi)容是否與特定的值匹配。

此次木馬作者用到的也是TXT記錄可以任意存放信息的特點(diǎn),通過(guò)域名服務(wù)器對(duì)DNS請(qǐng)求進(jìn)行篩選后,可以向感興趣的請(qǐng)求返回特定的TXT記錄內(nèi)容,這些內(nèi)容可以用于解碼木馬中的惡意模塊,對(duì)受害者進(jìn)行進(jìn)一步的控制。
l DNS數(shù)據(jù)傳遞優(yōu)勢(shì)
通過(guò)以上分析可以看出,木馬作者使用DNS Tunneling技術(shù)進(jìn)行數(shù)據(jù)傳遞,有如下優(yōu)勢(shì):
1.可以獲取到全球各處的受害者發(fā)送的DNS請(qǐng)求。
2.可以向感興趣的受害者發(fā)送特定的結(jié)果,不用向所有請(qǐng)求返回信息。
3.受害者電腦只會(huì)與指定的DNS服務(wù)器發(fā)生數(shù)據(jù)交換,并且使用的是常用的DNS協(xié)議,不易被發(fā)覺(jué),也很難通過(guò)判斷數(shù)據(jù)包的目的IP地址或協(xié)議內(nèi)容進(jìn)行阻斷。
4.只需要設(shè)置域名服務(wù)器,無(wú)需額外的服務(wù)器對(duì)該域名的其它請(qǐng)求進(jìn)行響應(yīng),進(jìn)一步隱藏了自己。
l 建議
騰訊安全反病毒實(shí)驗(yàn)室建議:
1.盡快根據(jù)官方公告,排查用到的Xshell、Xftp等版本是否存在風(fēng)險(xiǎn),并將軟件升級(jí)到最新版本。
2.使用騰訊安全反病毒實(shí)驗(yàn)室提供的Xshell后門查殺工具進(jìn)行掃描和清除(https://habo.qq.com/tool/detail/xshellghostkiller)。
3.對(duì)于不規(guī)則、意義不明或疑似DGA(Domain Generation Algorithm)生成的域名,需要提高警惕。
4.當(dāng)DNS請(qǐng)求中TXT類型的請(qǐng)求比例異常時(shí),需要排查是否有木馬通過(guò)DNS Tunneling技術(shù)進(jìn)行數(shù)據(jù)傳輸。
|