【入門編】 メモリ上のネットワーク接続情報の抽出 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

泥棒は「窓」から入ってくる:メモリから紐解くサイバー攻撃の足跡

こんにちは!日々、企業のネットワークを守るSOC(Security Operation Center)のアナリストとして、最前線で「デジタルな泥棒」たちと追いかけっこをしている者です。

今日は、皆さんにぜひ知っておいてほしい「メモリフォレンジック」という技術についてお話しします。なんだか難しそうな言葉に聞こえますよね?でも、仕組みを知れば、あなたのパソコンやサーバーを守る強力な武器になります。

まずは、身近な例から考えてみましょう。

1. 「泥棒の足跡」はどこに残るのか?

想像してみてください。あなたの家に泥棒が入ったとします。泥棒は窓を割り、家の中に潜り込み、どこかへ連絡を取ろうと電話をかけています。この時、泥棒が「今、誰と話しているか」という情報は、どこに残るでしょうか?

家の中を探せば、泥棒の指紋や足跡は見つかるかもしれません。しかし、「今まさに通信している通話記録」は、泥棒が受話器を置いた瞬間に消えてしまいますよね。

コンピュータの世界でも同じです。悪意のあるプログラム(攻撃者)がサーバーに侵入した際、彼らは外部の指令サーバー(C2サーバー)と通信を行います。この「通信の記録」は、ハードディスク(SSD)に書き込まれるとは限りません。メモリ(RAM)という、電源を切ると消えてしまう「一時的な作業場所」で、ひっそりと行われていることが多いのです。

だからこそ、私たちは「メモリフォレンジック」を使って、犯人が電源を切って逃げ出す前に、その「通話記録」を捕まえる必要があるんです。

—

2. メモリフォレンジックで「通信」を可視化する

メモリフォレンジックの現場で、私たちアナリストが最初に行う作業の一つが、メモリ上に残ったネットワーク情報の抽出です。これには「Volatility(ボラティリティ)」という、業界標準の魔法のようなツールを使います。

特に netscan という機能は、メモリの中に残っている「通信の履歴」を根こそぎ拾い上げてくれます。

netscan で何が見えるのか?

netscan を実行すると、以下のような情報がリストアップされます。

  • プロトコル: TCPやUDPといった通信の種類。
  • ローカルアドレス: あなたのPCのどのポートから通信しているか。
  • 外部アドレス: 泥棒の拠点(C2サーバー)のIPアドレス。
  • 状態: 「LISTEN(待ち受け中)」なのか「ESTABLISHED(接続完了)」なのか。

特に「LISTEN」状態になっている知らないポートを見つけたら要注意です!それは、泥棒がいつでも家に入れるように、勝手に裏口の鍵を開けている状態と同じですから。

—

3. 実践!攻撃の形跡を見つけるコマンド例

実際に解析を行う際のイメージを掴んでみましょう。Volatility 3 を使った場合のコマンド例です。

# メモリダンプファイル(memory.dmp)からネットワーク接続情報を抽出する
# -f はファイル指定、windows.netscan はネットワーク調査プラグイン
python3 vol.py -f memory.dmp windows.netscan

実行すると、こんな感じの結果がずらりと並びます(イメージです)。

| Offset | Proto | Local Address | Foreign Address | State | PID |
| :— | :— | :— | :— | :— | :— |
| 0x1234 | TCP | 192.168.1.10:445 | 10.0.0.5:8080 | ESTABLISHED | 4520 |

もし、PID(プロセスID)が 4520 で、見覚えのない怪しい通信先(10.0.0.5)があったら?
次は、windows.pstree などのコマンドを使って、その 4520 番のプロセスが「何者なのか」を追いかけていく……これが、現場の泥臭い調査の第一歩です。

—

4. 今日からできる「防犯」の意識

開発者やIT担当者の皆さんは、攻撃が起きた後の対処だけでなく、日頃からこんなことを意識してみてください。

  • 不要なポートは閉じる: 鍵のかかっていない窓は作らない。サーバーで使っていないポートは徹底的に塞ぎましょう。
  • 不審なプロセスに敏感になる: 「普段動いていないはずのプログラム」が通信を始めたら、それは真っ赤な警告信号です。
  • ログを残す: メモリは電源を切ると消えてしまいますが、ファイアウォールのログやサーバーのアクセスログは手元に残ります。これらをSIEM(ログ監視ツール)に集約しておくことが、最大の防御になります。

最後に

セキュリティは、誰か一人が頑張れば解決するものではありません。開発者も、運用担当者も、みんなが「自分の担当エリアに泥棒が入るかもしれない」という視点を持つだけで、攻撃者は格段に侵入しづらくなります。

最初は難しく感じるかもしれませんが、一歩ずつで大丈夫です。まずは「自分のサーバーで今、どんな通信が行われているのか?」を netstat コマンドなどで眺めてみることから始めてみませんか?

その小さな好奇心が、いつか大きな被害を防ぐ盾になるはずです。一緒に頑張っていきましょうね!

コメント

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