
「Bob the Smuggler」は、HTMLスムグリング攻撃を利用し、7z/zipアーカイブを埋め込んだHTMLファイルを作成できるツールです。このツールは、バイナリ(EXE/DLL)を7z/zipファイル形式に圧縮し、そのアーカイブをXOR暗号化した後、PNG/GIF画像ファイル形式(画像ポリグロット)の中に隠します。

2024年1月15日 - マルチファイル圧縮のサポートが追加されました。最終ペイロード用に複数のファイルが生成される場合(例:DLLサイドローディングファイルやマルチステージ配信ファイル)、'-i'オプションでディレクトリパスを指定できるようになりました。ディレクトリパスが指定されると、BobTheSmugglerはそのディレクトリ内の全ファイルを自動的にアーカイブし、XOR暗号化して、PNG/GIF内部に埋め込みます。
このツールの使い方を詳しく知りたい方は、私のブログをご覧ください:BobTheSmuggler: 検出不可能なペイロード配信のための秘密のサイバースイスアーミーナイフ
「Bob the Smuggler」 は、HTMLスマグリング攻撃を利用し、7z/zipアーカイブを埋め込んだHTMLファイルを作成できるツールです。このツールは、バイナリ(EXE/DLL)を7z/zipファイル形式に圧縮し、次にアーカイブをXOR暗号化して、PNG/GIF画像ファイル形式(イメージポリグロット)に隠します。HTMLに埋め込まれたJavaScriptは、PNG/GIFファイルをダウンロードしてキャッシュに保存します。その後、JavaScriptはPNG/GIFに埋め込まれたデータを抽出し、組み立て、XOR復号化を実行し、メモリ内のblobとして保存します。

現在、このツールは以下のペイロード配信チェーンをサポートしています。
ツールを実行する前に、以下の前提条件が必要です。
pip install python-magic py7zr pyminizip
注: python-magicをインストールするには、システムにlibmagicライブラリをインストールする必要があります。次のURLに従ってlibmagicライブラリをインストールしてください:https://pypi.org/project/python-magic/
必要なライブラリがインストールされたら、以下のコマンドを使用してツールのインストールを進めてください。
git clone https://github.com/TheCyb3rAlpha/BobTheSmuggler.git
cd BobTheSmuggler
インストール後、次のコマンドを実行してツールを使用できます。
python3 BobTheSmuggler.py -h

======================================================================
██████╗ ██████╗ ██████╗ ████████╗██╗ ██╗███████╗
██╔══██╗██╔═══██╗██╔══██╗ ╚══██╔══╝██║ ██║██╔════╝
██████╔╝██║ ██║██████╔╝ ██║ ███████║█████╗
██╔══██╗██║ ██║██╔══██╗ ██║ ██╔══██║██╔══╝
██████╔╝╚██████╔╝██████╔╝ ██║ ██║ ██║███████╗
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝
███████╗███╗ ███╗██╗ ██╗ ██████╗ ██████╗ ██╗ ███████╗██████╗
██╔════╝████╗ ████║██║ ██║██╔════╝ ██╔════╝ ██║ ██╔════╝██╔══██╗
███████╗██╔████╔██║██║ ██║██║ ███╗██║ ███╗██║ █████╗ ██████╔╝
╚════██║██║╚██╔╝██║██║ ██║██║ ██║██║ ██║██║ ██╔══╝ ██╔══██╗
███████║██║ ╚═╝ ██║╚██████╔╝╚██████╔╝╚██████╔╝███████╗███████╗██║ ██║
╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝
======================================================================
使用法: BobTheSmuggler.py [-h] -i EXE_FILE [-p PASSWORD] -f OUTPUT_HTML -o OUTPUT_FILENAME -t {html,svg,png,gif} [-c {7z,zip}] [-u PNG_URL] [-png PNG_FILE] [-gif GIF_FILE] [-e CUSTOM_FILE] [-v]
EXE/DLLファイルをHTML/SVGファイル内に隠します。
オプション引数:
-h, --help このヘルプメッセージを表示して終了します。
-i EXE_FILE EXE/DLLファイルへのパス。
-p PASSWORD 圧縮用のパスワード。
-f OUTPUT_HTML HTMLスマグリングファイル (.html)
-o OUTPUT_FILENAME ダウンロードされるファイル名(ペイロードはこのファイルに含まれます。)
-t {html,svg,png,gif} 埋め込みテンプレートの種類。
-c {7z,zip} 圧縮形式: 7z または zip (デフォルト: zip)
-u PNG_URL 埋め込まれたPNG画像のURL。
-png PNG_FILE EXE/DLLを埋め込むPNGファイルへのパス。
-gif GIF_FILE EXE/DLLを埋め込むGIFファイルへのパス。
-e CUSTOM_FILE テンプレートとして複製するHTMLファイル。
-v, --verbose 詳細なログ出力を有効にします。
SharpHound.exeを7z形式(パスワード保護)に圧縮し、HTMLファイルに保存したい場合は、次のコマンドを使用できます。
python3 BobTheSmuggler.py -i path/to/SharpHound.exe -p 123456 -c 7z -f SharpHound.html -o SharpHound.7z -t html

PNGファイル内に隠されたペイロードが埋め込まれたHTMLファイルを作成するには、次のコマンドを使用できます。
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t png test.png

注: PNG/GIFファイルはCDNでホストするようにしてください。(推奨:PNG/GIFファイルをホストするCDN URLを指定するには、-uオプションを使用してください)。テスト目的では、flaskアプリ(app.py)を使用して、banner.gifとbanner.pngをlocalhost:8000でホストできます。
同様に、次のコマンドを使用して、GIFファイル内に隠されたペイロードが埋め込まれたHTMLファイルを作成できます。
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t gif test.gif

最終的な画像(PNG/GIF)が生成されると、埋め込まれたファイルが含まれるため、画像のサイズが増加します。

異なるアプローチのシンプルなチェーン。EXE/DLLが .7z/.zip ファイルに圧縮され、その後 PNG/GIF ファイル内に保存されます。PNG/GIF は、HTML に埋め込まれた SVG ファイル内の JS によって呼び出されます。JS が呼び出されると、PNG/ZIP ファイルをダウンロードし、画像チャンクから XOR された圧縮データを抽出し、ファイルを復号化してダウンロード機能を呼び出します。
python3 BobTheSmuggler.py -i <Input_file_path> -p <password_to_encrypt> -f <output_HTML_filename> -o <Output 7z/zip filename stored inside HTML> -t svg -e <Custom_SVG_Template>
このプロジェクトには以下のテンプレートが追加されています。

このツールは教育目的のみを目的としています。ユーザーは学習と理解を促進する方法でのみ使用することをお勧めします。このツールの作者は、教育目的以外での使用について一切の責任を負いません。教育以外の目的でこのツールを使用することを選択したユーザーは、自己責任で使用するものとし、作者はそのような使用から生じるいかなる結果に対しても責任を負いません。