“DNS隧道”盜號木馬分析
盜號木馬相信大家都不陌生。隨著網(wǎng)絡(luò)越來越普及,網(wǎng)上的賬號密碼越來越重要,盜號木馬的生命力也就越發(fā)的頑強了。
隨著與殺毒軟件的對抗,盜號木馬也在不斷的更新?lián)Q代。QQ粘蟲就是一個很典型的例子,這類木馬的特點可以參考我們之前寫過的博文《“神奇”的qq粘蟲之旅》。而最近我們又監(jiān)控到了QQ粘蟲中的一例新變種,其主要的突破在于將盜取的信息通過網(wǎng)絡(luò)發(fā)送出去的方法,思路頗為新穎,分享出來與大家共同把玩。
預熱
從行為上來看,這其實就是個普通的QQ粘蟲木馬而已:
偽裝成一個文件夾,誘導用戶點擊

運行后不斷監(jiān)控頂端窗口,一旦發(fā)現(xiàn)為QQ,就彈出一個自己偽造的QQ登陸窗口,誘導用戶輸入密碼

編碼與發(fā)送
如果你不幸輸入了密碼并點擊了登陸,那么請節(jié)哀——你中招了。你的QQ號和密碼這些隱私數(shù)據(jù)正在木馬指令的授意下,被你自己不惜高價買下的高性能CPU和內(nèi)存飛速的進行著編碼,并最終由你所鐘愛的那塊網(wǎng)卡發(fā)送到盜號者的服務(wù)器上……這絕對會是一個憂傷的故事……
但木馬的編碼過程卻頗費周章:
首先,是將一個固定字符串“aaaaaa”與你的QQ號和密碼這三組字符串,以制表符(’\t’)相連,拼成一個新的字符串,并將其轉(zhuǎn)為UTF-16編碼

然后,將上面的拼出的字符串的字符數(shù)(非字節(jié)數(shù),實際上由于是UTF-16編碼,字符數(shù)是字節(jié)數(shù)的1/2),保存為大端的WORD形式

接著,再將之前得到的賬號信息字符串取Hex字符串后再次進行UTF-16編碼……
我自己說著都亂……舉個例子,字符’a',也就是’\x61′,UTF-16編碼后就是’\x61\x00′,取Hex字符串就變成了’6100′,也就是’\x36\x31\x30\x30′,再UTF-16后則是’\x36\x00\x31\x00\x30\x00\x30\x00′
好吧,我猜大部分人還是暈……直接給大家看看最終結(jié)果吧,你的賬號信息已經(jīng)變的面目全非了:

同時,前面獲取到的字符數(shù)也做同樣的處理,并拼到上面這個字符串的前面,如下:

***,以16字符為一批進行循環(huán)加密,并將加密后數(shù)據(jù)轉(zhuǎn)成UTF-16編碼的Hex字符串,最終結(jié)果如下:

這么麻煩,當然是為了繞過各種檢測和分析系統(tǒng),但同時還有一個目的——盜號者需要加密后的結(jié)果依然保持所有字符必須只有字母和數(shù)字組成(理論上還可以有連字符)。
這是為了給這個木馬最關(guān)鍵的一步做好鋪墊——以DNS查詢的形式將賬號信息發(fā)送出去!
木馬在內(nèi)存中將加密后的字符串,前面拼上”www.”,后面拼上”.cn”,得到了一個根本不存在的域名。再填上必須的結(jié)構(gòu),精心構(gòu)造出了一個DNS查詢數(shù)據(jù)包。

再將這個數(shù)據(jù)包用UDP協(xié)議發(fā)送到了自己的服務(wù)器的53端口——一切看起來都如此的天衣無縫。
一個DNS查詢而已,沒有額外的非法數(shù)據(jù),只是查詢了一個不存在的域名,偽裝的夠深了吧!
百密一疏
但其實,通過Wireshark抓包還是可以看到一個很諷刺的事實——這個數(shù)據(jù)包依然是畸形的!根本不是正常的DNS查詢。

根據(jù)Wireshark的報錯信息,可以看到問題出在Queries這一段上,那具體是哪里異常了呢?QNAME部分的每個Label和前面的字節(jié)數(shù)都能對應(yīng)上,QType是0×0001——A類請求,QClass是0×0001——IN。看著好像都沒錯啊?
其實問題還就是出在了木馬作者精心拼湊的這個加密字符串上,這一段Label的字節(jié)數(shù)為0×80——即128字節(jié)。而DNS請求的數(shù)據(jù)結(jié)構(gòu)中隊Label的長度可是有嚴格的規(guī)定的:
Labels must be 63 characters or less.(參考RFC882 [Page30])
也就是說Label被允許的***長度只有63字節(jié)——即0x3f,只要超過了這個值,即為畸形!
再次提醒大家——不要隨意執(zhí)行網(wǎng)上下載下來的程序,發(fā)現(xiàn)涉及到賬號密碼的異常狀況,更要慎之又慎。在這個信息的時代,你的任何一些看起來無關(guān)緊要的數(shù)據(jù)的泄露,都可能成為黑客手中的重要社工數(shù)據(jù)——信息安全無小事。