Zbot老木馬換新裝 輕松繞過郵箱安全檢測
近日,360安全中心攔截到一個Zbot的變種木馬,專門盜取網(wǎng)友的銀行卡、電子郵箱密碼等個人信息。該變種木馬使用了三層保護(hù)技術(shù),能夠繞過QQ郵箱的安全檢測。不過360的 QVM引擎對這類樣本有著比較全面的收集和訓(xùn)練,能夠及時檢出***的變種。目前,該變種木馬已經(jīng)被360安全衛(wèi)士已經(jīng)攔截查殺。
一封來自“outlook官方”的郵件
最近工程師收到這樣一封郵件,發(fā)件人顯示為“Microsoft outlook”,附件貌似是個音頻文件。但是把附件下載到本地一看,卻是一個Zbot木馬。

Zbot其實(shí)是一個很古老的木馬了,它會將惡意代碼注入到除CSRSS.EXE以外的所有進(jìn)程。這些惡意代碼會掛鉤許多與網(wǎng)絡(luò)操作相關(guān)的函數(shù)來監(jiān)控網(wǎng)絡(luò)數(shù)據(jù),以達(dá)到盜取用戶銀行卡信息、電子郵箱密碼等個人信息的目的。盜取到的信息會先存儲在本地,隨后發(fā)送到配置文件里所指定的地址。但這個變種還有些新意,用了一些偽裝手段繞過了QQ郵箱的安全檢測。下面是詳細(xì)分析:
看“老”木馬如何“換新裝”

木馬加載過程
***層免殺:程序會先拷貝一段數(shù)組到內(nèi)存中去作為shellcode來執(zhí)行。

將這段內(nèi)存數(shù)據(jù)扒出來,用IDA查看。

可見這段代碼是被混淆過的,這些做法都是為了躲過殺軟的特征查殺。
第二層免殺:接著段代碼分配了一段內(nèi)存將宿主程序拷貝進(jìn)去,然后從文件的末尾往前搜索以B4E32392開頭的數(shù)據(jù)并進(jìn)行解密。

然后,shellcode調(diào)用VirtualAlloc重新分配一段空間(準(zhǔn)備填充解壓后的數(shù)據(jù)),再調(diào)用RtlDecompressBuffer將這段被解密的數(shù)據(jù)再解壓到重新分配的空間中,這段解密后的數(shù)據(jù)就是zbot木馬的文件數(shù)據(jù)。
以這樣的方式得到木馬文件就避免了釋放文件的操作,躲避了殺軟對木馬文件的掃描。


第三層免殺:之后程序以掛起的方式創(chuàng)建新的進(jìn)程(傀儡進(jìn)程),并調(diào)用釋放傀儡進(jìn)程的內(nèi)存映射,這樣是為后邊修改線程上下文做準(zhǔn)備。

重新分配空間并設(shè)置屬性為可執(zhí)行,用來存放母體文件的內(nèi)存映射。

分別寫入文件頭和各個區(qū)段。

再調(diào)用GetThreadContext獲得線程上下文,修改傀儡進(jìn)程的Eip,把Eip指向程序的入口,這是程序就跑到zbot木馬的入口點(diǎn)。


***調(diào)用SetThreadContext并恢復(fù)線程,木馬程序開始跑起來。
木馬就是通過這種方式,避免了直接加載母體進(jìn)程,從而逃避了部分殺軟的檢測。
寫在***:360為什么能查殺?
主文件使用.NET編寫的,作者通過在.NET程序里分配一段可執(zhí)行內(nèi)存空間,并拷貝一段被混淆的代碼到此空間,然后加載;接著混淆代碼又在文件中搜索被壓縮過的一段數(shù)據(jù)進(jìn)行解壓得到母體文件;***通過掛起新進(jìn)程,修改線程上下文的方式觸發(fā)母體文件。
簡單來說,木馬需要經(jīng)過以下幾部分才會運(yùn)行:宿主文件à混淆代碼à壓縮數(shù)據(jù)à母體文件à掛起線程修改eipà觸發(fā)木馬。
這個變種用了三層的保護(hù)技術(shù),增加了殺毒軟件檢測的難度,好在360的QVM對這類樣本有著比較全面的收集和訓(xùn)練,能夠檢出***出現(xiàn)的變種。
