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