(57)【要約】【課題】トラフィック異常とデータ異常の組み合わせに特徴がある場合であっても、異常の検知漏れや検知間違いを低減する。【解決手段】ネットワーク異常検知装置１は、ヘッダ異常検知部１１により、ヘッダパターンの異常度合いとトラフィック異常閾値とに基づいてトラフィック異常を検知すると共に、データ異常検知部１２により、データパターンの異常度合いとデータ異常閾値とに基づいて、データ異常を検知し、その後、異常判断部２５により、トラフィック異常と、データ異常とに基づいて、パケットの異常を判断する。閾値調整部２４は、トラフィック異常閾値とデータ異常閾値とのうち、複数のヘッダパターンの異常度合いの変化と複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する。【選択図】図１
2011135131.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に流れるパケットを受信する受信手段と、
前記受信手段により受信されたパケットのヘッダパターンを蓄積し、当該ヘッダパターンごとに異常度合いを求めるヘッダ学習手段と、
前記ヘッダ学習手段により求められた複数のヘッダパターンの異常度合いに基づいてトラフィック異常を判定するためのトラフィック異常閾値を設定するトラフィック異常閾値設定手段と、
前記受信手段により受信されたパケットに含まれるヘッダパターンの異常度合いと前記トラフィック異常閾値とに基づいて、トラフィック異常を検知するトラフィック異常検知手段と、
前記受信手段により受信されたパケットのデータパターンを蓄積し、当該データパターンごとに異常度合いを求めるデータ学習手段と、
前記データ学習手段により求められた複数のデータパターンの異常度合いに基づいてデータ異常を判定するためのデータ異常閾値を設定するデータ異常閾値設定手段と、
前記受信手段により受信されたパケットに含まれるデータパターンの異常度合いと前記データ異常閾値とに基づいて、データ異常を検知するデータ異常検知手段と、
前記トラフィック異常検知手段により検知されたトラフィック異常と、前記データ異常検知手段により検知されたデータ異常とに基づいて、前記受信手段により受信されたパケットの異常を判断する異常判断手段と、
前記トラフィック異常閾値と前記データ異常閾値とのうち、前記複数のヘッダパターンの異常度合いの変化と前記複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する閾値調整手段と
を備えることを特徴とするネットワーク異常検知装置。
【請求項２】
前記閾値調整手段は、前記トラフィック異常閾値と前記データ異常閾値との一方の閾値を固定して他方の閾値を変更した後に、当該固定した閾値を変更させることを特徴とする請求項１に記載のネットワーク異常検知装置。
【請求項３】
前記閾値調整手段は、前記トラフィック異常閾値と前記データ異常閾値とのうち、前記ヘッダ学習手段により異常度合いが求められたヘッダパターンと前記データ学習手段により求められたデータパターンとのうち、パターンの個数が少ない方の閾値を固定し、パターンの個数が多い方の閾値を変更することを特徴とする請求項１に記載のネットワーク異常検知装置。
【請求項４】
前記ヘッダ学習手段は、前記ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、
前記閾値調整手段は、前記データパターンに含まれるデータと、前記ヘッダパターンごとのデータとの間に相関がある場合には、当該トラフィック異常閾値又はデータ異常閾値を変化させること
を特徴とする請求項１に記載のネットワーク異常検知装置。
【請求項５】
前記ヘッダ学習手段は、前記ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、
前記データパターンに含まれるデータと、前記ヘッダパターンごとのデータとの間に相関がある場合には、当該相関があるヘッダパターンの異常度合い又は当該相関があるデータパターンの異常度合いを高くすること
を特徴とする請求項１に記載のネットワーク異常検知装置。
【請求項６】
前記ヘッダ学習手段は、前記ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、
前記閾値調整手段は、前記データパターンに含まれるデータと、前記ヘッダパターンごとのデータとの間に相関がない場合には、当該トラフィック異常閾値又はデータ異常閾値を変化度合いを高くすること
を特徴とする請求項１に記載のネットワーク異常検知装置。
【請求項７】
前記閾値調整手段は、前記トラフィック異常閾値及び前記データ異常閾値の最大値及び最小値からなる限界範囲を設け、前記トラフィック異常閾値又は前記データ異常閾値が限界範囲を超えた場合に、閾値の変更を停止することを特徴とする請求項１乃至請求項６の何れか一項に記載のネットワーク異常検知装置。
【請求項８】
ネットワーク上に流れるパケットを受信する通信機器内のコンピュータによりされるネットワーク異常検知プログラムであって、
前記ネットワークから受信したパケットのヘッダパターンを蓄積し、当該ヘッダパターンごとに異常度合いを求めるヘッダ学習機能と、
前記ヘッダ学習機能により求められた複数のヘッダパターンの異常度合いに基づいてトラフィック異常を判定するためのトラフィック異常閾値を設定するトラフィック異常閾値設定機能と、
前記ネットワークから受信したパケットに含まれるヘッダパターンの異常度合いと前記トラフィック異常閾値とに基づいて、トラフィック異常を検知するトラフィック異常検知機能と、
前記ネットワークから受信されたパケットのデータパターンを蓄積し、当該データパターンごとに異常度合いを求めるデータ学習機能と、
前記データ学習機能により求められた複数のデータパターンの異常度合いに基づいてデータ異常を判定するためのデータ異常閾値を設定するデータ異常閾値設定機能と、
前記ネットワークから受信されたパケットに含まれるデータパターンの異常度合いと前記データ異常閾値とに基づいて、データ異常を検知するデータ異常検知手段と、
前記トラフィック異常検知機能により検知されたトラフィック異常と、前記データ異常検知機能により検知されたデータ異常とに基づいて、前記ネットワークから受信されたパケットの異常を判断する異常判断機能と、
前記トラフィック異常閾値と前記データ異常閾値とのうち、前記複数のヘッダパターンの異常度合いの変化と前記複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する閾値調整機能と
を前記コンピュータに備えさせることを特徴とするネットワーク異常検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正な通信データを検知するネットワーク異常検知装置及びネットワーク異常検知プログラムに関する。
【背景技術】
【０００２】
従来より、ネットワーク上のトラフィック異常、データ異常を検知する技術としては、下記の特許文献１，２に開示されたものなどが知られている。トラフィック異常とは、例えば、ＩＰ（Internet Protocol）アドレスの宛先の通信方向等の異常を指す。データ異常は、コンピュータウィルスによって生成されたデータ等の異常を指す。
【０００３】
特許文献１には、ネットワーク上に流れるパケットを観測し、当該観測パケットのトラフィックの種別を要素とする相関係数に基づいて異常パケットを送受信する通信機器の特定を行っていることが記載されている。また、観測パケットに含まれるＩＰアドレスとポート番号に関する外れ値の検知手段（Outlier Detection）を用いたトラフィック異常の検知技術も知られている。
【０００４】
特許文献２には、ネットワーク上のデータ異常（ウィルスを特定するデータ）を検知するための技術として、ウィルスパターン（シグネチャ）のチェックを行う技術が記載されている。これに対し、従来より、PAYL/Anagramと呼ばれるパターンデータをN-gram方式と呼ばれるデータ検索方法を応用して、トラフィックに含まれるデータの前後のデータ要素に基づいて異常データの特定を行う技術が知られている。これにより、特定のシグネチャに依らずに異常データの特定を行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１９５２５号公報
【特許文献２】特開２００７−２４３５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した従来の技術では、ネットワーク上のトラフィック異常の検知と、ネットワーク上のデータ異常を別々の手法で行っていた。従って、トラフィック異常であってデータ異常である場面において、正しく異常を評価することができなかった。
【０００７】
例えば、図１に示すようなサーバＳ１、クライアントＣ１，Ｃ２，Ｃ３とを含むネットワーク構成におけるトラフィック異常、データ異常を検知するとする。また、所定の単位時間内にネットワーク上を流れるパケットのトラフィック異常と判定する基準となる閾値ＴＨ１と、ネットワーク上に流れるパケットに含まれるデータ異常と判定する基準となる閾値ＴＨ２とを定めておくとする。更に、クライアントＣ１，Ｃ２，Ｃ３は、正常時にはサーバＳ１にアクセスするとする。
【０００８】
クライアントＣ１，Ｃ２が正常であり、クライアントＣ３がウィルス（Blaster）に感染しているとする。クライアントＣ１，Ｃ２は、サーバＳ１にアスキー（ASCII）データを１００００パケットづつ送信する。一方、クライアントＣ３は、アスキーデータを９７００パケット送り、バイナリ（BINARY）データを３００パケット送る。
【０００９】
この場合、上述したトラフィック異常の検知を行うと、クライアントＣ１，Ｃ２，Ｃ３からサーバＳ１への通信は、それぞれ、合計で１００００パケットづつ送信している。これらの通信は、ネットワーク全体に対する通信方向に対して少ない通信量ではなく、閾値ＴＨ１に基づいて、トラフィック異常ではないと判定される。
【００１０】
しかし、クライアントＣ３は、サーバＳ１とは異なる方向であって、サーバＳ１のようにサービスを提供しないクライアントＣ１に対して１００パケット、クライアントＣ２に対して１０パケットを送信している。
【００１１】
ここで、ネットワーク全体において、クライアントＣ１〜Ｃ３がサーバＳ１に対して１００００パケットづつの３００００パケットを送信し、クライアントＣ３が、クライアントＣ１に対して１００パケット、クライアントＣ２に対して１０パケットを送信している。したがって、ネットワーク全体における送信された合計パケットは、３０１１０パケットとなる。このような状況において、上述のトラフィック異常検知技術によれば、クライアントＣ３がクライアントＣ１，Ｃ２に対して送信した１１０パケットが、全送信パケットの３０１１０パケットよりも非常に少ない割合となり、トラフィック異常の閾値ＴＨ１に基づいて、トラフィック異常であると判定されてしまう。
【００１２】
しかし、クライアントＣ３がクライアントＣ１に送信した６３パケットは、正常なＸＭＬ（Extensible Markup Language）データである。また、クライアントＣ３がクライアントＣ２に送信した１０パケットのうち、７パケットは正常なアスキーデータである。したがって、このトラフィック異常検知技術では、正常なＸＭＬデータ及びアスキーデータを、トラフィック異常と誤検知してしまう。
【００１３】
また、データ異常に関し、ネットワーク全体における全３０１１０パケットに含まれるアスキーデータに対して、少ない割合のＸＭＬデータ及びバイナリデータは、上述の閾値ＴＨ２に基づいて、上述のデータ異常検知技術によって、データ異常であると検知されてしまう。
【００１４】
しかし、クライアントＣ３がクライアントＣ１に送信した６３パケットは、正常なＸＭＬデータである。また、クライアントＣ３がクライアントＣ２に送信した１０パケットのうち、７パケットは正常なアスキーデータである。したがって、このデータ異常検知技術では、正常なＸＭＬデータ及びアスキーデータを、データ異常と誤検知してしまう。
【００１５】
ここで、図１において、クライアントＣ３から送信された悪意のコードであるバイナリデータを含むパケットのみが、トラフィック異常且つデータ異常である。
【００１６】
しかし、単純にトラフィック方向のみで異常を検知するトラフィック異常検知技術では、クライアントＣ３からサーバＳ１に送信されたバイナリデータを含む３００パケットは、トラフィック異常とはみなされず、検知漏れが発生する。
【００１７】
また、トラフィック異常検知技術によれば、クライアントＣ３からクライアントＣ１に送信されるＸＭＬデータの６３パケットは、本来であれば正常な通信であるが、トラフィック異常且つデータ異常と判定されてしまう。
【００１８】
更に、クライアントＣ３からクライアントＣ２に送信される３パケットのバイナリデータは、トラフィック異常且つデータ異常と判定できる。しかし、データ異常の方法によっては、６３パケットのＸＭＬデータに対して、３７パケットのバイナリデータの割合から、バイナリデータがデータ異常と判定されない可能性もある。
【００１９】
このように、データマインイングのスコア（異常度合い）による異常判定は、スコアの算出方法とデータの構成に依存して異常の検知漏れ（フォールスポジティブ性が低い）、検知間違い（フォールスネガティブ性が低い）を生ずる。これにより、トラフィック異常とデータ異常のインシデントの組み合わせに特徴（例えばワーム型ウィルス）がある場合には、片方の異常検知方式を単純に並列処理するだけでは、検知漏れや検知間違いを含んだ異常判定となる問題があった。
【００２０】
そこで、本発明は、上述した実情に鑑みて提案されたものであり、トラフィック異常とデータ異常の組み合わせに特徴がある場合であっても、異常の検知漏れや検知間違いを低減できるネットワーク異常検知装置及びネットワーク異常検知プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明に係るネットワーク異常検知装置は、受信手段によりネットワーク上に流れるパケットを受信すると、ヘッダ学習手段により、受信手段により受信されたパケットのヘッダパターンを蓄積し、当該ヘッダパターンごとに異常度合いを求め、トラフィック異常閾値設定手段により、ヘッダ学習手段により求められた複数のヘッダパターンの異常度合いに基づいてトラフィック異常を判定するためのトラフィック異常閾値を設定する。一方、本発明に係るネットワーク異常検知装置は、受信手段によりネットワーク上に流れるパケットを受信すると、データ学習手段により、受信手段により受信されたパケットのデータパターンを蓄積し、当該データパターンごとに異常度合いを求め、データ異常閾値設定手段により、データ学習手段により求められた複数のデータパターンの異常度合いに基づいてデータ異常を判定するためのデータ異常閾値を設定する。
【００２２】
これにより、ネットワーク異常検知装置は、トラフィック異常検知手段により、受信手段により受信されたパケットに含まれるヘッダパターンの異常度合いとトラフィック異常閾値とに基づいて、トラフィック異常を検知すると共に、データ異常検知手段により、受信手段により受信されたパケットに含まれるデータパターンの異常度合いとデータ異常閾値とに基づいて、データ異常を検知し、その後、異常判断手段により、トラフィック異常検知手段により検知されたトラフィック異常と、データ異常検知手段により検知されたデータ異常とに基づいて、受信手段により受信されたパケットの異常を判断する。
【００２３】
このようなネットワーク異常検知装置は、上述の課題を解決するために、閾値調整手段により、トラフィック異常閾値とデータ異常閾値とのうち、複数のヘッダパターンの異常度合いの変化と複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する。
【００２４】
また、本発明に係るネットワーク異常検知装置において、閾値調整手段は、トラフィック異常閾値とデータ異常閾値との一方の閾値を固定して他方の閾値を変更した後に、当該固定した閾値を変更させることが望ましい。
【００２５】
更に、本発明に係るネットワーク異常検知装置において、閾値調整手段は、トラフィック異常閾値とデータ異常閾値とのうち、ヘッダ学習手段により異常度合いが求められたヘッダパターンとデータ学習手段により求められたデータパターンとのうち、パターンの個数が少ない方の閾値を固定し、パターンの個数が多い方の閾値を変更することが望ましい。
【００２６】
更に、本発明に係るネットワーク異常検知装置において、ヘッダ学習手段は、ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、閾値調整手段は、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がある場合には、当該トラフィック異常閾値又はデータ異常閾値を変化させることが望ましい。
【００２７】
更に、本発明に係るネットワーク異常検知装置において、ヘッダ学習手段は、ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がある場合には、当該相関があるヘッダパターンの異常度合い又は当該相関があるデータパターンの異常度合いを高くすることが望ましい。
【００２８】
更に、本発明に係るネットワーク異常検知装置において、ヘッダ学習手段は、ヘッダパターンごとに、当該ヘッダに付加されていたデータを蓄積し、閾値調整手段は、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がない場合には、当該トラフィック異常閾値又はデータ異常閾値を変化度合いを高くすることが望ましい。
【００２９】
更に、本発明に係るネットワーク異常検知装置において、閾値調整手段は、トラフィック異常閾値及びデータ異常閾値の最大値及び最小値からなる限界範囲を設け、トラフィック異常閾値又はデータ異常閾値が限界範囲を超えた場合に、閾値の変更を停止することが望ましい。
【００３０】
更に、ネットワーク上に流れるパケットを受信する通信機器内のコンピュータによりされるネットワーク異常検知プログラムは、ネットワーク上に流れるパケットを受信すると、ヘッダ学習機能により、受信されたパケットのヘッダパターンを蓄積し、当該ヘッダパターンごとに異常度合いを求め、トラフィック異常閾値設定機能により、ヘッダ学習機能により求められた複数のヘッダパターンの異常度合いに基づいてトラフィック異常を判定するためのトラフィック異常閾値を設定する。一方、本発明に係るネットワーク異常検知装置は、ネットワーク上に流れるパケットを受信すると、データ学習機能により、受信されたパケットのデータパターンを蓄積し、当該データパターンごとに異常度合いを求め、データ異常閾値設定機能により、データ学習機能により求められた複数のデータパターンの異常度合いに基づいてデータ異常を判定するためのデータ異常閾値を設定する。
【００３１】
これにより、ネットワーク異常検知プログラムは、トラフィック異常検知機能により、受信されたパケットに含まれるヘッダパターンの異常度合いとトラフィック異常閾値とに基づいて、トラフィック異常を検知すると共に、データ異常検知機能により、受信されたパケットに含まれるデータパターンの異常度合いとデータ異常閾値とに基づいて、データ異常を検知し、その後、異常判断機能により、トラフィック異常検知機能により検知されたトラフィック異常と、データ異常検知機能により検知されたデータ異常とに基づいて、受信されたパケットの異常を判断する。
【００３２】
このようなネットワーク異常検知プログラムは、上述の課題を解決するために、閾値調整機能により、トラフィック異常閾値とデータ異常閾値とのうち、複数のヘッダパターンの異常度合いの変化と複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する。
【発明の効果】
【００３３】
本発明に係るネットワーク異常検知装置によれば、トラフィック異常閾値とデータ異常閾値とのうち、複数のヘッダパターンの異常度合いの変化と複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する。これにより、ネットワーク異常検知装置によれば、トラフィック異常とデータ異常とが重なる場合であっても、２つの異常の閾値を固定することなく、異常の誤検知及び検知漏れを低減できる。
【００３４】
また、本発明に係るネットワーク異常検知装置によれば、トラフィック異常閾値とデータ異常閾値との一方の閾値を固定して他方の閾値を変更した後に、当該固定した閾値を変更させる。これにより、ネットワーク異常検知装置によれば、異常なイベントが多すぎる又は少なすぎる場合であっても、固定していた閾値を変更することによって新たな異常を検知でき、異常の誤検知及び検知漏れを低減できる。
【００３５】
更に、本発明に係るネットワーク異常検知装置によれば、トラフィック異常閾値とデータ異常閾値とのうち、ヘッダパターンとデータパターンとのうち、パターンの個数が少ない方の閾値を固定し、パターンの個数が多い方の閾値を変更する。これにより、トラフィック異常とデータ異常とが重なる場合でも、パターンの個数が多い方の閾値を先に変化させて、その後に、パターンの個数が少ない方の閾値を変化させることができ、閾値調整を効率化できる。
【００３６】
更に、本発明に係るネットワーク異常検知装置によれば、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がある場合には、当該データパターンとヘッダパターンの双方が異常又は正常である可能性が高い。よって、ネットワーク異常検知装置は、当該トラフィック異常閾値又はデータ異常閾値を変化度合いを大きくして、閾値調整を効率化することができる。
【００３７】
更に、本発明に係るネットワーク異常検知装置によれば、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がある場合には、当該相関があるヘッダパターンの異常度合い又は当該相関があるデータパターンの異常度合いを高くするので、当該高くしたパターン間の差を高くして、閾値を設定しやすくでき、閾値調整を効率化できる。
【００３８】
更に、本発明に係るネットワーク異常検知装置によれば、データパターンに含まれるデータと、ヘッダパターンごとのデータとの間に相関がない場合には、当該トラフィック異常閾値又はデータ異常閾値を変化度合いを高くするので、当該高くしたパターンの差を高くして、閾値を設定しやすくでき、閾値調整を効率化できる。
【００３９】
更に、本発明に係るネットワーク異常検知装置によれば、トラフィック異常閾値及びデータ異常閾値の最大値及び最小値からなる限界範囲を設け、トラフィック異常閾値又はデータ異常閾値が限界範囲を超えた場合に、閾値の変更を停止するので、誤って閾値を設定して、異常の誤検知及び検出漏れを回避できる。
【００４０】
更に、本発明に係るネットワーク異常検知プログラムによれば、トラフィック異常閾値とデータ異常閾値とのうち、複数のヘッダパターンの異常度合いの変化と複数のデータパターンの異常度合いの変化とが大きい方の閾値を変更する。これにより、ネットワーク異常検知プログラムによれば、トラフィック異常とデータ異常とが重なる場合であっても、２つの異常の閾値を固定することなく、異常の誤検知及び検知漏れを低減できる。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態として示すネットワーク異常検知装置が接続される通信ネットワークについて示す図である。
【図２】本発明の一実施形態として示すネットワーク異常検知装置が所定期間内の通信から異常を検知することのシーケンス図である。
【図３】本発明の一実施形態として示すネットワーク異常検知装置の構成を示すブロック図である。
【図４】本発明の一実施形態として示すネットワーク異常検知装置において作成するパケット群を示す図である。
【図５】本発明の一実施形態として示すネットワーク異常検知装置において作成するヘッダパターン群を示す図である。
【図６】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターン群を生成する処理手順を示すフローチャートである。
【図７】本発明の一実施形態として示すネットワーク異常検知装置において作成するデータパターン群を示す図である。
【図８】本発明の一実施形態として示すネットワーク異常検知装置において、データパターン群を生成する処理手順を示すフローチャートである。
【図９】本発明の一実施形態として示すネットワーク異常検知装置において、（ａ）はヘッダパターンに基づく異常検知結果、（ｂ）はデータパターンに基づく異常検知結果、（ｃ）は通信ネットワークにおける異常な通信を示す。
【図１０】本発明の一実施形態として示すネットワーク異常検知装置において、（ａ）はヘッダパターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係を示し、（ｂ）はデータパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係を示し、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信を示す。
【図１１】本発明の一実施形態として示すネットワーク異常検知装置が図１０に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１２】本発明の一実施形態として示すネットワーク異常検知装置が図１１に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１３】本発明の一実施形態として示すネットワーク異常検知装置が図１２に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１４】本発明の一実施形態として示すネットワーク異常検知装置が図１３に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１５】本発明の一実施形態として示すネットワーク異常検知装置が図１４に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１６】本発明の一実施形態として示すネットワーク異常検知装置が図１５に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１７】本発明の一実施形態として示すネットワーク異常検知装置が図１６に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１８】本発明の一実施形態として示すネットワーク異常検知装置が図１７に対してトラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図１９】本発明の一実施形態として示すネットワーク異常検知装置が図１８に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図２０】本発明の一実施形態として示すネットワーク異常検知装置が図１９に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図２１】本発明の一実施形態として示すネットワーク異常検知装置が図２０に対してトラフィック異常閾値Ａｔｒａｆｆｉｃを変更したときにおける、（ａ）パターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係、（ｂ）データパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信、を示す。
【図２２】本発明の一実施形態として示すネットワーク異常検知装置において、（ａ）はヘッダパターンのスコア等とトラフィック異常閾値Ａｔｒａｆｆｉｃとの関係を示し、（ｂ）はデータパターンのスコア等とデータ異常閾値Ａｄａｔａとの関係を示し、（ｃ）は当該トラフィック異常閾値Ａｔｒａｆｆｉｃ及びデータ異常閾値Ａｄａｔａから検知可能な異常な通信を示す。
【図２３】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれるデータハッシュ値と、データパターンに含まれるハッシュ値との相関によりヘッダパターンのスコア値を変更することの説明図である。
【図２４】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれるデータハッシュ値と、データパターンに含まれるハッシュ値との相関によりヘッダパターンのスコア値を変更する処理手順を示すフローチャートである。
【図２５】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれる生データと、データパターンに含まれる生データとの相関によりヘッダパターンのスコア値を変更することの説明図である。
【図２６】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれる生データと、データパターンに含まれる生データとの相関によりヘッダパターンのスコア値を変更する処理手順を示すフローチャートである。
【図２７】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれる生データと、データパターンに含まれる生データとの相関がない場合に閾値の移動を大きくすることの説明図である。
【図２８】本発明の一実施形態として示すネットワーク異常検知装置において、ヘッダパターンに含まれる生データと、データパターンに含まれる生データとの相関がないことにより閾値の移動を大きくする処理手順を示すフローチャートである。
【発明を実施するための形態】
【００４２】
以下、本発明の実施の形態について図面を参照して説明する。
【００４３】
本発明を適用したネットワーク異常検知装置は、例えば図１に示すようにサーバＳ１とクライアントＣ１，Ｃ２，Ｃ３とが接続された通信ネットワークＮＴに接続される。ネットワーク異常検知装置は、サーバＳ１とクライアントＣ１，Ｃ２，Ｃ３との間で送受信されるＩＰパケットを傍受する。
【００４４】
このネットワーク異常検知装置は、トラフィック異常とデータ異常とを組み合わせたインシデントに特徴がある場合であっても、異常の検知漏れ及び検知間違いを低減するものである。このネットワーク異常検知装置は、図２に示すように、所定の時間単位Ｔｘ内において通信ネットワークＮＴ内のノードＮ１、Ｎ２、Ｎ３間で流れるパケットを傍受する。また、ネットワーク異常検知装置は、パケットのトラフィック異常と判定する基準となる閾値Ａtrafficと、パケットに含まれるデータ異常と判定する基準となる閾値Ａdataとを設定しておく。そして、ネットワーク異常検知装置は、トラフィック異常、データ異常の双方で異常とみなされるように基準となる閾値（閾値Ａdata、閾値Ａtraffic）を自動的に調整する。これにより、ネットワーク異常検知装置は、トラフィック異常且つデータ異常である場面でのパケットを特定する。例えば、図２において、ノードＮ２が送信してノードＮ１、Ｎ２が受信するメッセージＸＸＸ、ＹＹＹが異常原因であると判定する。
【００４５】
［ネットワーク異常検知装置の構成］
上述したネットワーク異常検知装置１は、図３に示すように、複数のノードＮ１，Ｎ２，・・・Ｎｎが接続された通信ネットワークＮＴに接続されている。ネットワーク異常検知装置は、通信キャプチャ部１０，ヘッダ異常検知部１１，データ異常検知部１２，ヘッダ学習部１３，ヘッダスコア定義記憶部１４，ヘッダパターン群記憶部１５，従属データパターン群記憶部１６，ヘッダ閾値群記憶部１７，データ学習部１８，データスコア定義記憶部１９，データパターン群記憶部２０，従属ヘッダパターン群記憶部２１，データ閾値群記憶部２２，閾値定義部２３，閾値調整部２４，異常判断部２５を備える。なお、ネットワーク異常検知装置１は、ハードウェア、ソフトウェアにより図３の各部を構成しても良い。例えばネットワーク異常検知装置１の各部は、通信装置内のコンピュータにより実行されるように、当該通信装置内に記憶されたプログラムによって実現される機能であっても良い。
【００４６】
通信キャプチャ部１０は、通信ネットワークＮＴ上に流れるパケットを受信する（受信手段）。通信キャプチャ部１０は、受信したパケットをヘッダ異常検知部１１、データ異常検知部１２、ヘッダ学習部１３及びデータ学習部１８に供給する。通信キャプチャ部１０は、所定の期間ごとに、通信ネットワークＮＴに流れているパケットを収集する。
【００４７】
ヘッダ学習部１３、ヘッダスコア定義記憶部１４、ヘッダパターン群記憶部１５、従属データパターン群記憶部１６、ヘッダ閾値群記憶部１７及び閾値定義部２３は、トラフィック異常閾値としてのＡtrafficを設定する。すなわち、これらは、通信キャプチャ部１０により受信されたパケットに含まれるヘッダ情報に基づいてトラフィック異常を判定するためのトラフィック異常閾値を設定する（トラフィック異常閾値設定手段）。
【００４８】
ヘッダ学習部１３は、通信キャプチャ部１０により収集されたパケット群を用いて、トラフィック異常を検知するための情報を生成する。このとき、ヘッダ学習部１３は、ヘッダスコア定義記憶部１４に記憶されたＩＰアドレスとサービスとのパターンを示すヘッダスコア定義を参照する。これにより、ヘッダ学習部１３は、ヘッダパターン群、従属データパターン群、ヘッダ閾値群を生成する。なお、このヘッダ学習部１３の処理は、後述する。
【００４９】
ヘッダスコア定義では、ある特定のヘッダを異常性が高いとしてスコアを高くするためのバイアス値を定義している。これにより、ヘッダ学習部１３は、ヘッダスコア定義を参照することにより、後述するように求めたヘッダスコア値（n_score）に対してバイアス値を乗算することで、ヘッダスコア値（n_score）を調整できる。このように、ヘッダ学習部１３は、効率的に異常を検知できるヘッダスコア値（n_score）を設定できる。
【００５０】
閾値定義部２３は、時間的に前後するパケットを用いて、当該パケットがトラフィック異常に関するものであるかの異常度合いを示すスコアを生成する。閾値定義部２３は、所定の判定値αを設定し、時間的に前後するパケットから得たヘッダパターン間のスコア差を計算する。そして、閾値定義部２３は、計算したスコア差が所定の判定値αを超えている場合に、スコア値の変化が大きいとみなし、そのヘッダパターンのスコア値を閾値候補とし、ヘッダ閾値群を生成する。
【００５１】
また、閾値定義部２３は、判定値α以外に、判定値βを設定し、一方を最大値、他方を最小値に設定しても良い。これにより、閾値定義部２３は、ヘッダパターン間のスコア差が極端に変化するときに、当該判定値α、β間のスコア差に該当しない場合には、当該スコア差では閾値候補から外す。これにより、誤って閾値を設定して、異常の誤検知及び検出漏れを回避できる。
【００５２】
ヘッダ異常検知部１１は、通信キャプチャ部１０により受信されたパケットに含まれるヘッダ情報と、閾値調整部２４により調整されたトラフィック異常閾値Ａtrafficとに基づいて、トラフィック異常を検知する（トラフィック異常検知手段）。ヘッダ異常検知部１１は、トラフィック異常の判断結果を異常判断部２５に供給する。
【００５３】
データ学習部１８、データスコア定義記憶部１９、データパターン群記憶部２０、従属ヘッダパターン群記憶部２１、データ閾値群記憶部２２及び閾値定義部２３は、データ異常閾値としてのＡdataを設定する。すなわち、これらは、通信キャプチャ部１０により受信されたパケットに含まれるデータ（ペイロード）情報に基づいてデータ異常を判定するためのデータ異常閾値を設定する（データ異常閾値設定手段）。
【００５４】
データ学習部１８は、通信キャプチャ部１０により収集されたパケット群を用いて、データ異常を検知するための情報を生成する。このとき、データ学習部１８は、データスコア定義記憶部１９に記憶されたシグネチャとサービスとのパターンを示すデータスコア定義を参照する。これにより、データ学習部１８は、データパターン群、従属ヘッダパターン群、データ閾値群を生成する。なお、このデータ学習部１８の処理は、後述する。
【００５５】
データスコア定義では、ある特定のデータを異常性が高いとしてスコアを高くするためのバイアス値を定義している。これにより、データ学習部１８は、データスコア定義を参照することにより、後述するように求めたデータスコア値（n_score）に対してバイアス値を乗算することで、データスコア値（n_score）を調整できる。このように、データ学習部１８は、効率的に異常を検知できるデータスコア値（n_score）を設定できる。
【００５６】
閾値定義部２３は、時間的に前後するパケットを用いて、当該パケットがデータ異常に関するものであるかの程度を示すスコアを生成する。閾値定義部２３は、所定の判定値αを設定し、時間的に前後するパケットから得たデータパターン間のスコア差を計算する。そして、閾値定義部２３は、計算したスコア差が所定の判定値αを超えている場合に、スコア値の変化が大きいとみなし、そのデータパターンのスコア値を閾値候補とし、データ閾値群を生成する。
【００５７】
データ異常検知部１２は、通信キャプチャ部１０により受信されたパケットに含まれるデータ情報と、閾値調整部２４により調整されたデータ異常閾値Ａdataとに基づいて、データ異常を検知する（データ異常検知手段）。データ異常検知部１２は、データ異常の判断結果を異常判断部２５に供給する。
【００５８】
異常判断部２５は、ヘッダ異常検知部１１により検知されたトラフィック異常と、データ異常検知部１２により検知されたデータ異常とに基づいて、通信キャプチャ部１０により受信されたパケットの異常を判断する（異常判断手段）。この異常判断部２５により検出された異常情報は、図示しない管理装置などに出力されることにより蓄積され、又は、通信ネットワークＮＴの管理者等に通知される。また、異常判断部２５によるパケット異常の判断結果は、閾値調整部２４に供給される。
【００５９】
閾値調整部２４は、異常判断部２５により判断されたパケットの異常に基づいて、ヘッダ学習部１３により設定されたトラフィック異常閾値Ａtrafficとデータ学習部１８により設定されたデータ異常閾値Ａdataとの少なくとも一方を変更する（閾値調整手段）。閾値調整部２４により一方が変更されたトラフィック異常閾値Ａtraffic、データ異常閾値Ａdataは、それぞれ、ヘッダ異常検知部１１、データ異常検知部１２に供給される。
【００６０】
このとき、閾値調整部２４は、異常判断部２５による異常判断結果から、異常なイベントが多すぎる又は少なすぎる場合に、自動フィードバック制御によって、トラフィック異常閾値Ａtraffic、データ異常閾値Ａdataを高く又は低くする。例えば、異常判断部２５でトラフィック異常、データ異常を判断していないが、実際に異常が発見された場合に、ネットワーク異常検知装置の管理者は、図示しないキーボード等の操作により、手動でトラフィック異常、データ異常が無いと入力する。この入力信号は、閾値定義部２３に供給される。これに応じて、閾値定義部２３は、トラフィック異常閾値Ａtraffic、データ異常閾値Ａdataを下げる。これにより、閾値調整部２４は、調整対象とするデータ異常閾値Ａdataを変化させる。
【００６１】
より具体的には、閾値調整部２４は、トラフィック異常とデータ異常との何れか一方が異常ではない場合、自動フィードバックにより、異常でない側の閾値を調整する。例えば、異常判断部２５によりトラフィック異常であるがデータ異常ではないと判断された場合、異常判断部２５は、データ異常ではないメッセージを閾値調整部２４に供給する。これに応じ、閾値調整部２４は、データ異常閾値Ａdataを変化させる。
【００６２】
［ヘッダ学習部１３によるスコア生成処理］
つぎに、上述したネットワーク異常検知装置１において、ヘッダ学習部１３によるＩＰヘッダを用いてスコアを生成する処理について説明する。
【００６３】
通信キャプチャ部１０により収集されるパケット群は、図４に示すように、シーケンス番号（seq）ごとに、収集時刻（time）、データ長（len）、ＩＰヘッダ（IP header）、ポート番号（port）、データ（Data）が格納されるというリスト形式で保存される。そして、ヘッダ学習部１３は、当該パケット群を参照して、トラフィック異常に関わるパケットのスコアを生成する。
【００６４】
ヘッダ学習部１３は、図５に示すように、トラフィック異常に関わるＩＰヘッダについての情報として、ヘッダパターン群１０１を生成する。ヘッダパターン群１０１は、ヘッダパターンｎＰｔ［０］，ｎＰｔ［１］，・・・，ｎＰｔ［ｍ］である。
【００６５】
各ヘッダパターン１０２は、ヘッダスコア値（n_score）１０３と、第１ヘッダ情報１０２ａと、第２ヘッダ情報１０２ｂと、従属データパターン情報１０２ｃとを含む。
【００６６】
第１ヘッダ情報１０２ａは、所定の期間においてＩＰパケットが収集開始された時刻start_time、ＩＰパケットが収集終了された時刻end_time、収集パケット数total_cntを含む。
【００６７】
第２ヘッダ情報１０２ｂは、ポート番号及びデータのハッシュ値pat_sig_hash、送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dstを含む。
【００６８】
従属データパターン情報１０２ｃは、ヘッダハッシュ値sig_ptr、当該ヘッダハッシュ値のカウント数sig_munに対応して、当該ヘッダに付加されたポート番号及びデータのハッシュ値であるデータハッシュ値sig_hash[0]〜sig_hash[sig_mun]を含む。また、各データハッシュ値sig_hash[0]〜sig_hash[sig_mun]には、当該データハッシュ値sig_hash[0]〜sig_hash[sig_mun]のカウント数sig_cnt[0]〜sig_cnt[sig_mun]、シグネチャ長sig_len[0]〜sig_len[sig_mun]、及び、ポート番号及びデータの生データsig_data[0]〜sig_data[sig_mun]が対応付けられている。なお、生データsig_dataは、後述するように、トラフィック異常と判定されたＩＰヘッダと、データ異常と判定されたデータとの相関を判断しない場合には、従属データパターン情報１０２ｃとして必要はない。
【００６９】
このようなヘッダパターン群１０１を生成するとき、ヘッダ学習部１３は、図６に示す処理を行う。
【００７０】
先ず、ヘッダ学習部１３は、ステップＳ１において、図４のパケット群を参照して、当該パケット群からシーケンスの昇順に、ＩＰアドレスとポート番号との組であるヘッダ情報Set｛IP[k],PORT[k]｝を抽出する。
【００７１】
次のステップＳ２において、ヘッダ学習部１３は、既存のヘッダパターンｎＰｔ［０］〜ｎＰｔ［ｍ］に、ステップＳ１にて抽出したヘッダ情報Set｛IP[k],PORT[k]｝が無いか否かを判定する。このとき、ヘッダ学習部１３は、既存のヘッダパターンのうちの第２ヘッダ情報１０２ｂに含まれる送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dstと、ステップＳ１にて抽出したヘッダ情報Set｛IP[k],PORT[k]｝とを比較する。その結果、ヘッダ情報Set｛IP[k],PORT[k]｝が既存のヘッダパターンに無い場合には、ステップＳ７に処理を進め、既存のヘッダパターンにある場合には、ステップＳ３に処理を進める。
【００７２】
ステップＳ７において、ヘッダ学習部１３は、新たなヘッダパターンｎＰｔ［ｍ＋１］を生成する。このとき、ヘッダ学習部１３は、第２ヘッダ情報１０２ｂも生成する。ヘッダ学習部１３は、ＩＰヘッダ及びポート番号をハッシュ化してハッシュ値pat_sig_hashを生成し、送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dstを取り出す。この後、ヘッダ学習部１３は、処理をステップＳ４に進める。
【００７３】
ステップＳ３において、ヘッダ学習部１３は、既存のヘッダパターンｎＰｔから、ステップＳ１にて抽出されたヘッダ情報Set｛IP[k],PORT[k]｝に一致する第２ヘッダ情報１０２ｂのヘッダパターンｎＰｔ［ｋ］を選択する。
【００７４】
ステップＳ４において、ヘッダ学習部１３は、パケット群のシーケンスから、第１ヘッダ情報１０２ａを抽出して、更新する。ヘッダ学習部１３は、既存のヘッダパターンと同じヘッダパターンである場合には、当該ＩＰパケットが収集開始された時刻start_time、ＩＰパケットが収集終了された時刻end_time、収集パケット数total_cntを抽出して、更新する。また、既存のヘッダパターンが無い場合には、ヘッダ学習部１３は、新たに第１ヘッダ情報１０２ａを生成する。
【００７５】
次のステップＳ５において、ヘッダ学習部１３は、パケット群のシーケンスから、従属データパターン情報１０２ｃを抽出して、更新する。このとき、ヘッダ学習部１３は、先ず、既存のヘッダパターンがある場合にはヘッダハッシュ値sig_ptrのカウント数sig_munを更新する。既存のヘッダパターンが無い場合には、ヘッダ学習部１３は、新たにヘッダハッシュ値sig_ptrを生成し、当該ヘッダハッシュ値のカウント数sig_munを「１」にする。
【００７６】
既存のヘッダパターンがある場合、ヘッダ学習部１３は、ポート番号とデータ情報の組Set｛PORT[k],DATA[k]｝のハッシュ値と従属データパターン情報１０２ｃとを比較する。そして、当該ポート番号とデータ情報の組Set｛PORT[k],DATA[k]｝のハッシュ値が、データハッシュ値sig_hash[0]〜sig_hash[sig_mun]に無い場合には、新たにデータハッシュ値sig_hash[sig_mun+1]、カウント数sig_cnt[sig_mun+1]、シグネチャ長sig_len[sig_mun+1]を生成する。そして、ヘッダ学習部１３は、カウント数sig_cnt、ヘッダハッシュ値のカウント数sig_munをインクリメントする。また、ヘッダ学習部１３は、ポート番号及びデータの生データsig_data[sig_mun+1]を格納する。
【００７７】
一方、当該ポート番号とデータ情報の組Set｛PORT[k],DATA[k]｝のハッシュ値が、データハッシュ値sig_hash[0]〜sig_hash[sig_mun]にある場合には、カウント数sig_cnt、ヘッダハッシュ値のカウント数sig_munをインクリメントする。
【００７８】
次のステップＳ６において、ヘッダ学習部１３は、ヘッダスコア値（n_score）１０３の情報を更新する。このとき、ヘッダ学習部１３は、下記（１）〜（５）の何れかの手法によりヘッダスコア値（n_score）１０３を計算する。
【００７９】
（１）スコア１＝収集パケット数total_cnt／ｎ（シーケンス数に占めるパターン数）（少数のヘッダパターンをトラフィック異常とする）
（２）スコア２＝第２ヘッダ情報１０２ｂが特定のパケットシグネチャのハッシュ値pat_sig_hashであれば０．３、それ以外のパケットシグネチャのハッシュ値pat_sig_hashであれば、０．７（特定のトラフィックパターンをトラフィック異常とする）
（３）スコア３＝従属データパターン情報１０２ｃが特定のデータハッシュ値sig_hashの組み合わせ（且つ、カウント数sig_cnt、シグネチャ長sig_lenが規定値以上）（ｓｙｎｆｌｏｏｄに対応）
（４）スコア４＝｜end_time−start_time｜／｜tn−t1｜＊total_cnt（短時間で大量のヘッダパターンが発生している場合をトラフィック異常とする（ＤｏＳに対応））
（５）スコア５＝スコア１及び／又はスコア２及び／又はスコア３（上記の（１）〜（３）の組み合わせでトラフィック異常を判断する）
以上のように、ヘッダ学習部１３は、第１ヘッダ情報１０２ａ、第２ヘッダ情報１０２ｂ、従属データパターン情報１０２ｃ及びヘッダスコア値（n_score）１０３を更新又は生成する。
【００８０】
［データ学習部１８によるスコア生成処理］
つぎに、上述したネットワーク異常検知装置１において、データ学習部１８によるＩＰペイロードを用いてスコアを生成する処理について説明する。
【００８１】
通信キャプチャ部１０により収集されるパケット群は、図４に示すように、シーケンス番号（seq）、収集時刻（time）、データ長（len）、ＩＰヘッダ（IP header）、ポート番号（port）、データ（Data）というリスト形式で保存される。そして、データ学習部１８は、当該パケット群を参照して、データ異常に関わるパケットのスコアを生成する。
【００８２】
データ学習部１８は、図７に示すように、データ異常に関わるＩＰペイロードについての情報として、データパターン群２０１を生成する。データパターン群２０１は、データパターンｄＰｔ［０］，ｄＰｔ［１］，・・・，ｄＰｔ［ｍ］である。
【００８３】
各データパターン２０２は、データスコア値（d_score）２０３と、第１データ情報２０２ａと、第２データ情報２０２ｂと、従属ヘッダパターン情報２０２ｃとを含む。
【００８４】
第１データ情報２０２ａは、所定の期間においてＩＰパケットが収集開始された時刻start_time、ＩＰパケットが収集終了された時刻end_time、収集パケット数total_cntを含む。
【００８５】
第２データ情報２０２ｂは、ポート番号及びペイロードを含むパケットシグネチャのハッシュ値pat_sig_hash、送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dst、ポート番号及びペイロードの生データdata、データ長data_lenを含む。
【００８６】
従属ヘッダパターン情報２０２ｃは、データハッシュ値sig_ptr、当該データハッシュ値のカウント数sig_munに対応して、当該データに付加されたＩＰアドレス及びポート番号のハッシュ値であるヘッダハッシュ値sig_hash[0]〜sig_hash[sig_mun]を含む。また、各ヘッダハッシュ値sig_hash[0]〜sig_hash[sig_mun]には、当該ヘッダハッシュ値sig_hash[0]〜sig_hash[sig_mun]のカウント数sig_cnt[0]〜sig_cnt[sig_mun]、シグネチャ長sig_len[0]〜sig_len[sig_mun]、及び、ＩＰアドレス及びポート番号の生データsig_data[0]〜sig_data[sig_mun]が対応付けられている。なお、生データsig_dataは、後述するように、トラフィック異常と判定された生データと、データ異常と判定された生データとの相関を判断しない場合には、従属ヘッダパターン情報２０２ｃとして必要はない。
【００８７】
このようなデータパターン群２０１を生成するとき、データ学習部１８は、図８に示す処理を行う。
【００８８】
先ず、データ学習部１８は、ステップＳ１１において、図４のパケット群を参照して、当該パケット群からシーケンスの昇順に、ポート番号とペイロードデータとの組であるデータ情報Set｛PORT[k],DATA[k]｝を抽出する。
【００８９】
次のステップＳ１２において、データ学習部１８は、既存のデータパターンｄＰｔ［０］〜ｄＰｔ［ｍ］に、ステップＳ１１にて抽出したデータ情報Set｛PORT[k],DATA[k]｝が無いか否かを判定する。このとき、データ学習部１８は、既存のデータパターンのうちの第２データ情報２０２ｂに含まれる送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dstと、ステップＳ１１にて抽出したデータ情報Set｛PORT[k],DATA[k]｝とを比較する。その結果、データ情報Set｛PORT[k],DATA[k]｝が既存のデータパターンに無い場合には、ステップＳ１７に処理を進め、既存のデータパターンにある場合には、ステップＳ１３に処理を進める。
【００９０】
ステップＳ１７において、データ学習部１８は、新たなデータパターンｄＰｔ［ｍ＋１］を生成する。このとき、データ学習部１８は、第２データ情報２０２ｂも生成する。データ学習部１８は、ＩＰペイロード及びポート番号をハッシュ化してハッシュ値pat_sig_hashを生成し、送信元ＩＰアドレスIP_addr_src、宛先ＩＰアドレスIP_addr_dst、送信元ポート番号port_src、宛先ポート番号port_dstを取り出す。この後、データ学習部１８は、処理をステップＳ１４に進める。
【００９１】
ステップＳ１３において、データ学習部１８は、既存のデータパターンｎＰｔから、ステップＳ１１にて抽出されたデータ情報Set｛PORT[k],DATA[k]｝に一致する第２データ情報２０２ｂのデータパターンｄＰｔ［ｋ］を選択する。
【００９２】
ステップＳ１４において、データ学習部１８は、パケット群のシーケンスから、第１データ情報２０２ａを抽出して、更新する。データ学習部１８は、既存のデータパターンと同じデータパターンである場合には、当該ＩＰパケットが収集開始された時刻start_time、ＩＰパケットが収集終了された時刻end_time、収集パケット数total_cntを抽出して、更新する。また、既存のデータパターンが無い場合には、データ学習部１８は、新たに第１データ情報２０２ａを生成する。
【００９３】
次のステップＳ１５において、データ学習部１８は、パケット群のシーケンスから、従属ヘッダパターン情報２０２ｃを抽出して、更新する。このとき、データ学習部１８は、先ず、既存のデータパターンがある場合にはデータハッシュ値sig_ptrのカウント数sig_munを更新する。既存のデータパターンが無い場合には、データ学習部１８は、新たにデータハッシュ値sig_ptrを生成し、当該データハッシュ値のカウント数sig_munを「１」にする。
【００９４】
既存のデータパターンがある場合、データ学習部１８は、ポート番号とＩＰペイロードの組Set｛PORT[k],DATA[k]｝のハッシュ値と従属ヘッダパターン情報２０２ｃとを比較する。そして、当該ポート番号とＩＰペイロードの組Set｛PORT[k],DATA[k]｝のハッシュ値が、データハッシュ値sig_hash[0]〜sig_hash[sig_mun]に無い場合には、新たにデータハッシュ値sig_hash[sig_mun+1]、カウント数sig_cnt[sig_mun+1]、シグネチャ長sig_len[sig_mun+1]を生成する。そして、データ学習部１８は、カウント数sig_cnt、データハッシュ値のカウント数sig_munをインクリメントする。また、データ学習部１８は、ポート番号及びＩＰペイロードの生データsig_data[sig_mun+1]を格納する。
【００９５】
一方、当該ポート番号とＩＰペイロードの組Set｛PORT[k],DATA[k]｝のハッシュ値が、データハッシュ値sig_hash[0]〜sig_hash[sig_mun]にある場合には、カウント数sig_cnt、データハッシュ値のカウント数sig_munをインクリメントする。
【００９６】
次のステップＳ１６において、データ学習部１８は、データスコア値（d_score）２０３の情報を更新する。このとき、データ学習部１８は、下記（１）〜（５）の何れかの手法によりデータスコア値（d_score）２０３を計算する。
【００９７】
（１）スコア１＝収集パケット数total_cnt／ｎ（シーケンス数に占めるパターン数）（少数のデータパターンをトラフィック異常とする）
（２）スコア２＝第２データ情報１０３ｂが特定のパケットシグネチャのハッシュ値pat_sig_hashであれば０．３、それ以外のパケットシグネチャのハッシュ値pat_sig_hashであれば、０．７（特定のトラフィックパターンをトラフィック異常とする）
（３）スコア３＝従属ヘッダパターン情報２０２ｃが特定のデータハッシュ値sig_hashの組み合わせ（且つ、カウント数sig_cnt、シグネチャ長sig_lenが規定値以上）（ｓｙｎｆｌｏｏｄに対応）
（４）スコア４＝｜end_time−start_time｜／｜tn−t1｜＊total_cnt（短時間で大量のデータパターンが発生している場合をトラフィック異常とする（ＤｏＳに対応））
（５）スコア５＝スコア１及び／又はスコア２及び／又はスコア３（上記の（１）〜（３）の組み合わせでトラフィック異常を判断する）
以上のように、データ学習部１８は、第１データ情報２０２ａ、第２データ情報２０２ｂ、従属ヘッダパターン情報２０２ｃ及びデータスコア値（d_score）２０３を更新又は生成する。
【００９８】
［閾値調整処理］
上述したようにヘッダ学習部１３及びデータ学習部１８によってスコアが算出されると、閾値定義部２３は、トラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataを設定する。ヘッダ学習部１３は、図９（ａ）に示すように、ヘッダ異常検知のために、ヘッダスコア値（n_score）１０３に相当するスコア、ヘッダパターンｎＰｔ、送信元及び宛先のＩＰアドレス、ポート番号、シグネチャのデータタイプを含むヘッダパターン群１０１を取得することができる。また、データ学習部１８は、図９（ｂ）に示すように、データスコア値（d_score）２０３に相当するスコア、データパターンｄＰｔ、ポート番号、データタイプ及び送信元及び宛先のＩＰアドレスであるシグネチャを含むデータパターン群２０１を取得することができる。
【００９９】
ここで、図１に示した通信が通信ネットワークＮＴにて行われるとすると、図９（ｃ）に示すように、クライアントＣ３がブラスターウィルスに感染すると、バイナリデータ（ＢＩＮ）の異常な通信データがクライアントＣ３からクライアントＣ１、クライアントＣ２に送信される。また、正常な通信として、クライアントＣ３からサーバＳ１にアスキーデータ（ＡＳＣ）が送信され、クライアントＣ３からクライアントＣ１にＸＭＬデータ（ＸＭＬ）が送信される。
【０１００】
このような場面において、閾値定義部２３は、図９（ａ）のヘッダパターンｎＰｔ［ｋ］とヘッダパターンｎＰｔ［ｎ］との間にトラフィック異常閾値Ａtraffic(311)を設定する。このとき、閾値定義部２３は、ヘッダスコア値（n_score）１０３が０．０１５と０．３６とで大きく乖離していることから、当該位置にトラフィック異常閾値Ａtrafficを設定する。
【０１０１】
具体的には、閾値定義部２３は、トラフィック異常として検知できるヘッダパターンｎＰｔ間のヘッダスコア値（n_score）１０３のスコア差を判定値αとして設定しておく。そして、閾値定義部２３は、ヘッダパターン群１０１を生成したときに、ヘッダパターンｎＰｔ間のヘッダスコア値（n_score）１０３のスコア差と、判定値αとを比較する。ヘッダパターンｎＰｔ間のヘッダスコア値（n_score）１０３のスコア値が、判定値αを上回る場合、閾値定義部２３は、ヘッダスコア値（n_score）１０３が低い方のヘッダスコア値（n_score）１０３を閾値候補とし、ヘッダ閾値群として設定する。なお、図９（ａ）では、単一のトラフィック異常閾値Ａtrafficの候補を設定しているが、ヘッダパターン群１０１内でスコア差が大きい箇所があれば、閾値定義部２３は、複数のトラフィック異常閾値Ａtrafficの候補を生成できる。
【０１０２】
これにより、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔ［０］〜ヘッダパターンｎＰｔ［ｋ］までを異常な通信として識別する。従って、ネットワーク異常検知装置１は、クライアントＣ３からクライアントＣ１、クライアントＣ２に対してバイナリデータを送信したときのヘッダパターンｎＰｔ［０］をトラフィック異常として検知できる。また、ネットワーク異常検知装置１は、クライアントＣ３からサーバＳ１に送信される正常なアスキーデータを、トラフィック異常として検知しない。しかし、ネットワーク異常検知装置１は、クライアントＣ３からクライアントＣ１に送信される正常なＸＭＬデータをトラフィック異常として誤検知してしまう。
【０１０３】
同様に、閾値定義部２３は、図９（ｂ）のデータパターンｄＰｔ［ｋ］とデータパターンｄＰｔ［ｎ］との間にデータ異常閾値Ａdataの候補を設定する。このとき、閾値定義部２３は、データスコア値（d_score）２０３が０．０３と０．７９とで大きく乖離していることから、当該位置にデータスコア値（d_score）２０３を設定する。
【０１０４】
具体的には、閾値定義部２３は、データ異常として検知できるデータパターンｄＰｔ間のデータスコア値（d_score）２０３のスコア差を判定値α（上記αと異なる値でも良い。）として設定しておく。そして、閾値定義部２３は、データパターン群２０１を生成したときに、データパターンｄＰｔ間のデータスコア値（d_score）２０３のスコア差と、判定値αとを比較する。データパターンｄＰｔ間のデータスコア値（d_score）２０３のスコア値が、判定値αを上回る場合、閾値定義部２３は、データスコア値（d_score）２０３が低い方のデータスコア値（d_score）２０３を閾値候補とし、ヘッダ閾値群として設定する。なお、図９（ｂ）では、単一のデータ異常閾値Ａdataの候補を設定しているが、データパターン群２０１内でスコア差が大きい箇所があれば、閾値定義部２３は、複数のデータ異常閾値Ａdataの候補を生成できる。
【０１０５】
これにより、ネットワーク異常検知装置１は、データパターンｄＰｔ［０］〜データパターンｄＰｔ［ｋ］までを異常な通信として識別する。従って、ネットワーク異常検知装置１は、クライアントＣ３からクライアントＣ１、クライアントＣ２に対してバイナリデータを送信したときのデータパターンｄＰｔ［０］をデータ異常として検知できる。また、ネットワーク異常検知装置１は、クライアントＣ３からサーバＳ１に送信される正常なアスキーデータを、トラフィック異常として検知しない。しかし、ネットワーク異常検知装置１は、クライアントＣ３からクライアントＣ１に送信される正常なＸＭＬデータをトラフィック異常として誤検知してしまう。
【０１０６】
そこで、閾値調整部２４は、トラフィック異常閾値Ａtrafficと、データ異常閾値Ａdataの何れかの閾値を固定し、一方を変化させる。
【０１０７】
また、閾値調整部２４は、異常判断部２５により判断されたパケットの異常に基づいて、トラフィック異常閾値Ａtrafficとデータ異常閾値Ａdataとの一方の閾値を固定して他方の閾値を変更した後に、当該固定した閾値を変更させる。
【０１０８】
更に、閾値調整部２４は、トラフィック異常閾値Ａtrafficとデータ異常閾値Ａdataとのうち、ヘッダパターン１０２とデータパターン群２０１とのうち、パターンの個数が少ない方の閾値を固定し、パターンの個数が多い方の閾値を変更する。
【０１０９】
以下、閾値調整部２４によるトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataの調整処理の具体的を、図１０〜図２２を参照して説明する。
【０１１０】
閾値調整部２４は、図１０（ａ）、（ｂ）に示すように、トラフィック異常閾値Ａtraffic（311）とデータ異常閾値Ａdata（312）とのうち、トラフィック異常閾値Ａtrafficを変更させ、データ異常閾値Ａdataを固定させる。これは、図１０（ａ）に示すヘッダパターン群１０１によるヘッダ異常検知結果３０１が８パターンのうち、図１０（ｂ）に示すデータパターン群２０１によるデータ異常検知結果３０２が３パターンであることによる。すなわち、閾値調整部２４は、ヘッダ異常検知部１１により検知されたトラフィック異常のヘッダパターンの個数は８回であり、データ異常検知部１２により検知されたデータ異常のデータパターンの個数は３回である。これにより、閾値調整部２４は、パターンが少ない方のデータ異常閾値Ａdataを固定し、パターンの個数が多い方のトラフィック異常閾値Ａtrafficを変更するとする。
【０１１１】
先ず、図１０（ａ）に示すＩＤＸ１とＩＤＸ２との間にトラフィック異常閾値Ａtrafficを設定し、図１０（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１０（ｃ）に示すように存在しない。したがって、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１２】
次に、図１１（ａ）に示すＩＤＸ２とＩＤＸ３との間にトラフィック異常閾値Ａtrafficを設定し、図１１（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１１（ｃ）に示すように存在しない。したがって、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１３】
次に、図１２（ａ）に示すＩＤＸ３とＩＤＸ４との間にトラフィック異常閾値Ａtrafficを設定し、図１２（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１２（ｃ）に示すように存在しない。したがって、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１４】
次に、図１３（ａ）に示すＩＤＸ４とＩＤＸ５との間にトラフィック異常閾値Ａtrafficを設定し、図１３（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１３（ｃ）に示すように、クライアントＣ３からクライアントＣ１に６３パケットのＸＭＬデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１５】
次に、図１４（ａ）に示すＩＤＸ５とＩＤＸ６との間にトラフィック異常閾値Ａtrafficを設定し、図１４（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１４（ｃ）に示すように、クライアントＣ３からクライアントＣ１に６３パケットのＸＭＬデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１６】
次に、図１５（ａ）に示すＩＤＸ６とＩＤＸ７との間にトラフィック異常閾値Ａtrafficを設定し、図１５（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１５（ｃ）に示すように、クライアントＣ３からクライアントＣ１にＸＭＬデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１７】
次に、図１６（ａ）に示すＩＤＸ７とＩＤＸ８との間にトラフィック異常閾値Ａtrafficを設定し、図１６（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１６（ｃ）に示すように、クライアントＣ３からクライアントＣ１にＸＭＬデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１８】
次に、図１７（ａ）に示すＩＤＸ８にトラフィック異常閾値Ａtrafficを設定し、図１７（ｂ）に示すＩＤＸ１とＩＤＸ２との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１７（ｃ）に示すように、クライアントＣ３からクライアントＣ１にＸＭＬデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１１９】
次に、図１８（ａ）に示すＩＤＸ１とＩＤＸ２との間にトラフィック異常閾値Ａtrafficを設定し、更に、図１８（ｂ）に示すように、固定していたデータ異常閾値Ａdataを変化させて、ＩＤＸ２とＩＤＸ３との間にデータ異常閾値Ａdataを設定する。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１８（ｃ）に示すように、クライアントＣ３からクライアントＣ２に３パケットのバイナリデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１２０】
次に、図１９（ａ）に示すＩＤＸ２とＩＤＸ３との間にトラフィック異常閾値Ａtrafficを設定し、図１９（ｂ）に示すＩＤＸ２とＩＤＸ３との間にデータ異常閾値Ａdataを設定するとする。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図１９（ｃ）に示すように、クライアントＣ３からクライアントＣ２に３パケットのバイナリデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１２１】
次に、図２０（ａ）に示すＩＤＸ３とＩＤＸ４との間にトラフィック異常閾値Ａtrafficを設定し、図２０（ｂ）に示すＩＤＸ２とＩＤＸ３との間にデータ異常閾値Ａdataを設定する。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図２０（ｃ）に示すように、クライアントＣ３からクライアントＣ２に３パケットのバイナリデータが送信される通信に加えて、クライアントＣ３からクライアントＣ１に３７パケットのバイナリデータが送信される通信が該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１２２】
次に、図２１（ａ）に示すＩＤＸ４とＩＤＸ５との間にトラフィック異常閾値Ａtrafficを設定し、図２１（ｂ）に示すＩＤＸ２とＩＤＸ３との間にデータ異常閾値Ａdataを設定する。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図２１（ｃ）に示すように、クライアントＣ３からクライアントＣ２に６３パケットのバイナリデータが送信される通信と、クライアントＣ３からクライアントＣ１に３７パケットのバイナリデータが送信される通信と、クライアントＣ３からクライアントＣ１に６３パケットのＸＭＬデータが送信される通信とが該当する。但し、閾値調整部２４は、これらのトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataは採用しない。
【０１２３】
次に、図２２（ａ）に示すＩＤＸ５とＩＤＸ６との間にトラフィック異常閾値Ａtrafficを設定し、図２２（ｂ）に示すＩＤＸ２とＩＤＸ３との間にデータ異常閾値Ａdataを設定する。この場合、トラフィック異常且つデータ異常となるＡＮＤ条件を満たす通信は、図２２（ｃ）に示すように、クライアントＣ３からクライアントＣ２に６３パケットのバイナリデータが送信される通信と、クライアントＣ３からクライアントＣ１に３７パケットのバイナリデータが送信される通信と、クライアントＣ３からクライアントＣ１に６３パケットのＸＭＬデータが送信される通信とに加えて、クライアントＣ３からサーバＳ１に３００パケットのバイナリデータが送信される通信が該当する。このとき、閾値調整部２４は、トラフィック異常閾値ＡtrafficをＩＤＸ６以降に変更しても、大きなスコアの変異点は無く、且つ、データ異常閾値ＡdataをＩＤＸ３に変更しても、大きなスコアの変異点は無い。したがって、閾値調整部２４は、トラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataの変更を停止し、当該閾値の調整を終了する。
【０１２４】
これにより、ネットワーク異常検知装置１は、図１に示した悪意のコードのバイナリデータをトラフィック異常且つデータ異常と判定できる。このようにネットワーク異常検知装置１は、検知漏れをなくす。また、ネットワーク異常検知装置１は、図１に示したクライアントＣ３からクライアントＣ２に送信される正常なアスキーデータをトラフィック異常且つデータ異常とは判定しない。このようにネットワーク異常検知装置１は、誤検知を回避する。更に、ネットワーク異常検知装置１は、合計１００パケットのデータに対して、３７パケットのバイナリデータをデータ異常であることを確実に検知できる。
【０１２５】
なお、ネットワーク異常検知装置１は、クライアントＣ３からクライアントＣ１に送信された６３パケットのＸＭＬデータを、トラフィック異常及びデータ異常と誤検知してしまう。
【０１２６】
ただし、ネットワーク異常検知装置１は、ＸＭＬデータを含む送信を誤検知してしまうが、ＸＭＬデータを含む送信を誤検知させないためには、後述の相関を用いる。この相関を用いることにより、ネットワーク異常検知装置１は、バイナリデータに対するトラフィック異常の異常度合い（スコア）を高め、相対的にＸＭＬデータのトラフィック異常の異常度合い（スコア）を低めることで閾値調整部２４で閾値調整を行う。これにより、ネットワーク異常検知装置１は、総合的な異常判断部２５による異常判断により、ＸＭＬデータを含む送信の誤検知を低減することができる。
【０１２７】
以上のように、閾値調整部２４は、先ず、データ異常閾値Ａdataを固定してトラフィック異常閾値Ａtrafficを変化させて閾値調整を行う。これにより、閾値調整部２４は、異常判断部２５によってヘッダ異常検知とデータ異常検知との一方が異常でないと判断された場合には、自動的なフィードバックにより異常でない方の閾値を調整する。これにより、ネットワーク異常検知装置１は、トラフィック異常とデータ異常とが重なる場合であっても、２つの異常の閾値を固定することなく、異常のない通信を異常であると誤検知するフォールスポジティブ、異常である通信を異常ではないと検知漏れするフォールスネガティブを低減できる。
【０１２８】
また、閾値調整部２４は、一方のみの閾値を変化させているときに、トラフィック異常閾値Ａtrafficとデータ異常閾値Ａdataの双方の変異点が大きくならない場合には、他方のデータ異常閾値Ａdataを変化させる。これにより、ネットワーク異常検知装置１は、異常なイベントが多すぎる又は少なすぎる場合であっても、固定していた閾値を変更することによって新たな異常を検知でき、異常の誤検知及び検知漏れを低減できる。
【０１２９】
ここで、閾値調整部２４は、一方の閾値のみを変化させ他方の閾値を固定するときに、ヘッダ学習部１３により異常度合いが求められたヘッダパターンとデータ学習部１８により求められたデータパターンとのうち、パターンの個数が少ない方の閾値を固定し、パターンの個数が多い方の閾値を変更する。これにより、ネットワーク異常検知装置１は、トラフィック異常とデータ異常とが重なる場合でも、パターンの個数が多い方の閾値を先に変化させて、その後に、パターンの個数が少ない方の閾値を変化させることができ、閾値調整を効率化できる。
【０１３０】
［トラフィック異常とデータ異常との相関に基づく処理］
つぎに、上述したネットワーク異常検知装置１において、トラフィック異常とデータ異常との間の相関に基づく処理について説明する。
【０１３１】
ヘッダ学習部１３は、ヘッダパターンｎＰｔごとに、当該ヘッダに付加されていたデータを従属データパターン情報１０２ｃとして従属データパターン群記憶部１６に蓄積する。閾値調整部２４は、データパターンｄＰｔに含まれるデータと、ヘッダパターンｎＰｔごとのデータとの間に相関がある場合には、当該トラフィック異常閾値Ａtraffic又はデータ異常閾値Ａdataを変化させる。
【０１３２】
具体的には、図２３に示すように、ヘッダパターンｎＰｔ［ｋ］における従属データパターン情報１０２ｃに含まれるデータハッシュ値sig_hash[1]と、データパターンｄＰｔ［ｐ］におけるハッシュ値pat_sig_hashとが一致する場合には、ヘッダスコア値（n_score）１０３を高くする。また、ヘッダスコア値（n_score）１０３に代えて、トラフィック異常閾値Ａtrafficを高くしても良い。
【０１３３】
このとき、ヘッダ学習部１３は、図２４に示すように、先ずステップＳ２１において、ヘッダパターン群１０１からあるヘッダパターンｎＰｔ［ｋ］を選ぶ。
【０１３４】
次のステップＳ２２において、ヘッダ学習部１３は、ヘッダハッシュ値のカウント数sig_munが所定値ｘ以上であるか否かを判定する。ここで、所定値ｘは、当該ヘッダパターンｎＰｔ［ｋ］が出現したカウント数sig_munがある程度の回数であることを確認できる値に設定されている。ヘッダハッシュ値のカウント数sig_munが所定値ｘ以上である場合には、ステップＳ２３に処理を進め、そうでない場合には別のヘッダパターンｎＰｔ［ｋ］を選ぶ。
【０１３５】
次のステップＳ２３において、ヘッダ学習部１３は、従属データパターン情報１０２ｃにおけるデータハッシュ値sig_hashのカウント数sig_cnt[x]が所定の定義値LIMITより高い値か否かを判定する。データハッシュ値sig_hashのカウント数sig_cnt[x]が所定の定義値LIMITより高い場合には、ステップＳ２５に処理を進め、そうでない場合にはｘをインクリメントしてステップＳ２２に処理を戻す。これにより、あるヘッダパターンｎＰｔ［ｋ］のデータハッシュ値sig_hashのカウント数sig_cntが、０〜ヘッダハッシュ値のカウント数sig_munの範囲から、データハッシュ値sig_hashのカウント数sig_cntが所定の定義値LIMITとなるものを選択する。すなわち、データハッシュ値sig_hashのカウント数sig_cntである全体のうち、所定の定義値LIMITより高い割合で含まれているデータハッシュ値sig_hashを選ぶ。
【０１３６】
次のステップＳ２５において、ヘッダ学習部１３は、ステップＳ２３にて選ばれたデータハッシュ値sig_hash[x]と、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］におけるハッシュ値pat_sig_hashとが同一であるか否かを判定する。双方が同一である場合には、ステップＳ２７に処理を進め、同一ではない場合には、ステップＳ２６でデータパターンｄＰｔ［ｐ］のｐの値をインクリメントしてステップＳ２３に処理を戻す。これにより、ヘッダ学習部１３は、ステップＳ２３で選ばれたデータハッシュ値sig_hash[x]と同じ値のデータパターン群２０１内のハッシュ値pat_sig_hashを検索する。
【０１３７】
次のステップＳ２７において、ヘッダ学習部１３は、ステップＳ２３にて選ばれたデータハッシュ値sig_hash[x]と、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］におけるハッシュ値pat_sig_hashとは相関があると判断する。
【０１３８】
次のステップＳ２８において、ヘッダ学習部１３は、ステップＳ２７にて相関があると判定されたヘッダパターンｎＰｔに含まれるヘッダスコア値（n_score）１０３の値を更新する。ここで、ヘッダ学習部１３は、ヘッダスコア値（n_score）１０３を高くしているが、低く更新しても良い。また、閾値調整部２４は、当該ヘッダスコア値（n_score）１０３を変更したことに応じて、当該変更後のスコア差が高くなった位置にトラフィック異常閾値Ａtrafficを更新しても良い。
【０１３９】
このように、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔとデータパターンｄＰｔとの間に相関がある場合には、トラフィック異常及びデータ異常の双方が発生しているか、双方とも発生していない可能性が高い。このため、ネットワーク異常検知装置１は、ヘッダスコア値（n_score）１０３又はデータスコア値（d_score）２０３を高く又は低く調整する、又は、閾値を高く又は低くする。これにより、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔ間のスコア差又はデータパターンｄＰｔ間のスコア差を大きくでき、ネットワーク異常検知装置１は、上述した閾値調整を効率化することができる。
【０１４０】
また、ネットワーク異常検知装置１は、データパターンｄＰｔに含まれるデータと、ヘッダパターンｎＰｔごとのデータとの間に相関がある場合には、当該相関があるヘッダスコア値（n_score）１０３又は当該相関があるデータスコア値（d_score）２０３を高くしても良い。
【０１４１】
具体的には、図２５に示すように、ヘッダパターンｎＰｔ［ｋ］におけるポート番号及びデータの生データsig_dataと、データパターンｄＰｔ［ｐ］における生データsig_dataとが一致する場合には、ヘッダスコア値（n_score）１０３を高くする。また、ヘッダスコア値（n_score）１０３に代えて、トラフィック異常閾値Ａtrafficを高くしても良い。
【０１４２】
このとき、ヘッダ学習部１３は、図２６に示すように、上述の図２５と同様にステップＳ２１，Ｓ２２，Ｓ２３，Ｓ２４の処理を行う。そして、ステップＳ２３にて肯定判定された後のステップＳ２５’において、ヘッダ学習部１３は、従属データパターン情報１０２ｃにおけるハッシュ値sig_hash[x]と、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］における生データdataとの相関係数が所定値αより高いか否かを判定する。相関係数が所定値αよりも高い場合には、ステップＳ２７’に処理を進め、相関係数が所定値αより高くない場合には、ステップＳ２６でデータパターンｄＰｔ［ｐ］のｐの値をインクリメントしてステップＳ２３に処理を戻す。これにより、ヘッダ学習部１３は、生データsig_data[x]に近い値のデータパターン群２０１内の生データdataを検索する。
【０１４３】
次のステップＳ２７において、ヘッダ学習部１３は、従属データパターン情報１０２ｃにおける生データsig_dataと、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］における生データdataとが相関があると判断する。
【０１４４】
次のステップＳ２８において、ヘッダ学習部１３は、ステップＳ２７にて相関があると判定されたヘッダパターンｎＰｔに含まれるヘッダスコア値（n_score）１０３の値を更新する。ここで、ヘッダ学習部１３は、ヘッダスコア値（n_score）１０３を高くしているが、低く更新しても良い。また、閾値調整部２４は、当該ヘッダスコア値（n_score）１０３を変更したことに応じて、当該変更後のスコア差が高くなった位置にトラフィック異常閾値Ａtrafficを更新しても良い。
【０１４５】
このように、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔの生データsig_dataとデータパターンｄＰｔの生データdataとの間の相関が高い場合には、ヘッダスコア値（n_score）１０３又はデータスコア値（d_score）２０３を高く又は低く調整する。これにより、ネットワーク異常検知装置１によれば、ヘッダパターンｎＰｔ間のスコア差又はデータパターンｄＰｔ間のスコア差を大きくでき、又は、閾値を高く又は低く調整する。る。これにより、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔ又はデータパターンｄＰｔに対応したＩＤＸ間のスコア差を大きくして、変異点を発生しやすくし、上述した閾値調整を効率化することができる。
【０１４６】
更に、このネットワーク異常検知装置１において、データパターンｄＰｔに含まれる生データdataと、ヘッダパターンｎＰｔごとの生データsig_dataとの間に相関がない場合には、当該トラフィック異常閾値Ａtraffic又はデータ異常閾値Ａdataの変化度合いを高くしても良い。なお、以下の処理は、上述の図２３及び図２４で示した処理、図２５及び図２６で示した処理が行われている場合には実行されない。
【０１４７】
具体的には、図２７に示すように、ヘッダパターンｎＰｔ［ｋ］における従属データパターン情報１０２ｃに含まれるポート番号及びデータの生データsig_dataと、データパターンｄＰｔ［ｐ］における生データsig_dataとの相関がない場合がある。この場合に、閾値調整部２４は、トラフィック異常閾値Ａtraffic又はデータ異常閾値Ａdataの変化度合いを高くする。
【０１４８】
このとき、ヘッダ学習部１３は、図２８に示すように、上述の図２５と同様にステップＳ２１，Ｓ２２，Ｓ２３，Ｓ２４の処理を行う。そして、ステップＳ２３にて肯定判定された後のステップＳ２５”において、ヘッダ学習部１３は、従属データパターン情報１０２ｃにおける生データsig_data[x]と、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］における生データdataとの相関係数が所定値αより低いか否かを判定する。
【０１４９】
相関係数が所定値αよりも低い場合には、ステップＳ２７’に処理を進め、相関係数が所定値αより低くない場合には、ステップＳ２６でデータパターンｄＰｔ［ｐ］のｐの値をインクリメントしてステップＳ２３に処理を戻す。これにより、ヘッダ学習部１３は、生データsig_data[x]と異なる値のデータパターン群２０１内の生データdataを検索する。
【０１５０】
次のステップＳ２７において、ヘッダ学習部１３は、従属データパターン情報１０２ｃにおける生データsig_dataと、データパターン群２０１に含まれるデータパターンｄＰｔ［ｐ］における生データdataとが相関がないと判断する。
【０１５１】
次のステップＳ２８において、ヘッダ学習部１３は、ステップＳ２７にて相関がないと判定されたことに応じてトラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataの調整度合いを高くする。ここで、ヘッダ学習部１３は、ヘッダスコア値（n_score）１０３を高くしているが、低く更新しても良い。また、閾値調整部２４は、当該ヘッダスコア値（n_score）１０３を変更したことに応じて、当該変更後のスコア差が高くなった位置にトラフィック異常閾値Ａtrafficを更新しても良い。
【０１５２】
このように、ネットワーク異常検知装置１は、ヘッダパターンｎＰｔの生データsig_dataとデータパターンｄＰｔの生データdataとの間の相関がない場合には、トラフィック異常閾値Ａtraffic及びデータ異常閾値Ａdataの移動度合いを大きくする。これにより、ネットワーク異常検知装置１は、例えば、上述のＩＤＸの移動度合いを２つづつ変化させるなどの処理によって、上述した閾値調整を効率化することができる。
【０１５３】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【符号の説明】
【０１５４】
１  ネットワーク異常検知装置
１０  通信キャプチャ部
１１  ヘッダ異常検知部
１２  データ異常検知部
１３  ヘッダ学習部
１４  ヘッダスコア定義記憶部
１５  ヘッダパターン群記憶部
１６  従属データパターン群記憶部
１７  ヘッダ閾値群記憶部
１８  データ学習部
１９  データスコア定義記憶部
２０  データパターン群記憶部
２１  従属ヘッダパターン群記憶部
２２  データ閾値群記憶部
２３  閾値定義部
２４  閾値調整部
２５  異常判断部
１０１  ヘッダパターン群
１０２  ヘッダパターン
１０２ａ  第１ヘッダ情報
１０２ｂ  第２ヘッダ情報
１０２ｃ  従属データパターン情報
２０１  データパターン群
２０２  データパターン
２０２ａ  第１データ情報
２０２ｂ  第２データ情報
２０２ｃ  従属ヘッダパターン情報
【図１】
2011135131.tif 000003
【図２】
2011135131.tif 000004
【図３】
2011135131.tif 000005
【図４】
2011135131.tif 000006
【図５】
2011135131.tif 000007
【図６】
2011135131.tif 000008
【図７】
2011135131.tif 000009
【図８】
2011135131.tif 000010
【図９】
2011135131.tif 000011
【図１０】
2011135131.tif 000012
【図１１】
2011135131.tif 000013
【図１２】
2011135131.tif 000014
【図１３】
2011135131.tif 000015
【図１４】
2011135131.tif 000016
【図１５】
2011135131.tif 000017
【図１６】
2011135131.tif 000018
【図１７】
2011135131.tif 000019
【図１８】
2011135131.tif 000020
【図１９】
2011135131.tif 000021
【図２０】
2011135131.tif 000022
【図２１】
2011135131.tif 000023
【図２２】
2011135131.tif 000024
【図２３】
2011135131.tif 000025
【図２４】
2011135131.tif 000026
【図２５】
2011135131.tif 000027
【図２６】
2011135131.tif 000028
【図２７】
2011135131.tif 000029
【図２８】
2011135131.tif 000030