惡意代碼分析利器 – 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)絡這些危險的API并沒有真正的在本機執(zhí)行,而是通 過傳回虛假的返回值來欺騙shellcode讓其平穩(wěn)運行。
示例
直接命令行輸入scdbg.exe example.sc 來看看輸出:
其中example.sc文件就是以二進制形式保存的Shellcode,我們可以看到這段shellcode調(diào)用了兩次較關鍵的函數(shù) -CreateProcessA,***次調(diào)用tftp.exe程序下載winapi32.exe,第二次準備執(zhí)行之。很典型的下載并執(zhí)行行為。有了 scdbg我們就不必花很多時間在搭建測試環(huán)境、解碼shellcode、調(diào)試理解各種分枝跳轉、擔心機器是否中招。。。。。。簡單明了。
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找到宿主文
件句柄然后進行下一步操作(是這樣的吧:)。感覺這項功能還是有很多應用場景的,命令行如下:
- $ ./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
原文鏈接:http://www.freebuf.com/tools/16320.html