CVE-2024-21413 (Outlook) の悪用
プロジェクトの状態: 一時停止中 (未完了の演習; NTLM ハッシュの取得に失敗)
目的
CVE-2024-21413 の脆弱性の悪用を試みます。この脆弱性は、Outlook が悪意のあるリンクと対話する際に NTLM ハッシュが漏えいすることを可能にします。
この演習の目的は、攻撃で使用されるすべてのツールをゼロから構築することではなく、その中心的な動作を深く理解し、独自のインフラストラクチャを構築する際に実際のエラーを体験することでした。
私はコミュニティによって公開された第三者が開発したエクスプロイトコードと SMTP/POP3 サーバーを使用しました。コミュニティに深く感謝します。
目次
- 要件
- 仮想マシン
- インストール
- 悪用のフロー
- テストと結果
- 学んだ教訓
要件
- Python 3.10+
- Outlook 2016
- Kali linux
- 独自の SMTP/POP3 サーバー
- エクスプロイト
- 仮想マシン
仮想マシン
被害者マシン (Windows)
- OS: Windows 10 Home (x32)
- Outlook: Microsoft Outlook 2016 (バージョン 16.0.4266.1001)
- ネットワーク: アダプター 1: NAT、アダプター 2: 内部ネットワーク
攻撃者マシン (Kali)
- OS: Kali Linux 2025.1
- インストール済みのツールとライブラリ:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- ネットワーク: アダプター 1: NAT、アダプター 2: 内部ネットワーク
インフラストラクチャ
- SMTP サーバーと POP3 サーバーは、Python スクリプトを使用して攻撃者マシン (Kali) 上に手動で構築されました。
マシンは VirtualBox 上で実行されました。
インストール
インストール (Kali)
SMTP サーバーのインストール
- Venv: Python 3 による仮想環境
- ステップ 1: サーバーと仮想環境用のディレクトリを作成し (mkdir smtp-lab)、そこにアクセスします (cd smtp-lab)
- ステップ 2: ディレクトリ内に仮想環境を作成します (python3 -m venv venv)
- ステップ 3: 仮想環境をアクティベートします (source venv/bin/activate)
- ステップ 4: 仮想環境内に aiosmtpd をインストールします (pip install aiosmtpd)
- ステップ 5: サーバーのコードを作成します (nano servidor-smtp.py)
- ステップ 6: サーバーを実行します (python3 servidor-smtp.py)
SMTP サーバーのコード
SMTP サーバーのコードはファイル src/servidor-smtp.py にあります。
POP3 サーバーのインストール:
- ステップ 1: サーバー用のディレクトリを作成し (mkdir pop3-server)、そこにアクセスします (cd pop3-server)
- ステップ 2: サーバーのコードを作成します (nano server-pop3.py)
- ステップ 3: サーバーを実行します (python3 server-pop3.py)
POP3 サーバーのコード
POP3 サーバーのコードはファイル src/servidor-pop3.py にあります。
エクスプロイトのインストール
- ステップ 1: コードを作成します。このコードは CMNatic から取得しましたが、自分のインフラストラクチャに合わせて適応されています (nano exploit.py)
エクスプロイトのコード
エクスプロイトのコードはファイル src/exploit.py にあります。
インストール (Windows 10)
- ステップ 1: Microsoft Office 2016 の ISO をインストールします。私は archive.org のページを使用し、Microsoft Office 2016 Professional Plus x86 版をインストールしました
- ステップ 2: ISO をインストールしたら、Microsoft Office をダウンロードして Outlook 2016 にアクセスします
- ステップ 3: Outlook を正しく設定します
Outlook 2016 の設定
ここでは、テスト用の SMTP サーバーと POP3 サーバーで動作するように Outlook を設定する方法を示します。
- 「Incoming mail server」と「Outgoing mail server(SMTP)」の両方に、攻撃者マシン (Kali) の内部ネットワークインターフェースの IP を設定する必要があります。
- パスワードは攻撃には無関係なので、任意のものを選択できます。

