<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。
<!--META
{
"title": "Pass-the-Hash攻撃検出とActive Directory緩和策",
"primary_category": "セキュリティ",
"secondary_categories": ["Active Directory", "Windows Server", "サイバーセキュリティ"],
"tags": ["Pass-the-Hash", "ActiveDirectory", "CredentialGuard", "LSASS", "監査ログ", "Mimikatz", "KerberosArmoring"],
"summary": "Pass-the-Hash攻撃の脅威モデル、攻撃シナリオ、検出・緩和策、運用対策をセキュリティエンジニア視点で解説します。",
"mermaid": true,
"verify_level": "L0",
"tweet_hint": {"text":"Pass-the-Hash攻撃はActive Directory環境における主要な脅威。Credential GuardやLSA Protectionによる緩和策、詳細な監査ログによる検出手法、運用上の落とし穴について解説します。","hashtags":["#PassTheHash","#ActiveDirectory","#サイバーセキュリティ"]},
"link_hints": ["https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/mitigating-pass-the-hash-attacks","https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/credential-guard-overview"]
}
--></p>
<h1 class="wp-block-heading">Pass-the-Hash攻撃検出とActive Directory緩和策</h1>
<p>Pass-the-Hash (PtH) 攻撃は、Active Directory (AD) 環境における主要な脅威の一つであり、攻撃者がネットワーク内で特権を昇格し、横展開するための一般的な手法です。この攻撃は、パスワードそのものではなく、Windowsシステムにキャッシュされたユーザーのパスワードハッシュ(通常はNTLMハッシュまたはKerberosチケット)を悪用して認証を試みるため、多要素認証(MFA)が導入されていてもバイパスされる可能性があります。セキュリティエンジニアは、この攻撃のメカニズムを深く理解し、適切な検出・緩和策を講じる必要があります。</p>
<h2 class="wp-block-heading">脅威モデル</h2>
<p>PtH攻撃の脅威モデルは、主に以下の要素に焦点を当てます。</p>
<ul class="wp-block-list">
<li><p><strong>攻撃者</strong>: 内部の悪意あるユーザー、外部からの侵入に成功した攻撃者、またはマルウェア。</p></li>
<li><p><strong>目標</strong>: ドメイン管理者権限の奪取、機密データの窃取、システム破壊、永続的なアクセス経路の確立。</p></li>
<li><p><strong>初期侵入</strong>: フィッシング、脆弱性利用、マルウェア感染などにより、まずは一般ユーザー権限でシステムへのアクセスを確立する。</p></li>
<li><p><strong>脆弱性</strong>: Windowsが認証効率のためにパスワードハッシュやKerberosチケットをメモリ(LSASSプロセスなど)にキャッシュする特性。保護されていないレガシーなプロトコル(例: NTLMv1)の使用。不適切なネットワークセグメンテーション。</p></li>
<li><p><strong>影響</strong>: ドメイン全体の侵害、ビジネスの中断、データ漏洩、規制違反。</p></li>
</ul>
<h2 class="wp-block-heading">攻撃シナリオ</h2>
<p>PtH攻撃は通常、以下の手順で進行します。この攻撃チェーンを図1に示します。</p>
<ol class="wp-block-list">
<li><p><strong>初期侵入</strong>: 攻撃者はフィッシングメールやWebサイトの脆弱性などを利用し、ユーザーの端末(例: クライアントPC、Webサーバー)に初期アクセスを確立します。この段階では、多くの場合、一般ユーザーの権限です。</p></li>
<li><p><strong>ハッシュの抽出</strong>: 攻撃者は、システムに侵入後、特権昇格(もし必要であれば)を行い、lsass.exeプロセスなどのメモリから、ログオン中のユーザーのパスワードハッシュ(NTLMハッシュ)やKerberosチケットをダンプします。Mimikatzのようなツールがこの目的で広く使用されます。</p>
<ul>
<li><strong>誤用例の概念</strong>: <code>Mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"</code> のようなコマンドは、管理者権限があればLSASSプロセスからハッシュを抽出できます。これは、パスワードを知らなくても、そのハッシュ値だけで認証が成功するという点で危険です。</li>
</ul></li>
<li><p><strong>横展開 (Lateral Movement)</strong>: 抽出したハッシュを利用し、パスワードを知ることなく、同じネットワーク内の他のシステム(ファイルサーバー、データベースサーバー、ドメインコントローラーなど)に認証を試みます。認証には、Server Message Block (SMB) やRemote Desktop Protocol (RDP)、Windows Management Instrumentation (WMI) などが用いられます。これにより、攻撃者はネットワーク内のより価値のあるターゲットへアクセス範囲を広げます。</p></li>
<li><p><strong>特権昇格とドメイン支配</strong>: 横展開を繰り返し、最終的にドメイン管理者権限を持つアカウントのハッシュを取得すると、ドメインコントローラーにアクセスし、ドメイン全体を掌握します。これにより、永続的なバックドアの作成やデータの窃取が可能となります。</p></li>
</ol>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
flowchart TD
A["初期侵入<br>ユーザー端末へアクセス"] --> B{"ハッシュ抽出"};
B -- Mimikatzなどを使用 --> C["LSASSプロセスから<br>NTLM/Kerberosハッシュダンプ"];
C --> D["ドメインユーザーの<br>パスワードハッシュ取得"];
D --> E{"他のホストへの<br>横展開"};
E -- 取得したハッシュでPass-the-Hash攻撃 --> F["RDP/SMB経由で認証"];
F --> G["高権限システムへのアクセス"];
G --> H["ドメイン管理者権限の奪取"];
H --> I["永続的な足場の確保<br>機密データ窃取"];
subgraph 検出と緩和
B -- LSA Protection / Credential Guard --> C_MIT1("ハッシュ抽出阻止");
D -- Restricted Admin Mode --> E_MIT1("RDP経由PtH阻止");
F -- Kerberos Armoring --> E_MIT2("Kerberosリプレイ/ダウングレード阻止");
F -- 監査ログ監視<br>(4624, 4625, 4768, 4769) --> J["SIEM/EDRによる異常検知"];
J -- 未知のハッシュ認証/不審な横移動 --> K("アラート発行");
end
</pre></div>
<p>図1: Pass-the-Hash攻撃チェーンと検出・緩和策</p>
<h2 class="wp-block-heading">検出技術とActive Directory緩和策</h2>
<p>PtH攻撃に対する防御は、多層的なアプローチが必要です。</p>
<h3 class="wp-block-heading">緩和策</h3>
<ol class="wp-block-list">
<li><p><strong>Credential Guardの利用</strong>:</p>
<ul>
<li><p>Windows 10 Enterprise/EducationおよびWindows Server 2016以降で利用可能な機能です。</p></li>
<li><p>仮想化ベースのセキュリティ (VBS) を利用し、LSA (Local Security Authority) の秘密情報(パスワードハッシュなど)を分離された環境に格納します [1]。これにより、マルウェアや攻撃者がLSASSプロセスから直接ハッシュをダンプすることを極めて困難にします。</p></li>
<li><p><strong>要件</strong>: UEFI、セキュアブート、仮想化ベースのセキュリティ (Hyper-V機能など) が必要です [2]。</p></li>
<li><p><strong>適用方法</strong>: グループポリシー (GPO) またはレジストリ設定で有効化します。</p></li>
</ul></li>
<li><p><strong>LSA Protection (Protected Process Light, PPL)</strong>:</p>
<ul>
<li><p>LSASSプロセスを「保護されたプロセス」として実行することで、非管理プロセスのメモリ読み取りを制限します [3]。Credential Guardが利用できない環境でも有効な対策です。</p></li>
<li><p><strong>適用方法</strong>: レジストリ設定 <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL</code> を <code>1</code> に設定し、システムを再起動します。
<div class="codehilite">
<pre data-enlighter-language="generic"># LSA Protection (PPL) を有効にするレジストリ設定</pre></div></p></li>
</ul>
<p><span class="c"># 警告: 誤ったレジストリ操作はシステムに深刻な影響を与える可能性があります。</span></p>
<p><span class="c"># 運用環境に適用する前に十分なテストを行ってください。</span></p>
<p><span class="c"># この設定はシステム再起動後に適用されます。</span></p>
<p><span class="nv">$regPath</span> <span class="p">=</span> <span class="s2">“HKLM:\SYSTEM\CurrentControlSet\Control\Lsa”</span>
<span class="nv">$regName</span> <span class="p">=</span> <span class="s2">“RunAsPPL”</span>
<span class="nv">$regValue</span> <span class="p">=</span> <span class="n">1</span> <span class="c"># 1 = Enabled, 0 = Disabled</span></p>
<p><span class="k">if</span> <span class="p">(</span><span class="o">-not</span> <span class="p">(</span><span class="nb">Test-Path</span> <span class="nv">$regPath</span><span class="p">))</span> <span class="p">{</span>
<span class="nb">New-Item</span> <span class="n">-Path</span> <span class="nv">$regPath</span> <span class="n">-Force</span> <span class="p">|</span> <span class="nb">Out-Null</span>
<span class="p">}</span>
<span class="nb">Set-ItemProperty</span> <span class="n">-Path</span> <span class="nv">$regPath</span> <span class="n">-Name</span> <span class="nv">$regName</span> <span class="n">-Value</span> <span class="nv">$regValue</span> <span class="n">-Force</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“LSA Protection の有効化設定が完了しました。変更を適用するにはシステム再起動が必要です。”</span></p>
<p><span class="c"># 期待される出力: LSA Protection の有効化設定が完了しました。変更を適用するにはシステム再起動が必要です。</span></p>
<p><span class="c"># 前提条件: 管理者権限でPowerShellを実行。</span></p>
<p><span class="c"># 計算量・メモリ条件: レジストリ操作のため、非常に小さい。</span>
</p></li>
<li><p><strong>Restricted Admin Mode</strong>:</p>
<ul>
<li><p>RDP接続時に、クライアントのクレデンシャルをターゲットサーバーに送信しないようにするモードです [1]。これにより、RDPセッションのターゲットサーバーが侵害されても、クライアントのハッシュがダンプされるリスクを低減します。</p></li>
<li><p><strong>適用方法</strong>: RDPクライアントから <code>mstsc.exe /restrictedadmin</code> で接続するか、グループポリシーで設定します。</p></li>
</ul></li>
<li><p><strong>Kerberos Armoring (Flexible Authentication Secure Tunneling, FAST)</strong>:</p>
<ul>
<li><p>Windows Server 2012以降の機能で、Kerberosの事前認証プロセスを保護します [4]。これにより、Kerberosチケットのダウングレード攻撃やリプレイ攻撃を防ぎ、PtH攻撃のリスクを低減します。</p></li>
<li><p><strong>適用方法</strong>: Active DirectoryのKDC (Key Distribution Center) でサポートされ、クライアント側でも有効化が必要です。</p></li>
</ul></li>
<li><p><strong>特権アカウントの分離と最小権限の原則</strong>:</p>
<ul>
<li><p>ドメイン管理者アカウントなどの特権アカウントは、通常の業務には使用せず、専用の管理ワークステーション (PAW/SAW) からのみアクセスするようにします。</p></li>
<li><p>Just-in-Time (JIT) / Just-Enough-Access (JEA) やPrivileged Access Management (PAM) ソリューションの導入を検討します [5]。</p></li>
<li><p>すべてのユーザーとサービスアカウントに対して、必要な最小限の権限のみを付与します。</p></li>
</ul></li>
</ol>
<h3 class="wp-block-heading">検出技術</h3>
<p>PtH攻撃の検出には、Active Directoryの監査ログが不可欠です。SIEM (Security Information and Event Management) やEDR (Endpoint Detection and Response) ソリューションと連携し、異常な挙動を監視します。</p>
<ol class="wp-block-list">
<li><p><strong>高度な監査ポリシーの設定</strong>:</p>
<ul>
<li><p>以下の監査ポリシーを有効化し、重要なイベントログを収集します [6]。</p>
<ul>
<li><p><strong>ログオン/ログオフ</strong></p>
<ul>
<li><code>資格情報の検証</code> (Event ID 4624/4625): ログオン成功/失敗、ログオンタイプ (ネットワークログオン、リモートインタラクティブなど)、ソースIP、アカウント名を監視。PtH攻撃では、ログオンタイプが異常なものや、認証元が通常とは異なるものが現れる可能性があります。</li>
</ul></li>
<li><p><strong>アカウントログオン</strong></p>
<ul>
<li><p><code>Kerberos認証サービス</code> (Event ID 4768): Kerberos TGT (Ticket Granting Ticket) 要求の成功/失敗を監視。</p></li>
<li><p><code>Kerberosサービスチケット操作</code> (Event ID 4769): サービスチケット要求の成功/失敗を監視。</p></li>
</ul></li>
<li><p><strong>特権の使用</strong></p>
<ul>
<li><code>機密性の高い特権の使用</code> (Event ID 4672): 特権昇格の試みを監視。</li>
</ul></li>
</ul></li>
<li><p><strong>検出ロジックの例</strong>: NTLM認証イベント (Event ID 4624, Logon Type 3 – Network) が記録されているが、そのユーザー/ソースIPから対応するKerberos TGT要求 (Event ID 4768) が事前にない場合、PtH攻撃の可能性があります。これは、パスワードハッシュが直接使用され、Kerberos認証フローがスキップされたことを示唆します。
<div class="codehilite">
<pre data-enlighter-language="generic"># Pass-the-Hash検出に役立つ高度なセキュリティ監査ポリシーを設定</pre></div></p></li>
</ul>
<p><span class="c"># 警告: 監査ポリシーの変更は、ログ量増加やパフォーマンスへの影響を与える可能性があります。</span></p>
<p><span class="c"># 運用環境に適用する前にテストと影響評価を実施してください。</span></p>
<p><span class="c"># 前提条件: 管理者権限でPowerShellを実行。</span></p>
<p><span class="c"># 計算量・メモリ条件: auditpolコマンド実行のため、非常に小さい。</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“以下の高度な監査ポリシーを設定します。”</span></p>
<p><span class="c"># (1) ログオン/ログオフ – 資格情報の検証 (成功および失敗)</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“- ログオン/ログオフ – 資格情報の検証”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="nb">set </span><span class="p">/</span><span class="n">subcategory</span><span class="p">:</span><span class="s2">“Credential Validation”</span> <span class="p">/</span><span class="n">success</span><span class="p">:</span><span class="n">enable</span> <span class="p">/</span><span class="n">failure</span><span class="p">:</span><span class="n">enable</span></p>
<p><span class="c"># (2) アカウントログオン – Kerberos認証サービス (成功および失敗)</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“- アカウントログオン – Kerberos認証サービス”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="nb">set </span><span class="p">/</span><span class="n">subcategory</span><span class="p">:</span><span class="s2">“Kerberos Authentication Service”</span> <span class="p">/</span><span class="n">success</span><span class="p">:</span><span class="n">enable</span> <span class="p">/</span><span class="n">failure</span><span class="p">:</span><span class="n">enable</span></p>
<p><span class="c"># (3) アカウントログオン – Kerberosサービスチケット操作 (成功および失敗)</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“- アカウントログオン – Kerberosサービスチケット操作”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="nb">set </span><span class="p">/</span><span class="n">subcategory</span><span class="p">:</span><span class="s2">“Kerberos Service Ticket Operations”</span> <span class="p">/</span><span class="n">success</span><span class="p">:</span><span class="n">enable</span> <span class="p">/</span><span class="n">failure</span><span class="p">:</span><span class="n">enable</span></p>
<p><span class="c"># (4) 特権の使用 – 機密性の高い特権の使用 (成功)</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“- 特権の使用 – 機密性の高い特権の使用”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="nb">set </span><span class="p">/</span><span class="n">subcategory</span><span class="p">:</span><span class="s2">“Sensitive Privilege Use”</span> <span class="p">/</span><span class="n">success</span><span class="p">:</span><span class="n">enable</span></p>
<p><span class="nb">Write-Host</span> <span class="s2">“</span><span class="se">`n</span><span class="s2">監査ポリシーの設定が完了しました。設定の確認:”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="n">get</span> <span class="p">/</span><span class="n">category</span><span class="p">:</span><span class="s2">“Account Logon”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="n">get</span> <span class="p">/</span><span class="n">category</span><span class="p">:</span><span class="s2">“Logon/Logoff”</span>
<span class="n">auditpol</span> <span class="p">/</span><span class="n">get</span> <span class="p">/</span><span class="n">category</span><span class="p">:</span><span class="s2">“Privilege Use”</span>
</p></li>
<li><p><strong>EDR (Endpoint Detection and Response) ソリューション</strong>:</p>
<ul>
<li><p>エンドポイントでのプロセスの挙動、ファイルアクセス、ネットワーク通信を監視し、Mimikatzのようなハッシュダンプツールやその活動を検出します。</p></li>
<li><p>LSASSプロセスの不審なメモリ読み取りや、異常な認証プロトコルの使用などを検知できます。</p></li>
</ul></li>
<li><p><strong>SIEM (Security Information and Event Management) による相関分析</strong>:</p>
<ul>
<li><p>複数のソース(イベントログ、ファイアウォールログ、IDS/IPSログなど)から収集されたログを相関分析し、攻撃の兆候を早期に検出します。</p></li>
<li><p>特に、異なるシステムからの高頻度なログイン失敗、特権アカウントの異常な使用、通常とは異なる時間帯や場所からのアクセスなどを監視します。</p></li>
</ul></li>
</ol>
<h2 class="wp-block-heading">運用対策と考慮事項</h2>
<p>PtH攻撃対策は技術的な導入だけでなく、継続的な運用と組織的な取り組みが重要です。</p>
<ol class="wp-block-list">
<li><p><strong>鍵/秘匿情報の取り扱い</strong>:</p>
<ul>
<li><p><strong>パスワードローテーション</strong>: 定期的なパスワード変更ポリシーは、すでに漏洩したハッシュの有効期間を短縮する上で有効です。特に特権アカウントは、パスワードの複雑性を高く保ち、短いサイクルでのローテーションを義務付けます。</p></li>
<li><p><strong>特権アカウントの管理</strong>: パスワードリセットを自動化し、パスワードヒストリーを厳格に管理します。</p></li>
<li><p><strong>サービスアカウントの保護</strong>: サービスアカウントのパスワードハッシュも攻撃対象となるため、Credential Guardが適用できない環境では特に注意が必要です。可能な限りManaged Service Accounts (MSAs) やGroup Managed Service Accounts (gMSAs) を利用し、パスワード管理を自動化します。</p></li>
</ul></li>
<li><p><strong>最小権限の原則 (Least Privilege)</strong>:</p>
<ul>
<li><p>すべてのユーザー、グループ、サービスアカウントに対して、業務遂行に必要な最小限の権限のみを付与します。過剰な権限は攻撃成功時の被害を拡大させます。</p></li>
<li><p>定期的に権限レビューを実施し、不要な権限がないか確認します。</p></li>
</ul></li>
<li><p><strong>多要素認証 (MFA) の導入</strong>:</p>
<ul>
<li>PtH攻撃はハッシュを直接利用するためMFAをバイパスする可能性がありますが、初期侵入や、ハッシュ取得後にクリアテキストパスワードを要求するような他の攻撃手法に対しては有効な防御策です。特に特権アクセスにはMFAを必須とします。</li>
</ul></li>
<li><p><strong>定期的な脆弱性診断とパッチ適用</strong>:</p>
<ul>
<li>OS、Active Directory、アプリケーションの脆弱性を定期的に診断し、最新のセキュリティパッチを適用します。既知の脆弱性を悪用した初期侵入を防ぎます。</li>
</ul></li>
<li><p><strong>ネットワークセグメンテーション</strong>:</p>
<ul>
<li>重要なサーバーやドメインコントローラーを他のネットワークセグメントから分離し、アクセス制御を厳格化します。攻撃者が横展開するのを困難にします。</li>
</ul></li>
<li><p><strong>現場の落とし穴</strong>:</p>
<ul>
<li><p><strong>誤検知 (False Positives)</strong>: 監査ログの詳細度を高めると、膨大な量のログが生成され、誤検知が増える可能性があります。SIEM/EDRのチューニングや、ユースケースに基づいた検出ルール設定が重要です。</p></li>
<li><p><strong>検出遅延</strong>: 攻撃が検出されるまでの時間が長ければ長いほど、被害は拡大します。リアルタイムに近い監視と自動化されたアラート、迅速な対応プロセスが不可欠です。</p></li>
<li><p><strong>可用性トレードオフ</strong>: Credential GuardやLSA Protectionなどの高度なセキュリティ機能は、古いハードウェアや特定のソフトウェアとの互換性の問題を引き起こす可能性があります。導入前には十分なテストと検証を行い、可用性への影響を評価する必要があります。</p></li>
<li><p><strong>レガシーシステムの残存</strong>: 古いOSやアプリケーションは、最新のセキュリティ機能をサポートしておらず、PtH攻撃のリスク要因となり得ます。これらに対する適切なリスクアセスメントと、隔離またはアップグレード計画が必要です。</p></li>
</ul></li>
</ol>
<h2 class="wp-block-heading">まとめ</h2>
<p>Pass-the-Hash攻撃は、Active Directory環境における最も深刻な脅威の一つであり、その検出と緩和には包括的なアプローチが求められます。Credential Guard、LSA Protection、Kerberos Armoringといった技術的な緩和策の導入に加え、高度な監査ポリシーによるログ監視、EDR/SIEMによる相関分析が不可欠です。</p>
<p>さらに、最小権限の原則、特権アカウントの厳格な管理、多要素認証の導入、定期的な脆弱性管理といった運用対策を継続的に実施することで、攻撃のリスクを最小限に抑えることができます。セキュリティエンジニアは、これらの対策をバランス良く組み合わせ、組織の具体的な環境に合わせた戦略を構築し、絶えず変化する脅威に対応していく必要があります。</p>
<hr/>
<h3 class="wp-block-heading">参考文献</h3>
<p>[1] Microsoft Learn. “Mitigating Pass-the-Hash (PtH) Attacks.” 最終更新日: 2024年4月15日. <a href="https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/mitigating-pass-the-hash-attacks">https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/mitigating-pass-the-hash-attacks</a>
[2] Microsoft Learn. “Manage Windows Defender Credential Guard.” 最終更新日: 2024年3月20日. <a href="https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/credential-guard-overview">https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/credential-guard-overview</a>
[3] Microsoft Learn. “Configuring Additional LSA Protection.” 最終更新日: 2023年11月1日. <a href="https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection">https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection</a>
[4] Microsoft Tech Community. “Kerberos Armoring and Fast Logon.” 公開日: 2012年4月2日. <a href="https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/kerberos-armoring-and-fast-logon/ba-p/398251">https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/kerberos-armoring-and-fast-logon/ba-p/398251</a>
[5] Microsoft Learn. “Protecting privileged access.” 最終更新日: 2024年4月15日. <a href="https://learn.microsoft.com/en-us/security/privileged-access-workstations/overview">https://learn.microsoft.com/en-us/security/privileged-access-workstations/overview</a>
[6] Microsoft Learn. “Security auditing recommendations.” 最終更新日: 2024年1月10日. <a href="https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/security-auditing-recommendations">https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/security-auditing-recommendations</a></p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Pass-the-Hash攻撃検出とActive Directory緩和策
Pass-the-Hash (PtH) 攻撃は、Active Directory (AD) 環境における主要な脅威の一つであり、攻撃者がネットワーク内で特権を昇格し、横展開するための一般的な手法です。この攻撃は、パスワードそのものではなく、Windowsシステムにキャッシュされたユーザーのパスワードハッシュ(通常はNTLMハッシュまたはKerberosチケット)を悪用して認証を試みるため、多要素認証(MFA)が導入されていてもバイパスされる可能性があります。セキュリティエンジニアは、この攻撃のメカニズムを深く理解し、適切な検出・緩和策を講じる必要があります。
脅威モデル
PtH攻撃の脅威モデルは、主に以下の要素に焦点を当てます。
攻撃者: 内部の悪意あるユーザー、外部からの侵入に成功した攻撃者、またはマルウェア。
目標: ドメイン管理者権限の奪取、機密データの窃取、システム破壊、永続的なアクセス経路の確立。
初期侵入: フィッシング、脆弱性利用、マルウェア感染などにより、まずは一般ユーザー権限でシステムへのアクセスを確立する。
脆弱性: Windowsが認証効率のためにパスワードハッシュやKerberosチケットをメモリ(LSASSプロセスなど)にキャッシュする特性。保護されていないレガシーなプロトコル(例: NTLMv1)の使用。不適切なネットワークセグメンテーション。
影響: ドメイン全体の侵害、ビジネスの中断、データ漏洩、規制違反。
攻撃シナリオ
PtH攻撃は通常、以下の手順で進行します。この攻撃チェーンを図1に示します。
初期侵入: 攻撃者はフィッシングメールやWebサイトの脆弱性などを利用し、ユーザーの端末(例: クライアントPC、Webサーバー)に初期アクセスを確立します。この段階では、多くの場合、一般ユーザーの権限です。
ハッシュの抽出: 攻撃者は、システムに侵入後、特権昇格(もし必要であれば)を行い、lsass.exeプロセスなどのメモリから、ログオン中のユーザーのパスワードハッシュ(NTLMハッシュ)やKerberosチケットをダンプします。Mimikatzのようなツールがこの目的で広く使用されます。
- 誤用例の概念:
Mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" のようなコマンドは、管理者権限があればLSASSプロセスからハッシュを抽出できます。これは、パスワードを知らなくても、そのハッシュ値だけで認証が成功するという点で危険です。
横展開 (Lateral Movement): 抽出したハッシュを利用し、パスワードを知ることなく、同じネットワーク内の他のシステム(ファイルサーバー、データベースサーバー、ドメインコントローラーなど)に認証を試みます。認証には、Server Message Block (SMB) やRemote Desktop Protocol (RDP)、Windows Management Instrumentation (WMI) などが用いられます。これにより、攻撃者はネットワーク内のより価値のあるターゲットへアクセス範囲を広げます。
特権昇格とドメイン支配: 横展開を繰り返し、最終的にドメイン管理者権限を持つアカウントのハッシュを取得すると、ドメインコントローラーにアクセスし、ドメイン全体を掌握します。これにより、永続的なバックドアの作成やデータの窃取が可能となります。
flowchart TD
A["初期侵入
ユーザー端末へアクセス"] --> B{"ハッシュ抽出"};
B -- Mimikatzなどを使用 --> C["LSASSプロセスから
NTLM/Kerberosハッシュダンプ"];
C --> D["ドメインユーザーの
パスワードハッシュ取得"];
D --> E{"他のホストへの
横展開"};
E -- 取得したハッシュでPass-the-Hash攻撃 --> F["RDP/SMB経由で認証"];
F --> G["高権限システムへのアクセス"];
G --> H["ドメイン管理者権限の奪取"];
H --> I["永続的な足場の確保
機密データ窃取"];
subgraph 検出と緩和
B -- LSA Protection / Credential Guard --> C_MIT1("ハッシュ抽出阻止");
D -- Restricted Admin Mode --> E_MIT1("RDP経由PtH阻止");
F -- Kerberos Armoring --> E_MIT2("Kerberosリプレイ/ダウングレード阻止");
F -- 監査ログ監視
(4624, 4625, 4768, 4769) --> J["SIEM/EDRによる異常検知"];
J -- 未知のハッシュ認証/不審な横移動 --> K("アラート発行");
end
図1: Pass-the-Hash攻撃チェーンと検出・緩和策
検出技術とActive Directory緩和策
PtH攻撃に対する防御は、多層的なアプローチが必要です。
緩和策
Credential Guardの利用:
Windows 10 Enterprise/EducationおよびWindows Server 2016以降で利用可能な機能です。
仮想化ベースのセキュリティ (VBS) を利用し、LSA (Local Security Authority) の秘密情報(パスワードハッシュなど)を分離された環境に格納します [1]。これにより、マルウェアや攻撃者がLSASSプロセスから直接ハッシュをダンプすることを極めて困難にします。
要件: UEFI、セキュアブート、仮想化ベースのセキュリティ (Hyper-V機能など) が必要です [2]。
適用方法: グループポリシー (GPO) またはレジストリ設定で有効化します。
LSA Protection (Protected Process Light, PPL):
# 警告: 誤ったレジストリ操作はシステムに深刻な影響を与える可能性があります。
# 運用環境に適用する前に十分なテストを行ってください。
# この設定はシステム再起動後に適用されます。
$regPath = “HKLM:\SYSTEM\CurrentControlSet\Control\Lsa”
$regName = “RunAsPPL”
$regValue = 1 # 1 = Enabled, 0 = Disabled
if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force | Out-Null
}
Set-ItemProperty -Path $regPath -Name $regName -Value $regValue -Force
Write-Host “LSA Protection の有効化設定が完了しました。変更を適用するにはシステム再起動が必要です。”
# 期待される出力: LSA Protection の有効化設定が完了しました。変更を適用するにはシステム再起動が必要です。
# 前提条件: 管理者権限でPowerShellを実行。
# 計算量・メモリ条件: レジストリ操作のため、非常に小さい。
Restricted Admin Mode:
Kerberos Armoring (Flexible Authentication Secure Tunneling, FAST):
特権アカウントの分離と最小権限の原則:
ドメイン管理者アカウントなどの特権アカウントは、通常の業務には使用せず、専用の管理ワークステーション (PAW/SAW) からのみアクセスするようにします。
Just-in-Time (JIT) / Just-Enough-Access (JEA) やPrivileged Access Management (PAM) ソリューションの導入を検討します [5]。
すべてのユーザーとサービスアカウントに対して、必要な最小限の権限のみを付与します。
検出技術
PtH攻撃の検出には、Active Directoryの監査ログが不可欠です。SIEM (Security Information and Event Management) やEDR (Endpoint Detection and Response) ソリューションと連携し、異常な挙動を監視します。
高度な監査ポリシーの設定:
以下の監査ポリシーを有効化し、重要なイベントログを収集します [6]。
ログオン/ログオフ
資格情報の検証 (Event ID 4624/4625): ログオン成功/失敗、ログオンタイプ (ネットワークログオン、リモートインタラクティブなど)、ソースIP、アカウント名を監視。PtH攻撃では、ログオンタイプが異常なものや、認証元が通常とは異なるものが現れる可能性があります。
アカウントログオン
特権の使用
機密性の高い特権の使用 (Event ID 4672): 特権昇格の試みを監視。
検出ロジックの例: NTLM認証イベント (Event ID 4624, Logon Type 3 – Network) が記録されているが、そのユーザー/ソースIPから対応するKerberos TGT要求 (Event ID 4768) が事前にない場合、PtH攻撃の可能性があります。これは、パスワードハッシュが直接使用され、Kerberos認証フローがスキップされたことを示唆します。
# Pass-the-Hash検出に役立つ高度なセキュリティ監査ポリシーを設定
# 警告: 監査ポリシーの変更は、ログ量増加やパフォーマンスへの影響を与える可能性があります。
# 運用環境に適用する前にテストと影響評価を実施してください。
# 前提条件: 管理者権限でPowerShellを実行。
# 計算量・メモリ条件: auditpolコマンド実行のため、非常に小さい。
Write-Host “以下の高度な監査ポリシーを設定します。”
# (1) ログオン/ログオフ – 資格情報の検証 (成功および失敗)
Write-Host “- ログオン/ログオフ – 資格情報の検証”
auditpol /set /subcategory:“Credential Validation” /success:enable /failure:enable
# (2) アカウントログオン – Kerberos認証サービス (成功および失敗)
Write-Host “- アカウントログオン – Kerberos認証サービス”
auditpol /set /subcategory:“Kerberos Authentication Service” /success:enable /failure:enable
# (3) アカウントログオン – Kerberosサービスチケット操作 (成功および失敗)
Write-Host “- アカウントログオン – Kerberosサービスチケット操作”
auditpol /set /subcategory:“Kerberos Service Ticket Operations” /success:enable /failure:enable
# (4) 特権の使用 – 機密性の高い特権の使用 (成功)
Write-Host “- 特権の使用 – 機密性の高い特権の使用”
auditpol /set /subcategory:“Sensitive Privilege Use” /success:enable
Write-Host “`n監査ポリシーの設定が完了しました。設定の確認:”
auditpol /get /category:“Account Logon”
auditpol /get /category:“Logon/Logoff”
auditpol /get /category:“Privilege Use”
EDR (Endpoint Detection and Response) ソリューション:
SIEM (Security Information and Event Management) による相関分析:
運用対策と考慮事項
PtH攻撃対策は技術的な導入だけでなく、継続的な運用と組織的な取り組みが重要です。
鍵/秘匿情報の取り扱い:
パスワードローテーション: 定期的なパスワード変更ポリシーは、すでに漏洩したハッシュの有効期間を短縮する上で有効です。特に特権アカウントは、パスワードの複雑性を高く保ち、短いサイクルでのローテーションを義務付けます。
特権アカウントの管理: パスワードリセットを自動化し、パスワードヒストリーを厳格に管理します。
サービスアカウントの保護: サービスアカウントのパスワードハッシュも攻撃対象となるため、Credential Guardが適用できない環境では特に注意が必要です。可能な限りManaged Service Accounts (MSAs) やGroup Managed Service Accounts (gMSAs) を利用し、パスワード管理を自動化します。
最小権限の原則 (Least Privilege):
多要素認証 (MFA) の導入:
- PtH攻撃はハッシュを直接利用するためMFAをバイパスする可能性がありますが、初期侵入や、ハッシュ取得後にクリアテキストパスワードを要求するような他の攻撃手法に対しては有効な防御策です。特に特権アクセスにはMFAを必須とします。
定期的な脆弱性診断とパッチ適用:
- OS、Active Directory、アプリケーションの脆弱性を定期的に診断し、最新のセキュリティパッチを適用します。既知の脆弱性を悪用した初期侵入を防ぎます。
ネットワークセグメンテーション:
- 重要なサーバーやドメインコントローラーを他のネットワークセグメントから分離し、アクセス制御を厳格化します。攻撃者が横展開するのを困難にします。
現場の落とし穴:
誤検知 (False Positives): 監査ログの詳細度を高めると、膨大な量のログが生成され、誤検知が増える可能性があります。SIEM/EDRのチューニングや、ユースケースに基づいた検出ルール設定が重要です。
検出遅延: 攻撃が検出されるまでの時間が長ければ長いほど、被害は拡大します。リアルタイムに近い監視と自動化されたアラート、迅速な対応プロセスが不可欠です。
可用性トレードオフ: Credential GuardやLSA Protectionなどの高度なセキュリティ機能は、古いハードウェアや特定のソフトウェアとの互換性の問題を引き起こす可能性があります。導入前には十分なテストと検証を行い、可用性への影響を評価する必要があります。
レガシーシステムの残存: 古いOSやアプリケーションは、最新のセキュリティ機能をサポートしておらず、PtH攻撃のリスク要因となり得ます。これらに対する適切なリスクアセスメントと、隔離またはアップグレード計画が必要です。
まとめ
Pass-the-Hash攻撃は、Active Directory環境における最も深刻な脅威の一つであり、その検出と緩和には包括的なアプローチが求められます。Credential Guard、LSA Protection、Kerberos Armoringといった技術的な緩和策の導入に加え、高度な監査ポリシーによるログ監視、EDR/SIEMによる相関分析が不可欠です。
さらに、最小権限の原則、特権アカウントの厳格な管理、多要素認証の導入、定期的な脆弱性管理といった運用対策を継続的に実施することで、攻撃のリスクを最小限に抑えることができます。セキュリティエンジニアは、これらの対策をバランス良く組み合わせ、組織の具体的な環境に合わせた戦略を構築し、絶えず変化する脅威に対応していく必要があります。
参考文献
[1] Microsoft Learn. “Mitigating Pass-the-Hash (PtH) Attacks.” 最終更新日: 2024年4月15日. https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/mitigating-pass-the-hash-attacks
[2] Microsoft Learn. “Manage Windows Defender Credential Guard.” 最終更新日: 2024年3月20日. https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/credential-guard-overview
[3] Microsoft Learn. “Configuring Additional LSA Protection.” 最終更新日: 2023年11月1日. https://learn.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection
[4] Microsoft Tech Community. “Kerberos Armoring and Fast Logon.” 公開日: 2012年4月2日. https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/kerberos-armoring-and-fast-logon/ba-p/398251
[5] Microsoft Learn. “Protecting privileged access.” 最終更新日: 2024年4月15日. https://learn.microsoft.com/en-us/security/privileged-access-workstations/overview
[6] Microsoft Learn. “Security auditing recommendations.” 最終更新日: 2024年1月10日. https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/security-auditing-recommendations
コメント