【入門編】 メモリフォレンジックにおけるネットワークコネクションの抽出とC2通信の特定 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

こんにちは!インシデントレスポンスの現場を渡り歩いているSOCアナリストです。日々のセキュリティ運用の裏側では、目に見えないサイバー空間の攻防が繰り広げられています。

今回は、セキュリティに初めて触れる開発者や、新米IT担当者のあなたに向けて、ちょっとディープだけどめちゃくちゃ面白い「メモリフォレンジック」の世界にご案内します。その中でも、攻撃者が潜む「C2(司令塔)通信のあぶり出し」に焦点を当てていきましょう。

難しそうに聞こえるかもしれませんが、身近な防犯の仕組みに例えながら優しく紐解いていくので、安心してくださいね!

—

1. なぜメモリフォレンジックでネットワークを調べるの?

私たちのパソコンやサーバーは、いわば「たくさんの人が出入りする大きなお家」のようなものです。
普段、泥棒(サイバー攻撃者)が入ってきたかどうかを調べるとき、私たちは玄関の鍵の閉め忘れや、床に残った足跡(ハードディスクのログ)を探しますよね。

でも、頭の良い凶悪な泥棒たちは、警察(セキュリティソフト)に見つからないように、足跡を綺麗に消したり、家の中の物陰に隠れて生活したりします。これが、ディスク上の証拠を隠滅する「証拠隠滅(アンチ・フォレンジック)」の手口です。

ここで登場するのが「メモリ(RAM)」です。メモリは、パソコンが現在進行形で動くために使っている「作業机」のような場所です。
どれだけ泥棒が上手に足跡を消して隠れていても、家の中で活動している以上、外の仲間(C2サーバー)と連絡を取るための「電話機」を使わなければいけません。

メモリフォレンジックを使ってネットワークの接続状況を覗き見れば、「今、誰と、どこで繋がっているのか」「過去にどこへ電話をかけたのか」という決定的な証拠を掴むことができるのです。

—

2. 攻撃者の隠れ家:C2(コマンド&コントロール)通信とは?

ここで、C2通信について少しだけお話ししておきますね。
C2とは、「Command and Control(司令塔と制御)」の略です。

攻撃者は、あなたの会社のパソコンに悪意あるプログラム(マルウェア)をこっそり忍び込ませたあと、遠く離れた自分のアジト(C2サーバー)から「次はあのデータを盗んでこい」「パスワードをリスト化しろ」といった指令(Command)を送ります。

この司令塔とマルウェアがこっそり交わしている通信こそが「C2通信」です。
彼らは普段、Webサイトを見るふりをする通信(HTTPSなど)に擬態して隠れるため、普通のファイアウォール(門番)の目をごまかしてしまうことが多いのです。だからこそ、パソコンの頭の中(メモリ)を直接覗き見る必要があります。

—

3. 実践!メモリからネットワーク接続を抽出する

それでは、実際に現場で使われているメモリフォレンジックの王道ツール「Volatility(ボラティリティ)」を使って、メモリの海から怪しいネットワークの痕跡を釣り上げてみましょう!

今回は、Windowsのメモリダンプファイル(memory.dmp)から、TCP接続の構造体(TCP_ENDPOINTなど)を解析し、アクティブな接続リストを抽出する手順を例に説明しますね。

ステップ1:現在のネットワーク接続一覧を表示する

Volatilityのプラグインである netscan を使うと、メモリ上に残っているすべてのネットワーク接続(TCPやUDP)の履歴をスキャンしてくれます。

コマンドプロンプトやターミナルを開いて、以下のようなコマンドを実行してみましょう。

# ボラティリティを使ってメモリダンプからネットワーク接続をスキャンする
volatility -f memory.dmp --profile=Win10x64_19041 netscan

このコマンドを実行すると、以下のようなずらっとしたリストが画面に現れます。

Offset(P)          Proto    Local Address & Port          Foreign Address & Port     State            Pid  Owner          Created
------------------ -------- ----------------------------- -------------------------- ---------------- ---- -------------- -------
0xfae012345678     TCPv4    192.168.1.50:49152            185.199.108.153:443        ESTABLISHED      4320 powershell.exe 2023-10-25
0xfae087654321     TCPv4    192.168.1.50:49158            45.33.32.156:8080          ESTABLISHED      3104 svchost.exe    2023-10-25

ステップ2:怪しい通信を見つけ出すポイント

出力されたリストを見て、「おっ、何だこれ?」と気づくための着眼点をいくつかお伝えします。

1. 通信先のIPアドレス(Foreign Address)を調べる

  • 有名なクラウドサービスや社内サーバーなら問題ありませんが、見知らぬ海外の怪しいIPアドレスや、脅威インテリジェンスでブラックリストに載っているIPと通信していないか確認します。

2. プロセス名(Owner / Pid)を確認する

  • 例えば、powershell.exe や cmd.exe が、直接海外の怪しいサーバーと ESTABLISHED(接続中)になっていたら……これはもう赤信号です!通常の業務で、PowerShellが直接外部と通信し続けることは滅多にありません。

3. 終了済みの接続(Closed)も侮るな

  • 攻撃者は用事が済むとすぐに通信を切断しますが、メモリ上には「終了した接続の履歴(CLOSED)」がしばらく残っていることがあります。「数分前にどこへ繋いでいたか」を知るための重要な手がかりになります。

—

4. 発見したC2通信への初動対応

もしメモリ解析から「あ、これ怪しいC2通信だ!」と特定できた場合、現場のエンジニアとしては迅速な初動対応(トリアージ)が求められます。

焦らずに、以下の手順で対処を進めましょう。

  • ネットワークの隔離(ネットワークケーブルの抜線、またはEDRによる隔離)
  • 被害が社内の他の端末に広がらないよう、まずはそのパソコンをネットワークの海から切り離します(ただし、メモリの証拠が消えてしまうので、電源は絶対に落とさないでください!)。
  • プロセスの強制終了とメモリの保全
  • 怪しい通信を行っているPID(プロセスID)を特定し、安全なツールでプロセスを停止します。
  • IOC(侵害の痕跡)の横展開調査
  • そのIPアドレスやドメインと通信している他の端末が社内にいないか、ファイアウォールやプロキシのログを全社規模で緊急捜索します。

—

最後に:一歩ずつ対策を学んでいきましょう!

いかがでしたでしょうか?
メモリフォレンジックを通じたネットワーク抽出は、一見すると難解な呪文のように思えるかもしれません。しかし、「パソコンというお家の電話帳を覗き見して、泥棒がどこのアジトに電話していたかを突き止める」というストーリーが頭に入っていれば、ぐっと親しみやすくなったのではないでしょうか。

セキュリティの世界は広大ですが、こうした小さな「気づき」と「検証」の積み重ねが、組織の安全を守る強力な盾になります。

分からない用語が出てきても落ち込まず、一つずつ一緒に学んでいきましょうね。それでは、次回の記事もお楽しみに!

コメント

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