(57)【特許請求の範囲】
【請求項１】
所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出手段と、
前記セッション抽出手段によって抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出手段と、
不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段と、
前記先頭パケット抽出手段によって抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合手段と、
前記照合手段による照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出手段によって抽出されたセッションが不正な通信であることを示す監視結果を出力する出力手段と
を有することを特徴とする通信監視装置。
【請求項２】
前記先頭パケット抽出手段は、
前記セッション抽出手段によって抽出されたセッション内のパケットのうち、ヘッダ部分以外に制御情報を格納するメッセージ部分を含む候補パケットから先頭パケットを抽出することを特徴とする請求項１記載の通信監視装置。
【請求項３】
前記先頭パケット抽出手段は、
前記送受信装置の一方の装置から送信された候補パケットであって、当該一方の装置が前記送受信装置の他方の装置から候補パケットを受信した以後、最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする請求項２記載の通信監視装置。
【請求項４】
前記先頭パケット抽出手段は、
前記送受信装置間でセッションが確立された以後、前記送受信装置の一方の装置から最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする請求項２記載の通信監視装置。
【請求項５】
前記照合手段による照合結果とは無関係に前記セッション抽出手段によって抽出されたセッションが不正な通信であるか否かを判定する判定手段と、
前記判定手段によって不正な通信であると判定された場合に、セッション内のパケットに繰り返し出現するデータパターンから不正シグネチャを生成する生成手段とをさらに有し、
前記記憶手段は、
前記生成手段によって生成された不正シグネチャを記憶することを特徴とする請求項１記載の通信監視装置。
【請求項６】
不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶するメモリを備えたコンピュータによって実行される通信監視プログラムであって、前記コンピュータに、
所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、
前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、
前記先頭パケット抽出ステップにて抽出された先頭パケットと前記メモリによって記憶された不正シグネチャとを照合する照合ステップと、
前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップと
を実行させることを特徴とする通信監視プログラム。
【請求項７】
不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段を備えた通信監視装置における通信監視方法であって、
所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、
前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、
前記先頭パケット抽出ステップにて抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合ステップと、
前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップと
を有することを特徴とする通信監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信監視装置、通信監視プログラム、および通信監視方法に関し、特に、不正な通信の検出精度を劣化させることなく、処理負荷を低減することができる通信監視装置、通信監視プログラム、および通信監視方法に関する。
【背景技術】
【０００２】
従来、インターネットなどのネットワークを介したサーバとクライアントの間の通信においては、例えば正当なアクセス権がない不正なクライアントによるサーバへのアクセスなどの不正な通信を防止することが重要となっている。具体的には、例えば企業などの組織内のＬＡＮ（Local Area Network）とインターネットなどの外部ネットワークとの境界にファイアウォールが設けられ、外部とＬＡＮの通信を制限するなどの対策が一般的である。
【０００３】
ところで、インターネットを介したサーバとクライアント間のデータの送受信には、ＨＴＴＰ（Hyper Text Transfer Protocol）と呼ばれるプロトコルが用いられることがある。ＨＴＴＰは、主にクライアントがウェブサーバからウェブページのデータを取得する際などに用いられる。ＨＴＴＰとして伝送されるデータは、個別に設定されなければ、上述したファイアウォールによっても遮断されることがなく、サーバとクライアント間で自由に送受信される。したがって、悪意があるユーザが不正な伝送路を確立するための制御データをＨＴＴＰとして送信することにより、サーバとクライアント間で不正な通信のための伝送路が容易に確立され、不正な通信が行われる危険性がある。このように、遮断されることがないプロトコル（例えばＨＴＴＰ）を利用した不正な通信のための伝送路の確立は、一般にトンネリングと呼ばれる。
【０００４】
このようなトンネリングを防止するためには、例えば特許文献１および特許文献２などに開示された技術を用いることができる。すなわち、トンネリングの際には、不正な伝送路を確立するための制御データは特定のパターンを含んでいることから、このデータパターンをシグネチャとしてあらかじめ記憶しておき、記憶されたシグネチャと実際に送受信されるパケットとを照合することにより、パケットがトンネリングに利用されているか否かを判断することが可能となる。換言すれば、送受信されるパケットにシグネチャが含まれている場合には、トンネリングが行われていると判断することができる。
【０００５】
【特許文献１】特開２００３−２１８９４９号公報
【特許文献２】特開２００４−１４０６１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したシグネチャを用いるトンネリングの検出では、サーバとクライアント間で送受信されるすべてのパケットとシグネチャとの照合を実行する必要があり、不正な通信の有無を監視するための処理負荷が非常に大きいという問題がある。すなわち、サーバとクライアント間で送受信される大部分のパケットは、正当な通信のためのパケットであり、トンネリングなどの不正な通信のためのパケットはごく一部であるにも拘らず、すべてのパケットを監視しなくては不正な通信を検出することができない。したがって、サーバとクライアント間で送受信されるパケットと、あらかじめ記憶されたシグネチャとを照合する処理がすべてのパケットに関して繰り返され、効率の向上には一定の限界がある。
【０００７】
また、一部のパケットをサンプルとして無作為に抽出し、シグネチャとの照合を行うこととすれば、処理負荷を低減することは可能であるものの、不正な通信のためのパケットがサンプルとならなかった場合には、シグネチャと一致する部分がパケットに含まれていないため、不正な通信の検出精度が劣化してしまう。
【０００８】
本発明はかかる点に鑑みてなされたものであり、不正な通信の検出精度を劣化させることなく、処理負荷を低減することができる通信監視装置、通信監視プログラム、および通信監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係る通信監視装置は、所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出手段と、前記セッション抽出手段によって抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出手段と、不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段と、前記先頭パケット抽出手段によって抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合手段と、前記照合手段による照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出手段によって抽出されたセッションが不正な通信であることを示す監視結果を出力する出力手段とを有する構成を採る。
【００１０】
また、本発明に係る通信監視プログラムは、不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶するメモリを備えたコンピュータによって実行される通信監視プログラムであって、前記コンピュータに、所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、前記先頭パケット抽出ステップにて抽出された先頭パケットと前記メモリによって記憶された不正シグネチャとを照合する照合ステップと、前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップとを実行させるようにした。
【００１１】
また、本発明に係る通信監視方法は、不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段を備えた通信監視装置における通信監視方法であって、所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、前記先頭パケット抽出ステップにて抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合ステップと、前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップとを有するようにした。
【００１２】
これらによれば、セッション内のパケットから制御情報を含む先頭パケットを抽出し、先頭パケットのみに対して不正シグネチャとの照合を実行するため、セッション内のすべてのパケットと不正シグネチャとの照合を実行する必要がなく、処理負荷を低減することができる。また、制御情報を含む先頭パケットに関しては、すべて不正シグネチャとの照合が実行されるため、不正な通信の検出精度を劣化させることがない。
【発明の効果】
【００１３】
本明細書に開示された通信監視装置、通信監視プログラム、および通信監視方法によれば、不正な通信の検出精度を劣化させることなく、処理負荷を低減することができる。
【発明を実施するための最良の形態】
【００１４】
本発明の骨子は、制御データと情報データからなるメッセージが複数のパケットに分割されて伝送される場合において、制御データを含む先頭パケットを抽出し、抽出された先頭パケットのみに対して不正な通信のデータパターンを示す不正シグネチャとの照合を実行することである。以下、本発明の一実施の形態について、図面を参照しながら詳細に説明する。
【００１５】
図１は、本発明の一実施の形態に係る通信システムの概略構成を示すブロック図である。同図に示す通信システムは、サーバ１０、クライアント２０、中継装置３０、および通信監視装置１００を有している。
【００１６】
サーバ１０は、ネットワークＮに接続されており、ネットワークＮを介して複数のクライアント２０との間でパケットを送受信する。また、複数のクライアント２０は、中継装置３０を介してネットワークＮに接続されており、サーバ１０との間でパケットを送受信する。中継装置３０は、例えばルータ、スイッチ、またはファイアウォールなどを含み、サーバ１０とクライアント２０間で送受信されるパケットを中継する。
【００１７】
ここで、サーバ１０およびクライアント２０は、互いにアプリケーション層のメッセージを生成してデータを要求したり応答したりするが、このメッセージは、サイズが一定ではないため、このメッセージをＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）層の所定サイズのパケットとして送受信している。すなわち、サーバ１０およびクライアント２０は、通信プロトコルの制御情報を含む制御データと制御情報によって制御する対象となる情報データとからなるメッセージを生成し、生成されたメッセージを１パケットに対応する所定サイズに分割して送信する。
【００１８】
具体的には、図２に示すように、サーバ１０およびクライアント２０は、それぞれサイズが異なるメッセージを生成し、各メッセージをパケットに分割した上で送信する。図２に示す例では、例えば制御データ＃１および情報データ＃１からなるメッセージは２パケットに分割して送信されるのに対し、例えば制御データ＃４および情報データ＃４からなるメッセージは１パケットで送信される。そして、メッセージが複数のパケットに分割して送信される場合には、最初に送信されるパケットにのみ制御データが含まれることになる。以下においては、制御データを含むパケットを先頭パケットという。トンネリングでは、制御データを含む先頭パケットがサーバ１０とクライアント２０間でやり取りされることにより、不正な伝送路が確立される。
【００１９】
また、本実施の形態に係るパケット構成は、例えば図３のようになっている。すなわち、メッセージを構成する制御データ４３および情報データ４４に、これらのデータの暗号化に関するＳＳＬ（Secure Socket Layer）ヘッダ４２が付加され、さらにＴＣＰ／ＩＰヘッダ４１が付加されている。なお、ＳＳＬヘッダ４２は暗号化に関するヘッダであるため、データの暗号化が行われない場合には、ＳＳＬヘッダ４２が付加されていなくても良い。
【００２０】
ＴＣＰ／ＩＰヘッダ４１は、インターネットを介してパケットを送受信するために付加されており、宛先アドレス、送信元アドレス、データ長、Ｓｅｑ番号、Ａｃｋ番号、および種別などのフィールドを含んでいる。これらのうち、宛先アドレスおよび送信元アドレスは、パケットの宛先および送信元のアドレスを格納するフィールドであり、ここでは、サーバ１０またはクライアント２０のアドレスが格納されることになる。また、データ長は、パケットに含まれるデータのサイズに関するフィールドであり、ＳＳＬヘッダ４２、制御データ４３、および情報データ４４のサイズが格納される。
【００２１】
Ｓｅｑ番号は、サーバ１０およびクライアント２０の間で確立されるセッションにおいて、送信側から送信された合計のデータ量を示す数値を格納するフィールドである。したがって、サーバ１０から送信されたパケットにおいては、Ｓｅｑ番号として、セッション内でサーバ１０から送信された合計のデータ量を示す数値が格納され、クライアント２０から送信されたパケットにおいては、Ｓｅｑ番号として、セッション内でクライアント２０から送信された合計のデータ量を示す数値が格納される。
【００２２】
一方、Ａｃｋ番号は、サーバ１０およびクライアント２０の間で確立されるセッションにおいて、受信側から送信された合計のデータ量を示す数値を格納するフィールドである。したがって、サーバ１０から送信されたパケットにおいては、Ａｃｋ番号として、セッション内でクライアント２０から送信された合計のデータ量を示す数値が格納され、クライアント２０から送信されたパケットにおいては、Ａｃｋ番号として、セッション内でサーバ１０から送信された合計のデータ量を示す数値が格納される。なお、Ｓｅｑ番号およびＡｃｋ番号のいずれについても、初期値は例外的な数値となる。
【００２３】
種別は、パケットの種別を格納するフィールドであり、セッションの確立を要求するＳＹＮパケット、セッションの切断を要求するＦＩＮパケット、またはパケットの受信確認応答であるＡＣＫパケットなどのパケットの種別が格納される。
【００２４】
図１に戻って、通信監視装置１００は、サーバ１０とクライアント２０間で送受信されるパケットを取得し、サーバ１０とクライアント２０間で確立されるそれぞれのセッションごとに不正なメッセージが送受信されているか否かを監視する。このとき、通信監視装置１００は、パケットのＴＣＰ／ＩＰヘッダ４１に含まれるＡｃｋ番号およびデータ長のフィールドに基づいて先頭パケットを抽出し、抽出された先頭パケットのみに対して不正シグネチャとの照合を実行する。なお、通信監視装置１００による通信の監視については、後に詳述する。
【００２５】
次に、本実施の形態に係るサーバ１０およびクライアント２０の間の通信手順について、具体的に例を挙げながら図４を参照して説明する。図４は、クライアント２０がサーバ１０に対してセッションの確立を要求し、メッセージを含むパケットを送受信する場合のシーケンス図である。
【００２６】
まず、クライアント２０は、サーバ１０との間でセッションの確立を要求する際、ＳＹＮパケットをサーバ１０に対して送信する（ステップＳ５１）。このＳＹＮパケットは、メッセージを含まないため、主にＴＣＰ／ＩＰヘッダ４１のみから構成されている。そして、ＳＹＮパケットは、セッションの最初に送信されるパケットであるため、ＴＣＰ／ＩＰヘッダ４１のＳｅｑ番号には初期値が格納されており、Ａｃｋ番号には数値が格納されていない。ここでは、Ｓｅｑ番号の初期値を０とするが、Ｓｅｑ番号の初期値は、乱数によって設定されても良い。
【００２７】
ＳＹＮパケットがサーバ１０によって受信されると、サーバ１０は、ＳＹＮパケットの受信確認応答としてＳＹＮ／ＡＣＫパケットをクライアント２０へ送信する（ステップＳ６１）。このＳＹＮ／ＡＣＫパケットは、メッセージを含まないため、主にＴＣＰ／ＩＰヘッダ４１のみから構成されている。そして、ＳＹＮ／ＡＣＫパケットは、セッションにおいてサーバ１０から最初に送信されるパケットであるため、ＴＣＰ／ＩＰヘッダ４１のＳｅｑ番号には、初期値０が格納されており、Ａｃｋ番号にはＳＹＮパケットのＳｅｑ番号に１を加算した１が格納されている。ここでは、Ｓｅｑ番号の初期値を０とするが、Ｓｅｑ番号の初期値は、乱数によって設定されても良い。
【００２８】
ＳＹＮ／ＡＣＫパケットがクライアント２０によって受信されると、クライアント２０は、ＳＹＮ／ＡＣＫパケットの受信確認応答としてＡＣＫパケットをサーバ１０へ送信する（ステップＳ５２）。このＡＣＫパケットのＳｅｑ番号には、ＳＹＮ／ＡＣＫパケットのＡｃｋ番号に等しい１が格納されている。また、Ａｃｋ番号には、ＳＹＮ／ＡＣＫパケットのＳｅｑ番号に１を加算した１が格納されている。
【００２９】
ＡＣＫパケットの送信後、クライアント２０は、メッセージを含むＤＡＴＡパケットをサーバ１０へ送信するが、ここでは、メッセージのサイズが大きいため、メッセージを２つのＤＡＴＡパケットに分割して送信する（ステップＳ５３、Ｓ５４）。最初のＤＡＴＡパケット送信時までは、まだセッション内においてメッセージが送受信されていないため、最初のＤＡＴＡパケットのＳｅｑ番号およびＡｃｋ番号は、１のままとなる。一方、２つ目のＤＡＴＡパケットの送信時には、最初のＤＡＴＡパケットによってデータ長が２のメッセージが送信されているため、Ｓｅｑ番号が２増加して３となる。
【００３０】
２つのＤＡＴＡパケットがサーバ１０によって受信されると、サーバ１０は、２つのＤＡＴＡパケットの受信確認応答としてＡＣＫパケットをクライアント２０へ送信する（ステップＳ６２）。このＡＣＫパケットの送信時までは、まだセッション内においてサーバ１０からメッセージが送信されていないため、ＡＣＫパケットのＳｅｑ番号は、１のままとなる。一方、クライアント２０からは、最初のＤＡＴＡパケットおよび２つ目のＤＡＴＡパケットによってそれぞれデータ長が２および１のメッセージが送信されているため、ＡＣＫパケットのＡｃｋ番号が３増加して４となる。
【００３１】
ＡＣＫパケットの送信後、サーバ１０は、例えばウェブページのデータを含むＤＡＴＡパケットをクライアント２０へ送信する（ステップＳ６３）。ここでは、１つのＤＡＴＡパケットによってデータ長が１のメッセージが送信されており、このＤＡＴＡパケットの送信時までは、まだセッション内においてサーバ１０からメッセージが送信されておらず、クライアント２０から送信されたデータ量も変化していないため、ＤＡＴＡパケットのＳｅｑ番号は１、Ａｃｋ番号は４のままとなる。
【００３２】
ＤＡＴＡパケットがクライアント２０によって受信されると、クライアント２０は、ＤＡＴＡパケットの受信確認応答としてＡＣＫパケットをサーバ１０へ送信する（ステップＳ５５）。このＡＣＫパケット送信時においては、クライアント２０から既にデータ長が２および１のメッセージが送信されているとともに、サーバ１０から既にデータ長が１のメッセージが送信されているため、ＡＣＫパケットのＳｅｑ番号は４となり、Ａｃｋ番号は２となる。
【００３３】
ＡＣＫパケットの送信後、クライアント２０は、上記と同様なＤＡＴＡパケットをサーバ１０へ送信する（ステップＳ５６）。ここでは、このＤＡＴＡパケットのデータ長を１とする。ＤＡＴＡパケットがサーバ１０によって受信されると、サーバ１０は、ＡＣＫパケットをクライアント２０へ送信する（ステップＳ６４）。ここでは、ＤＡＴＡパケットにより、サーバ１０およびクライアント２０から送信されたデータ量が前回のパケット送信時よりも増加したため、ＡＣＫパケットのＳｅｑ番号は２となり、Ａｃｋ番号は５となる。
【００３４】
このようにサーバ１０およびクライアント２０は、確立されたセッションを用いてＤＡＴＡパケットおよびＡＣＫパケットを送受信し、セッション内で送受信されたメッセージのデータ量を示すＳｅｑ番号およびＡｃｋ番号が増加していく。そして、クライアント２０は、セッションを切断する際には、ＦＩＮパケットをサーバ１０に対して送信する（ステップＳ５７）。ＦＩＮパケットを受信したサーバ１０は、ＡＣＫパケットをクライアント２０へ送信し（ステップＳ６５）、クライアント２０と同様にＦＩＮパケットも送信する（ステップＳ６６）。クライアント２０は、サーバ１０からのＦＩＮパケットに対してＡＣＫパケットを送信し（ステップＳ５８）、セッションを切断する。このセッション切断処理の間は、メッセージが送受信されることがないため、各パケットのＳｅｑ番号およびＡｃｋ番号は変化しない。
【００３５】
本実施の形態に係る通信監視装置１００は、上記のようにサーバ１０とクライアント２０間のセッション内で送受信されるパケットを取得し、このセッションがトンネリングなどの不正な通信に関するものであるか否かを判定することになる。図５は、本実施の形態に係る通信監視装置１００の要部構成を示すブロック図である。同図に示す通信監視装置１００は、パケット受信部１０１、パケット蓄積部１０２、セッション抽出部１０３、番号情報取得部１０４、先頭パケット抽出部１０５、不要部分除去部１０６、不正シグネチャ記憶部１０７、不正シグネチャ照合部１０８、監視結果出力部１０９、不正通信検出部１１０、および不正シグネチャ生成部１１１を有している。
【００３６】
パケット受信部１０１は、サーバ１０およびクライアント２０の間で送受信されるすべてのパケットを受信する。パケット蓄積部１０２は、パケット受信部１０１によって受信されたパケットを蓄積する。なお、パケット蓄積部１０２は、後述する処理において不正な通信が検出されないセッションのパケットについては、宛先アドレスによって指定されるサーバ１０またはクライアント２０へ送信するものとしても良い。また、パケット蓄積部１０２は、パケット受信部１０１によって受信されたパケットの複製を蓄積し、元のパケットをサーバ１０またはクライアント２０へ送信するものとしても良い。
【００３７】
セッション抽出部１０３は、パケット蓄積部１０２によって蓄積されたパケットの中から、１つのセッションに相当するパケット群を抽出する。具体的には、セッション抽出部１０３は、パケット蓄積部１０２によって蓄積されたパケットの中から、セッション確立時に送受信されるＳＹＮパケットとセッション切断時に送受信されるＦＩＮパケットとを検索して抽出するとともに、これらのＳＹＮパケットおよびＦＩＮパケットの間に同一のサーバ１０とクライアント２０間で送受信されたパケットをすべて抽出する。また、セッション抽出部１０３は、セッションが強制終了される場合に送受信されるＲＳＴパケットを検索したり、セッションのタイムアウトを検出したりすることも併せて実行し、セッションを抽出しても良い。
【００３８】
番号情報取得部１０４は、セッション抽出部１０３によって抽出された１セッション分の各パケットのＴＣＰ／ＩＰヘッダからＳｅｑ番号、Ａｃｋ番号、およびデータ長を含む番号情報を取得する。
【００３９】
先頭パケット抽出部１０５は、番号情報取得部１０４によって取得されたＳｅｑ番号、Ａｃｋ番号、およびデータ長に基づいて、メッセージの制御データを含む先頭パケットを抽出する。具体的には、先頭パケット抽出部１０５は、まず、番号情報取得部１０４によって取得されたデータ長が０のパケットはＳＹＮパケットやＡＣＫパケットなどのメッセージを含まないパケットであるため、先頭パケットではないと判断する。そして、先頭パケット抽出部１０５は、データ長が０のパケットを除外した残りのパケットをＳｅｑ番号順に並べる。さらに、先頭パケット抽出部１０５は、時系列に並べられたパケットのＡｃｋ番号を参照し、直前のパケットからＡｃｋ番号が増加したパケットを先頭パケットとして抽出する。
【００４０】
これらの番号情報取得部１０４および先頭パケット抽出部１０５は、後述する不正シグネチャとの照合の対象パケットを選択する対象パケット選択部として機能する。このように、セッション内のすべてのパケットの中から対象パケットを絞り込むことにより、不正シグネチャとの照合による処理負荷を低減することが可能となる。
【００４１】
不要部分除去部１０６は、セッション内のパケットからトンネリングなどの不正な通信を検出するのに不要な部分を除去する。具体的には、不要部分除去部１０６は、パケットに付加されたＴＣＰ／ＩＰヘッダやメッセージの暗号化に関するＳＳＬヘッダなどを除去し、メッセージ部分のみを取得する。そして、不要部分除去部１０６は、先頭パケット抽出部１０５によって抽出された先頭パケットのメッセージ部分を不正シグネチャ照合部１０８へ出力する。また、不要部分除去部１０６は、不正通信検出部１１０から要求がある場合に、すべてのパケットのメッセージ部分を不正通信検出部１１０へ出力する。
【００４２】
不正シグネチャ記憶部１０７は、トンネリングなどの不正な通信時に送受信されるパケットに頻繁に含まれるデータパターンを不正シグネチャとして記憶する。具体的には、不正シグネチャ記憶部１０７は、例えば図６に示すように、それぞれ数バイトのデータパターンからなる複数の不正シグネチャを記憶している。また、図６では省略したが、不正シグネチャ記憶部１０７は、それぞれの不正シグネチャがパケットのメッセージ部分に配置される位置をデータパターンとともに記憶している。すなわち、不正シグネチャ記憶部１０７は、例えば図６に示す各データパターンがメッセージ部分の先頭から何バイト目に配置されるかを記憶している。
【００４３】
不正シグネチャ照合部１０８は、不要部分除去部１０６によって不要部分が除去されて得られた先頭パケットのメッセージ部分と不正シグネチャ記憶部１０７によって記憶された不正シグネチャとを照合する。すなわち、不正シグネチャ照合部１０８は、先頭パケットのメッセージ部分に不正シグネチャと一致するデータパターンが含まれているか否かを判定する。そして、不正シグネチャ照合部１０８は、先頭パケットのメッセージ部分に不正シグネチャと一致するデータパターンが含まれていれば、現在抽出されているセッションが不正な通信であることを監視結果出力部１０９へ通知する。また、不正シグネチャ照合部１０８は、先頭パケットのメッセージ部分に不正シグネチャと一致するデータパターンが含まれていなければ、不正シグネチャを利用せずに不正な通信を検出する必要があることを監視結果出力部１０９へ通知する。
【００４４】
監視結果出力部１０９は、不正シグネチャ照合部１０８から現在抽出されているセッションが不正な通信であることが通知されると、その旨を監視結果として出力する。また、監視結果出力部１０９は、不正シグネチャ照合部１０８から不正シグネチャを利用せずに不正な通信を検出する必要があることが通知されると、不正通信検出部１１０に対して不正な通信を検出するように指示する。
【００４５】
不正通信検出部１１０は、監視結果出力部１０９からの指示があると、不要部分除去部１０６によって不要部分が除去されたすべてのパケットのメッセージ部分を取得し、メッセージ部分が不正な通信を実行するものであるか否かを判定する。具体的には、不正通信検出部１１０は、例えばセッション内のメッセージ部分に同一のデータパターンが繰り返し出現するか否かを判定し、同一のデータパターンが繰り返し出現する場合には、セッションが不正な通信であると判断する。これは、トンネリングなどの不正な通信においては、不正な伝送路の確立のために同一のデータパターンがメッセージ部分の特に制御データに含まれることが多いため、同一のデータパターンの出現頻度によって不正な通信を検出することに他ならない。
【００４６】
なお、不正通信検出部１１０は、例えば不正と判定されたメッセージ部分において指定されているアクセス先に実際にアクセスし、アクセス先から取得されるウェブページなどに不正な通信を特徴付ける単語が含まれているか否かを判定することにより、さらに確実に不正な通信を検出するようにしても良い。そして、不正通信検出部１１０は、セッションが不正な通信であると判定した場合には、その旨を監視結果出力部１０９から出力させる。
【００４７】
不正シグネチャ生成部１１１は、不正通信検出部１１０によってセッションが不正な通信であると判定された場合、メッセージ部分に繰り返し出現している同一のデータパターンから不正シグネチャを生成する。すなわち、同一のデータパターンが繰り返し出現するセッションは、不正通信検出部１１０によって不正な通信であると判定されるため、不正シグネチャ生成部１１１は、セッション内で繰り返し出現する一連のデータパターンを不正な通信の特徴となる不正シグネチャとする。そして、不正シグネチャ生成部１１１は、生成した不正シグネチャを不正シグネチャ記憶部１０７に記憶させる。したがって、不正通信検出部１１０によって不正な通信が検出されると、不正シグネチャ生成部１１１によって生成された新たな不正シグネチャが不正シグネチャ記憶部１０７によって学習されることになる。
【００４８】
次いで、上記のように構成された通信監視装置１００の動作について、図７に示すフロー図を参照しながら説明する。
【００４９】
サーバ１０およびクライアント２０の間で送受信されるパケットは、常時通信監視装置１００のパケット受信部１０１によって受信されており、パケット蓄積部１０２によって蓄積される。そして、セッション抽出部１０３によって、蓄積されたパケットの中から１つのセッションに相当するパケット群が抽出される（ステップＳ１０１）。すなわち、セッション抽出部１０３によって、セッション確立時に送受信されるＳＹＮパケットとセッション切断時に送受信されるＦＩＮパケットとが検出され、ＳＹＮパケットの送受信時からＦＩＮパケットの送受信時までの間に送受信されたパケット群が１つのセッションのパケットとして抽出される。なお、上述したように、セッションの抽出に際しては、セッション抽出部１０３によって、ＲＳＴパケットが検索されたり、セッションのタイムアウトが検出されたりするようにしても良い。
【００５０】
そして、番号情報取得部１０４によって、セッション内のパケットのＴＣＰ／ＩＰヘッダからＳｅｑ番号、Ａｃｋ番号、およびデータ長を含む番号情報が取得される。取得された番号情報は、先頭パケット抽出部１０５へ通知され、先頭パケット抽出部１０５によって、メッセージの制御データを含む先頭パケットが抽出される（ステップＳ１０２）。先頭パケット抽出部１０５による先頭パケットの抽出については、後に詳述する。
【００５１】
セッション内の先頭パケットが抽出された後、不要部分除去部１０６によって、セッション内のすべてのパケットからメッセージ部分以外の不要部分が除去される（ステップＳ１０３）。すなわち、例えば図３に示したパケット構成においては、ＴＣＰ／ＩＰヘッダ４１およびＳＳＬヘッダ４２が除去される。このように、本実施の形態においては、ＴＣＰ／ＩＰヘッダのみならず、ＳＳＬヘッダなどのメッセージ部分以外の不要部分をパケットから除去するため、不正シグネチャに一致するデータパターンが例えばＳＳＬヘッダに含まれるような場合に、セッションが不正な通信であると誤検出されることを防止することができる。
【００５２】
セッション内のすべてのパケットからメッセージ部分が取得されると、先頭パケットのメッセージ部分が不正シグネチャ照合部１０８へ出力され、不正シグネチャ照合部１０８によって、不正シグネチャ記憶部１０７に既に記憶されている不正シグネチャとの照合が実行される（ステップＳ１０４）。ここで、本実施の形態においては、先頭パケット抽出部１０５によって先頭パケットが抽出され、抽出された先頭パケットのメッセージ部分のみに対して不正シグネチャとの照合が実行されるため、セッション内のすべてのパケットについての照合が不要となる。結果として、不正シグネチャ照合部１０８における照合の処理負荷を低減することができる。また、先頭パケットは、メッセージのうち特に制御データを含んでいるため、先頭パケットのみに対して不正シグネチャとの照合を実行すれば、不正な伝送路を確立するための制御情報を遺漏なくメッセージから検出することができ、トンネリングなどの不正な通信を確実に検出することができる。
【００５３】
先頭パケットのメッセージ部分に対する照合の結果、不正シグネチャと一致する部分が含まれるか否かが不正シグネチャ照合部１０８によって判定され（ステップＳ１０５）、一致する部分が含まれる場合には（ステップＳ１０５Ｙｅｓ）、現在抽出されているセッションが不正な通信である旨の監視結果が監視結果出力部１０９から通知される（ステップＳ１０６）。なお、この場合には、パケット蓄積部１０２に蓄積されたセッション内のパケットが破棄されるようにしても良く、宛先となっているサーバ１０またはクライアント２０へ送信されるようにしても良い。
【００５４】
一方、先頭パケットのメッセージ部分に不正シグネチャと一致する部分が含まれていない場合には（ステップＳ１０５Ｎｏ）、監視結果出力部１０９から不正通信検出部１１０に対して、不正シグネチャを利用せずに不正な通信を検出するように指示される。また、本実施の形態においては、不正シグネチャ照合部１０８による不正シグネチャとの照合により不正な通信であると判定されたセッションについても、新たな不正シグネチャの学習のために、不正シグネチャを利用しない不正な通信の検出が試みられる。
【００５５】
すなわち、不正通信検出部１１０によって、セッション内のすべてのパケットのメッセージ部分が不要部分除去部１０６から取得され、各メッセージ部分の特に制御データに繰り返し出現する同一のデータパターンがあるか否かが判定されることにより、不正な通信が検出される（ステップＳ１０７）。上述したように、トンネリングなどの不正な通信に該当するセッションにおいては、不正な伝送路を確立するために、同一のデータパターンがメッセージ部分の制御データに含まれることが多く、不正通信検出部１１０では、このデータパターンの繰り返しが検出されることにより、セッションが不正な通信であるか否かが判定されている（ステップＳ１０８）。
【００５６】
また、同一のデータパターンの繰り返しがメッセージ部分から検出された場合には、不正通信検出部１１０によって、メッセージ部分において指定されているアクセス先へのアクセスが実際に実行され、アクセス先から取得されるウェブページ内に不正な通信を特徴付ける単語などが配置されているか否かが確認され、より確実に不正な通信であるか否かが判断されるようにしても良い。
【００５７】
このような不正通信検出部１１０による不正通信の検出の結果、セッションが不正な通信と判定された場合には（ステップＳ１０８Ｙｅｓ）、不正シグネチャ生成部１１１によって、セッション内の制御データに繰り返し出現する同一のデータパターンから新たな不正シグネチャが生成され、不正シグネチャ記憶部１０７に登録される（ステップＳ１０９）。また、不正シグネチャ照合部１０８によってセッションが不正な通信であると判定された場合と同様に、現在抽出されているセッションが不正な通信である旨の監視結果が監視結果出力部１０９から通知される（ステップＳ１１０）。そして、この場合には、パケット蓄積部１０２に蓄積されたセッション内のパケットが破棄されたり、宛先となっているサーバ１０またはクライアント２０へ送信されたりして、処理が完了する。
【００５８】
一方、セッションが不正な通信と判定されない場合には（ステップＳ１０８Ｎｏ）、パケット蓄積部１０２に蓄積されたセッション内のパケットが、宛先となっているサーバ１０またはクライアント２０へ送信され、処理が完了する。なお、パケット蓄積部１０２にパケットの複製が蓄積されており、元のパケットが既にサーバ１０またはクライアント２０へ送信されている場合には、パケット蓄積部１０２に蓄積されたパケットの複製が破棄されるようにしても良い。
【００５９】
次に、本実施の形態に係る先頭パケット抽出処理について、具体的に例を挙げながら図８に示すフロー図を参照して説明する。
【００６０】
本実施の形態においては、パケット蓄積部１０２によって蓄積されたパケットの中から、セッション抽出部１０３によって１つのセッションのパケットが抽出される。そして、番号情報取得部１０４によって、各パケットのＴＣＰ／ＩＰヘッダに格納されたＳｅｑ番号、Ａｃｋ番号、およびデータ長が取得される（ステップＳ２０１）。ここでは、例えば図９上段に示すように、クライアント２０から送信されたパケット＃１、＃３、＃４、＃５、＃８、＃９とサーバ１０から送信されたパケット＃２、＃６、＃７とが１つのセッションに相当するパケットとして抽出され、それぞれのパケットのＳｅｑ番号、Ａｃｋ番号、およびデータ長は図示された通りであるものとする。
【００６１】
番号情報取得部１０４によって各パケットのＳｅｑ番号、Ａｃｋ番号、およびデータ長が取得されると、先頭パケット抽出部１０５によって、セッション内で最初に送受信された最先パケットが選択される（ステップＳ２０２）。ここでは、クライアント２０から送信されたパケット＃１が最先パケットとして選択される。そして、先頭パケット抽出部１０５によって、最先パケットのデータ長が０であるか否かが判定され（ステップＳ２０３）、データ長が０である場合には（ステップＳ２０３Ｙｅｓ）、選択中の最先パケットは、ＳＹＮパケットやＡＣＫパケットなどのメッセージを含まないパケットであることから、不正シグネチャとの照合の対象外であると判断される（ステップＳ２０５）。ここでは、最先パケットであるパケット＃１のデータ長が０であるため、パケット＃１は対象外とされる。
【００６２】
一方、データ長が０でない場合には（ステップＳ２０３Ｎｏ）、選択中の最先パケットがメッセージを含むパケットであることから、制御データを含む先頭パケット候補であると判断される（ステップＳ２０４）。このように、選択中の最先パケットに対して、先頭パケット候補であるか対象外のパケットであるかの判断が実行されると、先頭パケット抽出部１０５によって、セッション内のすべてのパケットが先頭パケット候補または対象外のパケットに振り分けられたか否かが判断され（ステップＳ２０６）、全パケットについて振り分けが完了していれば（ステップＳ２０６Ｙｅｓ）、次の処理へ進む。ここでは、パケット＃１が対象外のパケットに振り分けられたのみであるため、全パケットについての振り分けが完了しておらず（ステップＳ２０６Ｎｏ）、セッション内の残りのパケットから改めて最先パケットとしてパケット＃２が選択され（ステップＳ２０２）、パケット＃１と同様の振り分けが行われる。
【００６３】
以上のような振り分けが繰り返されることにより、図９上段に太枠で示すクライアント２０から送信されたパケット＃４、＃５、＃９とサーバ１０から送信されたパケット＃７とが、図９中段に示すように先頭パケット候補となる。これらのパケットは、いずれもデータ長が０とはなっていない。
【００６４】
先頭パケット抽出部１０５によって先頭パケット候補が抽出されると、先頭パケット候補の中で最初に送受信された先頭パケット候補が選択される（ステップＳ２０７）。ここでは、クライアント２０から送信されたパケット＃４が選択される。そして、先頭パケット抽出部１０５によって、選択された先頭パケット候補のＡｃｋ番号が１つ前の先頭パケット候補のＡｃｋ番号から増加しているか否かが判定される（ステップＳ２０８）。この判定においては、選択された先頭パケット候補がクライアント２０から送信されたパケットである場合にはクライアント２０から送信された１つ前の先頭パケット候補のＡｃｋ番号との比較が行われ、選択された先頭パケット候補がサーバ１０から送信されたパケットである場合にはサーバ１０から送信された１つ前の先頭パケット候補のＡｃｋ番号との比較が行われる。また、１つ前に送信された先頭パケット候補がない場合には、Ａｃｋ番号が増加したものと判定される。
【００６５】
この判定の結果、Ａｃｋ番号が増加していれば（ステップＳ２０８Ｙｅｓ）、選択された先頭パケット候補は、セッション開始後またはパケットの送信先からメッセージを含むパケット受信後に、初めて送信されるメッセージを含むパケットであることになるため、このパケットには制御データが含まれることから、選択された先頭パケット候補は先頭パケットであると判断される（ステップＳ２０９）。ここでは、選択されたパケット＃４がセッション開始後に初めて送信されるメッセージを含むパケットであるため、パケット＃４は、先頭パケットであると判断される。
【００６６】
一方、Ａｃｋ番号が増加していなければ（ステップＳ２０８Ｎｏ）、選択された先頭パケット候補は、メッセージが分割された場合の情報データのみを含むパケットであることから、選択された先頭パケット候補は、不正シグネチャとの照合の対象外と判断される（ステップＳ２１０）。このように、選択中の先頭パケット候補に対して、先頭パケットであるか対象外のパケットであるかの判断が実行されると、先頭パケット抽出部１０５によって、セッション内のすべての先頭パケット候補が先頭パケットまたは対象外のパケットに振り分けられたか否かが判断され（ステップＳ２１１）、全パケットについて振り分けが完了していれば（ステップＳ２１１Ｙｅｓ）、先頭パケットの抽出が完了したことになる。ここでは、パケット＃４が先頭パケットに振り分けられたのみであるため、全パケットについての振り分けが完了しておらず（ステップＳ２１１Ｎｏ）、セッション内の残りの先頭パケット候補から改めて最先のパケット＃５が選択され（ステップＳ２０７）、パケット＃４と同様の振り分けが行われる。
【００６７】
以上のような振り分けが繰り返されることにより、図９中段に太枠で示すクライアント２０から送信されたパケット＃４、＃９とサーバ１０から送信されたパケット＃７とが、図９下段に示すように先頭パケットとなる。このうち、例えばパケット＃５に関しては、データ長が１であるものの、Ａｃｋ番号がパケット＃４のＡｃｋ番号と等しく１のままであるため、パケット＃４の送信時からパケット＃５の送信時までの間にパケット送信先からメッセージを含むパケットが受信されていないことがわかる。したがって、パケット＃４およびパケット＃５は、一連のメッセージを分割して伝送するパケットであることになり、パケット＃５は、先頭パケットではないと判定される。
【００６８】
以上のように、本実施の形態によれば、パケットのＴＣＰ／ＩＰヘッダに格納されるＳｅｑ番号、Ａｃｋ番号、およびデータ長からメッセージの制御データを含む先頭パケットを抽出し、抽出された先頭パケットのみに対して不正シグネチャとの照合を実行するため、すべてのパケットに対する不正シグネチャとの照合が不要となり、処理負荷を低減することができる。また、トンネリングなどの不正な通信において利用されるメッセージの制御データに関しては、必ず不正シグネチャとの照合が実行されるため、不正な通信の検出精度を劣化させることがない。
【００６９】
なお、上記一実施の形態においては、不正シグネチャとの照合によりセッションが不正な通信ではないと判定された場合に、不正シグネチャを利用しない他の方法で不正な通信を検出し、新たな不正シグネチャを学習するものとしたが、必ずしも不正シグネチャの学習を実行する必要はない。すなわち、すべての不正シグネチャがあらかじめ不正シグネチャ記憶部１０７によって記憶されていれば、これらの不正シグネチャと先頭パケットの照合を実行することにより、不正な通信を確実に検出することができる。この場合には、不要部分除去部１０６は、先頭パケットについてのみＴＣＰ／ＩＰヘッダなどの不要部分を除去すれば良く、さらに処理負荷を低減することができる。
【００７０】
また、上記一実施の形態においては、通信監視装置１００によって先頭パケットの抽出および不正シグネチャとの照合が実行されるものとしたが、これらの処理をコンピュータが読み取り可能なプログラムとして記述し、このプログラムをコンピュータに実行させることにより、本発明を実施することも可能である。
【００７１】
以上の実施の形態に関して、さらに以下の付記を開示する。
【００７２】
（付記１）所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出手段と、
前記セッション抽出手段によって抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出手段と、
不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段と、
前記先頭パケット抽出手段によって抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合手段と、
前記照合手段による照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出手段によって抽出されたセッションが不正な通信であることを示す監視結果を出力する出力手段と
を有することを特徴とする通信監視装置。
【００７３】
（付記２）前記先頭パケット抽出手段は、
前記セッション抽出手段によって抽出されたセッション内のパケットのうち、ヘッダ部分以外に制御情報を格納するメッセージ部分を含む候補パケットから先頭パケットを抽出することを特徴とする付記１記載の通信監視装置。
【００７４】
（付記３）前記先頭パケット抽出手段は、
前記送受信装置の一方の装置から送信された候補パケットであって、当該一方の装置が前記送受信装置の他方の装置から候補パケットを受信した以後、最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記２記載の通信監視装置。
【００７５】
（付記４）前記先頭パケット抽出手段は、
前記送受信装置間でセッションが確立された以後、前記送受信装置の一方の装置から最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記２記載の通信監視装置。
【００７６】
（付記５）前記先頭パケット抽出手段は、
前記送受信装置の一方の装置から送信された候補パケットのヘッダ部分であって、前記送受信装置の他方の装置が送信済みのデータ量を示すヘッダ部分に基づいて先頭パケットを抽出することを特徴とする付記２記載の通信監視装置。
【００７７】
（付記６）前記照合手段は、
前記先頭パケット抽出手段によって抽出された先頭パケットからヘッダ部分を除去する除去手段を含み、
前記除去手段によってヘッダ部分が除去されて得られたメッセージ部分と不正シグネチャとを照合することを特徴とする付記１記載の通信監視装置。
【００７８】
（付記７）前記照合手段による照合結果とは無関係に前記セッション抽出手段によって抽出されたセッションが不正な通信であるか否かを判定する判定手段と、
前記判定手段によって不正な通信であると判定された場合に、セッション内のパケットに繰り返し出現するデータパターンから不正シグネチャを生成する生成手段とをさらに有し、
前記記憶手段は、
前記生成手段によって生成された不正シグネチャを記憶することを特徴とする付記１記載の通信監視装置。
【００７９】
（付記８）不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶するメモリを備えたコンピュータによって実行される通信監視プログラムであって、前記コンピュータに、
所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、
前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、
前記先頭パケット抽出ステップにて抽出された先頭パケットと前記メモリによって記憶された不正シグネチャとを照合する照合ステップと、
前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップと
を実行させることを特徴とする通信監視プログラム。
【００８０】
（付記９）前記先頭パケット抽出ステップは、
前記セッション抽出ステップにて抽出されたセッション内のパケットのうち、ヘッダ部分以外に制御情報を格納するメッセージ部分を含む候補パケットから先頭パケットを抽出することを特徴とする付記８記載の通信監視プログラム。
【００８１】
（付記１０）前記先頭パケット抽出ステップは、
前記送受信装置の一方の装置から送信された候補パケットであって、当該一方の装置が前記送受信装置の他方の装置から候補パケットを受信した以後、最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記９記載の通信監視プログラム。
【００８２】
（付記１１）前記先頭パケット抽出ステップは、
前記送受信装置間でセッションが確立された以後、前記送受信装置の一方の装置から最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記９記載の通信監視プログラム。
【００８３】
（付記１２）前記先頭パケット抽出ステップは、
前記送受信装置の一方の装置から送信された候補パケットのヘッダ部分であって、前記送受信装置の他方の装置が送信済みのデータ量を示すヘッダ部分に基づいて先頭パケットを抽出することを特徴とする付記９記載の通信監視プログラム。
【００８４】
（付記１３）前記照合ステップは、
前記先頭パケット抽出ステップにて抽出された先頭パケットからヘッダ部分を除去する除去ステップを含み、
前記除去ステップにてヘッダ部分が除去されて得られたメッセージ部分と不正シグネチャとを照合することを特徴とする付記８記載の通信監視プログラム。
【００８５】
（付記１４）前記照合ステップにおける照合結果とは無関係に前記セッション抽出ステップにて抽出されたセッションが不正な通信であるか否かを判定する判定ステップと、
前記判定ステップにて不正な通信であると判定された場合に、セッション内のパケットに繰り返し出現するデータパターンから不正シグネチャを生成する生成ステップと、
前記生成ステップにて生成された不正シグネチャを前記メモリに登録する登録ステップとをさらに前記コンピュータに実行させることを特徴とする付記８記載の通信監視プログラム。
【００８６】
（付記１５）不正な通信の制御情報に特徴的に出現するデータパターンからなる不正シグネチャを記憶する記憶手段を備えた通信監視装置における通信監視方法であって、
所定のプロトコルによって送受信される複数のパケットから一対の送受信装置間で確立されたセッション内で送受信されるパケットを抽出するセッション抽出ステップと、
前記セッション抽出ステップにて抽出されたセッション内のパケットから、前記送受信装置間における通信の制御情報を含む先頭パケットを抽出する先頭パケット抽出ステップと、
前記先頭パケット抽出ステップにて抽出された先頭パケットと前記記憶手段によって記憶された不正シグネチャとを照合する照合ステップと、
前記照合ステップによる照合の結果、先頭パケットに不正シグネチャとの一致部分が含まれている場合に、前記セッション抽出ステップにて抽出されたセッションが不正な通信であることを示す監視結果を出力する出力ステップと
を有することを特徴とする通信監視方法。
【００８７】
（付記１６）前記先頭パケット抽出ステップは、
前記セッション抽出ステップにて抽出されたセッション内のパケットのうち、ヘッダ部分以外に制御情報を格納するメッセージ部分を含む候補パケットから先頭パケットを抽出することを特徴とする付記１５記載の通信監視方法。
【００８８】
（付記１７）前記先頭パケット抽出ステップは、
前記送受信装置の一方の装置から送信された候補パケットであって、当該一方の装置が前記送受信装置の他方の装置から候補パケットを受信した以後、最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記１６記載の通信監視方法。
【００８９】
（付記１８）前記先頭パケット抽出ステップは、
前記送受信装置間でセッションが確立された以後、前記送受信装置の一方の装置から最初に送信された候補パケットを先頭パケットとして抽出することを特徴とする付記１６記載の通信監視方法。
【００９０】
（付記１９）前記先頭パケット抽出ステップは、
前記送受信装置の一方の装置から送信された候補パケットのヘッダ部分であって、前記送受信装置の他方の装置が送信済みのデータ量を示すヘッダ部分に基づいて先頭パケットを抽出することを特徴とする付記１６記載の通信監視方法。
【００９１】
（付記２０）前記照合ステップは、
前記先頭パケット抽出ステップにて抽出された先頭パケットからヘッダ部分を除去する除去ステップを含み、
前記除去ステップにてヘッダ部分が除去されて得られたメッセージ部分と不正シグネチャとを照合することを特徴とする付記１５記載の通信監視方法。
【００９２】
（付記２１）前記照合ステップにおける照合結果とは無関係に前記セッション抽出ステップにて抽出されたセッションが不正な通信であるか否かを判定する判定ステップと、
前記判定ステップにて不正な通信であると判定された場合に、セッション内のパケットに繰り返し出現するデータパターンから不正シグネチャを生成する生成ステップと、
前記生成ステップにて生成された不正シグネチャを前記記憶手段に登録する登録ステップとをさらに有することを特徴とする付記１５記載の通信監視方法。
【図面の簡単な説明】
【００９３】
【図１】一実施の形態に係る通信システムの概略構成を示すブロック図である。
【図２】一実施の形態に係るメッセージの具体例を示す図である。
【図３】一実施の形態に係るパケット構成の具体例を示す図である。
【図４】一実施の形態に係る通信手順の具体例を示すシーケンス図である。
【図５】一実施の形態に係る通信監視装置の要部構成を示すブロック図である。
【図６】一実施の形態に係る不正シグネチャの具体例を示す図である。
【図７】一実施の形態に係る通信監視装置の動作を示すフロー図である。
【図８】一実施の形態に係る先頭パケット抽出処理を示すフロー図である。
【図９】一実施の形態に係る先頭パケット抽出処理の具体例を示す図である。
【符号の説明】
【００９４】
１０１  パケット受信部
１０２  パケット蓄積部
１０３  セッション抽出部
１０４  番号情報取得部
１０５  先頭パケット抽出部
１０６  不要部分除去部
１０７  不正シグネチャ記憶部
１０８  不正シグネチャ照合部
１０９  監視結果出力部
１１０  不正通信検出部
１１１  不正シグネチャ生成部
【図１】
0004905395.tif 000002
【図２】
0004905395.tif 000003
【図３】
0004905395.tif 000004
【図４】
0004905395.tif 000005
【図５】
0004905395.tif 000006
【図６】
0004905395.tif 000007
【図７】
0004905395.tif 000008
【図８】
0004905395.tif 000009
【図９】
0004905395.tif 000010