[セキュリティブログ]ネットワークフォレンジックの意味、そしてパケットについて
ネットワークフォレンジックは、ネットワークが繋がっているところでは必ず使われています。IT 担当者はもちろん、開発者にとっても必需品です。
『フォレンジック(Forensic)』 というと 「法的の~」 といった想像をしがちですが、実際には分析方法やプロセスのような証拠/痕跡を探し出す為のすべての範疇を含んでおり、『パケットマイニング』、『パケットフォレンジック』 とも呼ばれています。
ここでは、分析の観点から見ていきたいと思います。
ネットワークフォレンジックの内容については、開発者も認識する必要があると言われています。ネットワーク分析は特定分野において限定的に必要とされているのではなく、開発者はもとよりネットワーク管理者、セキュリティ分析家/管理者、システム管理者など幅広い分野から必要とされています。これは、ネットワークフォレンジックがネットワークに関する広い領域で使用されている事を意味し、その大部分がフォレンジック対象となります。ネットワークフォレンジックが利用されている環境をあげてみます。
● ネットワーク問題解決
● ネットワーク性能測定、活動観察
● ネットワーク最適化
● ネットワーク攻撃/脅威検知
● 企業内部のネットワーク監視、不正防止
● プログラムで使用されるプロトコルネットワーク情報確認
● IDS/IPS システムシグネチャ作成
■ネットワークフォレンジックを利用して隠れている真実を探せ
ネットワーク分析を始めると、『パケット』 との接触が頻繁になります。パケットにはネットワークフローに関する情報が細かい単位ですべて保存されています。パケットは発信地と送信先間で通信を行いますので、パケットを確認すればデータ内容を把握できます。このようにパケットに保存されている奥深い内容まで確認できる理由は、DPI(Deep Packet Inspection) という技術があるからです。DPI は IDS/IPS、そしてステートフル ファイアウォールの機能が統合されたものです。過去 IP やポートだけを遮断する方法を超え、OSI モデルの Layer 2 ~ 7 迄のすべてを確認可能になったことにより攻撃探知や監聴等のさまざまな機能を具現する為に活用されています。ところで、パケットだけを確認すれば、すべての通信内容を把握できるでしょうか?
実際にはそうではありません。
ネットワークに繋がっている今この瞬間、あなたが監視されていると考えたことがありますか? あなたの情報は安全に送受信されているのでしょうか?
パケットを分析するだけで、あなたの行ったすべての履歴を追跡できます。ネットワーク監聴を通じて誰でも簡単にデータを盗み見る事ができるため、暗号化、データ隠匿等の方法が登場しました。しかしながらこれらの登場によりネットワークフォレンジックの難しさが以前よりも増加する、という結果になりました。
データ隠匿方法の 1 つであるステガノグラフィー (Steganography) を見てみましょう。これはテキストやイメージ、オーディオファイルなどのデータを他のデータに埋め込む事を意味します。暗号化と反対に位置するもので、メッセージの意味を隠す事は出来ますが、メッセージがあるという事実自体を隠す事はできません。こっそりと簡単にデータを隠す事ができます。例として、911 テロが発生した時、ウサマ・ビン・ラディンがあるサイトにメッセージを隠した写真をアップし、アルカイダに指令を出した事例がありました。例えば、下記のような 2 枚の写真があります。

この 2 枚の写真は一見すると同じ写真に見えまが、実際のところ、左側の写真は正常ファイル、右側の写真はイメージファイル内にデータが隠匿されています。パケットの観点で把握できる事は、送信するデータは両方共に JPEG ファイル形式のイメージであることです。分析者にとってこのような通常使用するファイル形式に隠匿されているデータを推測する事は非常に困難です。
下部のイメージはイベントでデモをするために筆者が作成したマジックアイ (MagicEye) と呼ばれるものです。このイメージを見て、なにか隠れているか探してみてください。

