PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。

【メモリForensics編】Volatilityで「今この瞬間」を切り取る|CTF思考フレームワーク #43

【メモリForensics編】Volatilityで「今この瞬間」を切り取る|CTF思考フレームワーク #43 アイキャッチ画像
安全に生きたい編集部

広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

メモリフォレンジック?電源切ったら消えちゃうデータを調査するの?⚡

そうです。マルウェアの多くは『ファイル化されずにメモリだけで動く』ことで検知を回避します。なのでメモリのスナップショットを取って解析するのが、現代マルウェア解析の必須スキル。Volatilityが代表ツールです。

メモリフォレンジックは、RAMのスナップショット(メモリダンプ)を解析する技術。実行中のプロセス、開いているネットワーク接続、復号された認証情報、暗号鍵、ロード中のマルウェアコード――これらは全てメモリ上に展開されています。Volatility・Rekall が定番ツール。

ファイルレスマルウェアは、メモリ調べないと見つからないんだ…

この記事は、CTF思考フレームワーク第43回。メモリフォレンジックの基本(プロセス列挙・ネット接続・DLL注入検出)と、Volatility/Volatility 3 の使い方、ライブメモリ取得方法(WinPmem・LiME)を整理します。

📖 この記事はシリーズの一部です
CTF思考フレームワーク#43 / 全86記事 → シリーズ一覧を見る →

🧠 メモリは「今この瞬間」のスナップショット。プロセス、開いていたファイル、入力された文字列、暗号鍵、ディスクには絶対書かれない情報がメモリにだけ残ります。Volatilityはそれを切り出す手術用メス。

メモリForensicsは揮発性が極めて高く、電源を切ったら基本的に終わり。逆に取得さえできれば、ディスクには絶対書かれないファイルレスマルウェアの痕跡も丸ごと押さえられます。

難易度:★★★(上級)

揮発する瞬間を切り取るメモリForensics。Volatilityで何が見えるかを学びます🧠

メモリは「電源を切ったら全消滅」。だからこそ取れたら宝の山なんだ🧠

この記事で出てくる言葉

先に意味を押さえておくと読みやすい用語です。

  • CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
  • マルウェア: 情報を盗む、端末を壊す、勝手に操作するなど悪意あるソフトの総称です。
  • 認証情報: ID、パスワード、APIキー、証明書などログインに使える情報です。
  • フォレンジック: ログや端末の痕跡から、何が起きたかを調べる作業です。
  • メモリ解析: 端末のメモリ内容から実行中の痕跡を調べる解析です。

👀 観察フェーズ:まず何を見る?

実機が動いてるうちに物理メモリをダンプ!WinPmem・LiME・FTK Imagerなどが定番🔍

メモリイメージを取得したら、まずプロファイル特定(Volatility 2系)またはsymbolダウンロード(Volatility 3)。次にプロセスツリー、ネットワーク接続、ロードモジュールを順に展開。

メモリにはプロセス・ネットワーク接続・暗号鍵・コマンド履歴・復号済みのマルウェアがそのまま乗っています👀

