
Multi-Packerラッパー。さまざまなパッカー、難読化ツール、その他のレッドチーム向け兵器をデイジーチェーン接続できます。アーティファクトの透かし入れ、IOCの収集、PEバックドアリングを備えています。あなたのインプラントを投入すると、多くの陰湿な処理を行い、難読化された実行可能ファイルを出力します。

このソフトウェアを公開するに至った背景は、付随するブログ記事で概説されています:
多数のパッカー、プロテクター、難読化ツール、シェルコードローダー、エンコーダー、ジェネレーターをラップし、複雑に保護されたRed Teamインプラントを生成するスクリプトです。 マルウェア開発の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))` になります。
## Features
- 複数の異なるPEパッカー、.NET難読化ツール、シェルコードローダー/ビルダーをサポート
- パッカーのデイジーチェーンを可能にし、あるパッカーの出力が次のパッカーに渡されます: `callobf,hyperion,upx` は成果物 `UPX(Hyperion(CallObf(file)))` を生成します
- 各難読化ステップでIOCを収集し、監査やBlue Teamの要求を満たすことができます
- 結果のPE成果物にカスタムウォーターマークを注入する機能を提供 - DOSスタブ、チェックサム、スタンドアロンPEセクション、ファイルのオーバーレイ内
- 便利なCobalt Strikeアグレッサースクリプトを備え、`protected-upload` および `protected-execute-assembly` コマンドを提供します
- わかりやすいコマンドライン使用法
## Installation
**このツールはWindows上で動作するように設計されています。ほとんどのパッカーはネイティブにそのプラットフォームをターゲットとしているためです。**
ただし、一部の機能はLinuxでも問題なく動作する可能性がありますが、そのサポートは完全にテストされていません。バグや問題があれば報告してください。
1. まず、**AVを無効に**し、`contrib` ディレクトリを除外リストに追加します。そのディレクトリには難読化ツールやプロテクターが含まれており、AVにフラグされて削除される可能性があります。
2. 次に、このリポジトリをクローンします```
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
Windows``` PS C:\ProtectMyTooling> .\install.ps1
**Linux**```
bash# ./install.sh
ScareCrow パッカーが Windows 10 で動作するためには、WSL がインストールされており、bash.exe が利用可能である必要があります(%PATH% 内)。さらに、WSL 内では、少なくともバージョン 1.16 の golang がインストールされている必要があります。```
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: ウォーターマーキングとIOC収集を用いた複雑なマルウェア難読化
以下のユースケースは、入力として`beacon.exe`を受け取り、それを`CallObf` -> `UPX` -> `Hyperion`パッカーに連続的に投入します。
次に、指定された`fooobar`ウォーターマークを最終生成出力アーティファクトのDOSスタブに注入し、さらにそのアーティファクトのチェックサムを値`0xAABBCCDD`で変更します。
最後に、ProtectMyToolingはすべてのIOC(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