【メモリForensics編】Volatilityで「今この瞬間」を切り取る|CTF思考フレームワーク #43
こんにちは、アンペンです!
今回はフォレンジック4領域のうち、最も揮発性が高いメモリフォレンジックを扱います。電源を切ると消えてしまう代わりに、『今この瞬間に何が起きているか』がそのまま残っている貴重な領域です。
定番ツールVolatilityを使い、メモリダンプから何が分かるかを整理しましょう。

メモリの中って、ファイルみたいに『開いて見る』ことできるの?

動いてるPCのメモリをダンプ(=丸ごとコピー)して、Volatilityで構造を読み解くんだ。プロセス一覧・ネット接続・認証情報まで取れる。
前回のディスクが“過去の記録”なら、今回のメモリは“今この瞬間の生中継”です。動いているPCのメモリには、今まさに実行中のプログラム、つながっている通信、入力されたパスワードまで——その瞬間のすべてが詰まっています。ただし、電源を切ればすべて消える。だから最優先で“写真を撮る”。今日はその撮り方と読み解き方を見ていきます。
メモリには『今動いているプロセス・ネット接続・認証情報・暗号鍵・Fileless攻撃の痕跡』が残ります。揮発性が高いため最優先でダンプし、Volatilityで構造を読み解くのが定石です。守りはCredential Guard等で『そもそも認証情報がメモリに残らないようにする』ことが効きます。
この記事で分かること
- メモリに残る情報の種類
- メモリダンプの取得手順(LiME / WinPmem)
- Volatilityの代表プラグイン(pslist/pstree/netstat/malfind/lsadump)
- 守る側の対策(Credential Guard / LSA Protection)
📖 はじめてのWebセキュリティ #43|メモリForensics編
Volatilityでプロセスと認証情報を抜き出す手法を扱います。 シリーズ一覧を見る →
⚠️ 大事なお約束
他者の端末からメモリダンプを取得することは、業務上の権限や法律に違反する可能性があります。CTFや自分の検証環境のみで確認してください。
メモリは『今この瞬間』の写真
ディスクが『過去の蓄積』だとすれば、メモリは『今この瞬間』のスナップショットです。電源を切ると消えるため、インシデント対応では最優先で確保すべき領域です。
取れる情報の質も濃く、ディスクには残らないFileless攻撃(ファイルを残さずメモリ上だけで動くマルウェア)も、メモリなら捕まえられることがあります。
ここがメモリ調査の“切り札”になる場面です。最近の高度なマルウェアには、『ファイルをディスクに一切残さず、メモリの中だけで動く』タイプがあります(Fileless攻撃)。ディスクをいくら調べても、そこには何も無い。まるで足跡を残さない幽霊のようです。でも、メモリには“今動いている”姿がそのまま映っている。ディスク調査では見えない相手も、メモリなら現行犯で捕まえられる——これがメモリフォレンジックの強みです。
図解:メモリから取れる情報
メモリには、OSが管理する『プロセス情報』『ネット接続』『認証情報のキャッシュ』『開いているファイルハンドル』など、膨大な情報が残っています。
メモリがこれほど情報の宝庫なのは、“動いている状態そのもの”だからです。ディスクに保存されたファイルは、いわば冷凍保存された食材。一方メモリは、まさに調理中のキッチン——どの鍋に何が入っていて、誰が何を作っているかが一目で見える。プロセスも、通信も、入力された秘密も、“使っている最中”の生の姿でそこにある。だからこそ濃い情報が取れる反面、火を止めた(電源を切った)瞬間に消えてしまうわけです。

ディスクが防犯カメラの長時間録画なら、メモリは現場で撮った1枚の写真です。動きは止まっているけれど、その瞬間に『誰がどこで何を持っていたか』がすべて写っています。電源(=シャッターを閉じる)前に撮らないと、永遠に失われます。

ここで覚える用語:メモリダンプ
稼働中システムの物理メモリ(RAM)の内容を、丸ごとファイルに書き出したものです。サイズは搭載RAMと同じ(8GBなら8GB)。取得には専用ツール(Linux: LiME、Windows: WinPmem / DumpIt 等)を使います。仮想マシンなら、ハイパーバイザのスナップショット機能でもメモリを保全できます。
『ダンプ』という言葉は、要するに“動いている脳みそを、まるごとそっくりコピーする”こと。生きたまま、考えている内容ごと写し取るイメージです。ただし注意点が一つ——コピーを取る作業自体も、少しだけメモリを使います。つまり“観察すると、観察対象が少し変わる”。だから完璧は望めず、『取れるうちに、なるべく現場を荒らさず素早く取る』のが現実的な作法になります。
Volatilityで構造を読み解く
代表プラグインと使いどころ
Volatility(現行はVolatility3)は、メモリダンプを食わせるとOSのデータ構造を解析してくれるツールです。代表的なプラグインを覚えておきましょう。
- pslist / pstree:プロセス一覧と親子関係(『explorer.exeから起動したcmd.exe』など)
- netstat / netscan:ネットワーク接続(C2サーバへの接続が見える)
- malfind:怪しいメモリ領域(注入コードの兆候)を検出
- cmdline / consoles:実行されたコマンドライン
- filescan / dumpfiles:メモリ上にあるファイルハンドル・キャッシュ
- lsadump / hashdump:LSASSプロセスから認証情報を抽出
『プロセスの親子関係』は特に重要で、本来あり得ない親子関係(例:winword.exe → powershell.exe)はマクロ攻撃の典型的なサインです。
この『親子関係』、フォレンジックでは家系図のように使います。プログラムは、普通“決まった親”から生まれます。たとえばWord(winword.exe)が突然PowerShellという“子”を産んだら?——Wordが文書を開いてプログラムを動かすなんて、本来ありえません。これは『悪意あるマクロが仕込まれた文書を開いてしまった』典型的なサインです。誰が誰を起動したか、その家系図のおかしさが、攻撃をあぶり出します。

