メモリの中は「犯人の足跡」だらけ?Volatility 3で紐解くインシデント解析の第一歩
こんにちは。日々、システムの深淵を覗き込み、悪意ある侵入者の足跡を追いかけているDFIR(デジタルフォレンジック・インシデントレスポンス)アナリストです。
さて、皆さんは「メモリフォレンジック」という言葉を聞いて、どんなイメージを持ちますか?「難しそう」「ハッカーが黒い画面でカチャカチャやっているあれ?」なんて思うかもしれません。
でも、安心してください。メモリ解析は、「泥棒が家に入り込んだ後、散らかった部屋から犯人の行動を再現する」ような、とても人間味のある調査なんです。今回は、標準的な解析ツール「Volatility 3」を使って、その基本を一緒に学んでいきましょう。
—
1. なぜ「メモリ」を見る必要があるのか?
皆さんのパソコンやサーバーは、いわば「家」です。ハードディスク(SSD)は「机の引き出し」で、メモリは「作業中の机の上」だと考えてください。
泥棒(攻撃者)が侵入したとき、彼らは「引き出し(HDD)」に証拠を残さないように工夫します。しかし、「今まさに作業している机の上(メモリ)」には、彼らが実行したコマンドや、通信に使った怪しいプログラムの断片が丸裸の状態で残っているのです。
電源を落としてしまうと「机の上の書類」はすべて消えてしまいます。だからこそ、インシデントが発生した際、私たちは電源を切らずにメモリの「スナップショット(ダンプ)」を撮り、Volatility 3という道具で解析するのです。
—
2. Volatility 3を動かしてみよう
Volatility 3は、メモリの死体から「誰が、いつ、何をしていたか」を読み解くための万能翻訳機のようなものです。
まずは、環境を準備しましょう。Pythonが動く環境であれば、インストールは簡単です。
# 必要なライブラリをインストールします
pip install volatility3
# ヘルプを表示して、ツールが動くか確認しましょう
python3 vol.py -h
—
3. 現場でまず確認する「プロセスリスト」
家に入り込んだ泥棒は、必ずどこかで「活動」しています。まずは、メモリ上で動いているプログラムのリスト、つまり「家の中にいる人たちの名簿」を確認しましょう。
これには windows.pslist というプラグインを使います。
# メモリダンプファイル(mem.dmp)からプロセスリストを抽出
python3 vol.py -f mem.dmp windows.pslist
このコマンドを打つと、ズラリと実行中のプロセスが表示されます。ここで注目すべきは、「普段見慣れない名前のプログラム」や「本来いるはずのない場所にあるプログラム」です。
- 例:
svchost.exeのようなシステムプロセスが、ユーザーのデスクトップフォルダから動いていたら要注意です。それは泥棒が「家主のふり」をして隠れているサインかもしれません。
—
4. ネットワーク接続で「外部との繋がり」を暴く
泥棒は、盗んだ情報を外に持ち出すために「外部との電話回線」を繋ぎます。これを見つけるのが windows.netscan です。
# ネットワーク接続状況をリストアップ
python3 vol.py -f mem.dmp windows.netscan
この出力結果を見ると、どのIPアドレスと通信しているかが分かります。
- 不自然なポート番号: 攻撃者はよく、特定のポート(例:4444など)をバックドアとして待ち受けさせることがあります。
- 怪しい海外IP: 全く業務に関係のない国と通信しているプロセスがあれば、それが攻撃の糸口です。
—
5. 一歩ずつ対策を学んでいきましょう!
メモリ解析は、最初の一歩が一番勇気がいります。でも、一度 pslist や netscan で「あ、これが怪しいな」という感覚を掴むと、調査は一気に楽しく(そして恐ろしく)なります。
最後に、現場からのアドバイス
- まずは正常を知る: 自分のPCで普段どんなプロセスが動いているか、一度
pslistを眺めてみてください。「これが正常」という基準を知っているからこそ、「異常」に気づけるようになります。 - ログを過信しない: 攻撃者はOSのログを消すかもしれませんが、メモリの中までは完全に消去できません。メモリは嘘をつかない、最大の証拠保管庫なのです。
最初はコマンドを打つだけで緊張するかもしれませんが、大丈夫です。私たちはこうして一歩ずつ、システムの平和を守る力をつけていくのですから。
また次の記事では、さらに深い「メモリ上のコード抽出」についてお話ししましょう。それでは、良いインシデント調査ライフを!
コメント