1.樣本來(lái)源于《惡意代碼分析實(shí)戰(zhàn)》的實(shí)驗(yàn)樣本Lab11-03.exe和Lab11-03.dll.
2.首先對(duì)Lab11-03.exe進(jìn)行基礎(chǔ)分析锄贼,查看字符串和導(dǎo)入導(dǎo)出函數(shù)轴总。用strings可以看到
C:\WINDOWS\System32\inet_epar32.dll
zzz69806582
net start cisvc
C:\WINDOWS\System32\%s
cisvc.exe
Lab11-03.dll
等字符串,C:\WINDOWS\System32\inet_epar32.dll表示程序可能加載該dll,net start cisvc是服務(wù)的啟動(dòng)方式熏纯,cisvc.exe代表該程序可能被啟動(dòng)。然后對(duì)Lab11-03.dll進(jìn)行分析,出現(xiàn)了
C:\WINDOWS\System32\kernel64x.dll
zzz69806582
GetForegroundWindow
GetAsyncKeyState
等,C:\WINDOWS\System32\kernel64x.dll表示程序可能加載該dll,zzz69806582暫時(shí)還看不出來(lái)有什作用,GetForegroundWindow良价,GetAsyncKeyState表示這很可能是一個(gè)鍵盤(pán)記錄器。
3.然后進(jìn)行動(dòng)態(tài)分析,命令行切到當(dāng)前目錄下明垢,運(yùn)行Lab11-03.exe蚣常,用procmon和procexp進(jìn)行監(jiān)控,
如圖可以看到該樣本啟動(dòng)了一個(gè)服務(wù)痊银。至于啟動(dòng)什么服務(wù)史隆,通過(guò)procmon來(lái)具體看。
在進(jìn)程欄看到了net start cisvc
在文件操作一欄我們可以看到創(chuàng)建并寫(xiě)入了文件inet_epar32.dll,打開(kāi)了cisvc.exe
但是并沒(méi)有寫(xiě)入文件的操作曼验。
在注冊(cè)表一欄并沒(méi)有看到什么信息泌射。此時(shí)我們更換過(guò)濾條件,查看一下cisvc.exe進(jìn)行了哪些操作鬓照∪劭幔可以看到加載inet_epar32.dll,在系統(tǒng)文件夾中創(chuàng)建了kernel64x.dll文件豺裆,并寫(xiě)入了一些內(nèi)容猜測(cè)是鍵盤(pán)記錄的內(nèi)容拒秘。
4.下面進(jìn)行靜態(tài)高級(jí)分析。把Lab11-03.exe和Lab11-03.dll分別載入ida進(jìn)行分析臭猜。
代碼反編譯為c可以看到很簡(jiǎn)單躺酒。
首先是把Lab11-03.dll復(fù)制為C:\WINDOWS\System32\inet_epar32.dll,然后sub_401070函數(shù)時(shí)對(duì)cisvc.exe的操作蔑歌,看到是對(duì)cisvc.exe進(jìn)行文件映射然后byte_409030位置的314個(gè)字節(jié)的內(nèi)容寫(xiě)到cisvc.exe的開(kāi)始位置羹应,很顯示cisvc.exe插入了一段shellcode,下面查看這段shellcode,在409030位置可以看到是原始字節(jié)內(nèi)容,按c可以反匯編為匯編代碼次屠,如圖
如圖是shellcode 代碼园匹,在sehcode 末尾是一些字符串,按a可以顯示完整字符串劫灶,猜測(cè)此shellc是加載該dll,后面的字符串仍然不知道是什么裸违。
此時(shí)我們用ida加載inet_epart32.dll也即是Lab11-03.dll,在導(dǎo)出函數(shù)中我們可以看到是以上的未知字符串剛好是其的導(dǎo)出函數(shù)本昏,分析該函數(shù)看到僅僅只是創(chuàng)建了一個(gè)線程供汛,分析該線程,可以看到此線程是實(shí)現(xiàn)鍵盤(pán)記錄的涌穆,其記錄保存在C:\WINDOWS\System32\kernel64x.dll中怔昨。
下面對(duì)cisvc.exe進(jìn)行分析。分析插入shellcode前后的變化蒲犬。首先用PE view查看pe頭的變化朱监“斗龋可以看到入口位置發(fā)生了變化原叮。
分別用ida載入,可以看到插入shellcode的cisvc.exe入口點(diǎn)直接就是shellcode代碼,在od中載入奋隶,然后單步運(yùn)行觀察shellcode的功能擂送。
如圖1001b0a位置是加載C:\WINDOWS\System32\inet_epar32.dll的位置,下面是獲取
zzz69806582函數(shù)地址唯欣。到此整個(gè)流程就分析完了嘹吨。
Lab11-03.exe把Lab11-03.dll復(fù)制為C:\WINDOWS\System32\inet_epar32.dll,啟動(dòng)cisvc服務(wù)境氢,然后再cisvc.exe中插入一段shellcode蟀拷,來(lái)實(shí)現(xiàn)鍵盤(pán)記錄,記錄保存在C:\WINDOWS\System32\kernel64x.dll萍聊。打開(kāi)notepad隨便輸入進(jìn)行測(cè)試问芬,然后用flexhex打開(kāi)C:\WINDOWS\System32\kernel64x.dll,可以看到記錄了notepad和輸入的內(nèi)容寿桨。