一層一層剝開你的心:解碼“深度偽裝”的ZeuS網銀木馬
發表時間:2023-09-06 來源:明輝站整理相關軟件相關文章人氣:

最近我收到一封釣魚郵件,郵件中附帶著一個.doc的附件。我們利用再平常不過的工具Notepad++,一步一步脫去ZeuS木馬的偽裝外衣,并進行了非常深入的靜態分析。該木馬的偽裝用到了多項關鍵技術,例如信息隱藏、加密解密等。
0×01 發現貓膩
最近我遇到了一個很特別的惡意釣魚郵件,郵件中有一個.doc附件。
起初,當我在虛擬機中運行該樣本時,攻擊者發送的附件看起來并不正確。但是,在我提取并解碼此shellcode之后,我發現了一個很熟悉的已經傳播一段時間的惡意軟件。

圖1 釣魚郵件
在圖2中的郵件頭部,我們可以看到原始IP地址為212.154.192.150。應答字段也很有趣,因為這是一個長期的419詐騙團伙的地址。在圖3中,紅圈中的郵件地址告訴我們附件極有可能是惡意軟件。

圖2 郵件頭部

圖3 419詐騙團伙的郵件地址
0×02 初步測試
最開始,我嘗試在虛擬機中運行該附件,但是卻出現了下圖中的錯誤信息:

圖4 Office錯誤信息
但是,測試環境系統有超過45G的可利用硬盤空間,并且有2G的內存空間,所以錯誤中提示的空間不足應該不是問題的根源。為了測試,我將內存空間擴展成8G,但是相同的問題依然存在。于是,我決定從靜態分析的角度看一下該附件。
像往常一樣,我用Notepad++打開該文件來大致分析下這到底是什么。打開之后,我看到它實際上是一個偽裝成.doc文件的.rtf文件,而在.rtf格式的文件中進行內容的混淆處理非常容易。

圖5 Notepad++打開的RTF文件
在.rtf文件中,表示十六進制代碼的大量數據將可能為我們提供線索,讓我們明白該文件到底在試圖做什么。.rtf文件格式給攻擊者提供了很大的自由,讓其在這部分中隱藏并編碼數據,如圖6所示。

圖6 可疑數據
然而,在這部分的末尾,我們看到了“FF D9”,而gif文件的末尾兩個字節就是“FF D9”。

圖7 gif文件的結尾字節
0×03 抽絲剝繭
我比較喜歡使用Notepad++來解碼這種數據。首先,將該區域的內容復制并粘貼到一個新的txt文檔中,然后CTRL+F打開查找窗口,并選擇“替換”選項卡,然后選中“擴展”按鈕,如圖8中所示。

圖8 Notepad++查找/替換
通過這樣,你將得到一行ASCII碼形式的十六進制數。然后,選中所有內容,并依次操作:“插件”->“Converter”-> “Hex -> Ascii”,如圖9所示。

圖9 解碼數據
轉換完成之后,你將會看到一些好像圖像數據的字符串(JFIF和Photoshop字符串,如圖10)。通過將這些內容另存為.gif文件,你將能夠在Paint軟件或其他類似軟件中打開此圖片,結果如圖11所示。

圖10 解碼后的圖像數據

圖11 .rtf文件中的圖像
然后,沿著這條線索,我們繼續手動解碼每個部分,我們將得到比上一個更大的新圖片,而兩張圖片顯示的內容相同,都是同一座房子。然而,這次的文件大小為3M(圖12),而上一張圖片大小只有79KB(圖11)。

圖12 較大的圖片
通過谷歌圖片搜索這個圖片,我們發現,這實際上是一個設計的3D房子的外觀,它跟上面原始郵件中的內容并不相關。
使它看起來更可疑的是,里面竟然還嵌入了一個.docx文件(圖13)。當我試著打開該文件時,彈出了錯誤,而且XML文件中也并沒什么有趣的內容。

圖13 嵌入的.docx文件
在該文件中的大概第50000行的地方,我們可以看到97-2004office文檔的魔幻字節(圖14)。這再一次引發我們思考,為什么該.rtf文件中同時包含了新版本和舊版本格式的Word呢?

圖14 .doc魔幻字節的ASCII碼表示
在幾千行之后,我們看到了一些更加有趣的東西。駝峰式大小寫的方式一般是一種用于繞過殺毒軟件或其他簽名檢測機制的做法。

圖15 大小寫替換
大概2000行之后,我們發現了另一個函數(圖16)。

圖16 另一個函數
通過去除雙換行符( r r 和 n n),我們可以壓縮這些代碼以了解發生了什么,并以此方法來查看通常情況下在.rtf文件中不會被發現的代碼。

圖17 .rtf文件中本不該存在的代碼
在圖18紅線圈中部分,有一些在.rtf文件中本不該存在的十六進制代碼。在更下面有點(藍線圈中部分),我們也可以看到“AAAA”,這在匯編語言中一般表示指令“inc ecx”。

圖18 .rtf文件中的可疑部分
然而,在圖19中,我們發現一個小片段指示shellcode的大小。通過解碼這一片段,我們可以在最后面找到一個對可執行文件的引用,而這也是我們一直在尋找的東西(圖 20)。

圖19 看似shellcode的內容

圖20 shellcode,惡意URL:http://aspks.nl/components/kom/ks.exe
0×04 IDA分析
用IDA打開這個二進制文件之后,我們可以看到實際上這只是代碼的一個片段。下圖中的匯編指令跟我們猜想的很吻合,這些shellcode和其他代碼與一個比較老但是很穩定的漏洞CVE-2012-0158關系密切相關。

圖21 shellcode入口點附近
既然現在我們已經有了鏈接地址,那么我們可以測試下看看該惡意鏈接是否有效,結果顯示該地址仍舊有效(圖22)。

圖22 惡意文件下載
一旦執行該文件,將會在注冊表中創建一個作為運行鍵的存儲文件。

圖23 惡意軟件存儲安裝
惡意軟件安裝到了以下路徑:C:Users<username>AppDataRoamingRitese quapq.exe。從取證的角度來看,在該目錄或Roaming目錄中搜索exe文件將是無意義的,因為一般惡意軟件不會安裝在這些目錄下。
0×05 通信分析
對于惡意軟件的服務器端來說,該惡意軟件發起了很多對“file.php”和“gate.php”文件的請求(圖24)。從圖中可以看出,IP地址116.193.77.118也列在了ZeuS木馬的追蹤表單上(圖25)。

圖24 發出的HTTP請求

圖25 ZeuS追蹤IP地址
此外,通過Dump內存,我們還能看到其他的Ladycoll配置。

圖26 惡意軟件的內存dump
0×06 總結
最后,盡管CVE-2012-0158已經有3年了,但攻擊者現在仍舊使用此漏洞。即使他們混淆了這些文檔,但還是有可能通過分析找到他們的真實意圖。
注:惡意文件哈希:哈希1 哈希2
[參考來源phishme,轉載請注明來自FreeBuf黑客與極客]