对一款游戏木马的不完全分析
樣本鏈接:http://pan.baidu.com/s/1hqo96C0 密碼:t7se
一、基本信息
樣本名:Sample20150923.v
MD5:3EAE9CEB85B48804955EB5FF673C2D0C
SHA1:B0FAA74DD49CACCD365F0A69C0E076C2C1A56980
CRC32:715A63D9
樣本發(fā)現(xiàn)日期:--
樣本類型:“夢(mèng)幻西游”盜號(hào)木馬
樣本文件大小:28672bytes
殼信息:UPX殼
脫殼后文件:"2.exe"大小:83456bytes占用空間:86016bytes
影響的系統(tǒng):WinXP
二、簡(jiǎn)介
“Sample20150923.v”是一個(gè)針對(duì)“夢(mèng)幻西游”用戶,通過(guò)感染dsound.dll來(lái)竊取用戶信息的盜號(hào)木馬。
三、受感染的系統(tǒng)和環(huán)境說(shuō)明
WinXP
四、文件系統(tǒng)變化
創(chuàng)建文件:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve(*為隨機(jī)數(shù)字)
C:\ProgramFiles\CommonFiles\System\kb******.bwb(隱藏)
C:\WINDOWS\system32\dsound.dll.dat.XXXX(重命名原dsound.dll,X為隨機(jī)大寫字符)
C:\WINDOWS\system32\dsound.dll.dat(替換dsound.dll)
C:\WINDOWS\system32\DllCache\dsound.dll
C:\WINDOWS\system32\DllCache\dsound.dll.dat.XXXX
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tempVidio.bat
感染文件:
C:\WINDOWS\system32\dsound.dll
感染前大小:367616bytes占用空間:368640bytes
感染后大小:369664bytes占用空間:372736bytes
刪除文件:
exe文件本身
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tempVidio.bat
五、注冊(cè)表變化
2.EXE:1220
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=1D0C554F5DD41039...
explorer.exe:1960
HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\C:\DocumentsandSettings\Administrator\桌面\2.EXE="2"
2.EXE:1220
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=E2DCA1FF0C9FB4D5...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=3D94431CB212AC03...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=9B7A8E9F8DE6A3E1...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=94EBEFE87914F520...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=47926C2157DA1C86...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=03C94E15493D6B15...
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=75104B7CB949F2B4...
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Personal="C:\DocumentsandSettings\Administrator\MyDocuments"
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{acb37fdd-2971-11e5-bcaf-806d6172696f}\\BaseClass="Drive"
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{acb37fdb-2971-11e5-bcaf-806d6172696f}\\BaseClass="Drive"
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\{acb37fda-2971-11e5-bcaf-806d6172696f}\\BaseClass="Drive"
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\CommonDocuments="C:\DocumentsandSettings\AllUsers\Documents"
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Desktop="C:\DocumentsandSettings\Administrator\桌面"
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\CommonDesktop="C:\DocumentsandSettings\AllUsers\桌面"
HKCU\Software\Microsoft\Windows\CurrentVersion\InternetSettings\ZoneMap\\ProxyBypass=2(次)0x1
HKCU\Software\Microsoft\Windows\CurrentVersion\InternetSettings\ZoneMap\\IntranetName=2(次)0x1
HKCU\Software\Microsoft\Windows\CurrentVersion\InternetSettings\ZoneMap\\UNCAsIntranet=2(次)0x1
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Cache="C:\DocumentsandSettings\Administrator\LocalSettings\TemporaryInternetFiles"
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Cookies="C:\DocumentsandSettings\Administrator\Cookies"
HKCU\Software\Microsoft\Windows\ShellNoRoam\MUICache\C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tempVidio.bat="tempVidio"
cmd.exe:2340
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed=FF142459BE63957D...
六、網(wǎng)絡(luò)癥狀
構(gòu)造了HTTP協(xié)議(post/get)包,一旦“my.exe”(夢(mèng)幻西游)運(yùn)行,則設(shè)置的鉤子生效,向目標(biāo)地址發(fā)送賬號(hào)信息。(圖a)
環(huán)境關(guān)系暫時(shí)還沒(méi)有分析具體的流量行為,時(shí)間允許的條件下應(yīng)該搭好環(huán)境再分析樣本更完善。
圖 (a)
七、詳細(xì)分析/功能介紹
1.脫殼
PEID加載樣本,可發(fā)現(xiàn)樣本加了UPX殼(圖1.1)。OD加載樣本,F(xiàn)8單步運(yùn)行,注意觀察ESP變化,當(dāng)ESP變?yōu)?012ffa4時(shí),下斷點(diǎn)hr0012FFa4。F9運(yùn)行,從程序斷下來(lái)的地方開(kāi)始單步跟蹤,附近找到OEP,樣本OEP為00404794處(圖1.2),在此保存為“2.exe”。
圖1.1
圖1.2
2.采用IDA靜態(tài)分析和OD動(dòng)態(tài)分析結(jié)合的方式對(duì)樣本進(jìn)行分析。
IDA加載脫殼后的樣本,進(jìn)入WinMain函數(shù),在OD里找到WinMain函數(shù)——2.00403703(圖2.1),對(duì)應(yīng)IDA里的函數(shù)調(diào)試。
圖2.1
3.sub_402A66()函數(shù)分析
主要行為:為當(dāng)前進(jìn)程提權(quán)。
拼字符串“my.exe”、"SeDebugPrivilege"、"Advapi32.dll"、“OpenProcessToken”、“LookupPrivilegeValueA”、"AdjustTokenPrivileges"等
獲得當(dāng)前進(jìn)程的偽句柄,打開(kāi)與進(jìn)程相關(guān)聯(lián)的訪問(wèn)令牌。查看系統(tǒng)權(quán)限值,為程序提權(quán)(圖3.1)
為進(jìn)程創(chuàng)建進(jìn)程快照
圖3.1
4.sub_402B14()函數(shù)分析
n 首先分配了一個(gè)大小為260的內(nèi)存空間,接著調(diào)用sub_402B14()函數(shù),向該內(nèi)存空間寫文件"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve"。在函數(shù)sub_402B14()里,程序主要做了以下操作:
獲取temp目錄,
寫文件"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve",文件內(nèi)容來(lái)自內(nèi)存[00407070],文件名為“kb”+6位隨機(jī)數(shù)字+“.sve”。(圖4.1.1圖4.1.2圖4.1.3)
圖 4.1.1
圖 4.1.2
圖 4.1.3
向文件"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve"添加字節(jié):隨機(jī)字節(jié)(9段)+固定字節(jié)(3段)(函數(shù)sub_402894中實(shí)現(xiàn))。代碼如下:
v18=9
do // 向"%TEMP%\kb******.sve"填充隨機(jī)數(shù),循環(huán)填充9次
{
v14[0] = 0;
memset(&v14[1], 0, 0x270Cu);
*(_WORD *)&v14[9997] = 0;
v14[9999] = 0;
v4 = rand();
v22 = 0;
v25 = 0;
v5 = 1000 * (v4 % 10 + 1);
if ( (signed int)v5 > 0 )
{
do
{
v6 = rand();
v7 = v25;
v8 = v22 + v6;
v25 += 4;
++v22;
*(_DWORD *)&v14[v7] = v8;
}
while ( v25 < (signed int)v5 );
}
WriteFile(v20, v14, v5, &NumberOfBytesRead, 0);// 填充隨機(jī)數(shù)(個(gè)數(shù)隨機(jī))
--v18;
}
while ( v18 );
v9 = v20;
WriteFile(v20, lpBuffer, Buffer - 8, &NumberOfBytesRead, 0);
WriteFile(v9, &Buffer, 4u, &NumberOfBytesRead, 0);
WriteFile(v9, &v16, 4u, &NumberOfBytesRead, 0);
通過(guò)注冊(cè)表檢測(cè)主機(jī)上是否安裝了“夢(mèng)幻西游”(my.exe)游戲,如果安裝了,找到安裝目錄:
int __cdecl sub_401E53(char *Str, int a2, int a3, int a4, char *SubStr) // [arg.1] = buffer // [arg.2] = 0x80000002 = -2147483646. // [arg.3] = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\夢(mèng)幻西游_is1" // [arg.4] = "InstallLocation" // [arg.5] = "\my.exe"
復(fù)制文件:
"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve"-—〉 "C:\ProgramFiles\CommonFiles\system\\kb******.bwb"
修改.bwb文件屬性為隱藏文件。
利用“C:\ProgramFiles\CommonFiles\system\\kb******.bwb”感染“dsound.dll”,感染后的文件為“dsound.dll.dat”
重命名文件”dsound.dll”為"dsound.dll.XXXX"
重命名"dsound.dll.dat"為“dsound.dll”(感染之后)
5.sub_40333C()函數(shù)分析
%temp%下創(chuàng)建批處理文件tempVidio.bat,利用該文件刪除下面兩個(gè)文件:
C:\DOCUME~1\ADMINI~1\桌面\2.EXE,
該批處理文件tempVidio.bat
tempVidio.bat內(nèi)容為:
@echo off :try del C:\DOCUME~1\ADMINI~1\桌面\2.EXE if exist C:\DOCUME~1\ADMINI~1\桌面\2.EXE goto try del C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tempVidio.bat
6.“C:\ProgramFiles\CommonFiles\System\kb******.bwb”分析
a)脫殼
這是一個(gè)UPX加殼的dll文件,首先contrl+s,查找下面的命令:
xchg ah,al rol eax,10 xchg ah,al add eax,esi
找到在106617F6處,在其上面兩處下斷點(diǎn),這里實(shí)在重定位表的RVA,重定位完后106617EC處跳轉(zhuǎn)(圖6.1),在10661810處下斷,F(xiàn)8單步觀察大跳的jump,不久找到OEP(10004F3E)。在此用OD脫殼,保存為dumpedkbX.bwb.dll。(圖6.3)
圖6.1
圖6.2
圖6.3
b)ImportREC修復(fù)IAT數(shù)據(jù)
運(yùn)行ImpoertREConstructor,選中Ollydbg的loaddll.exe的進(jìn)程,然后點(diǎn)“選取DLL”,選擇“kb******.bwb”。
填寫程序真正OEP,“IATAutoSearch”讓其自動(dòng)檢測(cè)。
“GetImport”分析IAT結(jié)構(gòu)得到基本信息。
修復(fù)所有dll,顯示“valid:YES”。
選擇“Addnewsection”為完全dump出的文件加一個(gè)section。
“FixDump”,選擇剛剛OD脫殼的文件“dumpedkbX.bwb.dll”,程序?qū)⒆詣?dòng)創(chuàng)建“dumpedkbX.bwb_.dll”
c)分析“dumpedkbX.bwb_.dll”
IDA加載該dll文件,ctrl+E查找程序入口函數(shù),發(fā)現(xiàn)入口函數(shù)有三個(gè)(圖6.4):
圖6.4
其中DllEntryPoint里面首先判斷該dll由什么程序加載,將調(diào)用程序先后與“ctfmon.exe”、“my.exe”、“QQLogin.exe”、“DNF.exe”進(jìn)行對(duì)比,當(dāng)調(diào)用程序?yàn)椤癿y.exe”時(shí)創(chuàng)建一個(gè)線程,即在檢測(cè)到調(diào)用該dll的程序?yàn)椤皦?mèng)幻西游”時(shí)創(chuàng)建了這個(gè)線程,在線程里面實(shí)現(xiàn)盜取了用戶的登陸密碼。(圖6.5)(具體細(xì)節(jié)還沒(méi)有弄得特別清楚,暫且不寫入文檔,搞清楚了再更新)
其中LoadDll里面設(shè)置了WH_GETMESSAGE類型的全局鉤子,與所有線程關(guān)聯(lián),在目標(biāo)出程序之前獲得控制權(quán),監(jiān)視從GetMessageorPeekMessage函數(shù)返回的消息,以此監(jiān)視鼠標(biāo)和鍵盤輸入,以及其他發(fā)送到消息隊(duì)列中的消息。(圖6.6)
在CancelDll里面UnhookWindowsHookEx。(圖6.7)
圖6.5
圖6.6
圖6.7
7.分析感染后的dsound.dll
加載了“C:\ProgramFiles\CommonFiles\System\kb******.bwb”(圖7.1、圖7.2)
圖7.1
圖7.2
八、總結(jié)
a)先用自動(dòng)化工具跑一遍程序,觀察調(diào)用了哪些敏感的API,這些地方在后面分析的時(shí)候要多加注意。
b)當(dāng)有釋放文件的時(shí)候,一定要想文件從哪里釋放來(lái)的,釋放這個(gè)文件的目的是什么,對(duì)釋放和受到感染的文件也要仔細(xì)分析。
c)初次修復(fù)數(shù)據(jù),感覺(jué)還挺好玩的~~
d)待改進(jìn)的:
對(duì)注冊(cè)表掌握不到位,至于知道程序在訪問(wèn)或修改注冊(cè)表,但并不清楚修改的注冊(cè)表對(duì)應(yīng)的意義。
當(dāng)樣本通過(guò)釋放的dll感染dsound.dll的時(shí)候,是在原文件的基礎(chǔ)上做了修改,添加了數(shù)據(jù),但由于堆棧和PE內(nèi)存結(jié)構(gòu)掌握不夠熟練,為什么修改某個(gè)內(nèi)存的數(shù)據(jù),為什么把惡意代碼添加到某個(gè)內(nèi)存,這一部分還沒(méi)有理解透徹。
分析樣本釋放的dll的時(shí)候沒(méi)考慮到dll可能有多個(gè)入口參數(shù),因此一開(kāi)始沒(méi)找到鉤子。
對(duì)鉤子這部分不熟悉,理解不到位。
對(duì)樣本構(gòu)造發(fā)送數(shù)據(jù)包部分沒(méi)有分析很清楚,在沒(méi)有安裝環(huán)境的機(jī)器上跑樣本還無(wú)法進(jìn)行正確的動(dòng)態(tài)分析和流量分析,時(shí)間允許的情況下應(yīng)該在搭好環(huán)境之后分析樣本才分析更完善。
-Vi 大師見(jiàn)笑,歡迎指正.
總結(jié)
以上是生活随笔為你收集整理的对一款游戏木马的不完全分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 云顶之弈狂野6换形怎么玩 狂野6幻想换形
- 下一篇: 如何获取元素与当前可视区域顶部的距离