2009年2月3日 星期二

x86 shellcode detection and emulation - libemu

去年我在研究開發惡意文件偵測技術 - mdscan 時,就在試著找尋適合的 x86 emulator。可惜,找到的幾乎都是 Virtualizer 性質,非我所需要。
一月時無意間發現了 libemu,這兩天就著手將原來 mdscan 的動態追蹤核心,換成 libemu 來模擬執行。

Malicious Document Scan Tool Version 0.5
---------------------------------------------------
Copyright (c) 2009 Net-Hack Technology Co.,Ltd. All rights reserved.

Scanning CVE/MS08-014/69a7b1dd0af391523ae55a846232c68f
opcode: E8E4FFFFFF call 0xffffffe9
opcode: 5E pop esi
opcode: 8BFE mov edi,esi
opcode: 8BD6 mov edx,esi
opcode: 83C214 add edx,0x14
opcode: 52 push edx
opcode: B96A030000 mov ecx,0x36a
opcode: AC lodsb
opcode: C0C000 rol al,0x0
opcode: AA stosb
opcode: 49 dec ecx
opcode: 75F8 jnz 0xfffffffa
opcode: AC lodsb
opcode: C0C000 rol al,0x0
opcode: AA stosb
opcode: 49 dec ecx
opcode: 75F8 jnz 0xfffffffa
opcode: AC lodsb
opcode: C0C000 rol al,0x0
opcode: AA stosb
opcode: 49 dec ecx
opcode: 75F8 jnz 0xfffffffa
opcode: AC lodsb
opcode: C0C000 rol al,0x0
opcode: AA stosb
opcode: 49 dec ecx
opcode: 75F8 jnz 0xfffffffa
opcode: AC lodsb

不過,libemu 缺乏詳細的文件,而且有些 instructions 並沒有 mapping(例如 opcode: A8 and A9),有些 API 也不甚明白是什麼作用,畢竟還在 version 0.2 開發中吧!

想試著研究 shellcode 追蹤或是自動化解殼(unpack)的朋友,不妨試試。

舊 blog 文章轉換到 blogger

感謝 google-blog-converts-appengine 的 blog 轉換程式,已成功將我舊 blog 的內容,轉移至此啦!
google-blog-converts-appengine 是用 python 語言開發,要額外裝 ElementTree 即可正常執行。