Monomorph:一款功能强大的MD5单态Shellcode封装工具
2023-3-29 12:38:53 Author: FreeBuf(查看原文) 阅读量:20 收藏

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

参考资料:

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

精彩推荐


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=2651220865&idx=4&sn=f3a1d8d0491dc24f51d303027393a9cf&chksm=bd1df90a8a6a701c2353c4bf3b0a312375b78568ff576032ed33ad89251b6d5e8855ed3ae06f#rd
如有侵权请联系:admin#unsafe.sh