【入門編】 メモリ上のコマンド履歴の復元 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

犯人は「足跡」を消したつもりでも、実は……?メモリフォレンジックで暴く攻撃者の正体

こんにちは!SOCアナリストの現場へようこそ。

皆さんは「泥棒が家に入って、証拠隠滅のために玄関の靴を揃えて消えた」としても、実は泥棒が歩いた床に、目には見えないけれど特殊な光を当てればクッキリ浮かび上がる「足跡」が残っていたとしたらどう思いますか?

サイバー攻撃の世界でも全く同じことが起きています。攻撃者はログを消したり、ツールを削除したりして「痕跡」を隠しますが、コンピュータのメモリ(作業台)の上には、彼らが走り回った足跡が鮮明に残っているのです。

今回は、メモリフォレンジックのプロが現場で必ず確認する「コマンド履歴の復元」について、初心者の方にも分かりやすく解説していきますね。

—

なぜメモリの中に「コマンド」が残るの?

皆さんが普段、Windowsの黒い画面(コマンドプロンプトやPowerShell)で作業するとき、打ったコマンドはどこへ行くのでしょうか?

実は、コンピュータは作業を効率化するために、入力したコマンドを一時的に「メモリ(RAM)」という作業スペースに保管しています。これは、直前に打ったコマンドをキーボードの「↑」キーで呼び出すための仕組みですよね。

攻撃者も同じです。彼らは悪意のあるコマンドを打ち込みますが、その作業のたびにメモリ上には「誰が、いつ、何を打ったか」というログが、まるで日記のように書き込まれます。たとえ攻撃者がウィンドウを閉じて「証拠なし!」と満足して去っても、電源を切らない限り、そのメモリ上の日記は消えずに残っているのです。

—

狙われるのは「conhost.exe」と「PowerShell」

攻撃者がよく使う「足跡」の隠し場所は、主にこの2つです。

1. conhost.exe: コマンドプロンプトの司令塔です。ここにキーボード入力の履歴が残ります。
2. powershell.exe: 攻撃者が好んで使う強力な武器です。ここには、彼らが実行した複雑なスクリプトの断片が残っています。

これらを解析することは、まさに「泥棒が落としていったメモ帳を拾い上げる」作業と同じなのです。

—

実際にどうやって復元するの?(現場の技術)

プロの現場では、Volatilityという魔法のようなツールを使います。これを使うと、メモリのダンプファイル(作業台の丸ごとコピー)から、人間が読める「文字列」を抽出できます。

皆さんがもし「サーバーの様子がおかしいな?」と感じたら、まずは以下の手順を意識してみてください。

1. メモリのダンプを取得する

まずは現在のメモリの状態を保存します。DumpIt や Magnet RAM Capture などのツールを使うのが一般的です。

2. コマンド履歴を抽出する(Volatilityの例)

もしVolatiltyを使うなら、以下のようなコマンドで履歴を掘り起こします。

# conhost.exeのプロセスから文字列を抽出してファイルに保存するイメージ
# 実際にはプロセスのID(PID)を指定して実行します
volatility -f memory.dmp --profile=Win10x64_XXXXX consoles -p <PID>

# もしPIDが分からない場合は、まずプロセス一覧を出して犯人のIDを探しましょう
volatility -f memory.dmp --profile=Win10x64_XXXXX pstree

※ volatility は非常に強力ですが、学習コストも高いです。まずは「strings コマンド」を使って、ダンプファイルの中の怪しいキーワード(powershell や download、base64 など)を検索するだけでも、十分な足跡が見つかることがありますよ!

—

これから皆さんに気をつけてほしいこと

メモリフォレンジックは、いわば「デジタルな鑑識」です。では、どうすれば攻撃者にこれを見られないように……いえ、そもそも攻撃されないようにすれば良いのでしょうか。

  • ログを外部に飛ばす: メモリは電源を切れば消えます。だからこそ、サーバーのログは別の場所にリアルタイムで飛ばしておきましょう。「SIEM(シーム)」と呼ばれる仕組みがそれにあたります。
  • PowerShellの監視: 最近の攻撃はPowerShellが主流です。実行ログを詳細に残す設定(Script Block Logging)を有効にしましょう。

設定のヒント(グループポリシー)

Windowsの設定で「PowerShellのログを詳細に記録する」という項目を有効にするだけで、攻撃者が何をしようとしたのかが後から丸分かりになります。

1. gpedit.msc を開く
2. 「コンピューターの構成」>「管理用テンプレート」>「Windows コンポーネント」>「Windows PowerShell」へ進む
3. 「PowerShell スクリプトのブロックのログ記録を有効にする」を「有効」にする

これだけで、将来のインシデント発生時に「何が起きたか」を突き止めるための最強の武器になります。

—

最後に:怖がる必要はありません

「メモリフォレンジック」なんて聞くと、映画の中の話のように感じるかもしれません。でも、一つひとつ紐解いていけば、それは「誰が・いつ・何をしたか」を追跡するだけの、とても論理的な作業です。

もし職場の端末が怪しい動きをしたら、焦らずに「この端末のメモリに、どんな足跡が残っているだろう?」と考えてみてください。その一歩が、大きな被害を防ぐための第一歩になります。

また次回の記事では、さらに深い「ファイルレス攻撃の正体」についてお話ししますね。一緒にセキュリティの力を高めていきましょう!

コメント

タイトルとURLをコピーしました