「PCの中の防犯カメラ」を巻き戻そう!メモリフォレンジックで攻撃者の足跡を追う方法
こんにちは!セキュリティ現場の最前線で、日々泥臭く「犯人」を追いかけているSOCアナリストです。
さて、皆さんは家を出る時、鍵をかけますよね?もし家に泥棒が入ったとしても、最近は玄関に防犯カメラがあって「いつ、誰が、何をしたか」が後から確認できます。
でも、パソコンの中の世界はどうでしょう?攻撃者は痕跡を消すのが非常に上手です。ログを消したり、ファイルを隠したり……。そんな時、私たちが最後の砦として頼りにするのが「メモリフォレンジック」という技術です。
今日は、メモリという「PCの脳みそ(一時的な記憶領域)」に残された断片的な記憶から、攻撃者の活動を時系列で浮かび上がらせる「タイムライン分析」の魔法についてお話しします。
—
1. なぜ「メモリ」を見るのか?(泥棒の足跡は脳に残る)
PCのストレージ(HDDやSSD)は、いわば「本棚」です。ここにはファイルが整理されて置かれていますが、攻撃者はここを改ざんしたり、ログを消したりします。
一方、「メモリ(RAM)」は、PCが今まさに処理している「作業机の上」です。攻撃者がどんなプログラムを実行し、どのサイトにアクセスし、どんなコマンドを打ったか……その「生きた動き」は、メモリの中に一時的に、かつ消しきれない形で残ることがあります。
このメモリのダンプ(スナップショット)を解析して、まるで防犯カメラの映像を巻き戻すように「時系列」で可視化するのが、今回のテーマであるtimelinerというツールです。
—
2. Volatilityの「timeliner」で何が見えるのか
メモリ解析のデファクトスタンダードである「Volatility」には、timelinerという機能があります。これは、メモリ上に存在する全てのプロセスやファイル操作、ネットワーク接続情報から「タイムスタンプ(日時)」を引っ張り出し、時系列順に並べ替えてくれるものです。
攻撃者は、システムに侵入した直後、まず「自分の存在を隠すためのツール」をダウンロードし、次に「管理者の権限を奪うためのプログラム」を動かします。timelinerを使えば、これらの断片的な「点」を繋いで、「線」として攻撃の全貌を見ることができるんです。
—
3. 早速やってみよう!分析の実践例
まずは、メモリダンプファイル(memdump.rawとします)からタイムラインを抽出するコマンドを見てみましょう。
# Volatility 3を使用したタイムライン抽出の例
# -f でメモリファイルを指定し、windows.timelinerプラグインを実行します
# 抽出結果をcsvファイルに出力して、後でExcelなどで見やすくします
python3 vol.py -f memdump.raw windows.timeliner > timeline_report.csv
このコマンドを実行すると、以下のようなデータがずらりと出てきます(イメージ)。
| 日時 | タイプ | 内容 |
| :— | :— | :— |
| 2023-10-27 10:00:01 | Process | powershell.exe が起動されました |
| 2023-10-27 10:00:05 | Network | 外部IPへ通信が発生しました |
| 2023-10-27 10:00:10 | File | evil_script.ps1 が作成されました |
「おや?powershell.exeが起動した直後に、怪しいスクリプトが作られているぞ?」……こんな風に、「何かが起きた前後の文脈」が見えてくるのが、この分析の醍醐味です。
—
4. 現場のアナリストが教える「盲点」
教科書には載っていない、現場の知見を少しだけお教えしますね。
1. 「時間が飛んでいる場所」を探せ!
攻撃者は自分の痕跡を消すために、特定の期間のログを削除したり、システム時間を偽装したりすることがあります。タイムラインが急に空白になっている場所や、時間が逆行している場所は、攻撃者が「何かを隠そうとした場所」である可能性が高いです。
2. 「正当なツール」の悪用を見逃すな!
最近の攻撃者は、powershell.exeやcmd.exeといったWindows標準のツールを悪用します。これらはPCを動かすために必要なものなので、動いていても驚くことはありません。でも、「いつ、どんな引数で動いたか」をタイムラインで見ると、明らかに怪しい動き(外部への通信を試みるようなコマンドなど)が浮き彫りになります。
—
5. 一歩ずつ対策を学んでいきましょう!
初めてこの作業を行うと、あまりの情報の多さに圧倒されるかもしれません。「どこを見ればいいの?」と迷うのは当然です。
最初は、以下の3つに絞って眺めてみてください。
- 通信が発生した時間(外部と何かが繋がった瞬間)
- 新しいプロセスが生まれた時間(見慣れない名前のプログラムが動き出した瞬間)
- ファイルが作成された時間(ダウンロードしたばかりの怪しいファイル)
これらを繋ぎ合わせるだけで、皆さんはもう立派な「デジタル探偵」です。
セキュリティは、一度に完璧を目指す必要はありません。まずは「怪しい動きに気づく」という第一歩から始めてみてください。PCの中で何が起きているのか、その裏側を少し覗いてみるだけで、皆さんの開発環境やサーバーの守りは格段に強固になりますよ!
もしまた分からないことがあれば、いつでも相談してくださいね。一緒に一つずつ解明していきましょう!
コメント