对一款游戏木马的不完全分析
樣本鏈接:http://pan.baidu.com/s/1hqo96C0 密碼:t7se
一、基本信息
樣本名:Sample20150923.v
MD5:3EAE9CEB85B48804955EB5FF673C2D0C
SHA1:B0FAA74DD49CACCD365F0A69C0E076C2C1A56980
CRC32:715A63D9
樣本發現日期:--
樣本類型:“夢幻西游”盜號木馬
樣本文件大小:28672bytes
殼信息:UPX殼
脫殼后文件:"2.exe"大小:83456bytes占用空間:86016bytes
影響的系統:WinXP
二、簡介
“Sample20150923.v”是一個針對“夢幻西游”用戶,通過感染dsound.dll來竊取用戶信息的盜號木馬。
三、受感染的系統和環境說明
WinXP
四、文件系統變化
創建文件:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve(*為隨機數字)
C:\ProgramFiles\CommonFiles\System\kb******.bwb(隱藏)
C:\WINDOWS\system32\dsound.dll.dat.XXXX(重命名原dsound.dll,X為隨機大寫字符)
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
五、注冊表變化
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...
六、網絡癥狀
構造了HTTP協議(post/get)包,一旦“my.exe”(夢幻西游)運行,則設置的鉤子生效,向目標地址發送賬號信息。(圖a)
環境關系暫時還沒有分析具體的流量行為,時間允許的條件下應該搭好環境再分析樣本更完善。
圖 (a)
七、詳細分析/功能介紹
1.脫殼
PEID加載樣本,可發現樣本加了UPX殼(圖1.1)。OD加載樣本,F8單步運行,注意觀察ESP變化,當ESP變為0012ffa4時,下斷點hr0012FFa4。F9運行,從程序斷下來的地方開始單步跟蹤,附近找到OEP,樣本OEP為00404794處(圖1.2),在此保存為“2.exe”。
圖1.1
圖1.2
2.采用IDA靜態分析和OD動態分析結合的方式對樣本進行分析。
IDA加載脫殼后的樣本,進入WinMain函數,在OD里找到WinMain函數——2.00403703(圖2.1),對應IDA里的函數調試。
圖2.1
3.sub_402A66()函數分析
主要行為:為當前進程提權。
拼字符串“my.exe”、"SeDebugPrivilege"、"Advapi32.dll"、“OpenProcessToken”、“LookupPrivilegeValueA”、"AdjustTokenPrivileges"等
獲得當前進程的偽句柄,打開與進程相關聯的訪問令牌。查看系統權限值,為程序提權(圖3.1)
為進程創建進程快照
圖3.1
4.sub_402B14()函數分析
n 首先分配了一個大小為260的內存空間,接著調用sub_402B14()函數,向該內存空間寫文件"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve"。在函數sub_402B14()里,程序主要做了以下操作:
獲取temp目錄,
寫文件"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\kb******.sve",文件內容來自內存[00407070],文件名為“kb”+6位隨機數字+“.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"添加字節:隨機字節(9段)+固定字節(3段)(函數sub_402894中實現)。代碼如下:
v18=9
do // 向"%TEMP%\kb******.sve"填充隨機數,循環填充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);// 填充隨機數(個數隨機)
--v18;
}
while ( v18 );
v9 = v20;
WriteFile(v20, lpBuffer, Buffer - 8, &NumberOfBytesRead, 0);
WriteFile(v9, &Buffer, 4u, &NumberOfBytesRead, 0);
WriteFile(v9, &v16, 4u, &NumberOfBytesRead, 0);
通過注冊表檢測主機上是否安裝了“夢幻西游”(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\夢幻西游_is1" // [arg.4] = "InstallLocation" // [arg.5] = "\my.exe"
復制文件:
"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()函數分析
%temp%下創建批處理文件tempVidio.bat,利用該文件刪除下面兩個文件:
C:\DOCUME~1\ADMINI~1\桌面\2.EXE,
該批處理文件tempVidio.bat
tempVidio.bat內容為:
@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)脫殼
這是一個UPX加殼的dll文件,首先contrl+s,查找下面的命令:
xchg ah,al rol eax,10 xchg ah,al add eax,esi
找到在106617F6處,在其上面兩處下斷點,這里實在重定位表的RVA,重定位完后106617EC處跳轉(圖6.1),在10661810處下斷,F8單步觀察大跳的jump,不久找到OEP(10004F3E)。在此用OD脫殼,保存為dumpedkbX.bwb.dll。(圖6.3)
圖6.1
圖6.2
圖6.3
b)ImportREC修復IAT數據
運行ImpoertREConstructor,選中Ollydbg的loaddll.exe的進程,然后點“選取DLL”,選擇“kb******.bwb”。
填寫程序真正OEP,“IATAutoSearch”讓其自動檢測。
“GetImport”分析IAT結構得到基本信息。
修復所有dll,顯示“valid:YES”。
選擇“Addnewsection”為完全dump出的文件加一個section。
“FixDump”,選擇剛剛OD脫殼的文件“dumpedkbX.bwb.dll”,程序將自動創建“dumpedkbX.bwb_.dll”
c)分析“dumpedkbX.bwb_.dll”
IDA加載該dll文件,ctrl+E查找程序入口函數,發現入口函數有三個(圖6.4):
圖6.4
其中DllEntryPoint里面首先判斷該dll由什么程序加載,將調用程序先后與“ctfmon.exe”、“my.exe”、“QQLogin.exe”、“DNF.exe”進行對比,當調用程序為“my.exe”時創建一個線程,即在檢測到調用該dll的程序為“夢幻西游”時創建了這個線程,在線程里面實現盜取了用戶的登陸密碼。(圖6.5)(具體細節還沒有弄得特別清楚,暫且不寫入文檔,搞清楚了再更新)
其中LoadDll里面設置了WH_GETMESSAGE類型的全局鉤子,與所有線程關聯,在目標出程序之前獲得控制權,監視從GetMessageorPeekMessage函數返回的消息,以此監視鼠標和鍵盤輸入,以及其他發送到消息隊列中的消息。(圖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
八、總結
a)先用自動化工具跑一遍程序,觀察調用了哪些敏感的API,這些地方在后面分析的時候要多加注意。
b)當有釋放文件的時候,一定要想文件從哪里釋放來的,釋放這個文件的目的是什么,對釋放和受到感染的文件也要仔細分析。
c)初次修復數據,感覺還挺好玩的~~
d)待改進的:
對注冊表掌握不到位,至于知道程序在訪問或修改注冊表,但并不清楚修改的注冊表對應的意義。
當樣本通過釋放的dll感染dsound.dll的時候,是在原文件的基礎上做了修改,添加了數據,但由于堆棧和PE內存結構掌握不夠熟練,為什么修改某個內存的數據,為什么把惡意代碼添加到某個內存,這一部分還沒有理解透徹。
分析樣本釋放的dll的時候沒考慮到dll可能有多個入口參數,因此一開始沒找到鉤子。
對鉤子這部分不熟悉,理解不到位。
對樣本構造發送數據包部分沒有分析很清楚,在沒有安裝環境的機器上跑樣本還無法進行正確的動態分析和流量分析,時間允許的情況下應該在搭好環境之后分析樣本才分析更完善。
-Vi 大師見笑,歡迎指正.
總結
以上是生活随笔為你收集整理的对一款游戏木马的不完全分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云顶之弈狂野6换形怎么玩 狂野6幻想换形
- 下一篇: 碎碎念浅谈randomize()与pre