LSASSという名の「パンドラの箱」:メモリフォレンジックで暴く資格情報の奪取劇
現場の最前線でインシデント対応をしていると、調査の終盤で必ずと言っていいほど直面するのが、Local Security Authority Subsystem Service (lsass.exe) のメモリダンプだ。攻撃者が「宝の山」と呼ぶこのプロセスには、Windows認証の心臓部が鼓動している。
今回は、単なる「Mimikatzを検知しました」というアラートレベルの話は飛ばす。アーキテクトやチーフレベルの視座で、なぜOSの設計がここまで脆弱なのか、そして我々防衛側がメモリの深淵で何を監視すべきなのかを深掘りする。
—
1. なぜLSASSは「抜かれる」のか:Windows認証の設計的負債
lsass.exeが標的になるのは、Windowsがシングルサインオン(SSO)を実現するために、ユーザーの資格情報(NTLMハッシュやKerberosチケット)をメモリ上にキャッシュせざるを得ないからだ。
攻撃者は、MiniDumpWriteDump APIを悪用してプロセスをダンプするか、あるいはより巧妙にlsass.exeのメモリ空間を直接読み取って認証情報を抽出する。特に、Kerberosのチケット(TGT/TGS)を盗む「Pass-the-Ticket」は、パスワードそのものを知らなくてもドメイン環境を蹂躙できるため、APTグループの常套手段となっている。
攻撃者が狙うメモリ上の構造体
攻撃者はメモリ内の特定セグメント(主にmsv1_0.dllやkerberos.dllがロードされている領域)をスキャンし、認証情報が格納された構造体を探し出す。近年の防御手法である「Credential Guard」は、このプロセスを仮想化ベースのセキュリティ(VBS)によって分離し、カーネル特権であっても直接アクセスできないようにしているが、未だにレガシーなインフラ環境では無力だ。
—
2. メモリフォレンジックによる追跡の実践
インシデント発生時、Volatility 3を使用してメモリダンプから何を見つけるべきか。まずは、異常なプロセス起動や不審なハンドルを特定する。
Volatility 3での調査コマンド例
# プロセスリストを確認し、lsass.exeに不自然な親プロセスがないか確認
python3 vol.py -f memory.dmp windows.pslist
# lsass.exeに対して不審なDLLが注入されていないか確認
python3 vol.py -f memory.dmp windows.dlllist --pid 600
# 攻撃者がツールを隠蔽するために使用した可能性のあるメモリエリアを抽出
python3 vol.py -f memory.dmp windows.vadyarascan --pid 600 --yara-rules mimikatz.yar
ここで重要なのは、lsass.exeがメモリに保持している「ハンドル」の数だ。攻撃者がダンプツールを実行する際、一時的にハンドル数が増加したり、lsass.exeに対してPROCESS_QUERY_INFORMATIONやPROCESS_VM_READのアクセス権を要求するプロセスが出現する。これこそが、防衛側が検知すべき「初動のノイズ」である。
—
3. 防衛アーキテクチャ:ガードレイルの構築
単なる検知から、攻撃を不可能にするアーキテクチャへのシフトが求められている。
① 仮想化ベースのセキュリティ (VBS) と Credential Guard
もし貴方の環境でCredential Guardが有効になっていないなら、それは「金庫の鍵を開けっ放しにしている」のと同じだ。グループポリシーで以下を設定する。
- 設定場所:
コンピューターの構成 > 管理用テンプレート > システム > Device Guard > 仮想化ベースのセキュリティを有効にする - 効果:
lsass.exeの内部情報を分離し、たとえSYSTEM権限でもメモリを読み取れないようにする。
② EDRによるメモリ保護
EDRは、lsass.exeへの不当なアクセスをブロックするべきだ。以下は、Sysmonを用いて不審なアクセスをロギングする際のフィルタ設定のヒントである。
<!-- Sysmon設定例:LSASSへのアクセスを監視 -->
<RuleGroup name="" groupRelation="or">
<ProcessAccess onmatch="include">
<TargetImage condition="end with">lsass.exe</TargetImage>
<!-- 不審なプロセスからのアクセスを抽出 -->
<GrantedAccess condition="contains">0x1010</GrantedAccess>
</ProcessAccess>
</RuleGroup>
—
4. 未来への備え:耐量子暗号と資格情報のゆくえ
現在、我々が扱うKerberosやNTLMといったプロトコルは、量子コンピュータの登場によって近い将来、暗号解読の脅威にさらされる。認証チケットの署名アルゴリズムに耐量子暗号(PQC)を導入していくことは、今後のエンタープライズセキュリティの必須課題となる。
また、生成AIを活用した攻撃(プロンプトインジェクションによる管理コンソールの操作など)は、物理的な資格情報奪取だけでなく、権限昇格の経路を爆発的に増やしている。ガードレイルとして、認証基盤へのアクセスは「ゼロトラスト」を徹底し、セッション単位で信頼を再検証する仕組みが不可欠だ。
—
まとめ:泥臭い現場の教訓
技術は進化し、防御手法も洗練されている。しかし、攻撃者は常に「OSの設計仕様」という逃げられない弱点を突いてくる。
- メモリダンプを定期的に取得し、ベースラインを作成せよ。
- LSASSへのアクセス権をSYSTEM権限を持つプロセスであっても最小化せよ。
- 認証情報は「いつか盗まれるもの」という前提で、多要素認証(MFA)を全経路に適用せよ。
フォレンジックは過去の事件を振り返るためのものではない。次に同じ攻撃が来たときに、一瞬で防御を完遂するための「道標」であるべきだ。現場の泥臭い調査結果をアーキテクチャの改善に直結させること。それが真のチーフホワイトハッカーの仕事である。
コメント