ファイルレスマルウェアってディスクに痕跡ないから、メモリ取れないと存在ごと消えちゃうんだね😱

  • プロセスツリー(pslist / pstree / psxview
  • ネットワーク接続(netscan
  • ロードDLL・ドライバ(dlllist / modules
  • コマンドライン履歴(cmdline / cmdscan
  • レジストリハイブ(hivelist / printkey
  • マルウェア痕跡(malfind / yarascan

Volatilityで読む典型は4視点

🤔 仮説フェーズ:攻撃者は何を考える?

🪟 仮説①:プロセスツリー

pstree / psscan親子関係の不審点を探す。explorer→cmd→powershellは怪しい。

🌐 仮説②:ネットワーク接続

netscan外部C2への接続を発見。プロセスとセットで見る。

💉 仮説③:プロセスインジェクション

malfind / dlllistでメモリに直接書き込まれたRWX領域や不審DLLを検出。

🔑 仮説④:認証情報・暗号鍵

mimikatzの結果はメモリにロードされたLSASS資格情報を引き出すから、ダンプから検出可能。

🕶️ 攻撃者は「メモリは取られない前提」で動くことが多く、平文パスワードやBeaconの設定(C2 URL・暗号鍵)が丸見えで残ることもしばしば。逆に高度な攻撃はDoppelgänging / Hollowingでプロセスを偽装するので、psxviewのクロスチェックが効きます。

メモリは「実行中のリアルタイム状態」を凍結保存するからすごいんだね💡

🔬 検証フェーズ:どうやって確かめる?

取得はwinpmem.exe -o mem.raw、解析はvol.py -f mem.raw windows.pstreeからスタート🧪

メモリイメージは取得直後にハッシュを取り、解析は常にコピーで。Volatilityのpluginは多数あるので、まずプロファイル特定→pslist→netscan→malfindの順で全体像を掴みます。

YARAルールでメモリ全域をマルウェアシグネチャと照合できるんだね💡

# Volatility 3(symbol自動取得)
vol -f mem.raw windows.pslist
vol -f mem.raw windows.netscan
vol -f mem.raw windows.malfind

# Volatility 2(プロファイル指定)
vol2 -f mem.raw imageinfo
vol2 -f mem.raw --profile=Win10x64_19041 pslist

メモリで暴く攻撃トップ3

⚔️ 攻撃フェーズ:実際の手口

① ファイルレスマルウェア

PowerShell経由でメモリのみで動作するペイロードを発見。Reflective DLL Injection痕跡を見つける。

② Mimikatz実行痕跡

LSASSアクセス・特定文字列のメモリ残留から実行を確認。

③ コマンドラインの完全復元

cmdline / cmdscan / consoles攻撃者が叩いたコマンド全履歴を復元。

メモリだけに残る攻撃の典型例:①ファイルレスマルウェア(PowerShellメモリ常駐)、②プロセスホロウィング(正規プロセスに化ける)、③Cobalt Strike Beaconのin-memory実行。

# プロセスホロウィング検出(malfind)
vol -f mem.raw windows.malfind
# RWX権限のヒープ領域・PE headerなしの実行可能領域が出る

# DLL injection検出
vol -f mem.raw windows.ldrmodules
# InLoad/InInit/InMemリストの不一致が手がかり

Cobalt Strike Beaconはconfigがメモリに残るので、volatility-cs-config-extractorで設定(C2サーバ・スリープ間隔等)を丸ごと抽出できます🎯

メモリForensicsを活かす3つ!🛡️

🛡️ 防御フェーズ:どう守る?

⚡ 電源を切らないIR運用

インシデント発覚時の最優先は「シャットダウンしない」。揮発情報を逃さない。

🛠️ ハイパーバイザ経由ダンプ

仮想マシンならハイパーバイザのスナップショットがメモリイメージになる。本番でもクラウドで活用可。

📊 EDRのメモリ可視化機能

EDRにメモリスキャン機能がついている製品も多い。設定を有効化して定期実行。

「メモリは取れたら勝ち、取れなければ無」。即断対応が命💪

メモリ保全の運用ポイントは「電源を切らずに即取得」「取得ツールの事前配備」「ハッシュ整合性」。EDRが揃っていればtelemetryで代替できる場面もありますが、生メモリは最後の砦です。

  • IRキットにWinPMem / LiMEを事前同梱
  • メモリ取得→直ちにSHA-256・転送・WORMストレージ
  • EDRがメモリ取得APIを提供する場合は事前検証して標準化
  • BitLocker等のフルディスク暗号化下でもメモリは平文の事実を活用
  • ハイバネーション・ページファイル・クラッシュダンプも証拠化
  • クラウドVMはハイパーバイザレベルのメモリスナップショットを検討

🛡️ 今日からできる対策ツール

フォレンジックと同じくらい大事なのが「そもそも侵入されない」こと。🛡️ ソースネクストのセキュリティツールなら、買い切りで使えるタイプも多いので、「サブスク疲れ」している人に人気です。

PR / 広告

ソースネクスト

※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。

⚠️ よくある落とし穴

  1. 対象機を再起動・電源OFFしてメモリを失う
  2. メモリ取得ツールが大きすぎてプロセス痕跡を上書き
  3. プロファイル特定をミスり、pslistすら通らない
  4. malfindの結果を「正常な.NET JIT」と誤認
  5. ページファイル(pagefile.sys)を見落とす
  6. BitLocker/LUKS暗号化を理由にメモリ取得を諦める

🧰 ツール早見表

ツール用途備考
Volatility 3メモリ解析の標準Symbol自動取得・速い
RekallGoogleフォークのVolatilityライブメモリ解析にも対応
WinPMem / LiMEメモリ取得OSS定番
MemProcFSメモリイメージをファイルシステムとしてマウント直感的
volatility-cs-config-extractorCobalt Strike設定抽出IRに必須

🎓 本気で学びたい人へ

インシデントレスポンスやフォレンジックを職業として目指したい方へ。🎓 ササエルはインフラとセキュリティの両輪で学べるスクールです。

PR / 広告

ササエル

📚 もっと深く学びたい人へ

実際に手を動かして攻撃手法を体で覚えたいなら『7日間でハッキングをはじめる本 TryHackMe』がおすすめ📚

📚 次に読みたい

✍️ 学んだことを発信する

検証記録やレポートをオンラインでまとめるなら、ConoHa WINGのWordPressが手軽で便利です。

PR / 広告

ConoHa WING

⚖️ 大事なお約束

必ず守ってね

この記事の手法は、必ず自分の環境か、許可されたCTF・脆弱性報奨金プログラム(HackerOne、Bugcrowd等)で試してください。他人のサービスに無断で攻撃を仕掛けるのは不正アクセス禁止法違反、立派な犯罪です。学んだ知識は守る側で活かしましょう🤝

記事URLをコピーしました