悪用のフロー
CVE-2024-21413 用エクスプロイトの目的は、Outlook に攻撃者が制御するリソースへの自動 SMB 要求を実行させ、その結果として被害者の NTLM ハッシュが送信されるようにすることです。このハッシュはオフラインでキャプチャしてクラッキングに使用できます。
環境の準備
- 攻撃者マシン (Kali) がカスタム SMTP サーバーと POP3 サーバーを起動します。
- 被害者マシン (Windows 10) の Outlook は、そのサーバーからメールを受信するように設定されています。
- 攻撃者マシン (Kali) が偽の SMB サーバーを起動します (私の場合は responder を使用しました)
悪意のあるメールの送信
- 攻撃者の SMTP から被害者にメールが送信されます。
- メッセージ本文には悪意のある UNC リンクが含まれています。
- このパスは、ユーザーがリンクを操作すると自動 SMB 接続がトリガーされるように設計されています。
ユーザーの操作
- 被害者が Outlook を開いてメッセージを表示します。
- リンクをクリックすることが期待されます。
- Outlook が UNC パスを解決しようとすると、攻撃者のサーバーへの SMB 要求が生成されます。
- 以下に、被害者の視点から見た Outlook での悪意のあるメールの表示例を示します:

ハッシュのキャプチャ
- 攻撃者の SMB サーバーが接続を受信します。
- Outlook は認証を試みる際、ユーザーの NTLM ハッシュを自動的に送信します。
- 攻撃者はそのハッシュを hashcat タイプの攻撃用に保存できます。
メモ
- 私の環境では、メールは Outlook に正常に届きました。
- ただし、UNC リンクをクリックしても、期待された SMB 接続は生成されませんでした。
- 失敗の原因はまだわかっていませんが、ネットワーク設定、Outlook のバージョン、または SMB サーバーの到達可能性や応答の問題に関連している可能性があると推測しています。
テストと結果
実際に機能した点
- SMTP と POP3 が正しく設定され、Outlook はエラーなくそれらと同期しました。
- 悪意のあるメールは Outlook で受信されました。
- メッセージは UNC リンクをブロックされることなく表示しました。
- 攻撃者の SMB 環境は起動しており、待ち受け状態でした。
機能しなかった点
- Outlook から UNC リンクをクリックしても、Wireshark に表示される SMB トラフィックは発生しませんでした。
- 被害者マシンから NTLM 認証の試みは生成されませんでした
- SMB サーバーには接続が記録されませんでした。
Wireshark による分析
- Kali のインターフェース (eth1) でキャプチャを取得しました。
- SMTP と POP3 のトラフィックは確認できましたが、リンクをクリックしても TCP 445 や UDP 137/138 のパケットはありませんでした。
- Outlook を管理者として実行しても試みましたが、変化はありませんでした。
学んだ教訓
得られた知識
- SMTP と POP3 が低レベルでどのように動作するか。
- Outlook がアカウントを同期する際に正確に何を期待するか。
- Outlook が UNC リンクをどのように解釈するか、そして自動的に開くために満たされるべき条件。
- 複雑なラボ環境におけるデバッグツールとしての Wireshark とログの価値。
ここで終了することにした理由
- 複数回の試行の後、エクスプロイトは最終目的であるハッシュキャプチャの段階に到達しませんでした。
- インフラストラクチャ、テスト、結果のすべてを文書化しました。これは教育用ラボとして依然として価値があります。
- 最終目的は達成されませんでしたが、このプロセスを通じて関与する各技術コンポーネントについて深い知識を得ることができました。将来再開することができます。
クレジット
このエクスプロイトのコードは、https://github.com/CMNatic/CVE-2024-21413 の CMNatic の作業に基づいています。自分の環境に合わせて変更を加えました。