freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Monomorph:一款功能强大的MD5单态Shellcode封装工具
2023-03-20 22:13:04
所属地 广西

关于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:【GitHub传送门

参考资料

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

# shellcode # MD5 # MD5碰撞 # Payload隐藏 # Shellcode封装
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录