關于Monomorph 

Monomorph是一款功能強大的MD5單態Shellcode封裝工具,在該工具的幫助下,廣大研究人員可以輕松將所有的Payload都修改為相同的MD5哈希。

在很多情況下,研究人員通常使用“碰撞”的形式來判斷目標代碼的“好”與“壞”,但Monomorph的出現就是為了證明之前的這種方法已經不再可行。因為如果仍然堅持使用MD5來引用文件樣本的話,一旦使用了Monomorph,那么最終的分析結果將會毫無意義。因為所有的Payload或代碼文件都將擁有相同的MD5哈希。

 工具運行機制 

針對每一個需要編碼的比特,我們都會使用FastColl來預先計算一個MD5沖突塊。每一次沖突都會給我們返回一個沖突塊對,這樣我們就可以在不改變整個MD5哈希的情況下來交換這些沖突塊。

如需對4KB數據進行編碼,我們將需要生成4*1024*8個沖突塊(這需要幾個小時),并在最終文件中占用4MB的空間。

為了加快速度,我們對FastColl進行了一些小的調整,使其在實踐中更快,使其能夠并行運行。

由于本工具已經完成了預計算,因此我們可以立即對Payload進行重新配置,而交換預先計算的塊狀態是使用Ange Albertini實現的技術來完成的。

 工具下載 

由于該工具基于Python 3開發,因此我們首先需要在本地設備上安裝并配置好Python 3環境。接下來,廣大研究人員可以使用下列命令將該項目源碼克隆至本地:

git clone https://github.com/DavidBuchanan314/monomorph.git
(向右滑動,查看更多)

 工具使用 

我們可以將高達4KB的壓縮Shellcode封裝成可執行的二進制文件,速度會非常快,而且輸出文件將始終具有相同的MD5哈希:

3cebbe60d91ce760409bbe513593e401

當前版本的Monomorph僅支持在Linux x86-64設備上運行,下面給出的是該工具的一個簡單使用樣例:

$ python3 monomorph.py bin/monomorph.linux.x86-64.benign bin/monomorph.linux.x86-64.meterpreter sample_payloads/bin/linux.x64.meterpreter.bind_tcp.bin

 工具運行截圖 

 是否可檢測?

可能很多研究人員會想問,這種方式處理的Payload以及MD5哈希是否可以被檢測到?

沒錯,它確實可以被檢測到,我們可以使用detectcoll工具來檢測碰撞塊。

 許可證協議 

本項目的開發與發布遵循MIT開源許可證協議。

 項目地址 

Monomorph

【https://github.com/DavidBuchanan314/monomorph】