仮想セッションを作成する


△ 図をクリックすると拡大されます
図6●Virtual PC 2004の仮想セッションの設定画面
 Virtual PCのインストールは数分で完了する。このソフトにはオプションがほとんどないため,仮想セッションの構成とゲストOSのインストールに作業時間の大半を費やすことになる。簡単なウィザードでメモリー,最大3台のハードディスク・ドライブ,4つのネットワーク・アダプタを設定できるほか,COMポート,パラレル・ポート,サウンド・カードがサポートされている。図6は仮想セッションの設定画面である。

 Virtual PCは,4種類の仮想ハードディスクをサポートする。「ダイナミック・ディスク」「固定サイズ・ディスク」「差分ディスク」「物理ディスクへのリンク」である。いずれの場合も,結果として1つのファイルが物理ディスク上に作成される。

 ダイナミック・ディスクは,必要に応じてホストOSによって拡張される。固定サイズ・ディスクは事前に定義した容量を使用するが,この容量は作成後に変更できる。差分ディスクでは,ディスクのベースとなるイメージからの差分だけを別の場所に保存する。物理ディスクへのリンクでは,マウントされていない物理ディスクに仮想ディスクを配置できる。

 これら4種類の仮想ディスクには,それぞれハニーポットを構成する上でメリット,デメリットがある。物理ディスクへのリンクは,証拠の保全を目的にリムーバブル・ドライブを使うには最適だが,ホストとの相互感染の危険が高いのが難点だ。差分ディスクは,ベース・イメージに異なる変更を組み合わせたりできる半面,フォレンジック解析が多少複雑になる。

 ダイナミック・ディスクには,ホスト上での物理的なディスク使用量を最小限に抑えられるというメリットがある。ディスク容量は,仮想セッションの要求に応じて動的に拡張される。ただし,仮想セッションから見える容量を制御することはできない。

 固定サイズ・ディスクでは,ホストの物理ディスクの容量を事前に割り当てる必要がある。割り当てが少なすぎると攻撃者に怪しまれるし,多すぎると無駄になる。その代わり,仮想セッションから見たディスクの容量をコントロールできる。

 いずれのディスク・オプションも,ディスクへの変更に対するトランザクション制御を行うアンドゥ操作(復元ディスク)をサポートしている。変更は別ファイルに保存されるため,仮想セッションの終了時に変更を反映させることもロールバックすることもできる。どの種類のディスクを選択すればよいか分からないときは,ダイナミック・ディスクを選択して,アンドゥ操作を避けるようにしたほうがよい。そのほうが,フォレンジック解析が複雑にならずに済むからだ。


△ 図をクリックすると拡大されます
図7●Active@ KillDiskの実行画面
 どのディスクを選択するにしても,使い始める前に仮想ディスクの中身を完全に消去することに時間をかけるようにしよう。そうすることで,ホストの物理ディスクの情報が仮想ディスクにリークするのを防止できる。ディスクを消去するにはまず,ディスク消去ユーティリティをコピーした起動可能なフロッピ・ディスクかCD-Rを作成する。代わりにフロッピ・ディスク/CD-Rの起動可能イメージ・ファイルを作成し,仮想セッションにロードしてもよい。OSが起動したら,その上でディスク消去ユーティリティを実行すればディスクを消去できる。ちなみに,カナダLSoft Technologiesが配布しているディスク消去ユーティリティ「Active@ KillDisk」のFree版(図7)には,仮想セッションを起動できる起動用のISOイメージが提供されている。

 Virtual PCは3種類のネットワーク接続をサポートする。「NAT(ネットワーク・アドレス変換)を介した共有ネットワーク」「物理ネットワーク・アダプタの共有」「ループバック・アダプタの仮想ネットワーク・アダプタとしての利用」——である。ただしハニーポットの場合は,ホストの外から仮想セッションに接続できる必要があるため,物理ネットワーク・アダプタの共有だけが有効である。


△ 図をクリックすると拡大されます
図8●仮想セッションのCD-ROMドライブにISOイメージ・ファイルを読み込む方法
Virtual PCの(仮想)ネットワーク・アダプタは,スイッチにアップリンクしたリピータ・ハブに接続されているかのように機能する。先に紹介したように,ネットワーク・アダプタを2つ使う場合は,プライマリ・ネットワーク・アダプタだけを仮想セッションで共有するように設定する。

 仮想セッションは,デフォルトでホストのCD-ROMドライブとフロッピ・ドライブを共有する。このため,ホストのドライブにCD-ROM/フロッピ・ディスクを挿入すると,仮想セッションからでもアクセスできるようになる。物理CD-ROMが仮想セッションから見えないようにするには,仮想CD-ROMドライブにISOイメージをロードしたままにすればよい(図8)。

