検出装置、検出方法、通信制御方法、履歴空間データ生産方法、及びこれらの方法をコンピュータに実行させることが可能なプログラム
【課題】 不正な侵入のようなネットワークの異常を全般的に検知し、異常の種類を見極めるのに適した検知装置等を提供する。
【解決手段】 履歴集約部183は、通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する。検出部181は、履歴集約部183によって生成された履歴空間データを基準として通信状態を表す状態量の観測データに生じた差異に基づき、情報通信ネットワークの通信状態の変化を検出する。
【解決手段】 履歴集約部183は、通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する。検出部181は、履歴集約部183によって生成された履歴空間データを基準として通信状態を表す状態量の観測データに生じた差異に基づき、情報通信ネットワークの通信状態の変化を検出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検出装置、検出方法、通信制御方法、履歴空間データ生産方法、及びこれらの方法をコンピュータに実行させることが可能なプログラムに関し、特に、情報通信ネットワークの通信状態の変化を検出する検出装置等に関する。
【背景技術】
【0002】
現在、インターネットは世界的に広く拡大しており、ビジネスや日常生活において欠かせないものとなってきている。しかし、インターネットの普及に伴い、それを悪用した被害が多発している。ネットワークにおける被害の原因は、大きく2つに分類される。すなわち、外部からの攻撃的侵入による被害と内部ネットワークでの不正な活動による被害である。外部からの攻撃的侵入による被害としては、情報漏洩やシステムの権限外の利用(不正なログイン)やサービスを停止させること等が挙げられる。内部ネットワークでの不正な活動による被害としては、外部へのDos攻撃やワームの活動等が挙げられる。
【0003】
このような被害を防ぐ従来法として、個別の統計量の時間的な変化を見て不正な侵入を検知する技術(アノマリ検知方式、Dos/DDosに特化した検知方式)やペイロード部のパターンマッチングにより不正な侵入を検知する技術(シグニチャ辞書方式)が知られている。前者は、単位時間あたりのパケット数がある閾値を越えた場合に不正な侵入であると判断して検知する方式である。後者は予めシグニチャ辞書に登録された不正な侵入の情報とパケットの情報を照らし合わせて不正な侵入を検知する方式である。
【0004】
また、上記の被害を防ぐ方法として、特許文献1に示す技術が提案されている。特許文献1には、多項分布を用いて統計的に通常状態を定義する。そして、通信状態が通常状態からどれくらい逸脱しているかを求めて異常を検知するという技術が記載されている。
【0005】
【特許文献1】特開2005−203992号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、アノマリ検知方式やDos/DDosに特化した検知方式では、個別の統計量の時間的な変化だけを見ている。そのため、パスワード総当り攻撃のような不正な侵入は検知することができない。また、個別の統計量だけを見ているため、通信情報を総合的に見て精密に分析することは難しい。
【0007】
また、シグニチャ方式では、シグニチャ辞書に登録させている不正な侵入は検知できるが、登録されていない亜種については検知することができない。さらに、シグニチャ辞書に不正な侵入に関する情報を定義するには高度な知識が必要であり、作業に手間と時間が掛かってしまう。
【0008】
さらに、特許文献1に記載された技術では通常状態が定義されているが、ネットワーク上の通信において通常状態という状態を定義するのは非常に困難な作業である。そのため、人間が介在して閾値等を設定する必要がある。しかし、ネットワークは常に攻撃的な侵入を受けており、特に悪意をもつ不正な侵入は身を潜めて侵入する傾向があり、閾値を設定すること自体が非常に困難である。
【0009】
仮に閾値を設定することができても、ネットワークの状態はユーザごとに個性があり、あるユーザにとっては通常状態であっても他のユーザにとっては通常状態ではないということも十分に想定される。その場合、特許文献1に示す技術ではユーザごとに閾値を設定しなければならず、作業に手間と時間を有する。
【0010】
さらに、特許文献1においては、プローブ攻撃とDos攻撃に対して評価を行い、有効性を示しているが、それ以外の様々な攻撃相手に対する評価や攻撃相手の特定に関しては触れられていない。
【0011】
不正な侵入のようなネットワークの異常には様々な種類があり、それらを全般的に検知することは非常に重要な課題である。さらに、異常を検知するのと同時に、異常の種類を見極めることも重要である。異常が検知できても、その種類が特定できなければ、適切な対処を選択することができない。異常の種類の見極めを間違ってしまうと、間違った対処を行ってしまい返って被害を拡大してしまう可能性もある。
【0012】
そこで、本発明は、上記課題を解決する検出装置、検出方法、通信制御方法、履歴空間データ生産方法、及びこれらの方法をコンピュータに実行させることが可能なプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
請求項1に係る発明は、情報通信ネットワークの通信状態の変化を検出する検出装置であって、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する履歴集約手段と、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出する検出手段とを備える。
【0014】
請求項2に係る発明は、請求項1において、前記検出手段が、前記通信状態を表す状態量をヒストグラム化し又は前記通信状態を表す状態量の割合を円グラフ化することにより、前記差異を特定するものである。
【0015】
請求項3に係る発明は、請求項1又は2において、前記履歴空間データが、TCPコントロールフラグの組み合わせと各コントロールフラグについてのパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化として異常なヘッダ値を有するパケット情報を検出するものである。
【0016】
請求項4に係る発明は、請求項1又は2において、前記履歴空間データが、送信元IPアドレス又はポート番号とそれに対するパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてトロイの木馬を検出するものである。
【0017】
請求項5に係る発明は、請求項1又は2において、前記履歴空間データが、送信先IPアドレスとそれに対するパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてDos又はDDos攻撃を検出するものである。
【0018】
請求項6に係る発明は、請求項1又は2において、前記履歴空間データが、リクエストサイズとそれに対するリクエスト数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてバッファオーバーフロー攻撃を検出するものである。
【0019】
請求項7に係る発明は、請求項1又は2において、前記履歴空間データが、FINフラグが1である比率であり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてパスワード総当り攻撃を検出するものである。
【0020】
請求項8に係る発明は、請求項1から7のいずれかにおいて、前記履歴集約手段が、前記通信状態を表す状態量の履歴データのうち所定の集約条件を満たすものを集約項目毎に集約して履歴空間データを生成するものである。
【0021】
請求項9に係る発明は、請求項8において、前記履歴集約手段が、前記情報通信ネットワークに接続する端末の利用環境に応じて設定された前記集約条件と前記集約項目に基づいて、履歴空間データを生成するものである。
【0022】
請求項10に係る発明は、請求項1から9のいずれかにおいて、前記検出手段が、前記情報通信ネットワークの通信状態の変化を生じさせたアクセス源を特定するものである。
【0023】
請求項11に係る発明は、情報通信ネットワークの通信状態の変化を検出する検出方法であって、履歴集約手段が、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出するステップとを含む、ものである。
【0024】
請求項12に係る発明は、第1の情報通信ネットワークと第2の情報通信ネットワーク間の通信状態の変化を検出して前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御する通信制御方法であって、履歴集約手段が、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の観測データに生じた差異に基づき、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態の変化を検出するステップと、制御手段が、前記検出手段の検出結果に基づいて前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御するステップと、を含む、ものである。
【0025】
請求項13に係る発明は、履歴集約手段が、情報通信ネットワークの通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生産するステップを含む、履歴空間データ生産方法である。
【0026】
請求項14に係る発明は、請求項11から13のいずれかに記載の方法をコンピュータに実行させることが可能なプログラムである。
【発明の効果】
【0027】
本発明によれば、アノマリ検知方式やDos/DDosに特化した検知方式のように個別の統計量を見るだけでは検知できないパスワード総当り攻撃を検知することができる。また、異常なヘッダ値をもつ通信情報、トロイの木馬、Dos/DDos攻撃、及び、バッファオーバーフロー攻撃等も侵入も検知することが可能である。さらに、TCPフロー、TCP個別パケット、UDP個別パケット、及び、ICMP個別パケットについても異常を検知することが可能である。従って、広範囲に渡ってネットワーク上の異常を検知することができる。
【0028】
また、ヒストグラムや円グラフ等を用いることでネットワーク上の通信情報を総合的に判定し、精密に分析することが可能となる。また、基準となる通常の状態を定義する必要がないため、非常に困難な閾値の設定を行わなくてよい。
【0029】
さらに、シグニチャ辞書に登録されていない亜種についても検知することが可能である。従って、亜種が発見された場合に、それを詳細に分析して亜種に関する情報をシグニチャ辞書に定義する手間が掛からなくて済む。
【0030】
さらに、例えば、曜日ごとや昼夜ごとや時間帯ごと等様々な異なる基準を、ネットワークを使用するユーザごとに作成することで、ユーザの個性を反映して検知することができ、メンテナンスフリーの実現が可能となる。また、タイムアウトによる分断ではなく、様々な異なる基準を用いることで検知の精度を上げることが可能となる。
【0031】
さらに、不正な侵入の相手を正確に特定することで、不正な侵入があった際のその後の対処をスムーズに行うことが可能となる。
【発明を実施するための最良の形態】
【0032】
本発明の実施の形態を以下に説明する。なお、本発明は以下の実施の形態により限定されるものではない。
【0033】
図1は、本発明の実施の形態に係るシステムの概要の一例を示すブロック図である。インターネット等の外部ネットワーク150に、ルータ130を介して、異常検知装置100と、運用監視ツール160と、サーバ類110と、ユーザパソコンやIP電話機器等の情報通信装置120が接続されている。サーバ類110と情報通信装置120とは、内部ネットワーク125により接続されている。外部ネットワーク150とルータ130の間には、外部からの通信を制御し、内部ネットワーク125の安全性を維持するためのファイヤウォール140が接続されている。異常検知装置100は、プローブ170とネットワークセキュリティデータベース(以下、「NSDB」という。)180とを備える。
【0034】
NSDB180は、検出部181と、履歴集約部183と、Traffic DB185とを備える。Traffic DB185は、Probe DB(以下、「PDB」という。)340とStatistical DB(以下、「SDB」という。)350とを備える。
【0035】
ここで、図1のシステムの処理の概要について簡単に説明する。異常検知装置100のプローブ170は、外部ネットワーク150からファイヤウォール140とルータ130を介して流れてくる情報の全パケット及び内部ネットワーク125より流出する情報の全パケットに対してキャプチャを行う。NSDB180では、プローブ170のキャプチャにより取り込まれた情報に基づいて異常を検知する処理が行われる。異常があると判断された場合は運用監視ツール160にアラートが送信される。運用監視ツール160は、受信したアラートに基づいて、全ての通信の遮断、IPアドレスごとの通信の遮断等により、サーバ類110や情報通信装置120への外部からの不正なアクセスや内部からの情報漏洩等を防止する。
【0036】
次に、本発明の実施の形態に係る異常検知装置100について説明する。図2は、図1の異常検知装置100のプローブ170の構成の一例を示したブロック図である。図3は、異常検知装置100のNSDB180の構成の一例を示したブロック図である。図4は、異常検知装置100が検出できる異常の種類をまとめた図である。
【0037】
まず、図2において、プローブ170は、キャプチャ部210とパケット集計部220と共有メモリ部230とを備える。図2においては、キャプチャ部210はキャプチャプロセスにより実現され、パケット集計部220はパケット集計プロセスにより実現されている。共有メモリ部230は、書き込み面番号部230aと第1のパケットブロック部230bと第2のパケットブロック部230cとを備える。このような構成を有するのは、共有メモリ部230の情報の読み込み処理と共有メモリ部230への情報の書き込み処理を制御するためである。第1パケットブロック部230bと第2パケットブロック部cは、キャプチャパケット数、キャプチャ時刻、及び、パケットバッファ(1〜n)の情報を有する。
【0038】
次に、図3において、NSDB180は、検出部181と履歴集約部183とTraffic DB185と異常検知テーブル187(図1では省略)とを備える。図3においては、検出部181は侵入検知プロセスにより実現され、履歴集約部183は統計量集約プロセスにより実現されている。Traffic DB185のPDB340は、プローブ170でキャプチャされた情報を集計した、トロイの木馬TCPバックドア情報340a、トロイの木馬UDPバックドア情報340b、トロイの木馬TCP情報漏洩情報340c、トロイの木馬UDP情報漏洩情報340d、バッファオーバーフロー情報340e、異常ヘッダ情報340f、及び、SynFlood情報340gの7種類の異常に関する情報を記憶する。SDB350は、プローブ170でキャプチャされた情報を集計した上記7つの情報のうち、最初の6つを所定の集約時間(10分、1時間、1日、28日)で集約した情報を記憶し、SynFloodに関しては異なる集約時間(1時間)で集約した情報を記憶する。PDB340は、記憶する情報とSDB350が記憶する情報の差異をヒストグラムを用いて抽出する。これによって、図4に示すような、シグニチャ辞書に登録されていない亜種の攻撃的侵入や、個別の統計量の変化を見るだけでは検知ができないパスワード総当り攻撃のような不正アクセスも検知することができる。
【0039】
次に、プローブ170及びNSDB180の処理について簡単に説明する。
【0040】
図2において、外部ネットワーク150上を流れるパケット情報は、キャプチャ部210によりキャプチャされる。キャプチャされたパケット情報は共有メモリ230の第1のパケットブロック部230b又は第2のパケットブロック部230cに書き込まれる。書き込まれたパケット情報は、パケット集計部220に読み込まれ、そこでパケット情報の集計処理が行われる。集計処理は、異常の種類ごとにハッシュマップを作成して行われる。集計結果の情報は、NSDB180へ送信される。
【0041】
図3において、集計結果の情報を受信したNSDB180では、検出部181によりPDB340の作成処理が行われる。PDB340が作成されると、検出部181は、履歴集約部183が所定の集約時間に応じて集約した情報とPDB340が持つ情報とをヒストグラムにより比較する。その比較の結果、異常があると判断されると、その異常情報が異常検知テーブル187に記憶される。
【0042】
次に、図2のプローブ102の処理についてさらに詳細に説明する。図5(a)は、図2のキャプチャ部210の処理の一例を示すフロー図である。キャプチャ部210は、外部ネットワーク150から流入してくる情報や内部から外部ネットワーク150に流出する情報の全パケットをキャプチャする処理等を行う。
【0043】
まず、ステップST101で初期化処理が行われる。この初期化処理では、プロセスのパラメータのチェックやシグナルの設定や共有メモリへのIDの割り付け等の処理が行われる。ステップST102では、パケット情報セマフォに対するP操作が行われる。セマフォとは、排他制御を必要とする際に用いる共通変数であり、処理の要求通知をP操作、処理の終了通知をV操作という。ここでは、P操作を行うことで、パケット情報に対して他のプロセスがアクセスできないようにし、V操作がなされるまで待ち状態となるように制御している。
【0044】
ステップST103では、共有メモリ部230の書き込み面番号部230aの書き込み面番号が読み出される。ステップST104では、ステップST103で読み込んだ書き込み面番号に基づいて、第1のパケットブロック部230bまたは第2のパケットブロック部230cにパケット情報が書き込まれる。書き込み面番号が1の場合は、第1のパケットブロック部230bに書き込まれ、書き込み面番号が2の場合は、第2のパケットブロック部230cに書き込まれる。この書き込み面番号の切り替えは、パケット集計部220により行われる。ステップST105では、ステップST104で書き込んだパケット情報に基づいて、キャプチャパケット数が更新される。そして、ステップST106でパケット情報セマフォに対するV操作が行われて、再びステップST102の処理に戻る。このV操作が行われた時点で、待ち状態になっていた他のプロセスはパケット情報にアクセスすることができるようになる。
【0045】
上記処理は、キャプチャ部210がシグナルSIGINTを受信するまで繰り返して行われる。ステップST107でシグナルSIGINTを受信した場合は、ステップST108で終了処理が行われてキャプチャ部210の処理を終了する。終了処理では、パケット情報セマフォに対するV操作や共有メモリの分離の処理等が行われる。
【0046】
図5(b)は、図2のパケット集計部220の処理の一例を示すフロー図である。パケット集計部220は、キャプチャ部210がキャプチャしたパケット情報を、異常の種類ごとに必要な項目を集計してハッシュマップを作成し、その集計結果の情報をNSDB180に送信する処理等を行う。
【0047】
まず、ステップST201で初期化処理が行われる。この初期化処理でも、キャプチャ部210の場合と同様に、プロセスのパラメータのチェックやシグナルの設定や共有メモリへのIDの割り付け等の処理が行われる。さらに、ここではNSDB180との接続処理や異常の種類ごとに必要なメモリの確保や集計処理フラグを0にする処理等も行われる。以降、集計処理は、シグナルSIGALARMを受け取ってから開始となる。シグナルSIGALARMを受信すると、集計処理フラグが0か1かが判定され、集計処理フラグが0であれば集計処理フラグを1にする。
【0048】
ステップST202では、集計処理フラグが0か1かが判定される。集計処理フラグが0の場合ステップST203で所定の時間(ここでは5秒に設定)が経過するまでポーズが行われる。そして5秒が経過するとステップST204の処理に進む。集計処理フラグが1の場合は、そのまま、ステップST204の集計処理に進む。
【0049】
ここで、ステップST204の集計処理についてさらに詳細に説明する。図6は、図5(b)のステップST204の集計処理の詳細の一例を示すフロー図である。
【0050】
まず、ステップST301で、集計処理フラグを0にする。ステップST302では、キャプチャパケット数がクリアされる。ステップST303では、キャプチャ時刻が更新される。ステップST304では、P操作が行われる。ステップST305では、共有メモリ部230の書き込み面番号部230aの書き込み面番号が切り替えられる。この切り替えのタイミングは所定の時間(ここでは5秒に設定)ごとに行われる。すなわち、第1のパケットブロック部230bまたは第2のパケットブロック部230cには5秒分のパケット情報が書き込まれていることになる。ステップST305の書き込み面番号の切り替え処理が終わると、ステップST306でV操作が行われる。
【0051】
ステップST307では、キャプチャ部210がキャプチャしたパケット情報数が、第1または第2のパケットブロックのパケットバッファ数以下かどうかが判定される。キャプチャパケット数がパケットバッファ数以下ではない場合は、ステップST312の処理に進む。キャプチャパケット数がパケットバッファ数以下の場合は、ステップST308の処理に進む。ステップST308では、1つのパケット情報を読み出す処理が行われる。ステップST309では、集計処理フラグが0か1かが判定される。集計処理フラグが1の場合にはステップST313の処理に進み、集計処理フラグが0の場合にはステップST310の処理に進む。ステップST310では攻撃といった異常ごとの集計処理が行われる。
【0052】
ここで、ステップST310の異常ごとの集計処理についてさらに詳細に説明する。図7は、図6のステップST310の異常ごとの集計処理の一例を示した模式図である。図8は、図6のステップST310の異常ごとの集計処理の詳細の一例を示したフロー図である。
【0053】
図7において、共有メモリ中のパケット情報を1つずつ読み出す(図中のa)。集計処理は異常ごと(上記に示した7種類の異常)に分かれており、その異常ごとの集計処理に、読み出したパケット情報を渡す(図中のb)。図7では1番目の集計処理にパケット情報を渡す様子を示している。パケット情報を受け取った集計処理は、異常を検知するのに必要な項目を取り出す(図中のc)。その後、取り出された項目に基づき、パケットの流れる方向、IPアドレスなどの条件が判定される(図中のd)。取り出された項目が連結され、固定長のchar型の連結のキーが作成される(図中のe)。また、拡張のためnopメンバが作られて構造体が作成される(図中のf)。そして、作成されたキーと作成された構造体とが関連付けられて格納される(図中のg)。
【0054】
次に、図8を参照して図7に示す集計処理のフローを説明する。まず、ステップST401で、パケット情報の判定処理が行われる。この判定処理は、パケット情報が異常検知の対象となるデータであるか否かの条件で行われるものである。ステップST402では、パケット情報がステップST401の条件を満たすか否かが判定される。条件を満たさない場合は、そのまま異常ごとの集計処理を終了する。条件を満たす場合は、ステップST403の処理に進む。ステップST403では、集計に必要な項目が抽出される(図7のcに対応)。ステップST404では、抽出された項目でキーが作成される(図7のeに対応)。ステップST405では、作成されたキーがハッシュマップに存在するかどうかが判定される。
【0055】
キーが示すデータがハッシュマップに存在する場合は、ステップST406の処理に進む。ステップST406では、ハッシュマップのデータをキーで検索して該当するデータを読み出す。ステップST407では、読み出した以前に読み出したデータを削除する。ステップST408では、読み出したデータのパケット数を更新して、ステップST411のインサート処理を行う。
【0056】
キーが示すデータがハッシュマップに存在しない場合は、ステップST409で新たな構造体の作成を行う(図7のfに対応)。ステップST410でパケット数を1にセットして、ステップST411のインサート処理を行う(図7のgに対応)。ステップST411のインサート処理により、ハッシュマップが作成されると1番目の集計処理を終了する。この処理を7番目の集計処理まで繰返し、全ての集計処理が終了すると、異常ごとの集計処理を終了する。
【0057】
図6に戻って、ステップST310で上記のような異常ごとの集計処理が行われると、ステップST311で、パケット情報の全てが読み出されたか否かが判定される。読み出されていないパケット情報があれば、再びステップST308に戻って1パケット情報ずつの集計処理を繰り返す。パケット情報の全てが読み出されていれば、ステップST312で、NSDB180に対して集計結果の情報を送信する。そして、ステップST313でメモリが開放され、集計処理を終了する。
【0058】
図5(b)に戻って、ステップST204の集計処理が終了すると、再びステップST202の処理に戻って、シグナルSIGINTを受信するまで処理が繰り返される。ステップST205で、シグナルSIGINTを受信した場合は、ステップST206で終了処理が行われ、パケット集計プロセスの処理を終了する。終了処理では、共有メモリの分離やメモリの開放処理やNSDB104との接続を切断する処理等が行われる。
【0059】
次に、図3のNSDB180の処理についてさらに詳細に説明する。
【0060】
図9は、図3の検出部181の処理の一例を示すフロー図である。検出部181では、プローブ170から送信された集計結果の情報に基づいてPDB340の作成する処理、PDB340のデータをSDB350に登録する処理、及び、異常の検知をする処理等が行われる。
【0061】
まず、ステップST501で初期化処理が行われる。この初期化処理では、データベースへの接続の確立処理やポート番号の取得や受信バッファのメモリの確保やソケットの作成等の処理が行われる。ステップST502では、プローブ170からのコネクション要求があるまでコネクション待ちが行われる。ステップST503では、プローブ170からのコネクション要求があった場合に、それに応答してプローブ170に対して受信可能である通知がなされる。ステップST504では、データ通信に成功したかどうかが判定される。データ通信に成功しなかった場合は、ステップST511でコネクションを切断して、再びステップST502のコネクション待ち状態となる。データ通信に成功した場合は、ステップST505で、プローブ170により送信された集計結果の情報を受信する。ステップST506では、データ通信に成功したかどうかが判定される。データ通信に成功しなかった場合は、ステップST512でバッファが初期化され、ステップST511でコネクションが切断されて、再びステップST502のコネクション待ち状態となる。データ通信に成功した場合は、次のステップST507の処理に進む。
【0062】
ステップST507では、PDB340の作成・登録処理が行われる。この作成・登録処理では、プローブ170で異常ごとに集計した集計結果の情報を、PDB340にコピーする処理が行われる。ステップST508では、PDB340の作成・登録処理が成功したかどうかが判定される。PDB340の作成・登録処理に成功しなかった場合は、ステップST509の処理を行わずにステップST510の処理に進む。PDB340の作成・登録処理に成功した場合は、ステップST509の処理に進む。ステップST509では、検知・登録処理が行われる。この検知・登録処理では、PDB340にコピーされた情報とSDB350に記憶されている情報の差異をヒストグラムにより抽出することで、ネットワークに異常があるかどうかの判定が行われ、その後PDB340の情報をSDB350に登録する処理が行われる。
【0063】
ここで、ステップST509の検知・登録処理についてさらに詳細に説明する。図10は、図9のステップST509の検知・登録処理の詳細の一例を示したフロー図である。
【0064】
まず、ステップST601でトランザクションが開始される。ステップST602では、SQLの実行処理が行われる。ここで実行されるSQLにより、PDB340に記憶された情報とSDB350に記憶された情報が比較され、異常の検知処理が行われる。
【0065】
ここで、検知処理について詳細に説明する。上記に示した7種類の異常を検知する処理は、大きく以下の4つの処理区分に分けることができる。
(1)異常なヘッダ値を持つパケット情報を検知する処理
(2)トロイの木馬を検知する処理
(3)Dos/DDos攻撃(SynFlood)を検知する処理
(4)バッファオーバーフロー攻撃を検知する処理
【0066】
以下に、上記4つの処理区分のそれぞれについて説明する。
【0067】
まず、処理区分(1)の異常なヘッダ値を持つパケット情報を検知する処理について説明する。図11(a)及び(b)は、ヒストグラムを用いて異常なヘッダ値を持つパケット情報を検知する処理の模式図である。図11(a)はPDB340の統計量を示すヒストグラムであり、図11(b)はSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸がコントロールフラグである。なお、S=000010B、A=010000B、AP=011000B、SA=010010B、F=010001B、SF=000011B、UA=110000Bである。
【0068】
図11(b)は、過去のパケット情報を集約した統計量が示すヒストグラムである。つまり、この統計量が定常の状態を示すヒストグラムであり、正常な統計量とすることができる。比較の目安となる閾値をパケット数の0.01%に設定したとする。図11(a)のヒストグラムと図11(b)のヒストグラムを比較すると、図11(a)のコントロールフラグUAとSFが異常であると判断できる。したがって、異常なヘッダ値を持つパケット情報を検知することができる。この時、過去のパケット情報を集約した統計量として、5秒、10分、1日、28日ごとに集約された統計量を用いて比較の処理を行う。
【0069】
図12は、異常なヘッダ値を検出する処理を実現するコードの一例を示す図であり、SQLで記載されている。図12において、(a)は異常検知処理であり、(b)はPDBよりSDBを生成する処理であり、(c)は統計量集約処理のうち圧縮用のものであり、(d)は統計量集約処理のうち検知用のものであり、(e)は統計量削除処理である。なお、図12で、閾値は例えば0.01であり、$PIDはプローブIDであり、$TIMは時間幅(例えば、5Sec、10min、1Day、1Mon)であり、$TIM1は%TIMに対して一つ前の時間幅(例えば、$TIM=10Minのとき5Sec)である。
【0070】
続いて、処理区分(2)のトロイの木馬を検知する処理について説明する。図11(c)及び(d)は、ヒストグラムを用いてトロイの木馬を検知する処理の模式図である。図11(c)はPDB340の統計量を示すヒストグラムであり、図11(d)はSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸が送信元IPアドレス/ポート番号である。図11(d)は、過去のパケット情報を集約した統計量が示すヒストグラムであり、処理区分(1)の場合と同様に、この統計量が定常の状態を示すヒストグラムとして、正常な統計量とすることができる。比較の目安となる閾値を所定のパケット数に設定し、図11(c)のヒストグラムと図11(d)のヒストグラムを比較すると、図11(c)のヒストグラムでは、過去に組合せの無い送信元IPアドレス/ポート番号の組合せを検出している。つまり、普段使用しない送信元IPアドレス/ポート番号が使用されていることから、トロイの木馬による不正なアクセスがあったことを検知することができる。このとき、過去のパケット情報を集約した統計量として、5秒、10分、1日、28日ごとに集約された統計量を用いて比較の処理を行う。
【0071】
図13は、トロイの木馬(TCPバックドア)を検出する処理を実現するコードの一例を示す図である。図13の(a)〜(e)は、それぞれ図12の(a)〜(e)に対応する。また、$PID、$TIM、$TIM1も図12と同様である。図14、図15、図16は、それぞれ、TCP情報漏洩、UDPバックドア、UDP情報漏洩のトロイの木馬を検出する処理を実現するコードの一例を示す図である。
【0072】
続いて、処理区分(3)のDos/DDos攻撃(SynFlood)を検知する処理について説明する。図11(e)及び(f)は、ヒストグラムを用いてDos/DDos攻撃を検知する処理の模式図である。図11(e)のグラフはPDB340の統計量を示すヒストグラムであり、図11(f)のグラフはSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸が送信先IPアドレスである。この処理では、SDB350に記憶されている過去の同曜日同時間帯における統計量(N週間前までのパケット数の標準偏差:N=1,2,3,4)を元に、PDB340が記憶するパケット数の偏差値を算出し、偏差値が閾値以上であれば、PDB340のデータを異常であるとする。図11(f)は、過去のパケット情報を集約した統計量が示すヒストグラムである。この統計量が定常の状態を示すヒストグラムであり、正常な統計量とすることができる。比較の目安となる閾値を偏差値70に設定したとする。正常な統計量を示す図11(e)のヒストグラムと図11(f)のヒストグラムを比較すると、Eの送信先IPアドレスについて、偏差値が70以上である。つまり、Eの送信先IPアドレスでは、過去(過去の同曜日同時間帯)に無い大きさのパケット数で情報の通信がなされている。従って、Dos/DDos攻撃(SynFlood)を受けたと判断することができる。この時、過去のパケット情報を集約した統計量として、5秒、1時間ごとに集約された統計量を用いて比較の処理を行う。
【0073】
図17は、Dos/DDos攻撃を検出する処理を実現するコードの一例を示す図である。図17の(a)は検知処理、(b)はPDBからSDBの生成処理、(c)は統計量集約処理、(d)は統計量削除処理を実現する。また、$PID、$TIM、$TIM1は図12と同様である。
【0074】
続いて、処理区分(4)のバッファオーバーフロー攻撃を検知する処理を検知する処理について説明する。図11(g)及び(h)は、ヒストグラムを用いてバッファオーバーフロー攻撃を検知する処理の模式図である。図11(g)のグラフはPDB340の統計量を示すヒストグラムであり、図11(h)のグラフがSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がリクエスト数で横軸がリクエストサイズである。
【0075】
図18及び図19は、バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す図である。図18及び図19の(a)〜(d)は、それぞれ図12の(a)〜(e)に対応する。また、$PID、$TIM、$TIM1も図12と同様である。
【0076】
(1)〜(4)の4つの処理区分に従って検知処理を行うことで、上記に示した7種類の異常を検知することが可能となる。また、比較する際にヒストグラムにより幾何学的に差異を見ることができるため、異常な状態を簡単に検知することが可能となる。さらに、様々な集約時間ごとに集約した統計量で比較を行うので、精密な分析が可能となり、検知の精度を上げることができる。
【0077】
図10に戻って、ステップST602でSQLが実行され、異常の検知が行われると、ステップST603で異常があったかどうかが判定される。異常が無かったと判定された場合は、ステップST606の処理に進む。異常があったと判定された場合は、ステップST604の異常内容書き込み処理を行う。この異常内容書き込み処理では、検知された異常の内容に関する情報が異常検知テーブル360に記憶される。この情報に基づいて運用監視ツール106にアラートが送信される。ステップST605では、ステップST604の処理の結果、異常検知テーブル360に書き込みが成功したかどうかが判定される。書き込みが成功しなかった場合は、ステップST609でロールバックして処理を終了する。書き込みが成功した場合は、ステップST606でSQLの実行処理が行われる。
【0078】
このステップST606では、PDB340に記憶された情報をSDB350にコピーして登録するSQLが実行される。ステップST607では、ステップST606でSQLを実行した結果、登録に成功したかどうかが判定される。登録に成功しなかった場合は、ステップST609でロールバックをして処理を終了する。登録に成功した場合は、ステップST608でコミットして処理を終了する。
【0079】
図9に戻って、ステップST509で検知・登録処理が終了すると、ステップST510で検知の終了処理が行われる。この検知の終了処理では、次回の処理を行うための設定として、PDB340の全テーブルの削除や受信バッファのメモリの解放等の処理が行われる。そして、再びステップST503の受信可能通知の処理に戻って、シグナルSIGINTを受信するまで異常の検知処理等が繰り返して行われる。
【0080】
ステップST513でシグナルSIGINTを受信した場合は、ステップST514で終了処理が行われて、侵入検知プロセス310の処理を終了する。
【0081】
続いて、図3の履歴集約部183について説明する。履歴集約部183は、PDB340からSDB350に登録されるパケット情報を所定の集約時間で集約する処理等を行う。図20(a)は、図3の履歴集約部183の処理の一例を示すフロー図である。
【0082】
まず、ステップST701で初期化処理が行われる。この初期化処理では、データベースへの接続の確立処理や集約時間の設定の処理等が行われる。ステップST702では、次の集約時間まで待機される。以降、集約処理を開始する場合には、シグナルSIGALARMを受け取ってからの開始となる。シグナルSIGALARMは10秒ごとに送信され、SIGALARMを受信すると、受信した時間と集約時間を比較して、受信した時間が集約時間以降であれば処理開始フラグをONにする。
【0083】
ここで集約時間について説明する。図20(b)に、集約時間の概要を示す。OSからのシグナルが10秒ごとに送信されている。そのシグナルの受信時が、プロセス起動時(0)から集約時間(本発明の実施の形態では10分、1時間、1日、28日)経っている場合は集約処理を行う。そして、集約処理が完了後、集約時間に集約時間間隔幅を加算した値で集約時間を更新する。
【0084】
図20(a)に戻って、ステップST702の待機処理では、処理開始フラグがONに設定されるとステップST703の統計量集約処理に進む。
【0085】
ここで、ステップST703の統計量集約処理について詳細に説明する。図21は、統計量集約処理の一例を示したフロー図である。
【0086】
まず、ステップST801でキャプチャ時刻を取得する。ステップST802では、処理開始フラグをOFFにする。ステップST803では、最小集計開始時間を取得し、ステップST804では最大集計終了時間を取得する。ステップST805では、トランザクションが開始される。ステップST806では、SQLの実行処理が行われる。ここで実行されるSQLは、パケット情報を集約するSQLである。
【0087】
ここで、パケット情報の集約処理について具体的に説明する。図22に、集約処理の具体例を示す。図22に示す通り、上記で示した7種類の異常のうち、トロイの木馬TCPバックドア情報340a、トロイの木馬UDPバックドア情報340b、トロイの木馬TCP情報漏洩情報340c、トロイの木馬UDP情報漏洩情報340d、バッファオーバーフロー情報340e、及び、異常ヘッダ情報340fの情報を10分、1日、28日の単位で集約する。SynFlood情報340gは、1時間の単位で集約する。このようにして集約されたそれぞれの集約情報は、侵入検知プロセス310が異常を検知する処理において、比較の対象として利用される。
【0088】
図21に戻って、ステップST806でSQLが実行されると、ステップST807でSQLの実行処理に成功したかどうかが判定される。SQLの実行処理が成功しなかった場合は、ステップST808でロールバックを行って処理を終了する。SQLの実行処理が成功した場合は、ステップST809でSQLが全て実行されているかどうかが判定される。SQLが全て実行されていない場合は、ステップST806のSQLの実行処理に戻って、その他のSQLの実行処理を行う。SQLが全て実行されている場合は、ステップST810でコミットして処理を終了する。
【0089】
図20(a)に戻って、ステップST703の統計量集約処理が終了すると、ステップST704の集約処理の終了処理が行われる。この集約処理の終了処理では、次回の集約処理を行うための設定や集約時間の更新等の処理が行われる。そして、再びステップST702の待機処理に戻って、シグナルSIGINTを受信するまで統計処理が繰り返して行われる。
【0090】
ステップST705でシグナルSIGINTを受信した場合は、ステップST706で終了処理が行われて、履歴集約部183の処理を終了する。
【0091】
続いて、図23及び図24により、検知事例を示す。図23(a)は、2006年12月14日に発生した異常なヘッダ値を持つパケット情報の検知例を示す図である。図23(b)は、2006年11月18日に発生したトロイの木馬(TCPバックドア)の検知例を示す図である。図23(c)は、2006年9月28日に発生したトロイの木馬(TCP情報漏洩)の検知例を示す図である。図23(d)は、2006年9月23日に発生したトロイの木馬(UDPバックドア)の検知例を示す図である。図24(a)は、2006年11月7日に発生したトロイの木馬(UDP情報漏洩)の検知例を示す図である。図24(b)は、2006年9月21日に発生したDos/DDos攻撃(SynFlood)の検知例を示す図である。図24(c)は、2006年10月3日に発生したバッファオーバーフロー攻撃の検知例を示す図である。
【0092】
なお、1つのNSDB180に対して、プローブ170を複数対応させてもよい。
【0093】
また、比較する際に用いる図形は、ヒストグラムだけでなく、例えば円グラフでもよい。ヒストグラムであれば、いわば絶対量での比較となるのに対し、円グラフであれば、いわば相対量での比較となることとなる。
【0094】
さらに、プローブ102とNSDB104を一体的に捉えてもよい。その場合、パケット集計プロセスと侵入検知プロセスを1つのプロセスとして捉えてもよい。
【0095】
さらに、履歴集約部183による集約処理に代えて、SDB350に所定の期間(例えば5秒間)のパケット情報をできるだけ多く記憶させ、PDB340と記憶されたパケット情報との比較処理を行って、異常を検知するようにしてもよい。
【図面の簡単な説明】
【0096】
【図1】本発明の実施の形態に係るシステムの概要の一例を示すブロック図である。
【図2】図1の異常検知装置100のプローブ170の構成の一例を示したブロック図である。
【図3】異常検知装置100のNSDB180の構成の一例を示したブロック図である。
【図4】異常検知装置100が検出できる異常の種類をまとめた図である。
【図5】図2のプローブ170の処理の一例を示すフロー図であり、(a)はキャプチャ部210の処理の一例を示し、(b)は図2のパケット集計部220の処理の一例を示す。
【図6】図5(b)のステップST204の集計処理の詳細の一例を示すフロー図である。
【図7】図6のステップST310の異常ごとの集計処理の一例を示した模式図である。
【図8】図6のステップST310の異常ごとの集計処理の詳細の一例を示したフロー図である。
【図9】図3の検出部181の処理の一例を示すフロー図である。
【図10】図9のステップST509の検知・登録処理の詳細の一例を示したフロー図である。
【図11】ヒストグラムを用いて、異常なヘッダ値を持つパケット情報、トロイの木馬、Dos/DDos攻撃、及び、バッファオーバーフロー攻撃を検知する処理の模式図である。
【図12】異常なヘッダ値を検出する処理を実現するコードの一例を示す図である。
【図13】トロイの木馬(TCPバックドア)を検出する処理を実現するコードの一例を示す図である。
【図14】トロイの木馬(TCP情報漏洩)を検出する処理を実現するコードの一例を示す図である。
【図15】トロイの木馬(UDPバックドア)を検出する処理を実現するコードの一例を示す図である。
【図16】トロイの木馬(UDP情報漏洩)を検出する処理を実現するコードの一例を示す図である。
【図17】Dos/DDos攻撃を検出する処理を実現するコードの一例を示す図である。
【図18】バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す第1図である。
【図19】バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す第2図である。
【図20】図3の履歴集約部183の処理を説明するための図である。
【図21】図3の履歴集約部183による統計量集約処理の一例を示したフロー図である。
【図22】図3の履歴集約部183による集約処理の具体例を示す図である。
【図23】本実施例による異常の検知例を示す第1図である。
【図24】本実施例による異常の検知例を示す第2図である。
【符号の説明】
【0097】
100 異常検知装置、170 プローブ、180 NSDB、181 検出部、183 履歴集約部
【技術分野】
【0001】
本発明は、検出装置、検出方法、通信制御方法、履歴空間データ生産方法、及びこれらの方法をコンピュータに実行させることが可能なプログラムに関し、特に、情報通信ネットワークの通信状態の変化を検出する検出装置等に関する。
【背景技術】
【0002】
現在、インターネットは世界的に広く拡大しており、ビジネスや日常生活において欠かせないものとなってきている。しかし、インターネットの普及に伴い、それを悪用した被害が多発している。ネットワークにおける被害の原因は、大きく2つに分類される。すなわち、外部からの攻撃的侵入による被害と内部ネットワークでの不正な活動による被害である。外部からの攻撃的侵入による被害としては、情報漏洩やシステムの権限外の利用(不正なログイン)やサービスを停止させること等が挙げられる。内部ネットワークでの不正な活動による被害としては、外部へのDos攻撃やワームの活動等が挙げられる。
【0003】
このような被害を防ぐ従来法として、個別の統計量の時間的な変化を見て不正な侵入を検知する技術(アノマリ検知方式、Dos/DDosに特化した検知方式)やペイロード部のパターンマッチングにより不正な侵入を検知する技術(シグニチャ辞書方式)が知られている。前者は、単位時間あたりのパケット数がある閾値を越えた場合に不正な侵入であると判断して検知する方式である。後者は予めシグニチャ辞書に登録された不正な侵入の情報とパケットの情報を照らし合わせて不正な侵入を検知する方式である。
【0004】
また、上記の被害を防ぐ方法として、特許文献1に示す技術が提案されている。特許文献1には、多項分布を用いて統計的に通常状態を定義する。そして、通信状態が通常状態からどれくらい逸脱しているかを求めて異常を検知するという技術が記載されている。
【0005】
【特許文献1】特開2005−203992号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、アノマリ検知方式やDos/DDosに特化した検知方式では、個別の統計量の時間的な変化だけを見ている。そのため、パスワード総当り攻撃のような不正な侵入は検知することができない。また、個別の統計量だけを見ているため、通信情報を総合的に見て精密に分析することは難しい。
【0007】
また、シグニチャ方式では、シグニチャ辞書に登録させている不正な侵入は検知できるが、登録されていない亜種については検知することができない。さらに、シグニチャ辞書に不正な侵入に関する情報を定義するには高度な知識が必要であり、作業に手間と時間が掛かってしまう。
【0008】
さらに、特許文献1に記載された技術では通常状態が定義されているが、ネットワーク上の通信において通常状態という状態を定義するのは非常に困難な作業である。そのため、人間が介在して閾値等を設定する必要がある。しかし、ネットワークは常に攻撃的な侵入を受けており、特に悪意をもつ不正な侵入は身を潜めて侵入する傾向があり、閾値を設定すること自体が非常に困難である。
【0009】
仮に閾値を設定することができても、ネットワークの状態はユーザごとに個性があり、あるユーザにとっては通常状態であっても他のユーザにとっては通常状態ではないということも十分に想定される。その場合、特許文献1に示す技術ではユーザごとに閾値を設定しなければならず、作業に手間と時間を有する。
【0010】
さらに、特許文献1においては、プローブ攻撃とDos攻撃に対して評価を行い、有効性を示しているが、それ以外の様々な攻撃相手に対する評価や攻撃相手の特定に関しては触れられていない。
【0011】
不正な侵入のようなネットワークの異常には様々な種類があり、それらを全般的に検知することは非常に重要な課題である。さらに、異常を検知するのと同時に、異常の種類を見極めることも重要である。異常が検知できても、その種類が特定できなければ、適切な対処を選択することができない。異常の種類の見極めを間違ってしまうと、間違った対処を行ってしまい返って被害を拡大してしまう可能性もある。
【0012】
そこで、本発明は、上記課題を解決する検出装置、検出方法、通信制御方法、履歴空間データ生産方法、及びこれらの方法をコンピュータに実行させることが可能なプログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
請求項1に係る発明は、情報通信ネットワークの通信状態の変化を検出する検出装置であって、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する履歴集約手段と、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出する検出手段とを備える。
【0014】
請求項2に係る発明は、請求項1において、前記検出手段が、前記通信状態を表す状態量をヒストグラム化し又は前記通信状態を表す状態量の割合を円グラフ化することにより、前記差異を特定するものである。
【0015】
請求項3に係る発明は、請求項1又は2において、前記履歴空間データが、TCPコントロールフラグの組み合わせと各コントロールフラグについてのパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化として異常なヘッダ値を有するパケット情報を検出するものである。
【0016】
請求項4に係る発明は、請求項1又は2において、前記履歴空間データが、送信元IPアドレス又はポート番号とそれに対するパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてトロイの木馬を検出するものである。
【0017】
請求項5に係る発明は、請求項1又は2において、前記履歴空間データが、送信先IPアドレスとそれに対するパケット数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてDos又はDDos攻撃を検出するものである。
【0018】
請求項6に係る発明は、請求項1又は2において、前記履歴空間データが、リクエストサイズとそれに対するリクエスト数のデータであり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてバッファオーバーフロー攻撃を検出するものである。
【0019】
請求項7に係る発明は、請求項1又は2において、前記履歴空間データが、FINフラグが1である比率であり、前記検出手段が、前記情報通信ネットワークの通信状態の変化としてパスワード総当り攻撃を検出するものである。
【0020】
請求項8に係る発明は、請求項1から7のいずれかにおいて、前記履歴集約手段が、前記通信状態を表す状態量の履歴データのうち所定の集約条件を満たすものを集約項目毎に集約して履歴空間データを生成するものである。
【0021】
請求項9に係る発明は、請求項8において、前記履歴集約手段が、前記情報通信ネットワークに接続する端末の利用環境に応じて設定された前記集約条件と前記集約項目に基づいて、履歴空間データを生成するものである。
【0022】
請求項10に係る発明は、請求項1から9のいずれかにおいて、前記検出手段が、前記情報通信ネットワークの通信状態の変化を生じさせたアクセス源を特定するものである。
【0023】
請求項11に係る発明は、情報通信ネットワークの通信状態の変化を検出する検出方法であって、履歴集約手段が、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出するステップとを含む、ものである。
【0024】
請求項12に係る発明は、第1の情報通信ネットワークと第2の情報通信ネットワーク間の通信状態の変化を検出して前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御する通信制御方法であって、履歴集約手段が、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の観測データに生じた差異に基づき、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態の変化を検出するステップと、制御手段が、前記検出手段の検出結果に基づいて前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御するステップと、を含む、ものである。
【0025】
請求項13に係る発明は、履歴集約手段が、情報通信ネットワークの通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生産するステップを含む、履歴空間データ生産方法である。
【0026】
請求項14に係る発明は、請求項11から13のいずれかに記載の方法をコンピュータに実行させることが可能なプログラムである。
【発明の効果】
【0027】
本発明によれば、アノマリ検知方式やDos/DDosに特化した検知方式のように個別の統計量を見るだけでは検知できないパスワード総当り攻撃を検知することができる。また、異常なヘッダ値をもつ通信情報、トロイの木馬、Dos/DDos攻撃、及び、バッファオーバーフロー攻撃等も侵入も検知することが可能である。さらに、TCPフロー、TCP個別パケット、UDP個別パケット、及び、ICMP個別パケットについても異常を検知することが可能である。従って、広範囲に渡ってネットワーク上の異常を検知することができる。
【0028】
また、ヒストグラムや円グラフ等を用いることでネットワーク上の通信情報を総合的に判定し、精密に分析することが可能となる。また、基準となる通常の状態を定義する必要がないため、非常に困難な閾値の設定を行わなくてよい。
【0029】
さらに、シグニチャ辞書に登録されていない亜種についても検知することが可能である。従って、亜種が発見された場合に、それを詳細に分析して亜種に関する情報をシグニチャ辞書に定義する手間が掛からなくて済む。
【0030】
さらに、例えば、曜日ごとや昼夜ごとや時間帯ごと等様々な異なる基準を、ネットワークを使用するユーザごとに作成することで、ユーザの個性を反映して検知することができ、メンテナンスフリーの実現が可能となる。また、タイムアウトによる分断ではなく、様々な異なる基準を用いることで検知の精度を上げることが可能となる。
【0031】
さらに、不正な侵入の相手を正確に特定することで、不正な侵入があった際のその後の対処をスムーズに行うことが可能となる。
【発明を実施するための最良の形態】
【0032】
本発明の実施の形態を以下に説明する。なお、本発明は以下の実施の形態により限定されるものではない。
【0033】
図1は、本発明の実施の形態に係るシステムの概要の一例を示すブロック図である。インターネット等の外部ネットワーク150に、ルータ130を介して、異常検知装置100と、運用監視ツール160と、サーバ類110と、ユーザパソコンやIP電話機器等の情報通信装置120が接続されている。サーバ類110と情報通信装置120とは、内部ネットワーク125により接続されている。外部ネットワーク150とルータ130の間には、外部からの通信を制御し、内部ネットワーク125の安全性を維持するためのファイヤウォール140が接続されている。異常検知装置100は、プローブ170とネットワークセキュリティデータベース(以下、「NSDB」という。)180とを備える。
【0034】
NSDB180は、検出部181と、履歴集約部183と、Traffic DB185とを備える。Traffic DB185は、Probe DB(以下、「PDB」という。)340とStatistical DB(以下、「SDB」という。)350とを備える。
【0035】
ここで、図1のシステムの処理の概要について簡単に説明する。異常検知装置100のプローブ170は、外部ネットワーク150からファイヤウォール140とルータ130を介して流れてくる情報の全パケット及び内部ネットワーク125より流出する情報の全パケットに対してキャプチャを行う。NSDB180では、プローブ170のキャプチャにより取り込まれた情報に基づいて異常を検知する処理が行われる。異常があると判断された場合は運用監視ツール160にアラートが送信される。運用監視ツール160は、受信したアラートに基づいて、全ての通信の遮断、IPアドレスごとの通信の遮断等により、サーバ類110や情報通信装置120への外部からの不正なアクセスや内部からの情報漏洩等を防止する。
【0036】
次に、本発明の実施の形態に係る異常検知装置100について説明する。図2は、図1の異常検知装置100のプローブ170の構成の一例を示したブロック図である。図3は、異常検知装置100のNSDB180の構成の一例を示したブロック図である。図4は、異常検知装置100が検出できる異常の種類をまとめた図である。
【0037】
まず、図2において、プローブ170は、キャプチャ部210とパケット集計部220と共有メモリ部230とを備える。図2においては、キャプチャ部210はキャプチャプロセスにより実現され、パケット集計部220はパケット集計プロセスにより実現されている。共有メモリ部230は、書き込み面番号部230aと第1のパケットブロック部230bと第2のパケットブロック部230cとを備える。このような構成を有するのは、共有メモリ部230の情報の読み込み処理と共有メモリ部230への情報の書き込み処理を制御するためである。第1パケットブロック部230bと第2パケットブロック部cは、キャプチャパケット数、キャプチャ時刻、及び、パケットバッファ(1〜n)の情報を有する。
【0038】
次に、図3において、NSDB180は、検出部181と履歴集約部183とTraffic DB185と異常検知テーブル187(図1では省略)とを備える。図3においては、検出部181は侵入検知プロセスにより実現され、履歴集約部183は統計量集約プロセスにより実現されている。Traffic DB185のPDB340は、プローブ170でキャプチャされた情報を集計した、トロイの木馬TCPバックドア情報340a、トロイの木馬UDPバックドア情報340b、トロイの木馬TCP情報漏洩情報340c、トロイの木馬UDP情報漏洩情報340d、バッファオーバーフロー情報340e、異常ヘッダ情報340f、及び、SynFlood情報340gの7種類の異常に関する情報を記憶する。SDB350は、プローブ170でキャプチャされた情報を集計した上記7つの情報のうち、最初の6つを所定の集約時間(10分、1時間、1日、28日)で集約した情報を記憶し、SynFloodに関しては異なる集約時間(1時間)で集約した情報を記憶する。PDB340は、記憶する情報とSDB350が記憶する情報の差異をヒストグラムを用いて抽出する。これによって、図4に示すような、シグニチャ辞書に登録されていない亜種の攻撃的侵入や、個別の統計量の変化を見るだけでは検知ができないパスワード総当り攻撃のような不正アクセスも検知することができる。
【0039】
次に、プローブ170及びNSDB180の処理について簡単に説明する。
【0040】
図2において、外部ネットワーク150上を流れるパケット情報は、キャプチャ部210によりキャプチャされる。キャプチャされたパケット情報は共有メモリ230の第1のパケットブロック部230b又は第2のパケットブロック部230cに書き込まれる。書き込まれたパケット情報は、パケット集計部220に読み込まれ、そこでパケット情報の集計処理が行われる。集計処理は、異常の種類ごとにハッシュマップを作成して行われる。集計結果の情報は、NSDB180へ送信される。
【0041】
図3において、集計結果の情報を受信したNSDB180では、検出部181によりPDB340の作成処理が行われる。PDB340が作成されると、検出部181は、履歴集約部183が所定の集約時間に応じて集約した情報とPDB340が持つ情報とをヒストグラムにより比較する。その比較の結果、異常があると判断されると、その異常情報が異常検知テーブル187に記憶される。
【0042】
次に、図2のプローブ102の処理についてさらに詳細に説明する。図5(a)は、図2のキャプチャ部210の処理の一例を示すフロー図である。キャプチャ部210は、外部ネットワーク150から流入してくる情報や内部から外部ネットワーク150に流出する情報の全パケットをキャプチャする処理等を行う。
【0043】
まず、ステップST101で初期化処理が行われる。この初期化処理では、プロセスのパラメータのチェックやシグナルの設定や共有メモリへのIDの割り付け等の処理が行われる。ステップST102では、パケット情報セマフォに対するP操作が行われる。セマフォとは、排他制御を必要とする際に用いる共通変数であり、処理の要求通知をP操作、処理の終了通知をV操作という。ここでは、P操作を行うことで、パケット情報に対して他のプロセスがアクセスできないようにし、V操作がなされるまで待ち状態となるように制御している。
【0044】
ステップST103では、共有メモリ部230の書き込み面番号部230aの書き込み面番号が読み出される。ステップST104では、ステップST103で読み込んだ書き込み面番号に基づいて、第1のパケットブロック部230bまたは第2のパケットブロック部230cにパケット情報が書き込まれる。書き込み面番号が1の場合は、第1のパケットブロック部230bに書き込まれ、書き込み面番号が2の場合は、第2のパケットブロック部230cに書き込まれる。この書き込み面番号の切り替えは、パケット集計部220により行われる。ステップST105では、ステップST104で書き込んだパケット情報に基づいて、キャプチャパケット数が更新される。そして、ステップST106でパケット情報セマフォに対するV操作が行われて、再びステップST102の処理に戻る。このV操作が行われた時点で、待ち状態になっていた他のプロセスはパケット情報にアクセスすることができるようになる。
【0045】
上記処理は、キャプチャ部210がシグナルSIGINTを受信するまで繰り返して行われる。ステップST107でシグナルSIGINTを受信した場合は、ステップST108で終了処理が行われてキャプチャ部210の処理を終了する。終了処理では、パケット情報セマフォに対するV操作や共有メモリの分離の処理等が行われる。
【0046】
図5(b)は、図2のパケット集計部220の処理の一例を示すフロー図である。パケット集計部220は、キャプチャ部210がキャプチャしたパケット情報を、異常の種類ごとに必要な項目を集計してハッシュマップを作成し、その集計結果の情報をNSDB180に送信する処理等を行う。
【0047】
まず、ステップST201で初期化処理が行われる。この初期化処理でも、キャプチャ部210の場合と同様に、プロセスのパラメータのチェックやシグナルの設定や共有メモリへのIDの割り付け等の処理が行われる。さらに、ここではNSDB180との接続処理や異常の種類ごとに必要なメモリの確保や集計処理フラグを0にする処理等も行われる。以降、集計処理は、シグナルSIGALARMを受け取ってから開始となる。シグナルSIGALARMを受信すると、集計処理フラグが0か1かが判定され、集計処理フラグが0であれば集計処理フラグを1にする。
【0048】
ステップST202では、集計処理フラグが0か1かが判定される。集計処理フラグが0の場合ステップST203で所定の時間(ここでは5秒に設定)が経過するまでポーズが行われる。そして5秒が経過するとステップST204の処理に進む。集計処理フラグが1の場合は、そのまま、ステップST204の集計処理に進む。
【0049】
ここで、ステップST204の集計処理についてさらに詳細に説明する。図6は、図5(b)のステップST204の集計処理の詳細の一例を示すフロー図である。
【0050】
まず、ステップST301で、集計処理フラグを0にする。ステップST302では、キャプチャパケット数がクリアされる。ステップST303では、キャプチャ時刻が更新される。ステップST304では、P操作が行われる。ステップST305では、共有メモリ部230の書き込み面番号部230aの書き込み面番号が切り替えられる。この切り替えのタイミングは所定の時間(ここでは5秒に設定)ごとに行われる。すなわち、第1のパケットブロック部230bまたは第2のパケットブロック部230cには5秒分のパケット情報が書き込まれていることになる。ステップST305の書き込み面番号の切り替え処理が終わると、ステップST306でV操作が行われる。
【0051】
ステップST307では、キャプチャ部210がキャプチャしたパケット情報数が、第1または第2のパケットブロックのパケットバッファ数以下かどうかが判定される。キャプチャパケット数がパケットバッファ数以下ではない場合は、ステップST312の処理に進む。キャプチャパケット数がパケットバッファ数以下の場合は、ステップST308の処理に進む。ステップST308では、1つのパケット情報を読み出す処理が行われる。ステップST309では、集計処理フラグが0か1かが判定される。集計処理フラグが1の場合にはステップST313の処理に進み、集計処理フラグが0の場合にはステップST310の処理に進む。ステップST310では攻撃といった異常ごとの集計処理が行われる。
【0052】
ここで、ステップST310の異常ごとの集計処理についてさらに詳細に説明する。図7は、図6のステップST310の異常ごとの集計処理の一例を示した模式図である。図8は、図6のステップST310の異常ごとの集計処理の詳細の一例を示したフロー図である。
【0053】
図7において、共有メモリ中のパケット情報を1つずつ読み出す(図中のa)。集計処理は異常ごと(上記に示した7種類の異常)に分かれており、その異常ごとの集計処理に、読み出したパケット情報を渡す(図中のb)。図7では1番目の集計処理にパケット情報を渡す様子を示している。パケット情報を受け取った集計処理は、異常を検知するのに必要な項目を取り出す(図中のc)。その後、取り出された項目に基づき、パケットの流れる方向、IPアドレスなどの条件が判定される(図中のd)。取り出された項目が連結され、固定長のchar型の連結のキーが作成される(図中のe)。また、拡張のためnopメンバが作られて構造体が作成される(図中のf)。そして、作成されたキーと作成された構造体とが関連付けられて格納される(図中のg)。
【0054】
次に、図8を参照して図7に示す集計処理のフローを説明する。まず、ステップST401で、パケット情報の判定処理が行われる。この判定処理は、パケット情報が異常検知の対象となるデータであるか否かの条件で行われるものである。ステップST402では、パケット情報がステップST401の条件を満たすか否かが判定される。条件を満たさない場合は、そのまま異常ごとの集計処理を終了する。条件を満たす場合は、ステップST403の処理に進む。ステップST403では、集計に必要な項目が抽出される(図7のcに対応)。ステップST404では、抽出された項目でキーが作成される(図7のeに対応)。ステップST405では、作成されたキーがハッシュマップに存在するかどうかが判定される。
【0055】
キーが示すデータがハッシュマップに存在する場合は、ステップST406の処理に進む。ステップST406では、ハッシュマップのデータをキーで検索して該当するデータを読み出す。ステップST407では、読み出した以前に読み出したデータを削除する。ステップST408では、読み出したデータのパケット数を更新して、ステップST411のインサート処理を行う。
【0056】
キーが示すデータがハッシュマップに存在しない場合は、ステップST409で新たな構造体の作成を行う(図7のfに対応)。ステップST410でパケット数を1にセットして、ステップST411のインサート処理を行う(図7のgに対応)。ステップST411のインサート処理により、ハッシュマップが作成されると1番目の集計処理を終了する。この処理を7番目の集計処理まで繰返し、全ての集計処理が終了すると、異常ごとの集計処理を終了する。
【0057】
図6に戻って、ステップST310で上記のような異常ごとの集計処理が行われると、ステップST311で、パケット情報の全てが読み出されたか否かが判定される。読み出されていないパケット情報があれば、再びステップST308に戻って1パケット情報ずつの集計処理を繰り返す。パケット情報の全てが読み出されていれば、ステップST312で、NSDB180に対して集計結果の情報を送信する。そして、ステップST313でメモリが開放され、集計処理を終了する。
【0058】
図5(b)に戻って、ステップST204の集計処理が終了すると、再びステップST202の処理に戻って、シグナルSIGINTを受信するまで処理が繰り返される。ステップST205で、シグナルSIGINTを受信した場合は、ステップST206で終了処理が行われ、パケット集計プロセスの処理を終了する。終了処理では、共有メモリの分離やメモリの開放処理やNSDB104との接続を切断する処理等が行われる。
【0059】
次に、図3のNSDB180の処理についてさらに詳細に説明する。
【0060】
図9は、図3の検出部181の処理の一例を示すフロー図である。検出部181では、プローブ170から送信された集計結果の情報に基づいてPDB340の作成する処理、PDB340のデータをSDB350に登録する処理、及び、異常の検知をする処理等が行われる。
【0061】
まず、ステップST501で初期化処理が行われる。この初期化処理では、データベースへの接続の確立処理やポート番号の取得や受信バッファのメモリの確保やソケットの作成等の処理が行われる。ステップST502では、プローブ170からのコネクション要求があるまでコネクション待ちが行われる。ステップST503では、プローブ170からのコネクション要求があった場合に、それに応答してプローブ170に対して受信可能である通知がなされる。ステップST504では、データ通信に成功したかどうかが判定される。データ通信に成功しなかった場合は、ステップST511でコネクションを切断して、再びステップST502のコネクション待ち状態となる。データ通信に成功した場合は、ステップST505で、プローブ170により送信された集計結果の情報を受信する。ステップST506では、データ通信に成功したかどうかが判定される。データ通信に成功しなかった場合は、ステップST512でバッファが初期化され、ステップST511でコネクションが切断されて、再びステップST502のコネクション待ち状態となる。データ通信に成功した場合は、次のステップST507の処理に進む。
【0062】
ステップST507では、PDB340の作成・登録処理が行われる。この作成・登録処理では、プローブ170で異常ごとに集計した集計結果の情報を、PDB340にコピーする処理が行われる。ステップST508では、PDB340の作成・登録処理が成功したかどうかが判定される。PDB340の作成・登録処理に成功しなかった場合は、ステップST509の処理を行わずにステップST510の処理に進む。PDB340の作成・登録処理に成功した場合は、ステップST509の処理に進む。ステップST509では、検知・登録処理が行われる。この検知・登録処理では、PDB340にコピーされた情報とSDB350に記憶されている情報の差異をヒストグラムにより抽出することで、ネットワークに異常があるかどうかの判定が行われ、その後PDB340の情報をSDB350に登録する処理が行われる。
【0063】
ここで、ステップST509の検知・登録処理についてさらに詳細に説明する。図10は、図9のステップST509の検知・登録処理の詳細の一例を示したフロー図である。
【0064】
まず、ステップST601でトランザクションが開始される。ステップST602では、SQLの実行処理が行われる。ここで実行されるSQLにより、PDB340に記憶された情報とSDB350に記憶された情報が比較され、異常の検知処理が行われる。
【0065】
ここで、検知処理について詳細に説明する。上記に示した7種類の異常を検知する処理は、大きく以下の4つの処理区分に分けることができる。
(1)異常なヘッダ値を持つパケット情報を検知する処理
(2)トロイの木馬を検知する処理
(3)Dos/DDos攻撃(SynFlood)を検知する処理
(4)バッファオーバーフロー攻撃を検知する処理
【0066】
以下に、上記4つの処理区分のそれぞれについて説明する。
【0067】
まず、処理区分(1)の異常なヘッダ値を持つパケット情報を検知する処理について説明する。図11(a)及び(b)は、ヒストグラムを用いて異常なヘッダ値を持つパケット情報を検知する処理の模式図である。図11(a)はPDB340の統計量を示すヒストグラムであり、図11(b)はSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸がコントロールフラグである。なお、S=000010B、A=010000B、AP=011000B、SA=010010B、F=010001B、SF=000011B、UA=110000Bである。
【0068】
図11(b)は、過去のパケット情報を集約した統計量が示すヒストグラムである。つまり、この統計量が定常の状態を示すヒストグラムであり、正常な統計量とすることができる。比較の目安となる閾値をパケット数の0.01%に設定したとする。図11(a)のヒストグラムと図11(b)のヒストグラムを比較すると、図11(a)のコントロールフラグUAとSFが異常であると判断できる。したがって、異常なヘッダ値を持つパケット情報を検知することができる。この時、過去のパケット情報を集約した統計量として、5秒、10分、1日、28日ごとに集約された統計量を用いて比較の処理を行う。
【0069】
図12は、異常なヘッダ値を検出する処理を実現するコードの一例を示す図であり、SQLで記載されている。図12において、(a)は異常検知処理であり、(b)はPDBよりSDBを生成する処理であり、(c)は統計量集約処理のうち圧縮用のものであり、(d)は統計量集約処理のうち検知用のものであり、(e)は統計量削除処理である。なお、図12で、閾値は例えば0.01であり、$PIDはプローブIDであり、$TIMは時間幅(例えば、5Sec、10min、1Day、1Mon)であり、$TIM1は%TIMに対して一つ前の時間幅(例えば、$TIM=10Minのとき5Sec)である。
【0070】
続いて、処理区分(2)のトロイの木馬を検知する処理について説明する。図11(c)及び(d)は、ヒストグラムを用いてトロイの木馬を検知する処理の模式図である。図11(c)はPDB340の統計量を示すヒストグラムであり、図11(d)はSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸が送信元IPアドレス/ポート番号である。図11(d)は、過去のパケット情報を集約した統計量が示すヒストグラムであり、処理区分(1)の場合と同様に、この統計量が定常の状態を示すヒストグラムとして、正常な統計量とすることができる。比較の目安となる閾値を所定のパケット数に設定し、図11(c)のヒストグラムと図11(d)のヒストグラムを比較すると、図11(c)のヒストグラムでは、過去に組合せの無い送信元IPアドレス/ポート番号の組合せを検出している。つまり、普段使用しない送信元IPアドレス/ポート番号が使用されていることから、トロイの木馬による不正なアクセスがあったことを検知することができる。このとき、過去のパケット情報を集約した統計量として、5秒、10分、1日、28日ごとに集約された統計量を用いて比較の処理を行う。
【0071】
図13は、トロイの木馬(TCPバックドア)を検出する処理を実現するコードの一例を示す図である。図13の(a)〜(e)は、それぞれ図12の(a)〜(e)に対応する。また、$PID、$TIM、$TIM1も図12と同様である。図14、図15、図16は、それぞれ、TCP情報漏洩、UDPバックドア、UDP情報漏洩のトロイの木馬を検出する処理を実現するコードの一例を示す図である。
【0072】
続いて、処理区分(3)のDos/DDos攻撃(SynFlood)を検知する処理について説明する。図11(e)及び(f)は、ヒストグラムを用いてDos/DDos攻撃を検知する処理の模式図である。図11(e)のグラフはPDB340の統計量を示すヒストグラムであり、図11(f)のグラフはSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がパケット数で、横軸が送信先IPアドレスである。この処理では、SDB350に記憶されている過去の同曜日同時間帯における統計量(N週間前までのパケット数の標準偏差:N=1,2,3,4)を元に、PDB340が記憶するパケット数の偏差値を算出し、偏差値が閾値以上であれば、PDB340のデータを異常であるとする。図11(f)は、過去のパケット情報を集約した統計量が示すヒストグラムである。この統計量が定常の状態を示すヒストグラムであり、正常な統計量とすることができる。比較の目安となる閾値を偏差値70に設定したとする。正常な統計量を示す図11(e)のヒストグラムと図11(f)のヒストグラムを比較すると、Eの送信先IPアドレスについて、偏差値が70以上である。つまり、Eの送信先IPアドレスでは、過去(過去の同曜日同時間帯)に無い大きさのパケット数で情報の通信がなされている。従って、Dos/DDos攻撃(SynFlood)を受けたと判断することができる。この時、過去のパケット情報を集約した統計量として、5秒、1時間ごとに集約された統計量を用いて比較の処理を行う。
【0073】
図17は、Dos/DDos攻撃を検出する処理を実現するコードの一例を示す図である。図17の(a)は検知処理、(b)はPDBからSDBの生成処理、(c)は統計量集約処理、(d)は統計量削除処理を実現する。また、$PID、$TIM、$TIM1は図12と同様である。
【0074】
続いて、処理区分(4)のバッファオーバーフロー攻撃を検知する処理を検知する処理について説明する。図11(g)及び(h)は、ヒストグラムを用いてバッファオーバーフロー攻撃を検知する処理の模式図である。図11(g)のグラフはPDB340の統計量を示すヒストグラムであり、図11(h)のグラフがSDB350の統計量を示すヒストグラムである。それぞれのヒストグラムは、縦軸がリクエスト数で横軸がリクエストサイズである。
【0075】
図18及び図19は、バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す図である。図18及び図19の(a)〜(d)は、それぞれ図12の(a)〜(e)に対応する。また、$PID、$TIM、$TIM1も図12と同様である。
【0076】
(1)〜(4)の4つの処理区分に従って検知処理を行うことで、上記に示した7種類の異常を検知することが可能となる。また、比較する際にヒストグラムにより幾何学的に差異を見ることができるため、異常な状態を簡単に検知することが可能となる。さらに、様々な集約時間ごとに集約した統計量で比較を行うので、精密な分析が可能となり、検知の精度を上げることができる。
【0077】
図10に戻って、ステップST602でSQLが実行され、異常の検知が行われると、ステップST603で異常があったかどうかが判定される。異常が無かったと判定された場合は、ステップST606の処理に進む。異常があったと判定された場合は、ステップST604の異常内容書き込み処理を行う。この異常内容書き込み処理では、検知された異常の内容に関する情報が異常検知テーブル360に記憶される。この情報に基づいて運用監視ツール106にアラートが送信される。ステップST605では、ステップST604の処理の結果、異常検知テーブル360に書き込みが成功したかどうかが判定される。書き込みが成功しなかった場合は、ステップST609でロールバックして処理を終了する。書き込みが成功した場合は、ステップST606でSQLの実行処理が行われる。
【0078】
このステップST606では、PDB340に記憶された情報をSDB350にコピーして登録するSQLが実行される。ステップST607では、ステップST606でSQLを実行した結果、登録に成功したかどうかが判定される。登録に成功しなかった場合は、ステップST609でロールバックをして処理を終了する。登録に成功した場合は、ステップST608でコミットして処理を終了する。
【0079】
図9に戻って、ステップST509で検知・登録処理が終了すると、ステップST510で検知の終了処理が行われる。この検知の終了処理では、次回の処理を行うための設定として、PDB340の全テーブルの削除や受信バッファのメモリの解放等の処理が行われる。そして、再びステップST503の受信可能通知の処理に戻って、シグナルSIGINTを受信するまで異常の検知処理等が繰り返して行われる。
【0080】
ステップST513でシグナルSIGINTを受信した場合は、ステップST514で終了処理が行われて、侵入検知プロセス310の処理を終了する。
【0081】
続いて、図3の履歴集約部183について説明する。履歴集約部183は、PDB340からSDB350に登録されるパケット情報を所定の集約時間で集約する処理等を行う。図20(a)は、図3の履歴集約部183の処理の一例を示すフロー図である。
【0082】
まず、ステップST701で初期化処理が行われる。この初期化処理では、データベースへの接続の確立処理や集約時間の設定の処理等が行われる。ステップST702では、次の集約時間まで待機される。以降、集約処理を開始する場合には、シグナルSIGALARMを受け取ってからの開始となる。シグナルSIGALARMは10秒ごとに送信され、SIGALARMを受信すると、受信した時間と集約時間を比較して、受信した時間が集約時間以降であれば処理開始フラグをONにする。
【0083】
ここで集約時間について説明する。図20(b)に、集約時間の概要を示す。OSからのシグナルが10秒ごとに送信されている。そのシグナルの受信時が、プロセス起動時(0)から集約時間(本発明の実施の形態では10分、1時間、1日、28日)経っている場合は集約処理を行う。そして、集約処理が完了後、集約時間に集約時間間隔幅を加算した値で集約時間を更新する。
【0084】
図20(a)に戻って、ステップST702の待機処理では、処理開始フラグがONに設定されるとステップST703の統計量集約処理に進む。
【0085】
ここで、ステップST703の統計量集約処理について詳細に説明する。図21は、統計量集約処理の一例を示したフロー図である。
【0086】
まず、ステップST801でキャプチャ時刻を取得する。ステップST802では、処理開始フラグをOFFにする。ステップST803では、最小集計開始時間を取得し、ステップST804では最大集計終了時間を取得する。ステップST805では、トランザクションが開始される。ステップST806では、SQLの実行処理が行われる。ここで実行されるSQLは、パケット情報を集約するSQLである。
【0087】
ここで、パケット情報の集約処理について具体的に説明する。図22に、集約処理の具体例を示す。図22に示す通り、上記で示した7種類の異常のうち、トロイの木馬TCPバックドア情報340a、トロイの木馬UDPバックドア情報340b、トロイの木馬TCP情報漏洩情報340c、トロイの木馬UDP情報漏洩情報340d、バッファオーバーフロー情報340e、及び、異常ヘッダ情報340fの情報を10分、1日、28日の単位で集約する。SynFlood情報340gは、1時間の単位で集約する。このようにして集約されたそれぞれの集約情報は、侵入検知プロセス310が異常を検知する処理において、比較の対象として利用される。
【0088】
図21に戻って、ステップST806でSQLが実行されると、ステップST807でSQLの実行処理に成功したかどうかが判定される。SQLの実行処理が成功しなかった場合は、ステップST808でロールバックを行って処理を終了する。SQLの実行処理が成功した場合は、ステップST809でSQLが全て実行されているかどうかが判定される。SQLが全て実行されていない場合は、ステップST806のSQLの実行処理に戻って、その他のSQLの実行処理を行う。SQLが全て実行されている場合は、ステップST810でコミットして処理を終了する。
【0089】
図20(a)に戻って、ステップST703の統計量集約処理が終了すると、ステップST704の集約処理の終了処理が行われる。この集約処理の終了処理では、次回の集約処理を行うための設定や集約時間の更新等の処理が行われる。そして、再びステップST702の待機処理に戻って、シグナルSIGINTを受信するまで統計処理が繰り返して行われる。
【0090】
ステップST705でシグナルSIGINTを受信した場合は、ステップST706で終了処理が行われて、履歴集約部183の処理を終了する。
【0091】
続いて、図23及び図24により、検知事例を示す。図23(a)は、2006年12月14日に発生した異常なヘッダ値を持つパケット情報の検知例を示す図である。図23(b)は、2006年11月18日に発生したトロイの木馬(TCPバックドア)の検知例を示す図である。図23(c)は、2006年9月28日に発生したトロイの木馬(TCP情報漏洩)の検知例を示す図である。図23(d)は、2006年9月23日に発生したトロイの木馬(UDPバックドア)の検知例を示す図である。図24(a)は、2006年11月7日に発生したトロイの木馬(UDP情報漏洩)の検知例を示す図である。図24(b)は、2006年9月21日に発生したDos/DDos攻撃(SynFlood)の検知例を示す図である。図24(c)は、2006年10月3日に発生したバッファオーバーフロー攻撃の検知例を示す図である。
【0092】
なお、1つのNSDB180に対して、プローブ170を複数対応させてもよい。
【0093】
また、比較する際に用いる図形は、ヒストグラムだけでなく、例えば円グラフでもよい。ヒストグラムであれば、いわば絶対量での比較となるのに対し、円グラフであれば、いわば相対量での比較となることとなる。
【0094】
さらに、プローブ102とNSDB104を一体的に捉えてもよい。その場合、パケット集計プロセスと侵入検知プロセスを1つのプロセスとして捉えてもよい。
【0095】
さらに、履歴集約部183による集約処理に代えて、SDB350に所定の期間(例えば5秒間)のパケット情報をできるだけ多く記憶させ、PDB340と記憶されたパケット情報との比較処理を行って、異常を検知するようにしてもよい。
【図面の簡単な説明】
【0096】
【図1】本発明の実施の形態に係るシステムの概要の一例を示すブロック図である。
【図2】図1の異常検知装置100のプローブ170の構成の一例を示したブロック図である。
【図3】異常検知装置100のNSDB180の構成の一例を示したブロック図である。
【図4】異常検知装置100が検出できる異常の種類をまとめた図である。
【図5】図2のプローブ170の処理の一例を示すフロー図であり、(a)はキャプチャ部210の処理の一例を示し、(b)は図2のパケット集計部220の処理の一例を示す。
【図6】図5(b)のステップST204の集計処理の詳細の一例を示すフロー図である。
【図7】図6のステップST310の異常ごとの集計処理の一例を示した模式図である。
【図8】図6のステップST310の異常ごとの集計処理の詳細の一例を示したフロー図である。
【図9】図3の検出部181の処理の一例を示すフロー図である。
【図10】図9のステップST509の検知・登録処理の詳細の一例を示したフロー図である。
【図11】ヒストグラムを用いて、異常なヘッダ値を持つパケット情報、トロイの木馬、Dos/DDos攻撃、及び、バッファオーバーフロー攻撃を検知する処理の模式図である。
【図12】異常なヘッダ値を検出する処理を実現するコードの一例を示す図である。
【図13】トロイの木馬(TCPバックドア)を検出する処理を実現するコードの一例を示す図である。
【図14】トロイの木馬(TCP情報漏洩)を検出する処理を実現するコードの一例を示す図である。
【図15】トロイの木馬(UDPバックドア)を検出する処理を実現するコードの一例を示す図である。
【図16】トロイの木馬(UDP情報漏洩)を検出する処理を実現するコードの一例を示す図である。
【図17】Dos/DDos攻撃を検出する処理を実現するコードの一例を示す図である。
【図18】バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す第1図である。
【図19】バッファオーバーフロー攻撃を検出する処理を実現するコードの一例を示す第2図である。
【図20】図3の履歴集約部183の処理を説明するための図である。
【図21】図3の履歴集約部183による統計量集約処理の一例を示したフロー図である。
【図22】図3の履歴集約部183による集約処理の具体例を示す図である。
【図23】本実施例による異常の検知例を示す第1図である。
【図24】本実施例による異常の検知例を示す第2図である。
【符号の説明】
【0097】
100 異常検知装置、170 プローブ、180 NSDB、181 検出部、183 履歴集約部
【特許請求の範囲】
【請求項1】
情報通信ネットワークの通信状態の変化を検出する検出装置であって、
前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する履歴集約手段と、
前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出する検出手段とを備える、検出装置。
【請求項2】
前記検出手段は、前記通信状態を表す状態量をヒストグラム化し又は前記通信状態を表す状態量の割合を円グラフ化することにより、前記差異を特定する、請求項1記載の検出装置。
【請求項3】
前記履歴空間データは、TCPコントロールフラグの組み合わせと各コントロールフラグについてのパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化として異常なヘッダ値を有するパケット情報を検出する、請求項1又は2記載の検出装置。
【請求項4】
前記履歴空間データは、送信元IPアドレス又はポート番号とそれに対するパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてトロイの木馬を検出する、請求項1又は2記載の検出装置。
【請求項5】
前記履歴空間データは、送信先IPアドレスとそれに対するパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてDos又はDDos攻撃を検出する、請求項1又は2記載の検出装置。
【請求項6】
前記履歴空間データは、リクエストサイズとそれに対するリクエスト数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてバッファオーバーフロー攻撃を検出する、請求項1又は2記載の検出装置。
【請求項7】
前記履歴空間データは、FINフラグが1である比率であり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてパスワード総当り攻撃を検出する、請求項1又は2記載の検出装置。
【請求項8】
前記履歴集約手段は、前記通信状態を表す状態量の履歴データのうち所定の集約条件を満たすものを集約項目毎に集約して履歴空間データを生成する、請求項1から7のいずれかに記載の検出装置。
【請求項9】
前記履歴集約手段は、前記情報通信ネットワークに接続する端末の利用環境に応じて設定された前記集約条件と前記集約項目に基づいて、履歴空間データを生成する、請求項8記載の検出装置。
【請求項10】
前記検出手段は、前記情報通信ネットワークの通信状態の変化を生じさせたアクセス源を特定する、請求項1から9のいずれかに記載の検出装置。
【請求項11】
情報通信ネットワークの通信状態の変化を検出する検出方法であって、
履歴集約手段が、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、
検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出するステップとを含む、検出方法。
【請求項12】
第1の情報通信ネットワークと第2の情報通信ネットワーク間の通信状態の変化を検出して前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御する通信制御方法であって、
履歴集約手段が、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、
検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の観測データに生じた差異に基づき、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態の変化を検出するステップと、
制御手段が、前記検出手段の検出結果に基づいて前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御するステップと、を含む、通信制御方法。
【請求項13】
履歴集約手段が、情報通信ネットワークの通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生産するステップを含む、履歴空間データ生産方法。
【請求項14】
請求項11から13のいずれかに記載の方法をコンピュータに実行させることが可能なプログラム。
【請求項1】
情報通信ネットワークの通信状態の変化を検出する検出装置であって、
前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成する履歴集約手段と、
前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出する検出手段とを備える、検出装置。
【請求項2】
前記検出手段は、前記通信状態を表す状態量をヒストグラム化し又は前記通信状態を表す状態量の割合を円グラフ化することにより、前記差異を特定する、請求項1記載の検出装置。
【請求項3】
前記履歴空間データは、TCPコントロールフラグの組み合わせと各コントロールフラグについてのパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化として異常なヘッダ値を有するパケット情報を検出する、請求項1又は2記載の検出装置。
【請求項4】
前記履歴空間データは、送信元IPアドレス又はポート番号とそれに対するパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてトロイの木馬を検出する、請求項1又は2記載の検出装置。
【請求項5】
前記履歴空間データは、送信先IPアドレスとそれに対するパケット数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてDos又はDDos攻撃を検出する、請求項1又は2記載の検出装置。
【請求項6】
前記履歴空間データは、リクエストサイズとそれに対するリクエスト数のデータであり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてバッファオーバーフロー攻撃を検出する、請求項1又は2記載の検出装置。
【請求項7】
前記履歴空間データは、FINフラグが1である比率であり、
前記検出手段は、前記情報通信ネットワークの通信状態の変化としてパスワード総当り攻撃を検出する、請求項1又は2記載の検出装置。
【請求項8】
前記履歴集約手段は、前記通信状態を表す状態量の履歴データのうち所定の集約条件を満たすものを集約項目毎に集約して履歴空間データを生成する、請求項1から7のいずれかに記載の検出装置。
【請求項9】
前記履歴集約手段は、前記情報通信ネットワークに接続する端末の利用環境に応じて設定された前記集約条件と前記集約項目に基づいて、履歴空間データを生成する、請求項8記載の検出装置。
【請求項10】
前記検出手段は、前記情報通信ネットワークの通信状態の変化を生じさせたアクセス源を特定する、請求項1から9のいずれかに記載の検出装置。
【請求項11】
情報通信ネットワークの通信状態の変化を検出する検出方法であって、
履歴集約手段が、前記通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、
検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記通信状態を表す状態量の観測データに生じた差異に基づき、前記情報通信ネットワークの通信状態の変化を検出するステップとを含む、検出方法。
【請求項12】
第1の情報通信ネットワークと第2の情報通信ネットワーク間の通信状態の変化を検出して前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御する通信制御方法であって、
履歴集約手段が、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生成するステップと、
検出手段が、前記履歴集約手段によって生成された履歴空間データを基準として前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態を表す状態量の観測データに生じた差異に基づき、前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態の変化を検出するステップと、
制御手段が、前記検出手段の検出結果に基づいて前記第1の情報通信ネットワークと前記第2の情報通信ネットワーク間の通信状態又は前記第1の情報通信ネットワーク内の通信状態を制御するステップと、を含む、通信制御方法。
【請求項13】
履歴集約手段が、情報通信ネットワークの通信状態を表す状態量の履歴データを集約項目毎に集約して履歴空間データを生産するステップを含む、履歴空間データ生産方法。
【請求項14】
請求項11から13のいずれかに記載の方法をコンピュータに実行させることが可能なプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図11】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図11】
【図23】
【図24】
【公開番号】特開2008−252427(P2008−252427A)
【公開日】平成20年10月16日(2008.10.16)
【国際特許分類】
【出願番号】特願2007−90177(P2007−90177)
【出願日】平成19年3月30日(2007.3.30)
【出願人】(504145342)国立大学法人九州大学 (960)
【出願人】(505164645)株式会社ネットワーク応用技術研究所 (9)
【Fターム(参考)】
【公開日】平成20年10月16日(2008.10.16)
【国際特許分類】
【出願日】平成19年3月30日(2007.3.30)
【出願人】(504145342)国立大学法人九州大学 (960)
【出願人】(505164645)株式会社ネットワーク応用技術研究所 (9)
【Fターム(参考)】
[ Back to top ]