
发布此软件的理由在随附的博客文章中已概述:
该脚本封装了大量打包器、保护器、混淆器、shellcode加载器、编码器、生成器,用于生成复杂的受保护的红队植入物。 它是恶意软件开发CI/CD管道中的完美伴侣,帮助给工件加水印、收集IOC、后门等。
ProtectMyToolingGUI.py

使用ProtectMyTooling,您可以快速混淆您的二进制文件,而无需担心点击所有对话框、界面、菜单、创建项目来混淆单个二进制文件、点击所有可用选项并浪费时间。它直接带您进入重点——混淆您的工具。
目标是在单个二进制文件上提供最方便的界面,并允许利用_多个打包器的菊花链_组合。
没错——我们可以通过一次启动多个打包器来启动ProtectMyTooling:```
C:> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe
上述示例首先将 `mimikatz.exe` 传递给 Hyperion 进行混淆,然后将结果交给 UPX 进行压缩,最终得到 `UPX(Hyperion(file))`
## 功能特点
- 支持多种不同的 PE 打包器、.NET 混淆器、Shellcode 加载器/生成器
- 允许将打包器链式组合,前一个打包器的输出传递给下一个:`callobf,hyperion,upx` 将生成工件 `UPX(Hyperion(CallObf(file)))`
- 在每个混淆步骤中收集 IOCs,以便满足审计与蓝队请求
- 提供向生成的 PE 工件中注入自定义水印的功能——可注入 DOS 存根、校验和、独立 PE 节、文件覆盖区
- 附带一个实用的 Cobalt Strike 攻击脚本,带来 `protected-upload` 和 `protected-execute-assembly` 命令
- 命令行使用直观
## 安装
**此工具设计用于 Windows 系统,因为大多数打包器原生针对该平台。**
不过,某些功能在 Linux 上也可能正常工作,但该支持未经全面测试,请报告错误和问题。
1. 首先,**禁用你的杀毒软件**,并将 `contrib` 目录添加到排除项。该目录包含混淆器、保护器,它们会被杀毒软件标记并删除。
2. 然后克隆此仓库```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
Windows``` PS C:\ProtectMyTooling> .\install.ps1
**Linux**```
bash# ./install.sh
为了在 Windows 10 上运行 ScareCrow 打包器,需要安装 WSL 并且 bash.exe 可用(位于 %PATH% 中)。
然后,在 WSL 中需要安装 golang,版本至少为 1.16:```
cmd> bash
bash$ sudo apt update ; sudo apt upgrade -y ; sudo apt install golang=2:1.18~3 -y
## 配置
要接入支持的混淆器、更改默认选项或将 **ProtectMyTooling** 指向你的混淆器可执行文件路径,你需要调整 `config\ProtectMyTooling.yaml` 配置文件。
此外还有 `config\sample-full-config.yaml` 文件,它包含所有支持的打包工具的所有可用选项,可作为参考点。
## 友情提示
- 如果你生成的二进制文件崩溃或未按预期运行,请尝试使用不同的打包工具链。
- 打包工具不能保证生成二进制文件的稳定性,因此 ProtectMyTooling 也无法保证。
- 在链式使用时,请根据后续打包工具的预期格式,仔细匹配输出→输入的负载格式。
---
## 使用
在首次使用 `ProtectMyTooling` 之前,必须调整程序的 YAML 配置文件 `ProtectMyTooling.yaml`。
参数处理顺序如下:
- 首先使用默认参数
- 然后它们会被来自 YAML 的值覆盖
- 最后,命令行中提供的任何内容将覆盖相应的值
在那里,需要设置支持的打包工具路径和选项以启用。
### 场景 1:简单的 ConfuserEx 混淆
使用方法非常简单,只需传入要选择的混淆器名称以及输入和输出文件路径:```
C:\> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe
::::::::::.:::::::.. ... :::::::::::.,:::::: .,-::::::::::::::::
`;;;```.;;;;;;``;;;; .;;;;;;;;;;;;;;;\''';;;;\'\''',;;;'````;;;;;;;;\'\'''
`]]nnn]]' [[[,/[[[' ,[[ \[[, [[ [[cccc [[[ [[
$$$"" $$$$$$c $$$, $$$ $$ $$"""" $$$ $$
888o 888b "88bo"888,_ _,88P 88, 888oo,_`88bo,__,o, 88,
. YMMMb :.-:.MM ::-. "YMMMMMP" MMM """"YUMMM"YUMMMMMP" MMM
;;,. ;;;';;. ;;;;'
[[[[, ,[[[[, '[[,[[['
$$$$$$$$"$$$ c$$"
888 Y88" 888o,8P"`
::::::::::::mM... ... ::: :::::. :::. .,-:::::/
;;;;;;;;\'''.;;;;;;;. .;;;;;;;. ;;; ;;`;;;;, `;;,;;-'````'
[[ ,[[ \[[,[[ \[[,[[[ [[[ [[[[[. '[[[[ [[[[[[/
$$ $$$, $$$$$, $$$$$' $$$ $$$ "Y$c$"$$c. "$$
88, "888,_ _,88"888,_ _,88o88oo,._888 888 Y88`Y8bo,,,o88o
MMM "YMMMMMP" "YMMMMMP"""""YUMMMMM MMM YM `'YMUP"YMM
Red Team implants protection swiss knife.
Multi-Packer wrapping around multitude of packers, protectors, shellcode loaders, encoders.
Mariusz Banach / mgeeky '20-'22, <[email protected]>
v0.16
[.] Processing x86 file: "\Rubeus.exe"
[.] Generating output of ConfuserEx(<file>)...
[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(<file>): 756224, ratio: 181.23%
用户也可以混淆文件并立即尝试启动它(同时提供可选的参数),以确保其在使用选项-r --cmdline CMDLINE时运行正常:```
C:> py ProtectMyTooling.py confuserex Rubeus.exe Rubeus-obf.exe -r --cmdline "hash /password:foobar"
[...]
[.] Processing x86 file: "\Rubeus.exe" [.] Generating output of ConfuserEx()...
[+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(): 758272, ratio: 181.72%
Running application to test it...
(_____ \ | | ) ) | | _____ _ _ ___ | __ /| | | | _ | ___ | | | |/) | | \ | || | |) ) | || | | || ||/|/|_____)__/(_/
v2.0.0
[*] Action: Calculate Password Hash(es)
[] Input password : foobar [] rc4_hmac : BAAC3929FABC9E6DCD32421BA94A84D4
[!] /user:X and /domain:Y need to be supplied to calculate AES and DES hash types!
### 场景3:复杂恶意软件混淆,包含水印和IOCs收集
下面的用例将输入`beacon.exe`依次送入`CallObf` -> `UPX` -> `Hyperion`打包器。
然后,它将在最终生成的输出工件的DOS Stub中注入指定的`fooobar`水印,并将该工件的校验和修改为值`0xAABBCCDD`。
最后,ProtectMyTooling将捕获所有IOCs(md5、sha1、sha256、imphash和其他元数据),并将其保存到辅助CSV文件中。该文件可用于在参与过程中进行IOC匹配。```
PS> py .\ProtectMyTooling.py callobf,upx,hyperion beacon.exe beacon-obf.exe -i -I operation_chimera -w dos-stub=fooobar -w checksum=0xaabbccdd
[...]
[.] Processing x64 file: "beacon.exe"
[>] Generating output of CallObf(<file>)...
[.] Before obfuscation file's PE IMPHASH: 17b461a082950fc6332228572138b80c
[.] After obfuscation file's PE IMPHASH: 378d9692fe91eb54206e98c224a25f43
[>] Generating output of UPX(CallObf(<file>))...
[>] Generating output of Hyperion(UPX(CallObf(<file>)))...
[+] Setting PE checksum to 2864434397 (0xaabbccdd)
[+] Successfully watermarked resulting artifact file.
[+] IOCs written to: beacon-obf-ioc.csv
[+] SUCCEEDED. Original file size: 288256 bytes, new file size Hyperion(UPX(CallObf(<file>))): 175616, ratio: 60.92%
生成的IOCs证据CSV文件将如下所示:```csv timestamp,filename,author,context,comment,md5,sha1,sha256,imphash 2022-06-10 03:15:52,beacon.exe,mgeeky@commandoVM,Input File,test,dcd6e13754ee753928744e27e98abd16,298de19d4a987d87ac83f5d2d78338121ddb3cb7,0a64768c46831d98c5667d26dc731408a5871accefd38806b2709c66cd9d21e4,17b461a082950fc6332228572138b80c 2022-06-10 03:15:52,y49981l3.bin,mgeeky@commandoVM,Obfuscation artifact: CallObf(),test,50bbce4c3cc928e274ba15bff0795a8c,15bde0d7fbba1841f7433510fa9aa829f8441aeb,e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43 2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation artifact: UPX(CallObf()),test,4d3584f10084cded5c6da7a63d42f758,e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation artifact: Hyperion(UPX(CallObf())),test,8b706ff39dd4c8f2b031c8fa6e3c25f5,c64aad468b1ecadada3557cb3f6371e899d59790,087c6353279eb5cf04715ef096a18f83ef8184aa52bc1d5884e33980028bc365,a46ea633057f9600559d5c6b328bf83d 2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Output obfuscated artifact,test,043318125c60d36e0b745fd38582c0b8,a7717d1c47cbcdf872101bd488e53b8482202f7f,b3cf4311d249d4a981eb17a33c9b89eff656fff239e0d7bb044074018ec00e20,a46ea633057f9600559d5c6b328bf83d
## 支持的打包器
`ProtectMyTooling` 设计为不仅支持混淆器/打包器,还支持所有可从命令行使用的构建器/生成器/Shellcode加载器。
目前,该程序支持多种商业和开源打包器/混淆器。开源打包器已捆绑在项目中。商业打包器需要用户购买产品,并在 `ProtectMyTooling.yaml` 文件中配置其位置,以便脚本找到它们。