システムやネットワークの記録(ログ)を残すことの重要性については,このコラムで何度も強調している。システムやネットワークで不測の事態が発生した場合,その原因究明のために不可欠だからだ。現在では多くのログ解析ツールが存在する。その中には,「NetPoke」というツールのように,ログに従ってパケットを送出できるものも存在する。NetPokeを使えばネットワークの状況を再現できるので,IDS(侵入検知システム)などで後日改めて詳細な調査をすることができる。

パケット・ログは「tcpdump形式」が標準

 今回紹介するNetPokeが“再生”するログは,tcpdump形式のログ(パケット・ログ)である。「tcpdump」 *とは,ネットワーク上を流れるパケットを収集するツールの一つ。tcpdump形式とは,文字通りtcpdumpが出力するファイルの形式である。

* 同様のツールに「tcpslice」などある。tcpsliceを利用すれば,tcpdump形式のパケット・ログから特定の時間帯のログのみを抽出できる。

 tcpdumpやそのライブラリが広く使われているために,ネットワーク・トラフィックを記録するファイル形式としては,事実上「tcpdump形式」が標準形式となっており,商用/フリーを問わずさまざまなツールがサポートしている。tcpdump形式のファイルを読み込んで解析できるネットワーク・アナライザや,異常を検知したパケットをtcpdump形式で出力できるIDSは多い。

パケット・ログを“再生”する

 NetPokeは,IDSを評価するためのツールとして,DARPA Projectの下,MIT Lincoln Laboratoryにより開発された。

 詳細な情報---例えば,パケットの到着順やTCPパケットのヘッダー情報など---までを考慮して,ネットワークのトラフィックを再現することは極めて難しい。しかしNetPokeを使えば,パケット・ログに記録された状況を,望みの環境で何度でも再現することができる。

 単にパケット・ログを再生するだけではない。(1)NetPokeからのパケットであることを判別できるように,送信元MACアドレスをゼロにセットできる,(2)再生速度を指定できる,(3)あて先ごとにネットワーク・インタフェースを選択できる---といった,調査に便利な機能を備えている。

 では,NetPokeの簡単な実行例を見てみよう。以下は,あらかじめtcpdumpで記録したパケット・ログを再生し,オリジナルのパケットのタイム・スタンプと再生時のタイムスタンプを表示させた結果である。

# ./netpoke -T dumplog
orig: 14:25:08.984939 loc: 18:33:07.204336
orig: 14:25:09.000172 loc: 18:33:07.218935
orig: 14:25:09.000261 loc: 18:33:07.219422
orig: 14:25:09.000905 loc: 18:33:07.219851
orig: 14:25:09.208225 loc: 18:33:07.427056
orig: 14:25:09.301387 loc: 18:33:07.520152
orig: 14:25:09.301438 loc: 18:33:07.520644
sent 7 packets, missed 0 packets

 この例で分かるように,パケットの送出タイミングがオリジナルとは異なる。残念ながら,NetPokeではパケット送出のタイミングを完全に再生することはできない。そのため,タイミングに依存する攻撃は再現できない可能性がある。

IDSと組み合わせて効果を発揮

 NetPokeはIDSと組み合わせることでさらに効果を発揮する。パケット・ログ解析の手間を大幅に軽減できるのだ。

 パケット・ログを手動で解析しようとしたら,「Ethereal」などのツールを用いて,膨大なパケット・ログの中から,目的のパケットを探索する必要がある。しかし,少しでも疑いがあれば検知するよう,“敏感”に設定したIDSと組み合わせれば,詳細に調べる必要がないパケットと注目すべきパケットを振り分けることができる。

 IDSを使用する上では,通常すべてのルールを適用することはない。適用すると,怪しくないパケットにまでアラートを発する可能性が増え,誤検知の件数が膨大になるからだ。ほとんどの場合,ルールの“刈り込み”を行い,誤検知を減らす。しかしこのことは,検知対象とならないルールがあることを意味する。

 そこで,NetPokeでログを再生し,通常は削っているルールを有効にしたIDSで再度検知するのである。そうすれば,“グレー”なパケットはすべて検知できる。検知した結果についてのみ解析対象とすれば,まず問題がないと思われるパケットの情報をフィルタリングできることになる。

 もちろん最終的には,手動で解析する必要があるだろうが,フィルタリングしない場合に比べれば,解析の手間は大幅に軽減できるだろう。

 パケット・ログの解析は,上手に活用すれば細部まで出来事を調査できるが,極めて下位のレベルで調査するために有効なツールが少なく,また高度な知識を必要とする。今回紹介したNetPokeはその一助になるだろう。もちろん,いざという時にパケット・レベルの解析ができるように,普段からログを収集しておくことが不可欠である。


若居和直(WAKAI Kazunao)
株式会社ラック 不正アクセス対策事業本部
wakai@lac.co.jp


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。