惡意代碼分析利器 – scdbg
什么是scdbg
scdbg是一款多平臺(tái)開源的Shellcode模擬運(yùn)行、分析工具。其基于libemulibrary搭建的虛擬環(huán)境,通過模擬32位處理器、內(nèi)存和基本W(wǎng)indows API運(yùn)行環(huán)境來虛擬執(zhí)行Shellcode以分析其行為。有了虛擬執(zhí)行媽媽再也不用擔(dān)心我的電腦中病毒了。
基本原理
眾所周知,shellcode為了實(shí)現(xiàn)特定的功能必須通過調(diào)用系統(tǒng)API來完成-不論先前怎怎么變形怎么加密***都會(huì)調(diào)用系統(tǒng)API。scdbg就是通過模擬執(zhí)行以及hook多達(dá)200多個(gè)API來探測(cè)shellcode的行為。當(dāng)然比如創(chuàng)建文件和訪問網(wǎng)絡(luò)這些危險(xiǎn)的API并沒有真正的在本機(jī)執(zhí)行,而是通過傳回虛假的返回值來欺騙shellcode讓其平穩(wěn)運(yùn)行。
示例
直接命令行輸入scdbg.exe example.sc 來看看輸出:
其中example.sc文件就是以二進(jìn)制形式保存的Shellcode,我們可以看到這段shellcode調(diào)用了兩次較關(guān)鍵的函數(shù)-CreateProcessA,***次調(diào)用tftp.exe程序下載winapi32.exe,第二次準(zhǔn)備執(zhí)行之。很典型的下載并執(zhí)行行為。有了scdbg我們就不必花很多時(shí)間在搭建測(cè)試環(huán)境、解碼shellcode、調(diào)試?yán)斫飧鞣N分枝跳轉(zhuǎn)、擔(dān)心機(jī)器是否中招。。。。。。簡(jiǎn)單明了。
scdbg和通常的命令行工具一樣,有著眾多參數(shù)選項(xiàng),這里只做最基本的演示,就不一一列舉。想必大家都有在命令行下痛苦的經(jīng)歷,命令行的歷史就是我等小菜的血淚史,還好scdbg有GUI圖形界面版:
指定偏移,自定參數(shù)一目了然。
亮點(diǎn)
A. 跨平臺(tái)開源
同時(shí)支持unix和windows系統(tǒng)。對(duì)有系統(tǒng)潔癖的同學(xué)來說可以放心在unix下搭建環(huán)境“調(diào)戲”shellcode了。
B.文檔類格式漏洞
scdbg能很容易通過交互方式分析諸如pdf,excel,word等文檔類漏洞釋放出來的shellcode。這類漏洞的相同點(diǎn)就是首先肯定會(huì)通過調(diào)用GetFileSize找到宿主文
件句柄然后進(jìn)行下一步操作(是這樣的吧:)。感覺這項(xiàng)功能還是有很多應(yīng)用場(chǎng)景的,命令行如下:
$ ./scdbg -f test.sc -fopen bad.pdf -i fopen(bad.pdf) = 4d565c Loaded 312 bytes from file test.sc Initialization Complete.. Interactive Hooks enabled 401083 GetFileSize(4) = 2031b 401112 GlobalAlloc(sz=2031b) = 60000 401118 SetFilePointer(hFile=4, dist=0, FILE_BEGIN) 401132 ReadFile(hFile=4, buf=60000, numBytes=2031b) 401147 CreateFile(x.exe) Interactive mode local file: /tmp/WHhUmhtM 401158 WriteFile() 401176 WinExec(x.exe)
其他重要功能
內(nèi)存監(jiān)視-簡(jiǎn)單調(diào)試Shell-ROPshellcode分析-內(nèi)存dump。。。。。。
資源下載
WIN32
可執(zhí)行程序: http://sandsprite.com/CodeStuff/scdbg.zip
源代碼:https://github.com/dzzie/VS_LIBEMU
git clone git://github.com/dzzie/VS_LIBEMU.git
*nix/Cygwin Source
源代碼 : https://github.com/dzzie/SCDBG
git clone git://github.com/dzzie/SCDBG.git