Mangle是一个工具,可以操纵已编译的可执行文件(.exe或DLL)以避免被EDR检测到。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/optiv/Mangle
Mangle

由 Tyl0us 撰写
来自Zero Con 2022会议
Mangle 是一种操作已编译可执行文件(.exe 或 DLL)的各个方面的工具。 Mangle 可以删除已知的基于妥协指标 (IoC) 的字符串并用随机字符替换它们,通过扩大大小来更改文件以避免 EDR,并且可以从合法文件中克隆代码签名证书。 在这样做时,Mangle 帮助加载器避开磁盘和内存扫描器。
贡献
Mangle 是在 Golang 中开发的。
安装
与往常一样,第一步是克隆存储库。 在编译 Mangle 之前,您需要安装依赖项。 要安装它们,请运行以下命令:
go get github.com/Binject/debug/pe
然后构建它
go build Mangle.go
重要的
虽然 Mangle 是用 Golang 编写的,但许多功能都是为处理来自其他语言的可执行文件而设计的。 在发布时,唯一特定于 Golang 的功能是字符串操作部分。
用法
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
Path to the file containing the certificate you want to clone
-I string
Path to the orginal file
-M Edit the PE file to strip out Go indicators
-O string
The new file name
-S int
How many MBs to increase the file by
字符串
Mangle 获取输入的可执行文件并查找安全产品查找或警告的已知字符串。 这些字符串本身并不是唯一的检测点。 通常,这些字符串与其他数据点和遥测数据一起用于检测和预防。 Mangle 找到这些已知字符串并用随机值替换十六进制值以删除它们。 重要提示:Mangle 会替换它正在处理的字符串的确切大小。 它不会增加或减少,因为这会在文件中造成错位和不稳定。 Mangle 使用 -M 命令行选项执行此操作。
目前,Mangle 仅处理 Golang 文件,但随着时间的推移,将添加其他语言。 如果您知道任何其他语言,请打开问题单并提交。
前

后

Inflate
几乎所有 EDR 都无法扫描磁盘上或内存中超过特定大小的文件。 这仅仅是因为大文件需要更长的时间来查看、扫描或监控。 EDR 不希望通过降低用户的工作效率来影响性能。 Mangle 通过在文件末尾创建空字节(零)填充来扩充文件。 这确保文件内部的任何内容都不会受到影响。 要扩充可执行文件,请使用 -S 命令行选项以及要添加到文件的字节数。 大负载确实不再是互联网速度有多快的问题,也就是说,不建议制作 2 gig 文件。
基于大量用户空间和内核 EDR 的测试用例,建议将大小增加 95-100 兆字节。 由于供应商不检查大文件,因此该活动不会引起注意,从而导致 shellcode 成功执行。
例子:


证书
Mangle 还包含从文件中获取完整链和合法代码签名证书的所有属性并将其复制到另一个文件的能力。 这包括签署日期、副署名和其他可衡量的属性。
虽然此功能听起来可能与我开发的另一个工具 Limelighter 相似,但两者之间的主要区别在于 Limelighter 基于域制作假证书并使用当前日期和时间对其进行签名,而不是使用有效的属性来获取时间戳从原始文件开始。 此选项可以使用 DLL 或 .exe 文件使用 -C 命令行选项进行复制,以及要从中复制证书的文件的路径。