<マジックアイを見る方法>
ぼんやりと眺める又は目を見開いてみると立体的に表現された内容が浮かびあがってきます。
隠れていたものは、アルファベット 『KARA』 です。
■構造がわかればパケットが見えてくる
パケットとは、ネットワークのトラフィックの細かい単位を指します。今この瞬間にも数十テラバイト、ぺタバイト以上のトラフィックが流れています。このパケットを保存している場所をパケットファイルと呼び、いくつかの形態が存在しており、最も代表的なものは PCAP (Packet Capture) ファイルです。通常、パケットキャプチャーファイルというとPCAP 形態のファイルを意味し、構造は次のとおりです。

ファイルのはじめの部分に PCAP ファイルであることを知らせるヘッダーがあり、その後ろにパケットのヘッダー、該当するパケットデータの順に表示されており、パケットヘッダーとパケットデータが連続して記録されています。

[図 1] PCAP ファイルヘッダーの構造
マジックナンバーは固定値 [0xa1b2c3d4] です。数字 1234 とアルファベット ABCD の順になっているため覚えやすく、この値が存在する場合、PCAP ファイルであると推定できます。
Ver.Major、Minor はパケットファイルのフォーマットバージョンを意味し、thiszone、 sigfigs は時間に関するものであり、snaplen はキャプチャーされたパケットの長さ、 linktype はデータリンクタイプを示しています。パケットヘッダーレコードは下記のとおりです。

[図 2] PCAPレコードの構造
■パケット 分析 = LEGO?
パケット データを見ていきます。 [図 3] はパケット分析ツールであるワイヤーシャークを利用して一部の画面をキャプチャーしたものです。2003 年 1 月 25 日、韓国でのインターネット麻痺事件を引き起こした問題のパケットデータの一部です。これらは各ヘッダーを含め合計 404 バイトという小さい長さのパケットだけで数万個/秒のパケットを生成し、インターネットを麻痺させました。

[図 3]スラマーワームの一部パケット
ここでは、OSI 7 Layerを見てみます。私たちが通信するプロセスは [図 4] のようなプロセスを経て成立しますが、パケットデータ内にレイヤー情報があります。

[図 4] OSI 7 Layer の通信関係
通常、パケットデータ内に含まれている情報は、Data Link レイヤーに該当するイーサネットヘッダー情報、ネットワークレイヤーに該当する IP 情報、Transport レイヤーに該当するTCP 又は UDP、アプリケーションレイヤーに該当するペイロード情報に区分できます。このような基本構造を持っているという事実を念頭において先ほど見たスラマーワームパケットデータを見ていきましょう。各ヘッダー情報は事前に規約された構造を有している為、この規約に合うように其々の情報を入れていけばよいのです。 [図 5] でLayer 別バイナリデータ値にどのような意味があるのか表現しました。
UDP プロトコルについては既に説明しましたが、ヘッダーの順序は最下部から始まり [データリンクヘッダー] [IPヘッダー] [UDP ヘッダー]の順になっています。

[図 5] スラマーワーム ヘッダー情報の Layer 別分類
図のようにパケットデータの各値はヘッダー構造と合致します。

[図 6] パケット分析ツールにより、一目瞭然に整理されたヘッダー情報
このように各パケットデータは人間が一つ一つ確認しながら把握する事が容易ではないため、ワイヤーシャ―クのようなパケット分析ツールがこの作業を代わりに行います。HEX 値だけをみてパケットを理解できるならば、このツールは必要ありませんが。。。

パケットは LEGO と似ています。LEGO は、組み立てる前は単体のブロックにすぎませんが、一つ一つ組み立てていくと見ごたえのある新しい作品として生まれ変わります。パケットも LEGO を組み立てるように組立てれば、難しそうに見えたそれぞれのデータが一つにまとまり、パケットとして何を送信しようとしていたかが理解できるようになります。
今回は、ネットワークフォレンジックの困難さとパケット分析をはじめる為の基本について説明しました。次回は実際にパケット分析方法とパケット分析ツールを紹介します。