
CVE-2021-21220 エクスプロイト基盤
被害者はホストされた Web ページを閲覧します。エクスプロイトは utils.js に埋め込まれたシェルコードを介して開始されます(CVE-2021-21220 により被害者のブラウザ内でクライアント側で実行されます)。シェルコードは被害者のマシン上で実行され、HTTPS 配信サーバーを呼び出し、MicrosoftEdgeUpdate.exe をダウンロードして実行します。実行されると、インプラントは中間ホップ(C2 リダイレクタ)を介して C2 サーバーに TLS で接続し、署名付き証明書を受け取った後、完全な相互 TLS で再接続します。C2 コントローラは接続を受け取り、対話型のリバースシェルメニューを表示して、オペレータが被害者のマシン上で Windows コマンドをリモート実行できるようにします。
脅威モデル図:
注: より詳細な代替手順もあります: https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
リポジトリをクローンします:
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
共有ドライブから Windows 被害者 VM をダウンロードし、VirtualBox にインポートします。VirtualBox で: ファイル → ツール → ネットワークマネージャー — ホストオンリーアダプタの IPv4 アドレスを確認します(192.168.56.0/24 サブネット内である必要があります)。割り当てられている IP アドレス(192.168.56.1 を推奨)が実際の C2 マシン IP です。
Docker Desktop(または Linux 上の Docker デーモン)を起動します。
Windows(WSL)ユーザーへ:
launch.shはnetshを使用して VirtualBox アダプタに IP エイリアスを追加するため、管理者権限が必要です。続行する前に、スタートメニューで WSL ディストリビューション(Ubuntu または使用しているもの)を右クリックし、管理者として実行 を選択してください。
起動スクリプトを実行します:
sudo ./launch.sh
c2-redirector IP の入力を求められたら、同じサブネット上の別のアドレス(例: 192.168.56.10)を入力します。launch.sh はそれを vboxnet0 上の IP エイリアスとして追加し、Docker がバインドできるようにします。被害者はこのエイリアスにのみ接続します — 実際のマシン IP は隠されたままです。
このスクリプトは次のことを行います:
ENROLLMENT_TOKEN、DOWNLOAD_TOKEN)を生成ラボが起動したら、C2 コントローラにアタッチします:
sudo docker attach c2-server
プロンプトがすぐに表示されない場合は Enter キーを押します。停止せずにデタッチするには: Ctrl+P の後に Ctrl+Q を押します。
Windows VM を起動します。パスワードは victim です。ブラウザを開いて次の URL に移動します:
http://<c2-redirector-IP>:8888
CVE-2021-21220 エクスプロイトが自動的に発動します。シェルコードは https://<c2-redirector-IP>:8443/update/<token> から MicrosoftEdgeUpdate.exe をダウンロードし、fodhelper UAC バイパスを介して実行します。インプラントは C2 コントローラに接続します。
インプラントセッションがコントローラメニューに表示されます。番号を選択してコマンドループに入ります。
それぞれが別個のマシンを表す 6 つのコンテナ:
2 つのトラフィックチャネル。それぞれに別々の IP 上のリダイレクタホップがあります:
:443 mTLS): 被害者 → c2-redirector (C2_HOST_IP) → c2-server (backnet のみ):9443 HTTPS): 被害者 → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (exfilnet のみ)Exfil データはホストマシン上の exfil-data/<hostname>/ に保存されます。
# Tail logs
sudo docker logs -f delivery-server
sudo docker logs -f exploit-server
sudo docker logs -f exfil-receiver
# Shell into a container
sudo docker exec -it c2-server /bin/bash
# Stop everything
sudo docker compose down
# View captured exfil data
ls exfil-data/
完全なアーキテクチャ、トークン/暗号パイプライン、ペイロードフローについては、documentation/ProjectOverview.md を参照してください。
| マシン | コンテナ | ポート | 役割 |
|---|
| 1 | c2-redirector | :443 | socat TCP リレー — 被害者側ホップ、実際の C2 IP を隠す |
| 2 | c2-server | (backnet のみ) | mTLS C2 リスナー — オペレータ用コマンドインターフェース |
| 3 | delivery-server | :8443 | nginx HTTPS — 使い捨てトークンによるインプラントダウンロード |
| 4 | exploit-server | :8888 | CVE-2021-21220 エクスプロイト Web ページ |
| 5 | exfil-redirector | :9443 | socat TCP リレー — 被害者側ホップ、実際の exfil IP を隠す |
| 6 | exfil-receiver | (exfilnet のみ) | HTTPS POST シンク — スクリーンショット、キーログ、資格情報を保存 |