ハニーポットを構築する
 ハニーポットを作成するには以下の手順を踏む。

(1)各仮想システムにホストOSをインストールする
(2)各仮想システムのプロファイルを目的に応じて構成する
(3)プロファイルを確認するためのテストを実施する
(4)仮想セッションのバックアップをとる

 これらの手順は,外部から感染する可能性を排除するために隔離された非公開のネットワーク環境で実施しなければならない。また,各仮想セッションの設定は念入りに十分なメモをとりながら実施することを強くお勧めする。そうすることで,ハニーポットに関する正確な記録を残すことができ,侵入された仮想システムのフォレンジック解析に役立てることが可能になる。

 (2)の仮想システムのプロファイルは,OSおよびサード・パーティ製ソフトウエアの設定や特定のサービスの公開などの,システム固有の構成のことである。例えば,Webサーバーのぜい弱性をテストするには,Windows 2000 Server上で実行されるIIS 5.0をミラーリングして,IIS LockdownツールでIISを保護し,パケット・フィルタでTCPのポート80とポート443以外をブロックする,といった具合だ。このような仮想セッションの設定をベース・プロファイルとして保存した上で,その一部を変更したプロファイルをいくつか作成することもできる。既知のぜい弱性を追加したり削除したりしてハニーポットをより詳細にテストする際には便利だ。


△ 図をクリックすると拡大されます
図9●仮想セッションにWindows XP Professionalをインストールしているところ
 Virtual PCでOSをインストールするのは簡単だが時間がかかる。仮想セッションの構成を終えたら,起動用のCD-ROMかISOイメージを使って普通にゲストOSをインストールできる(図9)。残念ながら,Virtual PCへのOSのインストールは驚くほど遅い。筆者の環境では,ホストOSとしてWindows 2003をインストールするのは20分ほどで済んだが,仮想マシンへのインストールには4時間以上かかった。Virtual PCがホストと仮想セッションの間でどのようにCPUを共有するかを指定するオプションを変えてみたりしたが,何をしてもインストールにかかる時間に明らかな変化は見られなかった。ただ,幸いにもいったんインストールが済めば,ゲストOSのパフォーマンスはかなり良い。

 次に各仮想セッションのプロファイルを構成していく。この作業には,OSの設定,必要なコンポーネントのインストール,システム・セキュリティの構成,必要なサービス・パックとパッチの適用,サード・パーティ・ソフトウエアのインストール——などがある。Webサーバーのように外部からアクセスできるサービスを公開する予定なら,そのサービスがハニーポットであることを識別できないように「マスキング」(masking)しなければならない。例えば,Webサーバーのコンテンツがその組織にそぐわないものだったり古かったりすると,攻撃者が疑惑を抱いたり興味を失ったりする可能性があるからだ。

 システムをマスキングするに当たっては,“誘惑(enticement)”と“おとり捜査(entrapment)”の意味を認識しておく必要がある。誘惑は倫理的な問題として取り上げられることがあるが合法である。対して,おとり捜査は違法である。匿名ハニーポットWebサーバーを組織の境界内で実行することは内部の攻撃者を誘惑しているに過ぎない。しかし,潜在的な攻撃者に対して,Webサーバーの存在や,そのサーバーにあるかもしれないコンテンツを知らせる電子メールを送信することは,おとり捜査に相当する可能性がある。

△ 図をクリックすると拡大されます
表2●ハニーポットに関する参考資料
 法律の専門家はハニーポットによるおとり捜査で訴訟に勝てるとは見ていないが,このトピックについては独自に勉強しておく必要がある。手始めとしての参考資料は表2を見ていただきたい。専門家の多くは,内部ハニーポットにバナーを掲載し,アクセスするには許可が必要で監視される可能性があることを明示するように勧めている。

 各仮想セッションを構成する際は,必要な証拠が残せるような設定にする必要がある。ネットワーク・トラフィックなどのように仮想セッションの外側で収集できる証拠も多少あるものの,最良の証拠のいくつかは侵入された仮想セッションからしか得られない。筆者はいつもすべてのログオン/ログアウト,プロセス,アカウント管理,ポリシー・イベントのログを取るようにし,イベント・ログの容量を増やすようにしている。


