末日情人節(jié),你為心愛(ài)的他準(zhǔn)備了什么禮物呢?當(dāng)你在網(wǎng)上精心為她挑選禮物時(shí)千萬(wàn)要小心網(wǎng)購(gòu)木馬入侵!進(jìn)入二月以來(lái),我們發(fā)現(xiàn)網(wǎng)購(gòu)木馬日?;钴S,以下是這類(lèi)網(wǎng)購(gòu)木馬的詳細(xì)分析報(bào)告
一. 病毒描述:
網(wǎng)購(gòu)木馬運(yùn)行后會(huì)在用戶使用網(wǎng)銀購(gòu)買(mǎi)商品時(shí),彈出釣魚(yú)頁(yè)面把用戶銀行的錢(qián)為病毒作者購(gòu)買(mǎi)聯(lián)通充值卡或其他商品.
該病毒會(huì)用帶數(shù)字簽名的好壓程序(或暴風(fēng)程序)來(lái)加載病毒模塊并將木馬模塊注入到系統(tǒng)進(jìn)程中讓系統(tǒng)進(jìn)程作為病毒載體運(yùn)行.
受影響網(wǎng)銀:中國(guó)銀行,中國(guó)工商銀行,中國(guó)民生銀行,浦發(fā)銀行,招商銀行 等
二.變量聲明:
%System32% win32子系統(tǒng)目錄通常為C:\windows\system32
%ProgramFiles% 軟件安裝目錄 通常為C:\Program Files
三.病毒文件:
四.病毒母體工作流程分析(HaoZip.dll):
1.正常的好壓程序被運(yùn)行后,該病毒dll會(huì)被加載.
2.當(dāng)該dll被加載后,首先會(huì)創(chuàng)建一個(gè)互斥對(duì)象,并通過(guò)返回值判斷此對(duì)象是否存在,如果存在則表示好壓程序已經(jīng)運(yùn)行并且該dll已經(jīng)被加載,故會(huì)讓剛剛運(yùn)行的好壓程序退出.
3.如果是第一次被加載,則會(huì)首先獲得其進(jìn)程主模塊文件名并判斷是不是好壓程序是否成功運(yùn)行的標(biāo)志.
4.從dat中讀取1024字節(jié)(最終PE的SizeofHeaders)到申請(qǐng)的空間中,依次異或0x4c并加0x4d用來(lái)解密,最后把解密后的PE頭信息存放到文件中
6.創(chuàng)建注冊(cè)表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run設(shè)置自啟動(dòng).
7.接著病毒進(jìn)入了一個(gè)while死循環(huán),通過(guò)全局變量保存傀儡系統(tǒng)進(jìn)程的進(jìn)程ID,每隔5秒檢測(cè)預(yù)先保存的傀儡進(jìn)程ID是否有效,來(lái)判斷傀儡進(jìn)程是否存在,如果不存在就重新創(chuàng)建.直到好壓程序被結(jié)束才會(huì)退出該循環(huán).
五. 母體創(chuàng)建傀儡進(jìn)程分析:
1.如果不存在,則進(jìn)入到創(chuàng)建傀儡進(jìn)程的流程,這也是母體的一個(gè)亮點(diǎn).
2.首先讀入dat文件,此文件為最終網(wǎng)購(gòu)木馬的PE頭部部分大小1024字節(jié),通過(guò)讀入內(nèi)容來(lái)校驗(yàn)MZ頭PE頭等有效性,以及獲得SizeOfImage OEP等關(guān)鍵PE信息.
3.,然后進(jìn)行解密,解密方法依次異或0x4c并加上0x4d,先解密PE頭部,然后依次解密各個(gè)節(jié).在解密過(guò)程中會(huì)校驗(yàn),如有不同則不會(huì)解密.
4.然后獲取后續(xù)注入用的函數(shù)地址:ZwUnmapViewOfSection VirtualProtectEx VirtualAllocEx WriteProcessMemory SetThreadContext ResumeThread ReadProcessMemoryGetThreadContext CreateProcessAsUserA等函數(shù)的地址,為后續(xù)“注入”做準(zhǔn)備.
5.枚舉進(jìn)程獲得Explorer.exe的進(jìn)程ID,然后 獲得EXPLORER.EXE的進(jìn)程訪問(wèn)令牌.
6.然后以掛起標(biāo)志創(chuàng)建傀儡系統(tǒng)進(jìn)程,應(yīng)用程序路徑為%System32%\notepad.exe,把其訪問(wèn)令牌設(shè)置為12中得到的Token,并且其桌面設(shè)置為winsta0\\default,而不是繼承其主進(jìn)程的桌面.
7.獲得剛創(chuàng)建的傀儡系統(tǒng)線程上下文ThreadContext.
8.獲得進(jìn)程主映像文件的映像加載基地址.即獲得系統(tǒng)原文件的ImageBase
9.最后傳入ImageBase卸載掉進(jìn)程notepad.exe的主映像.
10.在notepad.exe進(jìn)程中申請(qǐng)空間容納已經(jīng)在好壓程序進(jìn)程空間中解密完成的病毒PE文件.
11.修改PEB處原進(jìn)程ImageBase
12.在notepad.exe的進(jìn)程空間中從地址0x00400000開(kāi)始寫(xiě)入解密后的病毒PE文件.
13.并設(shè)置此時(shí)線程上下文eax的值為病毒PE文件的OEP.然后把上下文信息設(shè)置回去
14.恢復(fù)notepad.exe進(jìn)程運(yùn)行,這樣貌似正常的系統(tǒng)進(jìn)程notepad.exe實(shí)際上運(yùn)行的是病毒代碼.這樣傀儡進(jìn)程就創(chuàng)建完畢.可見(jiàn)病毒作者對(duì)內(nèi)核還是有一定了解的.
六.主功能網(wǎng)銀劫持木馬文件分析:
1. 首先病毒運(yùn)行會(huì)創(chuàng)建隱藏窗口,并修改其窗口回調(diào)函數(shù).
2. 設(shè)置一定時(shí)器Timer,每隔一段時(shí)間枚舉當(dāng)前系統(tǒng)進(jìn)程,檢測(cè)是否有sougouexplorer.exe的存在,因?yàn)椴《镜墓δ苁腔贗E內(nèi)核,所以如果用戶運(yùn)行搜狗瀏覽器則會(huì)結(jié)束掉.
3設(shè)置另一定時(shí)器Timer,每隔一段時(shí)間枚舉當(dāng)前桌面所有窗口句柄,然后調(diào)用GetClassName獲得其類(lèi)名,并將類(lèi)名與Internet Explorer_Server進(jìn)行比較,如果其類(lèi)名是Internet Explorer_Server,表明用戶正在瀏覽IE頁(yè)面.
4. 從IE瀏覽器控件中獲得關(guān)鍵指針.
5. 獲得指針之后就可以獲得IE頁(yè)面的各種信息.以及修改當(dāng)前頁(yè)面的相關(guān)信息.
6. 通過(guò)調(diào)用WININET.DLL的導(dǎo)出函數(shù)來(lái)來(lái)讀取病毒作者指定的網(wǎng)頁(yè)用來(lái)獲得病毒作者事先準(zhǔn)備的郵箱等.
調(diào)試信息
7. 調(diào)用WININET.DLL的導(dǎo)出函數(shù)訪問(wèn)讀取另一個(gè)網(wǎng)址 http://bank.corsgate.com/msg.asp?Uid=c5344b32-5726c3e5-ca852db5-dae88a7d的內(nèi)容獲得病毒進(jìn)程要彈框的對(duì)話框標(biāo)題 內(nèi)容為:系統(tǒng)不支持.因?yàn)椴《咀髡呤褂玫氖荅語(yǔ)言模塊,是破解版,但是和諧不了其模塊的驗(yàn)證機(jī)制,所以程序運(yùn)行通過(guò)自校驗(yàn)此E語(yǔ)言模塊會(huì)彈框正常情況下會(huì)彈出內(nèi)容為:該模塊已被惡意修改過(guò),為了確保模塊不會(huì)被邦定木馬!請(qǐng)到[精易論壇]下載原始版!....的對(duì)話框,而為了不讓用戶注意所以病毒作者修改了此彈框內(nèi)容把彈框內(nèi)容改為系統(tǒng)不支持.
8. 獲得當(dāng)前IE頁(yè)面的domain域名信息如果其域名信息模糊匹配到了以下中的任何一個(gè):
location.cashier.alipay.com/standard/payment/cashier.htm 支付寶支付頁(yè)面
www.99bill.com/bankgateway/bankCardPayRedirectResponse.htm.----快錢(qián)
netpay31.sdo.com/paygate/BankCallBack.aspx.---- 盛付通
payment.safepass.cn/bank_receive.php.----百聯(lián)電子商務(wù)支付
bank.yeepay.com/app-merchant-proxy/neticbcsztobank.action---易寶支付
www.game2.cn/?view=info?ice=.pay.soopay.net/spay/pay/wyPayReturn.do.payment.----哥們網(wǎng)游平臺(tái)
chinapay.com/pay/Output.jsp.pay.ztgame.com:91/result.php-----銀聯(lián)在線
此外病毒對(duì)人人網(wǎng), 4399上的支付也有同樣的劫持效果.
10. 當(dāng)用戶選擇銀行點(diǎn)擊下一步提交時(shí),病毒獲得頁(yè)面信息進(jìn)而獲得用戶所使用的銀行 以及購(gòu)買(mǎi)數(shù)量和需要使用的金額.用于生成釣魚(yú)頁(yè)面.
11. 其中病毒對(duì)淘寶頁(yè)面有特殊處理,當(dāng)用戶到達(dá)支付頁(yè)面時(shí),病毒會(huì)修改網(wǎng)頁(yè)內(nèi)容,使用戶不能使用余額支付,當(dāng)用戶使用卡通支付時(shí),在跳轉(zhuǎn)頁(yè)面后病毒會(huì)修改主頁(yè)顯示卡通不能用,總之病毒的目的就是迫使用戶使用網(wǎng)銀支付.
12. 當(dāng)用戶選擇網(wǎng)上銀行,然后欲登錄網(wǎng)銀支付頁(yè)面時(shí),病毒將用戶的花費(fèi)信息以及所使用的銀行發(fā)送到病毒作者域名空間中.
13. 然后根據(jù)獲得的銀行然后和病毒所支持的釣魚(yú)頁(yè)面銀行名單做對(duì)比,如果符合則開(kāi)始進(jìn)行為病毒作者購(gòu)買(mǎi)聯(lián)通充值卡.符合病毒的網(wǎng)上銀行有:中國(guó)農(nóng)業(yè)銀行,廣發(fā)銀行,中國(guó)銀行,中國(guó)工商銀行,中國(guó)民生銀行 浦發(fā)銀行 招商銀行 等.
14. 如果符合的話則病毒會(huì)跳轉(zhuǎn)頁(yè)面.快速跳轉(zhuǎn)到聯(lián)通購(gòu)卡面,
15. 然后病毒迅速填寫(xiě)購(gòu)買(mǎi)充值卡數(shù)量,其中需要填寫(xiě)驗(yàn)證碼,這點(diǎn)病毒不可繞過(guò),所以病毒會(huì)彈出一個(gè)頁(yè)面,同步購(gòu)卡頁(yè)面的驗(yàn)證碼來(lái)誘使用戶填寫(xiě)驗(yàn)證碼.
16. 當(dāng)用戶填寫(xiě)驗(yàn)證碼點(diǎn)擊繼續(xù)支付時(shí),病毒會(huì)迅速填寫(xiě)表單,把需要填寫(xiě)的郵箱填寫(xiě)為病毒作者的郵箱,這樣購(gòu)買(mǎi)的卡號(hào)等會(huì)通過(guò)病毒作者的郵箱來(lái)獲得,然后自動(dòng)跳轉(zhuǎn)并且病毒自動(dòng)點(diǎn)擊下一步,直至將要跳轉(zhuǎn)到網(wǎng)銀支付階段.由于填寫(xiě)迅速所以用戶很難發(fā)現(xiàn)此頁(yè)面的存在過(guò).
17. 然后根據(jù)用戶使用的銀行 以及所花費(fèi)的金錢(qián) 訂單數(shù)等生成一個(gè)假的支付頁(yè)面,在URL不變的情況下加載病毒生存的url頁(yè)面.其支付頁(yè)面具有真實(shí)的支付功能,只是相關(guān)表單是病毒通過(guò)用戶購(gòu)買(mǎi)真實(shí)的物品所填寫(xiě),而不是填寫(xiě)病毒的購(gòu)卡信息等.用來(lái)誘騙用戶支付.當(dāng)用戶輸入相關(guān)銀行賬號(hào)密碼等,其實(shí)際購(gòu)買(mǎi)的是聯(lián)通充值卡,而卡號(hào)相關(guān)的被發(fā)送到病毒作者的郵箱中.
到此病毒竊取用戶網(wǎng)銀金錢(qián)成功.當(dāng)用戶付完款后會(huì)提示交易超時(shí)等讓用戶在此付款直到卡內(nèi)沒(méi)錢(qián).
七.辨別真假網(wǎng)銀頁(yè)面:
下面看下網(wǎng)銀頁(yè)面真假對(duì)比
通過(guò)上面的真假頁(yè)面對(duì)比可知,他們有一個(gè)共同點(diǎn):訂單號(hào)的區(qū)別.
即正常網(wǎng)銀的支付頁(yè)面的訂單信息中訂單號(hào)是以當(dāng)前日期為開(kāi)始的,而假頁(yè)面的訂單號(hào)為隨機(jī)的幾位數(shù)字.
即用戶通過(guò)判斷訂單號(hào)是否是以當(dāng)前日期為開(kāi)始的數(shù)字串即可辨別此類(lèi)病毒所導(dǎo)致的釣魚(yú)頁(yè)面.
八. 好壓/暴風(fēng)程序"漏洞"分析:
病毒作者之所以選擇好壓或者暴風(fēng)程序作為病毒Loader,是因?yàn)楹脡?暴風(fēng)在運(yùn)行時(shí)會(huì)加載haozip/StromUpdate.dll,但該升級(jí)程序疏忽的兩點(diǎn)是1.該程序未對(duì)DLL路徑做任何判斷,只是簡(jiǎn)單的獲取好壓/暴風(fēng)程序的路徑然后在其目錄下拼接dll路徑(如果對(duì)DLL路徑做檢測(cè)比如DLL路徑必須是好壓/暴風(fēng)的安裝路徑的話,可能病毒dll就不會(huì)被加載).2.該程序沒(méi)有對(duì)其DLL做校驗(yàn),比如檢測(cè)是否有好壓/暴風(fēng)的數(shù)字簽名,以及crc32校驗(yàn)等.正因?yàn)檫@兩點(diǎn)疏忽導(dǎo)致被病毒利用.
|