惡意代碼分析利器 – scdbg
什么是scdbg
scdbg是一款多平臺開源的Shellcode模擬運行、分析工具。其基于libemulibrary搭建的虛擬環(huán)境,通過模擬32位處理器、內(nèi)存和基本W(wǎng)indows API運行環(huán)境來虛擬執(zhí)行Shellcode以分析其行為。有了虛擬執(zhí)行媽媽再也不用擔心我的電腦中病毒了。
基本原理
眾所周知,shellcode為了實現(xiàn)特定的功能必須通過調(diào)用系統(tǒng)API來完成-不論先前怎怎么變形怎么加密***都會調(diào)用系統(tǒng)API。scdbg就是通過模擬執(zhí)行以及hook多達200多個API來探測shellcode的行為。當然比如創(chuàng)建文件和訪問網(wǎng)絡(luò)這些危險的API并沒有真正的在本機執(zhí)行,而是通過傳回虛假的返回值來欺騙shellcode讓其平穩(wěn)運行。
示例
直接命令行輸入scdbg.exe example.sc 來看看輸出:
其中example.sc文件就是以二進制形式保存的Shellcode,我們可以看到這段shellcode調(diào)用了兩次較關(guān)鍵的函數(shù)-CreateProcessA,***次調(diào)用tftp.exe程序下載winapi32.exe,第二次準備執(zhí)行之。很典型的下載并執(zhí)行行為。有了scdbg我們就不必花很多時間在搭建測試環(huán)境、解碼shellcode、調(diào)試理解各種分枝跳轉(zhuǎn)、擔心機器是否中招。。。。。。簡單明了。
scdbg和通常的命令行工具一樣,有著眾多參數(shù)選項,這里只做最基本的演示,就不一一列舉。想必大家都有在命令行下痛苦的經(jīng)歷,命令行的歷史就是我等小菜的血淚史,還好scdbg有GUI圖形界面版:
指定偏移,自定參數(shù)一目了然。
亮點
A. 跨平臺開源
同時支持unix和windows系統(tǒng)。對有系統(tǒng)潔癖的同學來說可以放心在unix下搭建環(huán)境“調(diào)戲”shellcode了。
B.文檔類格式漏洞
scdbg能很容易通過交互方式分析諸如pdf,excel,word等文檔類漏洞釋放出來的shellcode。這類漏洞的相同點就是首先肯定會通過調(diào)用GetFileSize找到宿主文
件句柄然后進行下一步操作(是這樣的吧:)。感覺這項功能還是有很多應(yī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)視-簡單調(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