境界防御の終焉と「メモリの聖域」:Credential Guardが解くパス・ザ・ハッシュの呪縛
インフラエンジニア諸君、日々「境界防御」という言葉にどれほどの欺瞞を感じているだろうか。WAFや次世代ファイアウォールを積み上げても、ひとたびローカル管理者の権限を奪取されれば、攻撃者は『LSASS.exe』のメモリ空間を覗き込み、資格情報をいとも簡単に掠め取る。
パス・ザ・ハッシュ(PtH)攻撃は、もはや古典的だ。しかし、なぜこれほどまでに多くの企業が、依然としてこの手法でドメインコントローラーを陥落させられているのか。それは、我々が「OSという巨大な泥沼」の中に、機密情報を無防備に放置し続けてきたからに他ならない。
今日は、Windowsのセキュリティアーキテクチャにおいて、もはや「オプション」ではなく「必須」となったCredential Guardについて、その低レイヤの挙動と防衛戦略を語ろう。
1. 脆弱性の根源:なぜLSASSは攻撃されるのか
Windowsの認証プロセスを司る lsass.exe(Local Security Authority Subsystem Service)は、歴史的な仕様上、システム権限さえあればメモリ内容をダンプできてしまう。攻撃者は mimikatz のようなツールを使い、平文のパスワードやNTLMハッシュ、Kerberosチケットをメモリ上から抽出する。
ここでの根本的な問題は、「OSそのものが、自身が管理する認証情報の保護において、OS自身の脆弱性を許容している」点にある。カーネルが侵害されれば、OS上で動くすべてのメモリ領域は攻撃者の遊び場だ。これを物理的に(論理的に)隔離しなければ、どれほど複雑なパスワードを設定しても無意味である。
2. 仮想化ベースのセキュリティ(VBS)によるメモリの分離
Credential Guardは、ハイパーバイザー(Hyper-V)の力を借りて、認証情報をOS(Windows)のカーネルから完全に切り離す。具体的には、仮想化ベースのセキュリティ(VBS)機能を利用し、メモリ空間を「セキュアワールド」と「ノーマルワールド」に分割する。
- セキュアワールド(Isolated LSA): ここには認証情報のみが格納される。たとえ管理者権限を持つマルウェアであっても、この領域のメモリを直接読み取ることは不可能だ。
- 通信のインターフェース: OSはRPCを通じてセキュアワールドに認証を依頼するが、セキュアワールドは「ハッシュを返す」のではなく、「認証の結果(Yes/No)」を返すだけに留める。これが、PtHを物理的に不可能にする鍵だ。
3. 実践:Credential Guardの堅牢な実装と監査
「とりあえず有効化」して満足してはならない。アーキテクトならば、以下の構成要件を理解し、監査ログまで設計に落とし込む必要がある。
実装のチェックポイント(PowerShell)
Credential Guardを有効化する際は、グループポリシー(GPO)が基本だが、まずは以下の設定が正しく適用されているか確認してほしい。
# 仮想化ベースのセキュリティが有効か、そしてCredential Guardが動作中かを確認する
# 以下のコマンドの結果で "Running" と表示される必要がある
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
# レジストリを通じた強制設定(※本来はGPO推奨)
# HKLM\SYSTEM\CurrentControlSet\Control\Lsa\LsaCfgFlags
# 値を 1 に設定することで、Credential Guardを有効化する
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LsaCfgFlags" -Value 1
アーキテクトへの警鐘:TPMとの連携
Credential Guardを有効化するだけでは片手落ちだ。必ず TPM 2.0 と連携させ、セキュアブートを有効にすること。そうでなければ、攻撃者がカーネルを改竄してブートし、Credential Guardの保護を無効化する「パッチ適用済みカーネルへの置き換え攻撃」を防げない。
4. 次なる脅威:量子時代とプロトコル攻撃への備え
Credential GuardはPtHを無効化するが、攻撃者は既に次の手を見ている。今、真に恐れるべきは、ネットワーク上に流れるKerberosチケットそのものを盗聴・再利用する攻撃ではない。
今後、我々が直面するのは「認証プロトコルそのものの不備」と「生成AIによるフィッシングの高度化」だ。
1. 耐量子暗号(PQC)への準備: 現在のKerberosやSSL/TLSの実装が将来的にショアのアルゴリズムで突破されるリスクを見据え、暗号スイートの更新計画を立てておくこと。
2. ガードレイルの設計: LLM(大規模言語モデル)を社内システムに統合する際、プロンプトインジェクションによって lsass へのAPIコールを誘発させようとする試みが現れるだろう。防御層には、「認証情報へのアクセスを要求するプロセス」に対して、厳格なコード署名検証と、LLMからの直接的なシステムコールを遮断するサンドボックス層を設けるべきだ。
最後に:防御は「信頼」を排除することから始まる
「管理者だから信頼できる」という性善説は、現代のインフラセキュリティにおいては「怠慢」と同義だ。Credential Guardは、その怠慢をシステム的に排除するための強力なツールである。
しかし、技術はあくまでツールに過ぎない。諸君がやるべきことは、認証情報を「OSのメモリ」という危険な場所から解放し、ハードウェアレベルの聖域へと押し込めること。そして、その聖域にアクセスできる経路を、最小権限の原則に基づいて極限まで絞り込むことだ。
セキュリティとは、終わりのない泥試合だ。だが、その泥試合において「負けない」ための最低限の足場は、我々自身の手で築かなければならない。さあ、設定ファイルを書き換え、アーキテクチャを再構築しよう。それが、プロのエンジニアの流儀だ。
コメント