今週のSecurity Check(第176回)

 自分が管理するシステムにおいて不正アクセスを見つけた場合,まずなすべきことは証拠保全である。影響範囲や原因を特定するためには,その時点でのシステムの状態をきちんと記録/保存しておかなければならない。

 証拠保全の手順などについては,インターネット上で関連する情報を見つけられるし,関連書籍も複数発刊されている。しかしながら,具体的な作業例はUNIX系のOSについて書かれているものがほとんどで,Windows OSについてはあまり情報がない。特に,日本語で書かれた情報はほとんど見かけない。

 そこで本稿では,Windowsマシン上で不正アクセスが見つかった場合の対処法を紹介したい。特に,失われやすい情報(揮発性の高いデータ)の証拠保全に焦点を絞って順を追って解説する。揮発性の高いデータは,システムをネットワークから切り離すだけでも失われる恐れがある。このため以下の作業は,ネットワークから切り離す前に実施する必要がある。

揮発性の高いデータから順に収集

 証拠保全のガイドラインである「RFC 3227 Guidelines for Evidence Collection and Archiving」によると,揮発性の高いデータから順に収集・保存することが推奨されている。本稿でも,基本的にはこのガイドラインにしたがって作業を進めていく。

 まず,データを収集する際には以下の点に注意する。

  • 信頼性のある別のマシンをデータ解析用に用意する。不正アクセスを受けたと思われるマシンでは解析しない
  • 不正アクセスを受けたと思われるマシンのコマンドを使用しない
  • データの収集には,CD-ROMなどに収めたコマンド(実行ファイル)を使用する(図1)


図1 安全なコマンドを使用する
図では,Gドライブ(CD-ROM)に保存した,安全であることを確認したcmd.exeを使用している。

 次に,収集すべきデータの種類と使用するコマンドを,実施順に紹介する。

(1)システムの日付・時刻(コマンド:time,date)

 どのようなデータを収集する場合でも,日付・時刻の記録は不可欠である。システムの時刻が正確かどうかを確認するとともに,作業開始の時刻を記録する。

(2)ネットワーク接続(コマンド:netstat -an)

 現在張られているネットワーク接続(コネクション)に不審なものがないかどうか調べる。特に,「ESTABLISHED」ステータスのコネクションに注意する。ESTABLISHEDステータスのコネクションは,攻撃者による接続である可能性がある。

(3)稼働ポート(使用するコマンド:netstat -an)

 外部に対して開いているポートを調べる。

(4)稼働ポートを開いている実行ファイル(使用するコマンド:fport

 (3)で調べたポートを開いている実行ファイルを特定する。見慣れないプロセスなどが見つかったら,バックドアやボットの可能性がある。そのプロセス名をインターネットで検索すれば,その“正体”が分かる場合がある。

 Windowsのサービスが攻略されている(乗っ取られている)場合には,プロセス名だけからは,不正アクセスを受けているかどうかを判断できない。このため,プロセス名だけではなく,そのプロセスが開いているポート番号にも注意する。

 例えば,WindowsのServerサービス(services.exe)のセキュリティ・ホール「MS06-040」を突かれて,TCP 4444番で稼働するリモート・シェルを起動された場合,4444番を開いているプロセス名はservices.exeとなる(図2)。プロセス名には問題はないので,プロセス名だけに注目していると攻略されていることに気付かない恐れがある。


図2 fportの出力結果

(5)NetBIOSテーブル・キャッシュ(コマンド:nbtstat -c)

 WindowsではNetBIOS名で情報が記録される場合があるので,NetBIOS名とIPアドレスの対応を記録しておく必要がある。そのため,NetBIOSのキャッシュを保存しておく。ただし,このキャッシュにはごく最近の情報しか保存されていないので要注意である。