【入門編】 ネットワーク接続情報のメモリからの復元とC2通信の特定 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

こんにちは!日々サイバー空間の最前線で「デジタル探偵」として事件を追っている、SOCアナリストの筆者です。

皆さんは、自分のパソコンやサーバーの中に「見えない侵入者」が潜んでいると考えたことはありますか?
「ウイルス対策ソフトを入れているから大丈夫!」と思いたいところですが、最近の泥棒(サイバー攻撃者)は非常に巧妙です。彼らは足跡を残さないように、ハードディスク(物置)には何も置かず、メモリ(作業机)の上だけでこっそり仕事を済ませて、証拠を消して立ち去ります。

今日は、そんな巧妙な泥棒の「通話記録」を、パソコンの「一瞬の記憶(メモリ)」から暴き出すメモリフォレンジックという技術について、お話ししましょう。

特に、攻撃者が外部から命令を送るための「C2通信」をどうやって見つけ出すのか、お家の防犯に例えて優しく紐解いていきます。一歩ずつ、一緒に学んでいきましょう!

—

1. 攻撃者の「糸」:C2通信とは?

泥棒が家の中に忍び込んだ後、次に何をするでしょうか?
高価なものを盗み出すにしても、どこに金庫があるか仲間に確認したり、盗んだものを運び出すための指示を仰いだりする必要がありますよね。

この「泥棒(マルウェア)」と「黒幕(攻撃者)」を繋ぐ通信路のことを、専門用語でC2(Command & Control)サーバーと呼びます。

  • 家の鍵を開けるマルウェア: 実行犯
  • 外で指示を出す黒幕: C2サーバー

この二者の間でやり取りされる「次はこれを盗め」「この情報を送れ」という通信(C2通信)を見つけることが、インシデント調査の最大の鍵になります。

—

2. なぜ「メモリ」を調べるの?(机の上の証拠)

「通信記録なら、通信会社のログやルーターを見ればいいじゃない?」と思うかもしれません。もちろんそれも大事です。
しかし、最近の攻撃者は通信を暗号化したり、通信が終わった瞬間にログを消去したりします。

ここで登場するのがメモリフォレンジックです。

パソコンのメモリ(RAM)は、例えるなら「今まさに作業している机の上」です。
どれだけ証拠隠滅が上手な泥棒でも、作業中には必ず机の上に「電話機(ネットワーク接続の構造体)」を置き、相手の「電話番号(IPアドレス)」をメモしています。

たとえ通信が切れた直後であっても、メモリの中には「ついさっきまで誰と繋がっていたか」という形跡が、まるで机に残ったコーヒーカップの跡のように残っているのです。

—

3. メモリから「ネットワーク構造体」を掘り起こす

パソコンがネットワークに繋がるとき、OS内部では「構造体」という決まった形のデータセットが作られます。ここには以下の情報が含まれています。

1. Local Address: 自分の住所(IP)と、使っている窓の番号(ポート)
2. Remote Address: 相手の住所(IP)と、相手の窓の番号(ポート)
3. State: 今繋がっているのか、それとも切れたのか(ESTABLISHED, CLOSEDなど)
4. PID: その通信を行っているプログラムの識別番号

メモリフォレンジックでは、メモリの海の中からこの「構造体のパターン」を探し出します。

実践:Volatility 3 を使った調査のイメージ

実際の現場では、Volatility(ボラティリティ)という有名なツールを使います。これは、メモリの塊を解析して、人間が読める形式に直してくれる「魔法の虫眼鏡」のようなものです。

例えば、怪しい通信を特定するために以下のようなコマンドを打ちます。

# メモリイメージ(dump.mem)からネットワーク接続情報を抽出するコマンドの例
# Volatility 3 を使用する場合

python3 vol.py -f dump.mem windows.netscan.NetScan

このコマンドを実行すると、以下のような結果が返ってきます(イメージです)。

| Offset | Proto | LocalAddr | LocalPort | ForeignAddr | ForeignPort | State | PID | Owner |
| :— | :— | :— | :— | :— | :— | :— | :— | :— |
| 0x3f… | TCPv4 | 192.168.1.10 | 49152 | 203.0.113.5 | 443 | ESTABLISHED | 1234 | svchost.exe |
| 0x3f… | TCPv4 | 192.168.1.10 | 49153 | 198.51.100.1 | 8080 | CLOSED | 5678 | unknown.exe |

—

4. 異常を見抜く「違和感」のポイント

リストが出てきても、「どれが泥棒の通信か」が分からなければ意味がありませんよね。
新人アナリストが最初に見るべき「怪しいポイント」はここです。

① 見慣れない相手(IPアドレス)

自分の会社のパソコンが、なぜか海外の見知らぬサーバー(例:ロシアや東欧など、普段業務で使わない国)と頻繁に通信していたら要注意です。

② 不自然な窓の番号(ポート番号)

通常、Webサイトを見る時は 80 (HTTP) や 443 (HTTPS) を使います。
しかし、泥棒はわざと目立たない 8080 や 4444 といった番号を使ったり、逆に 443 を使いながら中身だけコッソリ独自の暗号を混ぜたりします。

③ 犯人の正体(PIDとプロセス名)

一番の注目ポイントは、「誰が(どのプログラムが)その通信をしているか」です。
ブラウザ(chrome.exe)が通信しているなら自然ですが、名前のないプログラム(unknown.exe)や、システムの大事な部品のふりをした偽物(例:svchost.exe だが保存場所がおかしい)が通信していたら、それはもう黒に近いグレーです。

—

5. 防御のヒント:私たちができること

メモリフォレンジックは高度な技術ですが、その考え方は日々のセキュリティ対策にも活かせます。

1. 「いつもと違う」を検知する:
お家でも「知らない靴が玄関にある」と気づくのが大事なように、サーバーであれば「許可していない通信(アウトバウンド通信)」をファイアウォールでブロックする設定が基本になります。

2. ログを遠くに保管する:
泥棒は足跡を消しますが、別の場所にバックアップがあれば逃げ切れません。通信ログを外部のログサーバーに飛ばしておくことは、非常に有効な防犯カメラになります。

3. 怪しいと思ったら「メモリを保存」:
もしインシデントが起きたとき、慌てて電源を切らないでください!電源を切ると、メモリ(机の上の証拠)は全て消えてしまいます。専門家に任せる前に、可能であれば「メモリダンプ(メモリのコピー)」を取ることが、犯人逮捕の最大の近道になります。

—

おわりに

いかがでしたでしょうか?
メモリフォレンジックの世界は奥が深いですが、根本にあるのは「見えないはずの足跡を、技術の力で見える化する」というシンプルな探究心です。

「難しそうだな」と感じるかもしれませんが、まずは自分のパソコンでどんな通信が行われているか、コマンドプロンプトで netstat -ano と打って眺めてみるだけでも、立派な第一歩になります。

一歩ずつ、安全なデジタルライフを守る知識を身につけていきましょう!
もし何か不安なことがあれば、いつでも「デジタル探偵」の知恵を借りに来てくださいね。

それでは、また次回の記事でお会いしましょう!

コメント

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