こんにちは!インシデントレスポンスの現場を渡り歩いている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アドレスやドメインと通信している他の端末が社内にいないか、ファイアウォールやプロキシのログを全社規模で緊急捜索します。
—
最後に:一歩ずつ対策を学んでいきましょう!
いかがでしたでしょうか?
メモリフォレンジックを通じたネットワーク抽出は、一見すると難解な呪文のように思えるかもしれません。しかし、「パソコンというお家の電話帳を覗き見して、泥棒がどこのアジトに電話していたかを突き止める」というストーリーが頭に入っていれば、ぐっと親しみやすくなったのではないでしょうか。
セキュリティの世界は広大ですが、こうした小さな「気づき」と「検証」の積み重ねが、組織の安全を守る強力な盾になります。
分からない用語が出てきても落ち込まず、一つずつ一緒に学んでいきましょうね。それでは、次回の記事もお楽しみに!
コメント