『認証情報がメモリに残る』問題
WindowsのLSASSプロセスには、ログイン中のユーザーの認証情報(NTLMハッシュ・Kerberosチケット等)がキャッシュされます。攻撃者がメモリにアクセスできれば、これを抜き出して横展開(Lateral Movement)に使えてしまいます。
これがMimikatzなどのツールがやっていることで、フォレンジック側もlsadump系プラグインで同じ情報を取得できます。
ここで面白い(そして示唆的な)のは、攻撃ツールのMimikatzと、フォレンジックのlsadumpが、“同じ場所から同じものを取っている”ということです。攻撃者は盗むために、調査員は調べるために、どちらもLSASSのメモリから認証情報を取り出す。道具の善悪は、使い手と目的で決まる——セキュリティを学ぶうえで、何度も出会う大事な感覚です。だからこそ、こうした技術は必ず自分の環境の中だけで試す、という一線が重要になります。
この回も手を動かすのがいちばん。自分のVMでいくつかプログラムを立ち上げ、メモリをダンプして、Volatilityでプロセス一覧を眺めてみましょう。「さっき開いたブラウザ、ちゃんと写ってる!」という体験が、理解を一気に深めます。対象は必ず自分のVMやCTFだけ。他人のPCのメモリを無断で抜くのは厳禁です。
CTFでやってみよう:Volatilityで侵入を再構成
自分のVMでメモリダンプを解析する
目的は『メモリから何が見えるか』を体感することです。
- 検証用VMを起動し、複数プロセス(ブラウザ・cmd・powershell等)を立ち上げる
- WinPmem / DumpIt(Windows)またはLiME(Linux)でメモリをダンプ
- Volatility3で
windows.pslistやwindows.netstatを実行 - プロセス親子関係を
pstreeで確認(怪しい親子はないか?) - 余裕があれば
malfindで注入コードの検出を試す
守る側の発想は、これまでと少し違います。“消える前に撮る”は調査側の話。守る側は、その逆を狙います。

メモリに認証情報が残るのが問題なら、残らないようにはできないの?

まさにそこを狙うのが現代の守りなんだ。#36でも出たCredential Guardは、認証情報をOS本体から切り離した“隔離部屋”に置く仕組み。だから、攻撃者がメモリを抜いても、肝心の鍵束はそこに無い。さらにLSA Protectionで、そもそもLSASSのメモリに“手を伸ばす”行為自体をブロックする。調査側にとっては撮りたい写真でも、守る側にとっては“最初から写したくない秘密”。残さなければ、抜かれようがないんだよ。
守る側の対策:『そもそも残らないようにする』
メモリに認証情報が残らない設計が、近年のWindowsで強化されています。
- Credential Guardを有効化(LSASS資格情報を仮想化で隔離)
- LSA Protection(RunAsPPL)でLSASSを保護プロセス化
- EDRでLSASSへのハンドル取得を監視・ブロック
- 管理者ログオン後のキャッシュ無効化(GPO)
- 定期的にメモリ保全演習(ダンプ→Volatility読み解き)を実施
- クラウドVMはハイパーバイザのスナップショットで取得可能か確認

『電源を切ると消える』だから先に撮るんだね。

そう。だからメモリは最優先。次回はネットワークフォレンジックを扱うよ。pcapで通信を読み解いていく。
ここまでをひと言で言うと、メモリフォレンジックは『消える前に撮り、構造で読む』。揮発性が高いぶん最優先で確保し、Volatilityでプロセスの家系図や通信、注入コードを読み解く。そして守る側は“そもそも秘密をメモリに残さない”設計で応じる。調査と防御、両方の視点を持てると、メモリという領域が一気に立体的に見えてきます。
まとめ:『ダンプ→Volatility→構造解析』
- メモリは揮発性最高、最優先で保全
- Volatilityでプロセス・接続・認証情報・注入コードを抽出
- プロセスの親子関係は攻撃検知の鍵
- 守りはCredential Guard / LSA Protection / EDRで残さない設計
今日の持ち帰りは『メモリは、最優先で撮る一枚の写真』です。ディスクと違って、ためらっている間に消えてしまいます。だから侵入が疑われたら、慌てて再起動せず、まずメモリを保全する。そして守る側は、その写真に“秘密が写り込まない”ようにしておく。撮る側と撮らせない側、両方の準備が、いざという時に効いてきます。
次回はネットワーク領域、pcap解析でC2通信や情報窃取の足跡を読み解いていきます。