△ 図をクリックすると拡大されます
図10●Windows XPの仮想セッション上でデバイス・マネージャを起動したところ
 続いて各仮想システム内外のプロファイルをテストして,意図する通りに動作しているかどうかを確認する。例えば,デスクトップ・ファイアウオールを利用してポート80へのインバウンド・トラフィックだけを許可するWebサーバーを公開するなら,侵入テスト・ツールを使ってプロファイルを正しく設定できているかどうかを確認する必要がある。仮想セッションを外から見ただけでは,システムが仮想であることはまず検知されない。しかし残念ながら,内部に侵入した攻撃者にとってはそうはいかない。Virtual PCがハードウエアをエミュレートするために,各仮想セッションのOSは実際のハードウエアにかかわらず,汎用ドライバもしくは特定のデバイスのドライバでインストールされる(図10)。そのため,攻撃者はセッションが仮想であることをかなり早い段階で見抜くことができてしまう。VMwareの場合も,1つの例外を除いてはほぼ同じような問題が発生する。その例外とは,Virtual PCのハードディスクはVirtual HDという名前が付いていてこれを隠すことができない点だ。朗報としては,ここ2年あまりの間に仮想マシン・ソフトの採用が急速に進んだために仮想セッションが珍しくなくなり,攻撃者が不審に思う可能性が減っている点が挙げられる。

 仮想セッションを設定するに当たっての最後の手順は,各仮想セッションをバックアップすることである。バックアップをとる理由は3つある。第1に,セッションのインストールと構成にはかなりの労力を要するので,クリーンなバックアップを取っておくことで作業を無駄にせずに済む。第2に,システムへ侵入されたときに,侵入前のシステムの状態と比較して解析できる。第3の理由は,追加の証拠を収集するために特定の仮想セッションに小さな変更を加えたくなることが頻繁にあることだ。バックアップがあれば,手間をかけずにベースとなる構成に戻って特定の変更を加えることができる。

ハニーポットをライブにする
 ここまでの作業で,ハニーポットをライブにする準備はほぼ整った。最後に,もう一度セッションの構成を確認し,証拠としてセッションのスナップショットをとり,ホスト上の証拠収集機能を起動する。筆者はこの段階でチェックリストを使って,一貫性と完全性が確保されているかどうかを確認しながら作業を進める。

 構成をレビューする際には,仮想セッションを起動して,各セッションがきちんと設定されているかどうかを確認するために,手動によるウォークスルーを実施する。ハニーネット(haneynet)として運用する場合はネットワークの設定も確認する。セッションごとに各デバイスの内外のプロファイルを確認するとともに,“抜き取り検査”を実施して各仮想セッションが必要となる証拠を収集するように設定されているかどうかも確認する。

 筆者はライブにする前にいつも各仮想セッションの構成のスナップショットを保存するようにしている。その目的は,システムへ侵入された際に変更内容を識別できるようにすることである。スナップショットをとるための良いユーティリティはUNIX用にはいくつもあるが,Windows用のものはほとんどない。スナップショットをとるためのツールを持っていない場合は,手動でとることから始めるのをお勧めする。特に,ファイルのチェックサムと,プロセス(現在ロードされているモジュールも含む),サービス,デバイス・ドライバ,レジストリ・エントリ,開いているポート,イベント・ログ,そのほか実行するアプリケーション特有の証拠となる様々な事項——のスナップショットをとるようにする。

 ファイルのチェックサムやOSの設定のスナップショットをとるためのユーティリティは,シェアウエアのWebサイトやSysinternalsのサイトで入手できるほか,Microsoft Windows Security Resource Kit CD-ROMにも収録されている。慣れてくれば,このプロセスを自分でスクリプトを記述することで自動化できるようになる。筆者は,実行中のシステムの膨大な情報をアーカイブできることに加え,2つのスナップショット(システムに侵入される前と後)の違いも識別できる,Snapshotというコマンド・ライン・ユーティリティを作成した。

 ライブにする前に行う最後の作業は,ホスト上の証拠収集機能を起動することである。少なくともネットワーク・モニターとIDSは起動する必要がある。筆者はハニーポットに関する証拠のレビューや整理が簡単になるように,いつもモニター・パケット・トレースとIDSのログをクリアしてからライブにするようにしている。

 ここまでの作業が済んだら,ホストをDMZに接続してハニーポットをライブにできる。ハニーポットがライブになっている間の監視方法と,ハニーポットを終了する前と後の証拠収集の方法については,Windows IT ProのWebサイト(http://www.windowsitpro.com/)に掲載した続編(英語,InstantDoc IDは44711)で紹介している。