Monomorph:一款功能强大的MD5单态Shellcode封装工具

华盟原创文章投稿奖励计划

Monomorph:一款功能强大的MD5单态Shellcode封装工具


 关于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

(向右滑动,查看更多)


 工具运行截图 

Monomorph:一款功能强大的MD5单态Shellcode封装工具


 是否可检测?

可能很多研究人员会想问,这种方式处理的Payload以及MD5哈希是否可以被检测到?

没错,它确实可以被检测到,我们可以使用detectcoll工具来检测碰撞块。


 许可证协议 


本项目的开发与发布遵循MIT开源许可证协议。


 项目地址 


Monomorph

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


参考资料:

https://www.mscs.dal.ca/~selinger/md5collision/

https://justine.lol/ape.html

https://github.com/cr-marcstevens/hashclash/tree/collisiondetection/src/collisiondetection

https://github.com/cr-marcstevens/hashclash/tree/master/src/md5fastcoll

https://github.com/corkami/collisions/tree/master/hashquines#read-an-encoded-value

https://github.com/corkami/collisions/blob/master/hashquines/scripts/collisions.py

本文来源FreeBuf.COM,经授权后由华盟君发布,观点不代表华盟网的立场,转载请联系原作者。