(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出し、
前記記憶手段に記憶された通信履歴のうち、前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する、
処理をコンピュータに実行させることを特徴とする解析プログラム。
【請求項２】
前記記憶手段に記憶された前記通信履歴のうち、前記不正アクセスの発生時間前後の所定の時間幅に含まれる複数の通信につき、各情報処理装置が受信したリクエストと、当該リクエストに対して当該情報処理装置が送信したレスポンスと、の対応付けができるように前記時間幅を決定する処理を更に前記コンピュータに実行させ、
前記記憶手段に記憶された前記通信履歴のうち、前記時間幅の範囲で前記複数のシーケンス候補を抽出し、前記複数のシーケンス候補それぞれの前記評価値を算出する、
ことを特徴とする請求項１記載の解析プログラム。
【請求項３】
前記評価値を、前記第２の通信履歴により復元されたトランザクションの数に基づいて算出することを特徴とする請求項１または２の何れか一項に記載の解析プログラム。
【請求項４】
前記評価値を、前記第２の通信履歴により復元された各トランザクションにつき、同一の情報処理装置が所定の処理に要した時間に基づいて算出することを特徴とする請求項１乃至３の何れか一項に記載の解析プログラム。
【請求項５】
前記所定の処理に要した時間は、前記情報処理装置が第１のリクエストを受信してから他の情報処理装置に対する第２のリクエストを送信するまでのリクエスト発行時間であることを特徴とする請求項４記載の解析プログラム。
【請求項６】
前記所定の処理に要した時間は、前記情報処理装置が第１のリクエストを受信してから他の情報処理装置に対する第２のリクエストを送信するまでのリクエスト発行時間と、前記他の情報処理装置から前記第２のリクエストに対する第１のレスポンスを受信してから前記第１のリクエストに対する第２のレスポンスを送信するまでのレスポンス発行時間と、を合計した時間であることを特徴とする請求項４記載の解析プログラム。
【請求項７】
複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出する抽出手段と、
前記記憶手段に記憶された通信履歴のうち、前記抽出手段が抽出した前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する評価手段と、
を有することを特徴とする解析装置。
【請求項８】
解析装置の解析方法であって、
前記解析装置が、
複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出し、
前記記憶手段に記憶された通信履歴のうち、前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する、
ことを特徴とする解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワークを介して通信されるデータを解析する解析プログラム、解析装置および解析方法に関する。
【背景技術】
【０００２】
従来、複数のコンピュータが階層的に処理を分担する情報処理システム（多階層システムという）が利用されている。多階層システムとして、例えばシステム利用のためのインタフェースを提供するＷｅｂサーバ、システム上の処理を実行するＡＰ（Application）サーバおよびデータを管理するＤＢ（Database）サーバを有する３階層システムが知られている。各サーバは、ユーザからの処理要求に対して連携して処理を実行し、その処理要求に応答する。このように、各コンピュータに処理を分担させることで、システムの信頼性や応答性を向上できる。
【０００３】
ところで、情報処理システムでは機密情報（例えば、個人情報や営業秘密）を扱うものも多い。このため、機密情報の不正取得の防止や改ざんの防止など適正な保護対策が望まれる。そこで、保護するサーバが接続されたネットワークに侵入検知システム（ＩＤＳ：Intrusion Detection System）を設けることが考えられる。ＩＤＳは、ネットワークから取得した通信データを、予め登録された不正な（あるいは正常な）情報パターンと照合することで、当該サーバやネットワークに対する不正アクセスを検知する。
【０００４】
一方、正規ユーザやなりすましユーザが適正にアクセスした場合、ＩＤＳで当該アクセスを不正と検知することはできない。なぜなら、そのようなユーザは適正なＩＤやパスワードを保有しており、不正な手順を踏まずともシステムへのアクセスが可能だからである。しかし、正規ユーザなどがデータを不正に操作する危険性もある。そこで、データベースに対する操作内容を監視することで不正アクセスを検知する技術がある。
【０００５】
ここで、多階層システムでは、複数の階層に別個に設けられたサーバが処理を分担する。このため、データベースに対する不正アクセスを検知した場合、そのアクセス元（例えば、アクセスしたユーザや端末装置）を特定するために、不正アクセスに関係する通信を辿って、その一連の通信（通信シーケンス）を特定することが考えられる。通信シーケンスを特定することで、例えばＷｅｂサーバに対するアクセス履歴からアクセス元を特定でき、そのアクセス元に対して適切な対処が可能となる。
【０００６】
しかし、多階層システムでは、各階層の機能を実現するために独自に設計された種々のアプリケーションプログラムが導入され得る。この場合、各アプリケーションプログラムは独自の手法で通信データを管理する。このため、データベースに対する不正アクセスを検知したとしても、膨大な通信データの中から、当該不正アクセスに関するものを辿って、その通信シーケンスを特定することは困難であった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２０６５６４号公報
【特許文献２】特開２００６−０６７２７９号公報
【特許文献３】特開２００６−０１１６８３号公報
【特許文献４】特開２００６−１２７４０９号公報
【非特許文献】
【０００８】
【非特許文献１】株式会社ネットワールド、“データベース監視ツール  Chakra製品（チャクラ）［ネットワールド］：製品概要”、［online］、［平成22年3月16日検索］インターネット  <URL：http://www.networld.co.jp/chakra/chakra.htm>
【発明の概要】
【発明が解決しようとする課題】
【０００９】
１つの側面では、本発明は、多階層システムにおいて不正アクセスに関する通信シーケンスの特定を効率的に支援する解析プログラム、解析装置および解析方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
この解析プログラムは、複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された通信履歴に基づいて、複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出し、記憶手段に記憶された通信履歴のうち、複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する、処理をコンピュータに実行させる。
【００１１】
また、上記課題を解決するために、上記解析プログラムを実行するコンピュータと同様の機能を有する解析装置が提供される。
また、上記課題を解決するために、上記解析プログラムと同様の処理を行う解析方法が提供される。
【発明の効果】
【００１２】
上記解析プログラム、解析装置および解析方法によれば、多階層システムにおいて不正アクセスに関するシーケンスの特定を効率的に支援することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る解析装置を示す図である。
【図２】第２の実施の形態に係る業務システムを示す図である。
【図３】サーバ間の通信を示す図である。
【図４】不正アクセス検出装置のハードウェア構成を示す図である。
【図５】不正アクセス検出装置の機能構成を示す図である。
【図６】パケット情報のデータ構造例を示す図である。
【図７】復元メッセージの具体例を示す図である。
【図８】プロトコルログ管理テーブルのデータ構造例を示す図である。
【図９】解析処理を示すフローチャートである。
【図１０】サーバ間で送受信されたメッセージの具体例を示す図である。
【図１１】処理対象期間特定処理を示すフローチャートである。
【図１２】処理対象期間を示す図である。
【図１３】不正シーケンス候補生成処理を示すフローチャートである。
【図１４】不正シーケンス候補生成処理の具体例を示す第１の図である。
【図１５】不正シーケンス候補生成処理の具体例を示す第２の図である。
【図１６】正常系候補の具体例を示す図である。
【図１７】妥当性評価処理を示す第１のフローチャートである。
【図１８】妥当性評価の具体例を示す第１の図である。
【図１９】妥当性評価処理を示す第２のフローチャートである。
【図２０】妥当性評価処理を示す第３のフローチャートである。
【図２１】処理時間およびリクエスト発行時間を示す図である。
【図２２】妥当性評価の具体例を示す第２の図である。
【図２３】結果出力処理を示すフローチャートである。
【図２４】解析結果の表示画面の第１の具体例を示す図である。
【図２５】解析結果の表示画面の第２の具体例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して詳細に説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る解析装置を示す図である。解析装置１は、複数の情報処理装置とネットワークを介して接続する。解析装置１は、複数の情報処理装置間で送受信されるデータを取得し、解析する。解析装置１は、通信履歴記憶手段１ａ、抽出手段１ｂおよび評価手段１ｃを有する。
【００１５】
通信履歴記憶手段１ａは、情報処理装置２，３，４の間で送受信された通信データの履歴である通信履歴を記憶する。ここで、情報処理装置２，３，４は多階層システムを構成し、各情報処理装置は連携して処理を実行する。通信履歴は、情報処理装置２，３，４がネットワークを介して送受信したデータを取得したものである。
【００１６】
抽出手段１ｂは、通信履歴記憶手段１ａに記憶された通信履歴に基づいて、情報処理装置２，３，４間でなされた不正アクセスに関する通信手順につき複数のシーケンス候補を抽出する。
【００１７】
抽出手段１ｂは、例えばシーケンス候補５を含む複数のシーケンス候補を抽出する。シーケンス候補５は、通信５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆを含む。
通信５ａは、所定の端末装置から情報処理装置２へのリクエストである。通信５ｂは、情報処理装置２から情報処理装置３へのリクエストである。通信５ｃは、情報処理装置３から情報処理装置４へのリクエストである。通信５ｄは、情報処理装置４から情報処理装置３へのレスポンスである。通信５ｅは、情報処理装置３から情報処理装置２へのレスポンスである。通信５ｆは、情報処理装置２から所定の端末装置へのレスポンスである。
【００１８】
ここで、通信履歴は通信５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆを特定するための情報を含む。
評価手段１ｃは、通信履歴記憶手段１ａに記憶された通信履歴のうち、抽出手段１ｂが抽出した複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴に基づいて、複数のシーケンス候補それぞれの確度を示す評価値を算出し出力する。
【００１９】
評価手段１ｃは、例えば通信履歴記憶手段１ａに記憶された通信履歴からシーケンス候補５に対応する第１の通信履歴を除いた第２の通信履歴を取得する。この場合、第１の通信履歴は、通信５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆを示すものである。すなわち、第２の通信履歴は、通信５ａ，５ｂ，５ｃ，５ｄ，５ｅ，５ｆを含まない履歴である。評価手段１ｃは、当該第２の通信履歴により復元できるトランザクションの正常性に基づいて、シーケンス候補５が不正アクセスであることの確度を示す評価値を算出する。
【００２０】
ここで、トランザクションの正常性とは、復元したトランザクションが通常の適正な通信によりなされたと見込まれる度合いである。シーケンス候補５を除いて復元したトランザクションの正常性が高いほど、シーケンス候補５が不正アクセスである確度も高い。一方、シーケンス候補５を除いて復元したトランザクションの正常性が低いほど、シーケンス候補５が不正アクセスである確度も低い。
【００２１】
なお、通信履歴によりトランザクションを復元する方法として、例えば特開２００６−０１１６８３号公報に記載の方法を適用することができる。
評価手段１ｃは、このようにして各シーケンス候補について確度を示す評価値を算出し、出力する。
【００２２】
解析装置１によれば、次の処理が実行される。まず、抽出手段１ｂにより、通信履歴記憶手段１ａに記憶された通信履歴に基づいて、情報処理装置２，３，４間でなされた不正アクセスに関する通信手順につき複数のシーケンス候補が抽出される。そして、評価手段１ｃにより、通信履歴記憶手段１ａに記憶された通信履歴のうち、抽出手段１ｂが抽出した各シーケンス候補に対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、各シーケンス候補が不正アクセスであることの確度を示す評価値が算出され出力される。
【００２３】
このようにして、解析装置１は多階層システムにおいて不正アクセスに関するシーケンスの特定を効率的に支援することができる。具体的には、以下の通りである。
解析装置１は、通信履歴記憶手段１ａに記憶された通信履歴を用いてシーケンス候補を抽出し、評価する。すなわち、情報処理装置２，３，４で個々に動作するアプリケーションプログラムに依らずに処理が可能である。よって、各アプリケーションプログラムに手を加える必要がなく、導入が容易である。
【００２４】
また、解析装置１は複数のシーケンス候補につき、各シーケンス候補に対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、各シーケンス候補の評価値を算出する。
【００２５】
ここで、不正アクセスに関する通信処理では、通常と異なる処理が行われることが一般的である。例えば、データに対する不正な操作を行うために、定型的な業務処理とは異なる処理が行われる。したがって、不正アクセスに関係すると考えられる通信シーケンスは通常の処理とは異なるパターンの通信シーケンスとなると考えられる。よって、第２の通信履歴が不正アクセスに関する異常な通信シーケンスを含む場合、第２の通信履歴により復元されるトランザクションの正常性は低下する。一方、第２の通信履歴が不正アクセスに関する異常な通信シーケンスを含まない場合には、第２の通信履歴により復元されるトランザクションの正常性は高くなる。
【００２６】
このような理由により、解析装置１は第２の通信履歴により復元されるトランザクションの正常性に基づいて、不正アクセスに関する各シーケンス候補が不正アクセスであることの確度を適正に評価することができる。
【００２７】
解析装置１は、このようにして得た評価値を出力する。システム管理者は、当該出力結果により、不正アクセスに関する通信シーケンスの候補のうち確度のより高いものを容易に特定することができる。
【００２８】
以下の実施の形態では、Ｗｅｂ３階層システムに解析装置１を適用する場合を例に採り、更に具体的に説明する。
［第２の実施の形態］
図２は、第２の実施の形態に係る業務システムを示す図である。この業務システムは、不正アクセス検出装置１００、Ｗｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００を有する。不正アクセス検出装置１００、Ｗｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００は、スイッチ装置１０を介して相互に接続されている。また、スイッチ装置１０は、ネットワーク２０を介して端末装置２１，２２，２３に接続されている。
【００２９】
端末装置２１，２２，２３は、スイッチ装置１０およびネットワーク２０を介してＷｅｂサーバ２００にアクセス可能である。端末装置２１，２２，２３のユーザは、Ｗｅｂサーバ２００が提供するＧＵＩ（Graphical User Interface）を端末装置２１，２２，２３から操作して業務システムを利用できる。ネットワーク２０は、例えばイントラネットである。
【００３０】
なお、ネットワーク２０がインターネットである場合も考えられる。その場合、スイッチ装置１０はファイアウォールとして機能させることもできる。また、Ｗｅｂサーバ２００の属するネットワークセグメントは、例えばＤＭＺ（Demilitarized Zone）として扱われる。
【００３１】
不正アクセス検出装置１００は、Ｗｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００の稼働状況を管理する。不正アクセス検出装置１００は、そのための情報をスイッチ装置１０から取得することができる。すなわち、スイッチ装置１０は、ポートミラーリング機能を有しており、Ｗｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００の間で送受信されるパケットを不正アクセス検出装置１００にも送信する。不正アクセス検出装置１００は、スイッチ装置１０から送信されるパケットを受信して、記憶する（パケットキャプチャ）。なお、不正アクセス検出装置１００で単にパケットキャプチャを行う用途であれば、スイッチ装置１０を例えばリピータハブで代用することもできる。
【００３２】
なお、業務システムにおいてＷｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００と各層（Ｗｅｂ層、Ａｐｐ層およびＤＢ層）一台ずつの構成を例示したが、各層にそれぞれ複数台のサーバを設けてもよい。
【００３３】
図３は、サーバ間の通信を示す図である。Ｗｅｂサーバ２００は、端末装置２１，２２，２３で実行されるＷｅｂブラウザから業務システムに対する処理要求（メッセージ）を受け付ける。ここで、Ｗｅｂサーバ２００と端末装置２１，２２，２３とのメッセージ交換は、ＨＴＴＰ（HyperText Transfer Protocol）によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【００３４】
以下では、端末装置２１，２２，２３からＷｅｂサーバ２００へ送信する処理要求をＨＴＴＰリクエストと称する。また、それに対する応答をＨＴＴＰレスポンスと称する。なお、リクエスト／レスポンスともに通信の内容の例である。
【００３５】
Ｗｅｂサーバ２００は、端末装置２１，２２，２３から受信したＨＴＴＰリクエストに基づいて、静的コンテンツに関しては自装置でＨＴＴＰレスポンスを生成し、端末装置２１，２２，２３に送信する。なお、動的コンテンツに関しては、ＡＰサーバ３００に依頼すべき処理の処理要求（メッセージ）を生成して、ＡＰサーバ３００に送信する。
【００３６】
ここで、Ｗｅｂサーバ２００とＡＰサーバ３００とのメッセージ交換は、ＩＩＯＰ（Internet Inter-ORB（Object Request Broker） Protocol）によって行われるものとする。ただし、他のプロトコルが用いられてもよい。
【００３７】
以下では、Ｗｅｂサーバ２００からＡＰサーバ３００へ送信する処理要求をＩＩＯＰリクエストと称する。また、それに対する応答をＩＩＯＰレスポンスと称する。
Ｗｅｂサーバ２００は、ＩＩＯＰリクエストに対するＩＩＯＰレスポンスを受信すると、その内容に基づいてＨＴＴＰレスポンスを生成して、端末装置２１，２２，２３に送信する。
【００３８】
ＡＰサーバ３００は、Ｗｅｂサーバ２００から受信したＩＩＯＰリクエストに基づいてＤＢサーバ４００に依頼すべき処理のクエリを生成し、ＤＢサーバ４００に送信する。
ここで、ＡＰサーバ３００が生成するクエリは、例えばＳＱＬ文によって表記される。以下では、ＡＰサーバ３００がＤＢサーバ４００に送信するクエリをＤＢリクエストと称する。また、それに対する応答をＤＢレスポンスと称する。
【００３９】
ＡＰサーバ３００は、ＤＢリクエストに対するＤＢレスポンスを受信すると、その内容に基づいてＩＩＯＰレスポンスを生成してＷｅｂサーバ２００に送信する。
ＤＢサーバ４００は、ＡＰサーバ３００から受信したＤＢリクエストに含まれるＳＱＬ文を実行してデータベース４１０の参照や更新等の処理を実行する。ＤＢサーバ４００は、その処理結果に基づいてＤＢレスポンスを生成し、ＡＰサーバ３００に送信する。
【００４０】
ここで、Ｗｅｂサーバ２００は、ＡＰサーバ３００およびＤＢサーバ４００よりも上位の階層のサーバであるとする。また、ＡＰサーバ３００は、ＤＢサーバ４００よりも上位の階層のサーバであるとする。具体的には、Ｗｅｂサーバ２００の階層にレイヤ番号Ｌ＝１が定義されている。ＡＰサーバ３００の階層にレイヤ番号Ｌ＝２が定義されている。ＤＢサーバ４００の階層にレイヤ番号Ｌ＝３が定義されている。レイヤ番号Ｌの値が小さい程、上位の階層である。これらの階層関係を定義する情報は、不正アクセス検出装置１００に予め格納される。
【００４１】
なお、以下では各サーバという場合、Ｗｅｂサーバ２００、ＡＰサーバ３００およびＤＢサーバ４００を示すものとする。
図４は、不正アクセス検出装置のハードウェア構成を示す図である。不正アクセス検出装置１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８を有する。
【００４２】
ＣＰＵ１０１は、不正アクセス検出装置１００全体を制御する。
ＲＯＭ１０２は、不正アクセス検出装置１００上のＢＩＯＳ（Basic Input / Output System）のプログラムなどを記憶する。
【００４３】
ＲＡＭ１０３は、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションのプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１による処理に必要な各種データを記憶する。
【００４４】
ＨＤＤ１０４は、ＯＳのプログラム、アプリケーションのプログラムを記憶する。また、ＨＤＤ１０４はＣＰＵ１０１による処理に必要な各種データを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の記憶装置を用いてもよい。
【００４５】
グラフィック処理装置１０５は、モニタ１１と接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って画像をモニタ１１の画面に表示させる。
入力インタフェース１０６は、キーボード１２とマウス１３と接続される。入力インタフェース１０６は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。
【００４６】
記録媒体読取装置１０７は、記録媒体１４に記憶されたデータを読み取る読取装置である。例えば、不正アクセス検出装置１００が有すべき機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。そのようなプログラムは、コンピュータ読み取り可能な記録媒体１４に記録して配布することができる。また、スイッチ装置１０あるいはネットワーク２０に接続されたプログラム配信サーバ（図示せず）にそのプログラムを格納してもよい。この場合、不正アクセス検出装置１００は、スイッチ装置１０あるいはネットワーク２０を介してプログラム配信サーバからプログラムをダウンロードすることができる。
【００４７】
記録媒体１４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ：Flexible Disk）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００４８】
通信インタフェース１０８は、ＴＰ（Twisted Pair）ケーブルや光ケーブル等によってスイッチ装置１０と接続される。通信インタフェース１０８は、スイッチ装置１０を介して他の情報処理装置とデータ通信する。また、通信インタフェース１０８は、各サーバの間で送受信されるパケットをスイッチ装置１０から受信する。
【００４９】
なお、各サーバおよび端末装置２１，２２，２３も不正アクセス検出装置１００と同様のハードウェア構成により実現できる。
図５は、不正アクセス検出装置の機能構成を示す図である。不正アクセス検出装置１００は、パケット記憶部１１０、プロトコルログ記憶部１２０、パケット受信部１３０、メッセージ復元部１４０、不正アクセス検知部１５０、不正シーケンス候補生成部１６０、正常系候補生成部１７０、妥当性評価部１８０および解析結果出力部１９０を有する。これらの機能は、所定のプログラムをＣＰＵ１０１が実行することで実現される。なお、これらの機能の少なくとも一部または全部を専用のハードウェアにより実現してもよい。
【００５０】
パケット記憶部１１０は、パケット受信部１３０がキャプチャしたパケット情報を記憶する。
プロトコルログ記憶部１２０は、メッセージ復元部１４０が生成したプロトコルログ情報を記憶する。ここで、プロトコルログ情報とは、パケット情報に基づいて生成されるものであり、業務システムにおける各サーバの通信履歴を表すものである。
【００５１】
パケット受信部１３０は、スイッチ装置１０を介して送受信されるパケットをスイッチ装置１０から受信する。パケット受信部１３０は、受信したパケットをパケット情報としてパケット記憶部１１０に格納する。パケット受信部１３０は、例えば業務システムが稼働している間、パケットを取得し続ける。
【００５２】
メッセージ復元部１４０は、パケット記憶部１１０に記憶されたパケット情報に基づいて、パケット情報に含まれるメッセージを復元する。そして、メッセージ復元部１４０は、復元したメッセージによりプロトコルログを生成し、プロトコルログ記憶部１２０に格納する。
【００５３】
メッセージ復元部１４０の機能は、例えば特開２００６−０１１６８３号公報に記載の機能を適用することで実現できる。
不正アクセス検知部１５０は、パケット記憶部１１０に記憶されたパケット情報に基づいて、ＤＢサーバ４００に対する不正アクセスを検知する。不正アクセス検知部１５０の機能は、例えば非特許文献１として挙げた“データベース監視ツール”の機能を適用することで実現できる。
【００５４】
不正シーケンス候補生成部１６０は、不正アクセス検知部１５０により不正アクセスが検知されると、プロトコルログ記憶部１２０に記憶されたプロトコルログに基づいて、当該不正アクセスに関する複数の不正シーケンス候補を生成する。不正シーケンス候補生成部１６０は、生成した各不正シーケンス候補を正常系候補生成部１７０および解析結果出力部１９０に出力する。
【００５５】
正常系候補生成部１７０は、不正シーケンス候補生成部１６０から取得した各不正シーケンス候補と、プロトコルログ記憶部１２０に記憶されたプロトコルログと、に基づいて、プロトコルログに含まれるメッセージのうち、各不正シーケンス候補に関するものを除いた正常系のメッセージ群の候補（以下、正常系候補と称する）を生成する。正常系候補生成部１７０は、生成した各正常系候補を妥当性評価部１８０に出力する。
【００５６】
妥当性評価部１８０は、正常系候補生成部１７０から取得した各正常系候補の正常性を評価し、その指標である評価値を算出する。妥当性評価部１８０は、算出した評価値を解析結果出力部１９０に出力する。
【００５７】
解析結果出力部１９０は、不正シーケンス候補生成部１６０から取得した不正シーケンス候補を、妥当性評価部１８０から取得した評価値に応じてランク付けし、出力する。解析結果出力部１９０は、例えばランク付けの結果をモニタ１１にリスト表示させる。
【００５８】
なお、不正シーケンス候補生成部１６０は、不正シーケンス候補を１つだけ生成する場合もある。そのような場合には、不正シーケンス候補の評価を行わずとも当該不正シーケンス候補が不正アクセスに関するものであると考えることができる。よって、この場合、解析結果出力部１９０は当該不正シーケンス候補をそのまま出力すればよい。
【００５９】
図６は、パケット情報のデータ構造例を示す図である。パケット保存ファイル１１１は、パケット受信部１３０により収集されたパケットを格納したファイルである。パケット保存ファイル１１１には、パケット受信部１３０がパケットを受信するたびに新たに受信したパケットの情報が追加される。パケット保存ファイル１１１は、例えばバイナリ形式のファイルである。
【００６０】
パケット保存ファイル１１１は、受信日時格納部１１１ａおよびパケットデータ格納部１１１ｂを有する。
受信日時格納部１１１ａは、パケットデータ格納部１１１ｂに格納するパケットを受信した日時を設定する領域である。パケット受信部１３０は、当該パケットを受信した時のタイムスタンプ（例えば、年月日時分秒）を受信日時格納部１１１ａに格納する。
【００６１】
パケットデータ格納部１１１ｂは、パケット受信部１３０が受信したパケットを格納する領域である。
メッセージ復元部１４０は、パケット記憶部１１０に記憶されたパケット保存ファイル１１１に基づいて、各サーバで送受信されたメッセージを復元することができる。メッセージを復元する方法としては、上述したように、例えば特開２００６−０１１６８３号公報に記載の方法を利用することができる。
【００６２】
図７は、復元メッセージの具体例を示す図である。復元メッセージ１２１は、メッセージ復元部１４０によりパケット記憶部１１０に記憶されたパケット保存ファイル１１１に基づいて生成され、プロトコルログ記憶部１２０に格納される。復元メッセージ１２１は、後述するプロトコルログ管理テーブルを生成するためのデータである。なお、復元メッセージ１２１には、後述の説明に適合する箇所のみを記載しており、それ以外のメッセージに関しては図示を省略している。
【００６３】
復元メッセージ１２１の各行には、日付フィールド１２１ａ、時刻フィールド１２１ｂ、送信元アドレスフィールド１２１ｃ、送信先アドレスフィールド１２１ｄ、コマンド種別フィールド１２１ｅおよびコマンドフィールド１２１ｆが含まれる。
【００６４】
日付フィールド１２１ａは、当該メッセージに対応するパケットをキャプチャした日付を示すフィールドである。
時刻フィールド１２１ｂは、当該メッセージに対応するパケットをキャプチャした時刻を示すフィールドである。
【００６５】
送信元アドレスフィールド１２１ｃは、メッセージの送信元のコンピュータのＩＰ（Internet Protocol）アドレスおよびポート番号を示すフィールドである。
送信先アドレスフィールド１２１ｄは、メッセージの送信先のコンピュータのＩＰアドレスおよびポート番号を示すフィールドである。
【００６６】
コマンド種別フィールド１２１ｅは、コマンドのリクエスト／レスポンス属性やプロトコル（ＨＴＴＰ、ＩＩＯＰおよびＤＢクエリ用など）の種別を示すフィールドである。
コマンドフィールド１２１ｆは、コマンド種別フィールド１２１ｅに示されたリクエストなどのコマンド内容を示すフィールドである。
【００６７】
以下、復元メッセージ１２１に便宜的に付した行番号を示して説明する。
例えば、行番号１のメッセージはＨＴＴＰリクエストを示している。
日付フィールド１２１ａには、その行に対応するパケットをキャプチャした日付として、例えば“２０１０／０３／０１”が取得される。メッセージ復元部１４０は、このような日付としてパケット保存ファイル１１１の受信日時格納部１１１ａに設定された日付を取得できる。
【００６８】
また、時刻フィールド１２１ｂには、パケットキャプチャした時刻として、例えば“００：００：００．１００”が取得される。メッセージ復元部１４０は、このような時刻としてパケット保存ファイル１１１の受信日時格納部１１１ａに設定された時刻を取得できる。なお、秒の単位としてはミリ秒を例示するが、更に小さい単位（例えば、マイクロ秒）で取得してもよい。
【００６９】
送信元アドレスフィールド１２１ｃには、ＨＴＴＰリクエストを送信した端末装置２１のＩＰアドレスとポート番号として、例えば“１９４．１８５．３９．２４：５１２７２”が取得される。
【００７０】
送信先アドレスフィールド１２１ｄには、ＨＴＴＰリクエストの送信先であるＷｅｂサーバ２００のＩＰアドレスとポート番号として、例えば、“１９４．２３．６．２２６：１０４４３”が取得される。
【００７１】
コマンド種別フィールド１２１ｅには、１行目がＨＴＴＰリクエストに関するメッセージであることを示す情報として、例えば“Ｒｅｑｕｅｓｔ  ＨＴＴＰ”という情報が取得される。メッセージ復元部１４０は、例えば外部ネットワークに属する端末装置２１からＷｅｂサーバ２００に対するメッセージをＨＴＴＰリクエストと識別することができる。また、メッセージ復元部１４０は、例えばＷｅｂサーバ２００からそれよりも下位のＡＰサーバ３００に対するメッセージをＩＩＯＰリクエストと識別することができる。メッセージ復元部１４０は、ＤＢリクエストや各種レスポンスに関しても同様にして識別することができる。
【００７２】
コマンドフィールド１２１ｆには、ＨＴＴＰリクエストの内容として、例えば“ＰＯＳＴ  ／ｃｇｉ−ｂｉｎ／・・・”という情報が取得される。
このように、復元メッセージ１２１を参照することで、何れのサーバに対して、どのようなメッセージが送信されたかを検出することができる。
【００７３】
ここで、復元メッセージ１２１中のその他のＩＰアドレスと各装置との対応関係は次の通りである。
“１９４．２３．７．１６８”は、ＡＰサーバ３００のＩＰアドレスを示す。“１９４．２３．８．１９８”は、ＤＢサーバのＩＰアドレスを示す。“１９４．１８５．３９．２５”は、端末装置２２のＩＰアドレスを示す。
【００７４】
すなわち、Ｗｅｂサーバ２００と端末装置２２との間でのＨＴＴＰリクエスト／ＨＴＴＰレスポンスの送受信を各行に含まれる送信元アドレスフィールド１２１ｃ、送信先アドレスフィールド１２１ｄおよびコマンド種別等によって特定できる。例えば、復元メッセージ１２１の３行目が当該ＨＴＴＰリクエストに対応する。
【００７５】
また、Ｗｅｂサーバ２００とＡＰサーバ３００との間でのＩＩＯＰリクエスト／ＩＩＯＰレスポンスの送受信は、復元メッセージ１２１の２，７行目に対応する。
また、ＡＰサーバ３００とＤＢサーバ４００との間でのＤＢリクエスト／ＤＢレスポンスの送受信は、復元メッセージ１２１の５，６行目に対応する。
【００７６】
更に、メッセージ復元部１４０は、このようにしてリクエストと、それに対するレスポンスとを対応付けることができる。例えば、１行目は端末装置２１からＷｅｂサーバ２００に対するＨＴＴＰリクエストを示している。一方、その後に発生したＷｅｂサーバ２００から端末装置２１に対するＨＴＴＰレスポンスが８行目に示されている。よって、メッセージ復元部１４０は、１行目のＨＴＴＰリクエストに対して８行目のＨＴＴＰレスポンスにより応答がなされたと特定できる。メッセージ復元部１４０は、このようにして対応付けたリクエスト／レスポンスにその組合せを識別するための識別情報を付して、プロトコルログ管理情報を生成する。
【００７７】
図８は、プロトコルログ管理テーブルのデータ構造例を示す図である。プロトコルログ管理テーブル１２２は、メッセージ復元部１４０によって生成され、プロトコルログ記憶部１２０に格納される。
【００７８】
プロトコルログ管理テーブル１２２には、項番、時刻、識別番号、プロトコルおよびＲｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのメッセージに関する情報を示す。
【００７９】
項番には、レコードを識別する番号が設定される。時刻には、メッセージに対応するパケットをキャプチャした時刻が設定される。識別番号には、リクエスト／レスポンスの組を特定するための番号が設定される。プロトコルを示す項目には、メッセージが何れのプロトコルによるものかを示す情報が設定される。Ｒｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅを示す項目には、そのメッセージがリクエスト／レスポンスの何れのものであるかを示す情報が設定される。
【００８０】
プロトコルログ管理テーブル１２２には、例えば、項番が“１００１”、時刻が“００：００：００．１００”、識別番号が“１０１”、プロトコルが“ＨＴＴＰ”、Ｒｅｑｕｅｓｔ／Ｒｅｓｐｏｎｓｅが“Ｒｅｑｕｅｓｔ”という情報が設定される。
【００８１】
このレコードは、復元メッセージ１２１の１行目の内容に対応する。識別番号“１０１”はリクエスト／レスポンスの組を特定するための番号であり、項番“１０１４”に設定されたＨＴＴＰレスポンスのレコードについても識別番号“１０１”が設定されている。すなわち、項番“１００１”で示されるＨＴＴＰリクエストに対する応答が“１０１４”で示されるＨＴＴＰレスポンスであると関連付けることができる。
【００８２】
メッセージ復元部１４０は、パケット記憶部１１０に記憶されたパケット保存ファイル１１１を参照して、復元メッセージ１２１およびプロトコルログ管理テーブル１２２を逐次生成する。不正シーケンス候補生成部１６０および正常系候補生成部１７０は、プロトコルログ管理テーブル１２２に基づいて、各部の処理を実行することができる。
【００８３】
次に、以上のような構成を備える不正アクセス検出装置１００の処理手順を詳細に説明する。
図９は、解析処理を示すフローチャートである。以下、各処理をステップ番号に沿って説明する。
【００８４】
［ステップＳ１１］不正アクセス検知部１５０は、パケット記憶部１１０に記憶されたパケット情報を監視して、ＤＢサーバ４００に対する不正アクセスが発生したことを検知する。不正アクセス検知部１５０は、不正アクセスに関するＤＢリクエストをキャプチャした時間およびＤＢレスポンスをキャプチャした時間（両者を総じて不正アクセスの発生時間と称する）を不正シーケンス候補生成部１６０に出力する。
【００８５】
［ステップＳ１２］不正シーケンス候補生成部１６０は、不正アクセスの発生時間に基づいて、不正シーケンスを検出するための処理対象期間Ｐを特定する。
［ステップＳ１３］不正シーケンス候補生成部１６０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２に記録されたメッセージであって、処理対象期間Ｐに含まれるメッセージに基づいて、不正シーケンス候補を生成する。不正シーケンス候補生成部１６０は、生成した複数の不正シーケンス候補を正常系候補生成部１７０および解析結果出力部１９０に出力する。
【００８６】
［ステップＳ１４］正常系候補生成部１７０は、不正シーケンス候補生成部１６０から取得した不正シーケンス候補のうちから１つを取得する。
［ステップＳ１５］正常系候補生成部１７０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２に記録されたメッセージであって、処理対象期間Ｐに含まれるメッセージ群を取得する。正常系候補生成部１７０は、当該メッセージ群から不正シーケンス候補を除く正常系候補を生成する。正常系候補生成部１７０は、生成した正常系候補を妥当性評価部１８０に出力する。
【００８７】
［ステップＳ１６］妥当性評価部１８０は、正常系候補生成部１７０から取得した正常系候補の妥当性を評価し、評価結果に基づいて不正シーケンス候補の確度を示す評価値を算出する。妥当性評価部１８０は、算出した評価値を解析結果出力部１９０に出力する。ここで、妥当性の評価方法に関しては、複数の方式が考えられる。当該評価方法の詳細は、後述する。
【００８８】
［ステップＳ１７］正常系候補生成部１７０は、各不正シーケンス候補につき妥当性評価部１８０による妥当性の評価が終了したか否かを判定する。終了した場合、処理をステップＳ１８に進める。終了していない場合、処理をステップＳ１４に進める。
【００８９】
［ステップＳ１８］解析結果出力部１９０は、不正シーケンス候補生成部１６０から取得した各不正シーケンス候補と、妥当性評価部１８０から取得した各不正シーケンス候補の評価値と、に基づいて、各不正シーケンス候補をランク付けしてモニタ１１に表示させる。
【００９０】
このようにして、不正アクセス検出装置１００は各不正シーケンス候補のうち、不正アクセスに関係する可能性の高いものを特定できる。そして、不正アクセス検出装置１００は、モニタ１１を介して解析結果をシステム管理者に提示することができる。
【００９１】
図１０は、サーバ間で送受信されたメッセージの具体例を示す図である。図１０ではプロトコルログ管理テーブル１２２に示した各レコードに対応するメッセージを示している。ここで、各メッセージには、その時系列が把握し易いように時刻を併記している。更に、各メッセージに付した符号はリクエスト／レスポンスの対応関係に準じている。すなわち、ＨＴＴＰリクエスト５１１ａとＨＴＴＰレスポンス５１１ｂとがセットとなる。また、ＨＴＴＰリクエスト５１２ａとＨＴＴＰレスポンス５１２ｂとがセットとなる。また、ＨＴＴＰリクエスト５１３ａとＨＴＴＰレスポンス５１３ｂとがセットとなる。ＩＩＯＰリクエスト５２１ａ，５２２ａ，５２３ａとＩＩＯＰレスポンス５２１ｂ，５２２ｂ，５２３ｂとの関係も同様である。ＤＢリクエスト５３１ａ，５３２ａ，５３３ａとＤＢレスポンス５３１ｂ，５３２ｂ，５３３ｂとの関係も同様である。
【００９２】
ここで、不正アクセス検知部１５０は、ＤＢリクエスト５３１ａとＤＢレスポンス５３１ｂとの組合せで不正アクセスを検知したとする。すると、不正アクセス検知部１５０は、当該不正アクセスの発生時間を不正シーケンス候補生成部１６０に出力する。
【００９３】
不正シーケンス候補生成部１６０は、不正アクセスの発生時間に基づいて処理対象期間Ｐを特定する。
次に、図９のステップＳ１２で示した処理対象期間特定処理を説明する。
【００９４】
図１１は、処理対象期間特定処理を示すフローチャートである。以下、各処理をステップ番号に沿って説明する。
［ステップＳ２１］不正シーケンス候補生成部１６０は、時間幅初期値Ｔを取得する。ここで、時間幅初期値Ｔとは、不正アクセスの発生時間に対して、どの程度の時間幅を処理対象期間とみなすかの初期値を定めるために予めシステム管理者により決定される値である。
【００９５】
［ステップＳ２２］不正シーケンス候補生成部１６０は、不正アクセス検知部１５０から取得した不正アクセスの発生時間のうち、ＤＢリクエストに対応する時間をリクエスト時間Ｔ０として取得する。
【００９６】
［ステップＳ２３］不正シーケンス候補生成部１６０は、不正アクセスの発生時間のうち、ＤＢレスポンスに対応する時間をレスポンス時間Ｔ１として取得する。
［ステップＳ２４］不正シーケンス候補生成部１６０は、ＷｓにＴ０−Ｔを代入する。また、不正シーケンス候補生成部１６０は、ＷｅにＴ１＋Ｔを代入する。これにより、期間Ｐが暫定的に定まる。すなわち、期間ＰはＷｓ〜Ｗｅの間の期間となる。ここで、“Ｔ０−Ｔ”の演算結果は、Ｔ０の時点よりも時間Ｔだけ過去の時間を取得することを示すものとする。また、“Ｔ１＋Ｔ”の演算結果は、Ｔ１の時点よりも時間Ｔだけ未来の時間を示すものとする。
【００９７】
［ステップＳ２５］不正シーケンス候補生成部１６０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２に基づいて、期間Ｐに含まれるメッセージを取得する。
【００９８】
［ステップＳ２６］不正シーケンス候補生成部１６０は、取得したメッセージに、対応するリクエストのないレスポンスが存在するか否かを判定する。レスポンスのみのものが存在する場合、処理をステップＳ２７に進める。レスポンスのみのものが存在しない場合、処理をステップＳ２８に進める。例えば、プロトコルログ管理テーブル１２２に設定された識別番号により、対となるリクエストが存在しないレスポンスを特定することで、本判定を行うことができる。
【００９９】
［ステップＳ２７］不正シーケンス候補生成部１６０は、プロトコルログ管理テーブル１２２のうち、期間Ｐに含まれない期間（Ｗｓよりも前の期間）のメッセージを参照して、ステップＳ２６で特定したレスポンスに対応するリクエストを特定する。例えば、プロトコルログ管理テーブル１２２に設定された識別番号によって対となるリクエストを特定することができる。不正シーケンス候補生成部１６０は、当該リクエストの発生時間をＷｓに代入する。そして、処理をステップＳ２５に進める。なお、各メッセージの発生時間は、プロトコルログ管理テーブル１２２に設定された時刻を参照することで取得できる。
【０１００】
［ステップＳ２８］不正シーケンス候補生成部１６０は、プロトコルログ管理テーブル１２２に基づいて、期間Ｐに含まれるメッセージを取得する。
［ステップＳ２９］不正シーケンス候補生成部１６０は、取得したメッセージに、対応するレスポンスのないリクエストが存在するか否かを判定する。リクエストのみのものが存在する場合、処理をステップＳ３０に進める。リクエストのみのものが存在しない場合、処理をステップＳ３１に進める。例えば、プロトコルログ管理テーブル１２２に設定された識別番号により、対となるレスポンスが存在しないリクエストを特定することで、本判定を行うことができる。
【０１０１】
［ステップＳ３０］不正シーケンス候補生成部１６０は、プロトコルログ管理テーブル１２２のうち、期間Ｐに含まれない期間（Ｗｅよりも後の期間）のメッセージを参照して、ステップＳ２９で特定したリクエストに対応するレスポンスを特定する。例えば、プロトコルログ管理テーブル１２２に設定された識別番号によって対となるレスポンスを特定することができる。不正シーケンス候補生成部１６０は、当該レスポンスの発生時間をＷｅに代入する。そして、処理をステップＳ２８に進める。
【０１０２】
［ステップＳ３１］不正シーケンス候補生成部１６０は、期間Ｐを決定するパラメータとしてＷｓ，Ｗｅを取得する。
このようにして、不正シーケンス候補生成部１６０は、処理対象期間Ｐを決定する。期間Ｐを、対になるリクエストの存在しないレスポンスおよび対になるレスポンスの存在しないリクエストを含まないように決定する。
【０１０３】
図１２は、処理対象期間を示す図である。（Ａ）は、暫定的に定められた期間Ｐを示している。図１２では、ＨＴＴＰリクエストＡ１とＨＴＴＰレスポンスＡ２とが組となる。また、ＨＴＴＰリクエストＢ１とＨＴＴＰレスポンスＢ２とが組となる。不正アクセスのＤＢリクエストに対応する時間がＴ０である。また、不正アクセスのＤＢレスポンスに対応する時間がＴ１である。不正シーケンス候補生成部１６０は、Ｗｓ＝Ｔ０−ＴからＷｅ＝Ｔ１−Ｔの期間Ｐを得る。
【０１０４】
不正シーケンス候補生成部１６０は、ＨＴＴＰレスポンスＡ２に対するＨＴＴＰリクエストＡ１が現期間Ｐに含まれていないことを検知すると、ＨＴＴＰリクエストＡ１の発生時間をＷｓに代入する。これにより、期間Ｐは、より過去の期間を含むように更新される。更に、不正シーケンス候補生成部１６０は、ＨＴＴＰリクエストＢ１に対応するレスポンスＢ２が更新後の期間Ｐに含まれていないことを検知すると、ＨＴＴＰレスポンスＢ２の発生時間をＷｅに代入する。これにより、期間Ｐは、より未来の期間を含むように更新される。
【０１０５】
（Ｂ）は、このようにして決定された期間Ｐを示している。上記の処理によって新たに得られたＷｓからＷｅの期間が期間Ｐである。
ここで、対になるリクエストの存在しないレスポンスなどが存在する場合、後段の処理で当該メッセージを用いてシーケンスを生成したとしても、それが誤ったシーケンスであることは明らかである。また、このように誤生成されたシーケンスで評価を行うとすると評価結果の精度を低減させるおそれがある。
【０１０６】
そこで、シーケンスが誤生成されないように、リクエスト／レスポンスの一方のみのメッセージを含まないように期間を決定することで、後段の処理の精度を向上することができる。
【０１０７】
次に、図９のステップＳ１３で示した不正シーケンス候補生成処理を説明する。
図１３は、不正シーケンス候補生成処理を示すフローチャートである。以下、各処理をステップ番号に沿って説明する。なお、以下の処理を開始させる前に、不正シーケンス候補生成部１６０は作業域Ｍ，Ｓ（Ｌ）に格納された情報を全て破棄するものとする。
【０１０８】
［ステップＳ４１］不正シーケンス候補生成部１６０は、レイヤ番号Ｌに不正アクセスを検知した階層のレイヤ番号Ｌａを代入する。具体的には、ＤＢサーバ４００のレイヤ番号Ｌａ＝３をＬに代入する。すなわち、Ｌ＝３に初期化される。
【０１０９】
［ステップＳ４２］不正シーケンス候補生成部１６０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２を参照して不正アクセスメッセージに対応するレコードを作業域Ｍに追加する。具体的には、ＤＢリクエスト５３１ａに対応するレコード（項番“１００５”）およびＤＢレスポンス５３１ｂに対応するレコード（項番“１００６”）を作業域Ｍへ追加する。
【０１１０】
［ステップＳ４３］不正シーケンス候補生成部１６０は、リクエスト時間Ｔｓ（Ｌａ）＝Ｔｓ（３）にＴ０を代入する。また、不正シーケンス候補生成部１６０は、レスポンス時間Ｔｅ（Ｌａ）＝Ｔｅ（３）にＴ１を代入する。ここで、Ｔ０はＤＢリクエスト５３１ａの発生時間である。また、Ｔ１はＤＢレスポンス５３１ｂの発生時間である。不正シーケンス候補生成部１６０は、Ｔ０，Ｔ１を不正アクセス検知部から取得した時間としてもよいし、プロトコルログ管理テーブル１２２から取得してもよい。
【０１１１】
［ステップＳ４４］不正シーケンス候補生成部１６０は、Ｌが１に等しいか否かを判定する。Ｌ＝１ではない場合、処理をステップＳ４５に進める。Ｌ＝１である場合、処理をステップＳ５１に進める。
【０１１２】
［ステップＳ４５］不正シーケンス候補生成部１６０は、レイヤ番号Ｌ−１の階層において期間Ｐに含まれるメッセージを取得する。不正シーケンス候補生成部１６０は、例えばプロトコルログ管理テーブル１２２に設定されたプロトコルを参照して、Ｌ−１の階層のメッセージを取得することができる。例えば、Ｌ−１＝３−１＝２である場合、当該階層番号が示す階層はＡＰサーバ３００の階層である。よって、プロトコルログ管理テーブル１２２に含まれるメッセージのうちプロトコルが“ＩＩＯＰ”のレコードを取得する。また、例えば、Ｌ−１＝２−１＝１である場合、当該階層番号が示す階層はＷｅｂサーバ２００の階層である。よって、プロトコルログ管理テーブル１２２に含まれるメッセージのうちプロトコルが“ＨＴＴＰ”のレコードを取得する。
【０１１３】
［ステップＳ４６］不正シーケンス候補生成部１６０は、ステップＳ４５で取得したメッセージの組のうち、リクエストの発生時間ｔ０がｔ０＜Ｔｓ（Ｌ）であり、かつ、レスポンスの発生時間ｔ１がｔ１＞Ｔｅ（Ｌ）である組を特定する。そして、当該メッセージの組に対応する一組のレコードを作業域Ｓ（Ｌ）に追加する。
【０１１４】
ここで、ｔ０＜Ｔｓ（Ｌ）は、ｔ０がＴｓ（Ｌ）よりも過去の時間帯であることを示す。また、ｔ１＞Ｔｅ（Ｌ）は、ｔ１がＴｅ（Ｌ）よりも未来の時間帯であることを示す。
［ステップＳ４７］不正シーケンス候補生成部１６０は、作業域Ｓ（Ｌ）にメッセージが存在するか否かを判定する。Ｓ（Ｌ）にメッセージが存在する場合、処理をステップＳ４８に進める。Ｓ（Ｌ）にメッセージが存在しない場合、処理をステップＳ５４に進める。
【０１１５】
［ステップＳ４８］不正シーケンス候補生成部１６０は、作業域Ｓ（Ｌ）からリクエスト／レスポンスのレコードの組を一組抽出して作業域Ｍに追加する。なお、追加の際には、レコードに設定された時刻の時系列に従って追加する。不正シーケンス候補生成部１６０は、抽出した一組のレコードを作業域Ｓ（Ｌ）から削除する。
【０１１６】
［ステップＳ４９］不正シーケンス候補生成部１６０は、リクエスト時間Ｔｓ（Ｌ−１）に抽出したレコードのうちリクエストの発生時間ｔ０を代入する。また、不正シーケンス候補生成部１６０は、レスポンス時間Ｔｅ（Ｌ−１）に抽出したレコードのうちレスポンスの発生時間ｔ１を代入する。これらの時間は、当該各レコードに設定された時刻により取得できる。
【０１１７】
［ステップＳ５０］不正シーケンス候補生成部１６０は、レイヤ番号ＬにＬ−１を代入する。そして、処理をステップＳ４４に進める。
［ステップＳ５１］不正シーケンス候補生成部１６０は、作業域Ｍにセットされた各メッセージに対応するレコードを不正シーケンス候補として取得する。
【０１１８】
［ステップＳ５２］不正シーケンス候補生成部１６０は、作業域Ｍにセットされた各メッセージに対応するレコードにつき、最後に追加されたメッセージに対応するレコードを削除する。
【０１１９】
［ステップＳ５３］不正シーケンス候補生成部１６０は、レイヤ番号ＬにＬ＋１を代入する。そして、処理をステップＳ４７に進める。
［ステップＳ５４］不正シーケンス候補生成部１６０は、レイヤ番号ＬにＬ＋１を代入する。
【０１２０】
［ステップＳ５５］不正シーケンス候補生成部１６０は、レイヤ番号ＬがＬａに等しいか否かを判定する。Ｌ＝Ｌａである場合、処理を完了する。Ｌ＝Ｌａでない場合、処理をステップＳ４７に進める。
【０１２１】
このようにして、不正シーケンス候補生成部１６０は、処理対象期間Ｐに含まれるメッセージから不正シーケンス候補を生成する。
不正シーケンス候補生成部１６０は、予め決定した期間Ｐに基づいて不正シーケンス候補を生成することで、不正シーケンス候補が無尽蔵に生成されることを防止することができる。例えば、発生時間が大きく隔たったメッセージ同士を関連付けたとしても、それにより得られた不正シーケンス候補の妥当性は低いと考えられる。このため、期間Ｐを適切に決定して無駄な不正シーケンス候補を生成しないようにする。その結果、以降の処理の無駄を省き、解析処理を効率的に実行することができる。
【０１２２】
以下、不正シーケンス候補生成処理の具体例を説明する。
図１４は、不正シーケンス候補生成処理の具体例を示す第１の図である。不正シーケンス候補生成部１６０は、期間Ｐとして、ＨＴＴＰリクエスト５１１ａの発生時間ＷｓからＨＴＴＰレスポンス５１３ｂの発生時間Ｗｅまでの期間を取得しているものとする。この場合、当該期間Ｐには図１０で示した各メッセージが含まれるとする。なお、各メッセージには、不正シーケンス候補の説明において対になるメッセージを識別し易いように、プロトコルと番号とを付している。例えば、ＨＴＴＰリクエスト５１１ａ（“ＨＴＴＰ１”）とＨＴＴＰレスポンス５１１ｂ（“ＨＴＴＰ１”）とで一組のメッセージである。不正シーケンス候補生成部１６０は、ＤＢリクエスト５３１ａおよびＤＢレスポンス５３１ｂで不正アクセスが検知された場合、図１３の各ステップに従い、次のようにして複数の不正シーケンス候補を生成する。
【０１２３】
まず、不正シーケンス候補生成部１６０は、ＤＢリクエスト５３１ａよりも前にリクエストが発生しており、かつ、ＤＢレスポンス５３１ｂよりも後にレスポンスが発生している以下のメッセージの組を取得する。
【０１２４】
（第１組）（ＨＴＴＰリクエスト５１１ａ、ＨＴＴＰレスポンス５１１ｂ）の組
（第２組）（ＨＴＴＰリクエスト５１２ａ、ＨＴＴＰレスポンス５１２ｂ）の組
（第３組）（ＩＩＯＰリクエスト５２１ａ、ＩＩＯＰレスポンス５２１ｂ）の組
（第４組）（ＩＩＯＰリクエスト５２２ａ、ＩＩＯＰレスポンス５２２ｂ）の組
そして、不正シーケンス候補生成部１６０は、取得したメッセージの組を時間的な前後関係を考慮した上で更に組み合わせて、不正シーケンス候補を生成する。
【０１２５】
図１５は、不正シーケンス候補生成処理の具体例を示す第２の図である。不正シーケンス候補生成部１６０は、上記（第１組）〜（第４組）と不正アクセスに関するＤＢリクエスト５３１ａ、ＤＢレスポンス５３１ｂの組（第５組とする）とを組み合わせて次のような不正シーケンス候補を生成する。
【０１２６】
（Ａ）不正シーケンス候補５０１は、（第１組）、（第３組）および（第５組）を組み合わせて生成された不正シーケンス候補である。
（Ｂ）不正シーケンス候補５０１ａは、（第１組）、（第４組）および（第５組）を組み合わせて生成された不正シーケンス候補である。
【０１２７】
（Ｃ）不正シーケンス候補５０１ｂは、（第２組）、（第４組）および（第５組）を組み合わせて生成された不正シーケンス候補である。
なお、（第２組）と（第３組）とは階層間の通信手順の時間的な前後関係が整合しないため、組み合わせることはできない。
【０１２８】
不正シーケンス候補生成部１６０は、このようにして生成した不正シーケンス候補を正常系候補生成部１７０に出力する。
図１６は、正常系候補の具体例を示す図である。正常系候補生成部１７０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２を参照して、期間Ｐに含まれるメッセージのうち、不正シーケンス候補を除くメッセージ群を正常系候補として取得する。
【０１２９】
（Ａ）正常系候補５０２は、プロトコルログ管理テーブル１２２から不正シーケンス候補５０１に対応するメッセージを除いたメッセージ群を示す。
（Ｂ）正常系候補５０２ａは、プロトコルログ管理テーブル１２２から不正シーケンス候補５０１ａに対応するメッセージを除いたメッセージ群を示す。
【０１３０】
（Ｃ）正常系候補５０２ｂは、プロトコルログ管理テーブル１２２から不正シーケンス候補５０１ｂに対応するメッセージを除いたメッセージ群を示す。
当該処理は、図９のステップＳ１５の処理に対応する。
【０１３１】
正常系候補生成部１７０は、各正常系候補を妥当性評価部１８０に出力する。
次に、図９のステップＳ１６で示した妥当性評価処理を説明する。ここで、妥当性評価の方式には、複数の方式が考えられる。以下では、トランザクション数に基づく方式、各階層における処理時間に基づく方式および各階層におけるリクエスト発行時間に基づく方式の３パターンを例示する。これらのうちの何れかを用いてもよいし、これらのうちの２以上を組み合わせて用いることもできる。何れのパターンを用いるかは、システム管理者により不正アクセス検出装置１００に予め設定される。
【０１３２】
まず、トランザクション数に基づく妥当性評価処理を説明する。
図１７は、妥当性評価処理を示す第１のフローチャートである。以下、各処理をステップ番号に沿って説明する。
【０１３３】
［ステップＳ６１］妥当性評価部１８０は、正常系候補生成部１７０から取得した正常系候補に基づいて、当該正常系候補に含まれるメッセージで構成されるトランザクションを復元する。トランザクションを復元する処理には、例えば特開２００６−０１１６８３号公報に記載の方法を適用することができる。
【０１３４】
［ステップＳ６２］妥当性評価部１８０は、復元したトランザクション数を当該正常系候補に対応する不正シーケンス候補の評価値Ｈ１として取得する。
このように、妥当性評価部１８０は復元したトランザクション数に基づき評価値Ｈ１を取得する。ここで、復元できたトランザクション数が多いほど、復元に用いた正常系候補の正常性は高いと考えられる。このため、評価値Ｈ１の値が大きいほど、正常系候補の生成に用いた不正シーケンス候補の妥当性も高いと考えることができる。
【０１３５】
図１８は、妥当性評価の具体例を示す第１の図である。妥当性評価部１８０は、正常系候補生成部１７０から取得した正常系候補に基づいて、トランザクションを復元する。具体的には、不正シーケンス候補と同様に時間的な包含関係によって成立し得るメッセージの組合せを特定することで、正常系候補に含まれる複数のトランザクションを復元することができる。
【０１３６】
（Ａ）トランザクション５０３，５０３ａは、正常系候補５０２に基づいて復元されたトランザクションである。この場合、妥当性評価部１８０は不正シーケンス候補５０１に対して評価値Ｈ１＝２を得る。
【０１３７】
（Ｂ）トランザクション５０３ｂは、正常系候補５０２ａに基づいて復元されたトランザクションである。この場合、妥当性評価部１８０は不正シーケンス候補５０１ａに対して評価値Ｈ１＝１を得る。
【０１３８】
（Ｃ）トランザクション５０３ｃは、正常系候補５０２ｂに基づいて復元されたトランザクションである。この場合、妥当性評価部１８０は不正シーケンス候補５０１ｂに対して評価値Ｈ１＝１を得る。
【０１３９】
この場合、Ｈ１が最大となる（Ａ）の不正シーケンス候補５０１の妥当性が最も高い。
次に、各階層における処理時間に基づく妥当性評価処理を説明する。
図１９は、妥当性評価処理を示す第２のフローチャートである。以下、各処理をステップ番号に沿って説明する。
【０１４０】
［ステップＳ７１］妥当性評価部１８０は、正常系候補生成部１７０から取得した正常系候補に基づいて、ステップＳ６１と同様に当該正常系候補に含まれるメッセージで構成されるトランザクションを復元する。
【０１４１】
［ステップＳ７２］妥当性評価部１８０は、レイヤ番号Ｌに最上位のレイヤ番号を代入する。すなわち、Ｌ＝１となる。
［ステップＳ７３］妥当性評価部１８０は、変動係数合計ｓｕｍ１に“０”を代入する。
【０１４２】
［ステップＳ７４］妥当性評価部１８０は、レイヤ番号Ｌが（最下位のレイヤ番号＋１）に等しいか否かを判定する。すなわち、Ｌ＝３＋１＝４でない場合、処理をステップＳ７５に進める。Ｌ＝４である場合、処理をステップＳ７８に進める。
【０１４３】
［ステップＳ７５］妥当性評価部１８０は、復元した各トランザクションにつき、レイヤ番号Ｌで示される階層における処理時間の分散を算出する。妥当性評価部１８０は、分散に基づいて、変動係数Ｃ１（Ｌ）を算出する。ここで、変動係数Ｃは、以下の式によって求めることができる。
【０１４４】
【数１】
0005454363.tif 000002
【０１４５】
ここで、σ2は分散を示す。また、τは処理時間の相加平均を示す。
［ステップＳ７６］妥当性評価部１８０は、変動係数合計ｓｕｍ１にｓｕｍ１＋Ｃ１（Ｌ）を代入する。
【０１４６】
［ステップＳ７７］妥当性評価部１８０は、レイヤ番号ＬにＬ＋１を代入する。
［ステップＳ７８］妥当性評価部１８０は、当該正常系候補に対応する不正シーケンス候補の評価値Ｈ２をＨ２＝ｅｘｐ（−ｓｕｍ１）として算出する。
【０１４７】
このように、妥当性評価部１８０は各階層における処理時間に基づき評価値Ｈ２を取得する。ここで、復元できた各トランザクションについて、各階層における処理時間のばらつきが小さいほど、復元に用いた正常系候補の正常性は高いと考えられる。なぜなら、業務システムでは、定型的な業務処理が行われるのが一般的であり、各処理の処理時間にさほど差異は生じないと考えられるためである。このため、評価値Ｈ２の値が大きいほど、正常系候補の生成に用いた不正シーケンス候補の妥当性も高いと考えることができる。
【０１４８】
次に、各階層におけるリクエスト発行時間に基づく妥当性評価処理を説明する。
図２０は、妥当性評価処理を示す第３のフローチャートである。以下、各処理をステップ番号に沿って説明する。
【０１４９】
［ステップＳ８１］妥当性評価部１８０は、正常系候補生成部１７０から取得した正常系候補に基づいて、ステップＳ６１と同様に当該正常系候補に含まれるメッセージで構成されるトランザクションを復元する。
【０１５０】
［ステップＳ８２］妥当性評価部１８０は、妥当性評価部１８０は、レイヤ番号Ｌに最上位のレイヤ番号を代入する。すなわち、Ｌ＝１となる。
［ステップＳ８３］妥当性評価部１８０は、妥当性評価部１８０は、変動係数合計ｓｕｍ２に“０”を代入する。
【０１５１】
［ステップＳ８４］妥当性評価部１８０は、妥当性評価部１８０は、レイヤ番号Ｌが最下位のレイヤ番号に等しいか否かを判定する。すなわち、Ｌ＝３でない場合、処理をステップＳ８５に進める。Ｌ＝３である場合、処理をステップＳ８８に進める。
【０１５２】
［ステップＳ８５］妥当性評価部１８０は、復元した各トランザクションにつき、レイヤ番号Ｌで示される階層におけるリクエスト発行時間の分散を算出する。妥当性評価部１８０は、分散に基づいて、変動係数Ｃ２（Ｌ）を算出する。ここで、変動係数Ｃは、式（１）によって求めることができる。ただし、τをリクエスト発行時間とする。
【０１５３】
［ステップＳ８６］妥当性評価部１８０は、変動係数合計ｓｕｍ２にｓｕｍ２＋Ｃ２（Ｌ）を代入する。
［ステップＳ８７］妥当性評価部１８０は、レイヤ番号ＬにＬ＋１を代入する。
【０１５４】
［ステップＳ８８］妥当性評価部１８０は、当該正常系候補に対応する不正シーケンス候補の評価値Ｈ３をＨ３＝ｅｘｐ（−ｓｕｍ２）として算出する。
このように、妥当性評価部１８０は各階層におけるリクエスト発行時間に基づき評価値Ｈ３を取得する。ここで、復元できた各トランザクションについて、各階層におけるリクエスト発行時間のばらつきが小さいほど、復元に用いた正常系候補の正常性は高いと考えられる。なぜなら、業務システムでは、定型的な業務処理に対するリクエストを受け付けるのが一般的であり、各リクエストに対する処理時間にさほど差異は生じないと考えられるためである。このため、評価値Ｈ３の値が大きいほど、正常系候補の生成に用いた不正シーケンス候補の妥当性も高いと考えることができる。
【０１５５】
なお、上記ステップＳ８４〜Ｓ８７において、Ｌ＝３の場合に変動係数を求めない理由は、ＤＢサーバ４００が他のサーバにリクエストを発行しないためである。
また、ステップＳ６１，Ｓ７１，Ｓ８１で示したトランザクション復元処理は、複数の方式を組み合わせて妥当性評価を行う場合には、何れかの方式で１度実行すればよい。
【０１５６】
図２１は、処理時間およびリクエスト発行時間を示す図である。図２１では、トランザクション５０３について、処理時間およびリクエスト発行時間を例示している。
時間差ｔ３１ａは、Ｗｅｂサーバ２００がＨＴＴＰリクエスト５１２ａを受信してからＩＩＯＰリクエスト５２２ａを発行するまでの時間差である。時間差ｔ３１ａは、Ｗｅｂサーバ２００におけるリクエスト発行時間である。
【０１５７】
時間差ｔ３１ｂは、Ｗｅｂサーバ２００がＩＩＯＰレスポンス５２２ｂを受信してからＨＴＴＰレスポンス５１２ｂを発行するまでの時間差である。
時間差ｔ３１ａ，ｔ３１ｂの合計の時間がＷｅｂサーバ２００における処理時間である。
【０１５８】
時間差ｔ３２ａは、ＡＰサーバ３００がＩＩＯＰリクエスト５２２ａを受信してからＤＢリクエスト５３２ａを発行するまでの時間差である。時間差ｔ３２ａは、ＡＰサーバ３００におけるリクエスト発行時間である。
【０１５９】
時間差ｔ３２ｂは、ＡＰサーバ３００がＤＢレスポンス５３２ｂを受信してからＩＩＯＰレスポンス５２２ｂを発行するまでの時間差である。
時間差ｔ３２ａ，ｔ３２ｂの合計の時間がＡＰサーバ３００における処理時間である。
【０１６０】
時間差ｔ３３は、ＤＢサーバ４００がＤＢリクエスト５３２ａを受信してからＤＢレスポンス５３２ｂを発行するまでの時間差である。時間差ｔ３３は、ＤＢサーバ４００における処理時間である。
【０１６１】
妥当性評価部１８０は、復元した各トランザクションについて、階層ごとに処理時間またはリクエスト発行時間につき分散を算出して、変動係数を求めることができる。
図２２は、妥当性評価の具体例を示す第２の図である。
【０１６２】
（Ａ）頻度分布６１０は、ある正常系候補において生成された各トランザクションに関する処理時間の分布である。分布６１１は、Ｗｅｂサーバ２００の属する階層（Ｗｅｂ層）における処理時間の分布である。分布６１２は、ＡＰサーバ３００の属する階層（ＡＰ層）における処理時間の分布である。分布６１３は、ＤＢサーバ４００の属する階層（ＤＢ層）における処理時間の分布である。
【０１６３】
妥当性評価部１８０は、分布６１１，６１２，６１３の各分散に基づいて、変動係数合計ｓｕｍ１を算出し、評価値Ｈ２を得ることができる。
（Ｂ）頻度分布６２０は、ある正常系候補において生成された各トランザクションに関するリクエスト発行時間の分布である。分布６２１は、Ｗｅｂ層におけるリクエスト発行時間の分布である。分布６２２は、ＡＰ層におけるリクエスト発行時間の分布である。
【０１６４】
妥当性評価部１８０は、分布６２１，６２２の各分散に基づいて、変動係数合計ｓｕｍ２を算出し、評価値Ｈ３を得ることができる。
妥当性評価部１８０は、このようにして取得した評価値Ｈ１，Ｈ２，Ｈ３を解析結果出力部１９０に出力する。解析結果出力部１９０は、妥当性評価部１８０から取得した評価値に基づいて、不正シーケンス候補をランク付けしてモニタ１１に表示させる。
【０１６５】
次に、図９のステップＳ１８で示した結果出力処理を説明する。
図２３は、結果出力処理を示すフローチャートである。以下、各処理をステップ番号に沿って説明する。
【０１６６】
［ステップＳ９１］解析結果出力部１９０は、トランザクション数に基づく評価値Ｈ１、各階層における処理時間に基づく評価値Ｈ２および各階層におけるリクエスト発行時間に基づく評価値Ｈ３の何れか１つまたは複数の評価値を取得したか否かを判定する。複数の方式につき評価値を取得した場合、処理をステップＳ９２に進める。何れか１つの方式につき評価値を取得した場合、処理をステップＳ９４に進める。
【０１６７】
［ステップＳ９２］解析結果出力部１９０は、トランザクション数に基づく評価方式、各階層における処理時間に基づく評価方式および各階層におけるリクエスト発行時間に基づく評価方式に関して、各方式の優先度を取得する。ここで、当該優先度は、不正アクセス検出装置１００に予め設定される。例えば、トランザクション数に基づく評価方式が最も優先される。次いで、処理時間に基づく評価方式が優先される。次いで、リクエスト発行時間に基づく評価方式が優先される。
【０１６８】
［ステップＳ９３］解析結果出力部１９０は、各方式につき優先度が高く、かつ、評価値の高い不正シーケンス候補をより高ランクにランク付けする。ランクが高いほど、妥当性も高い。解析結果出力部１９０は、ランク付けの結果をモニタ１１に表示させる。そして、処理を完了する。
【０１６９】
［ステップＳ９４］解析結果出力部１９０は、評価値の高い不正シーケンス候補をより高ランクにランク付けする。解析結果出力部１９０は、ランク付けの結果をモニタ１１に表示させる。そして、処理を完了する。
【０１７０】
このようにして、解析結果出力部１９０は、妥当性評価部１８０により算出された評価値Ｈ１，Ｈ２，Ｈ３に基づいて、不正シーケンス候補のうち妥当性の高い順にランク付けする。解析結果出力部１９０は、ランク付けした不正シーケンス候補を例えばモニタ１１に表示させる。
【０１７１】
解析結果出力部１９０は、複数の方式により求められた評価値に基づいて、不正シーケンス候補をランク付けすることで、より正確なランク付けが可能となる。例えば、複数の正常系候補につき復元されたトランザクション数が同一の場合でも、各正常系候補につき処理時間のばらつきやリクエスト発行時間のばらつきによる評価を行えば、各正常系候補についての優劣を決定することができる。
【０１７２】
次に、解析結果出力部１９０により生成される解析結果の表示画面の具体例を説明する。
図２４は、解析結果の表示画面の第１の具体例を示す図である。解析結果出力部１９０は、不正シーケンス表示画面７００をモニタ１１に表示させる。不正シーケンス表示画面７００は、不正シーケンス候補を妥当性の高い順に表示する画面である。解析結果出力部１９０は、例えばシステム管理者によるキーボード１２やマウス１３を用いた所定の操作入力を受け付けた際に、不正シーケンス表示画面７００を表示させてもよい。
【０１７３】
不正シーケンス表示画面７００は、不正シーケンス候補表示部７００ａ，７００ｂ，７００ｃを含む。
不正シーケンス候補表示部７００ａは、最も妥当性の高い不正シーケンス候補を表示する領域である。図２４の例では、不正シーケンス候補表示部７００ａには不正シーケンス候補５０１を示す画像が表示されている。
【０１７４】
不正シーケンス候補表示部７００ｂは、２番目に妥当性の高い不正シーケンス候補を表示する領域である。図２４の例では、不正シーケンス候補表示部７００ｂには不正シーケンス候補５０１ａを示す画像が表示されている。
【０１７５】
不正シーケンス候補表示部７００ｃは、３番目に妥当性の高い不正シーケンス候補を表示する領域である。図２４の例では、不正シーケンス候補表示部７００ｃには不正シーケンス候補５０１ｂを示す画像が表示されている。
【０１７６】
なお、４以上の複数の不正シーケンス候補を表示させてもよい。
ここで、不正シーケンス候補表示部７００ａ，７００ｂ，７００ｃには、不正シーケンス候補５０１，５０１ａ，５０１ｂに含まれるメッセージを示すアイコン７１１ａ，７１１ｂ，７１２ａ，７１２ｂ，７２１ａ，７２１ｂ，７２２ａ，７２２ｂ，７３０が表示されている。
【０１７７】
アイコン７１１ａはＨＴＴＰリクエスト５１１ａに、アイコン７１１ｂはＨＴＴＰレスポンス５１１ｂに対応する。アイコン７１２ａはＨＴＴＰリクエスト５１２ａに、アイコン７１２ｂはＨＴＴＰレスポンス５１２ｂに対応する。アイコン７２１ａはＩＩＯＰリクエスト５２１ａに、アイコン７２１ｂはＩＩＯＰレスポンス５２１ｂに対応する。アイコン７２２ａはＩＩＯＰリクエスト５２２ａに、アイコン７２２ｂはＩＩＯＰレスポンス５２２ｂに対応する。アイコン７３０は不正アクセスを検知した一組のメッセージ、すなわち、ＤＢリクエスト５３１ａおよびＤＢレスポンス５３１ｂに対応する。
【０１７８】
システム管理者は、ポインタＲ１を操作して、各アイコンをクリック操作することができる。すると、解析結果出力部１９０は、プロトコルログ記憶部１２０に記憶された復元メッセージ１２１を参照して当該アイコンに対応するメッセージ内容を含むログ表示画面８００をモニタ１１に表示させる。
【０１７９】
例えば、解析結果出力部１９０は、アイコン７１１ａに対するポインタＲ１によるクリック操作を受け付けたとする。アイコン７１１ａはＨＴＴＰリクエスト５１１ａに対応するものである。よって、解析結果出力部１９０は復元メッセージ１２１のうち当該メッセージの内容を含むログ表示画面８００を表示させる。具体的には、図７で示した復元メッセージ１２１の１行目の内容が対応する。
【０１８０】
システム管理者は、ログ表示画面８００を参照することで、不正アクセスに関するメッセージの情報を取得することができる。システム管理者は、当該出力結果により、不正アクセスに関するシーケンス候補のうち確度のより高いものを容易に特定することができる。ログ表示画面８００の例では、ＨＴＴＰリクエスト５１１ａに含まれるユーザのＩＤを容易に特定することができる。システム管理者は、当該ユーザＩＤにより、不正アクセスに対する適切な対応を行うことができる。
【０１８１】
図２５は、解析結果の表示画面の第２の具体例を示す図である。解析結果出力部１９０は、シーケンス表示画面９００をモニタ１１に表示させる。シーケンス表示画面９００は、各サーバで送受信されたメッセージの一覧を表示する画面である。解析結果出力部１９０は、プロトコルログ記憶部１２０に記憶されたプロトコルログ管理テーブル１２２を参照して、シーケンス表示画面９００をモニタ１１に表示させることができる。解析結果出力部１９０は、例えばシステム管理者によるキーボード１２やマウス１３を用いた所定の操作入力を受け付けた際に、シーケンス表示画面９００を表示させてもよい。
【０１８２】
シーケンス表示画面９００は、シーケンス表示部９０１および不正アクセス元表示ボタン９０２を含む。
シーケンス表示部９０１は、各サーバで送受信されたメッセージの一覧を時系列に表示する領域である。シーケンス表示部９０１には各メッセージを示すアイコンが、時系列に、かつ、視覚的に区別可能に表示されている。各アイコンは、例えば色や模様によって区別できる。あるいは、メッセージの内容の一部を示す文字列を各アイコンに併記して区別可能としてもよい。アイコン９１１ａ，９１１ｂ，９１２ａ，９１２ｂ，９３０は、そのような各アイコンの一部である。
【０１８３】
アイコン９１１ａはＨＴＴＰリクエスト５１１ａに、アイコン９１１ｂはＨＴＴＰレスポンス５１１ｂに対応する。アイコン９１２ａはＨＴＴＰリクエスト５１２ａに、アイコン９１２ｂはＨＴＴＰレスポンス５１２ｂに対応する。アイコン９３０は不正アクセスを検知した一組のメッセージ、すなわち、ＤＢリクエスト５３１ａおよびＤＢレスポンス５３１ｂに対応する。
【０１８４】
解析結果出力部１９０は、シーケンス表示部９０１内に全ての時間帯のメッセージを表示しきれない場合には、シーケンス表示部９０１に設けられたスクロールバーに対する操作入力を受け付けて、表示させる時間帯を前後にスクロールすることができる。
【０１８５】
不正アクセス元表示ボタン９０２は、ＨＴＴＰリクエスト表示画面９１０の表示指示を受け付けるためのボタンである。システム管理者は、不正アクセス元表示ボタン９０２をポインタＲ１により押下操作することで解析結果出力部１９０にＨＴＴＰリクエスト表示画面９１０の表示指示を入力することができる。
【０１８６】
解析結果出力部１９０は、不正アクセス元表示ボタン９０２の押下操作を受け付けると、ＨＴＴＰリクエスト表示画面９１０をモニタ１１に表示させる。
ＨＴＴＰリクエスト表示画面９１０は、シーケンス表示部９０１に表示されたメッセージのうち妥当性の高い（ランクの高い）不正シーケンス候補のＨＴＴＰリクエストをリスト表示する画面である。ＨＴＴＰリクエスト表示画面９１０の例では、アイコン９１１，９１２が表示されている。そして、アイコン９１１はアイコン９１２よりも妥当性が高いものとして表示されている。
【０１８７】
アイコン９１１は、アイコン９１１ａに対応する。すなわち、不正シーケンス候補５０１のＨＴＴＰリクエスト５１１ａに対応する。アイコン９１１は、アイコン９１１ａと同一の態様により視覚的に識別できるように表示される。より具体的には、アイコン９１１ａと同一の色や模様が付される。あるいは、アイコン９１１ａに併記された文字列と同一の文字列がアイコン９１１にも併記される。
【０１８８】
アイコン９１２は、アイコン９１２ａに対応する。すなわち、不正シーケンス候補５０１ａのＨＴＴＰリクエスト５１２ａに対応する。アイコン９１２は、シーケンス表示部９０１中、アイコン９１２ａと同一の態様により視覚的に識別できるように表示される。具体的な態様はアイコン９１１で説明した通りである。
【０１８９】
システム管理者は、ポインタＲ１を操作して、アイコン９１１，９１２をクリック操作することができる。すると、解析結果出力部１９０は、プロトコルログ記憶部１２０に記憶された復元メッセージ１２１を参照して当該アイコンに対応するメッセージ内容を含むログ表示画面８００をモニタ１１に表示させる。
【０１９０】
ログ表示画面８００の表示方法は、図２４で説明した方法と同一である。例えば、解析結果出力部１９０は、アイコン９１１に対するポインタＲ１によるクリック操作を受け付けたとする。アイコン９１１はＨＴＴＰリクエスト５１１ａに対応するものである。よって、解析結果出力部１９０は復元メッセージ１２１のうち当該メッセージの内容を含むログ表示画面８００を表示させる。
【０１９１】
このように、解析結果出力部１９０は、シーケンス表示画面９００およびＨＴＴＰリクエスト表示画面９１０を用いても、不正シーケンス表示画面７００と同等の表示および操作を受け付けることができる。そして、同一の効果を得ることができる。
【０１９２】
なお、不正アクセス検出装置１００は、解析結果出力部１９０から妥当性の高い不正シーケンス候補に含まれるユーザＩＤを取得して、これをシステム管理者に所定の方法で通知してもよい。例えば、不正アクセス検出装置１００は電子メールにより通知してもよい。また、例えば、不正アクセス検出装置１００はネットワーク経由でシステム管理者が操作する他の情報処理装置にメッセージダイアログを表示させてもよい。このようにすれば、システム管理者が不正アクセス検出装置１００を直接操作できない場合にも確実に不正アクセスの発生と、そのアクセス元候補とを通知できる。
【０１９３】
また、不正アクセス検出装置１００は、解析結果出力部１９０から妥当性の高い不正シーケンス候補に含まれるユーザＩＤを取得して、Ｗｅｂサーバ２００に、当該ユーザＩＤによるその後のアクセスを拒否させてもよい。また、不正アクセス検出装置１００は、スイッチ装置１０に当該ユーザＩＤを含むその後の通信を遮断させてもよい。あるいは、不正アクセス検出装置１００が当該ユーザＩＤを含むその後の通信をフィルタして遮断してもよい。このようにすれば、当該ユーザによるその後の不正行為を未然に防止することができる。
【０１９４】
ここで、多階層システムでは、それぞれ独立に設計されたアプリケーションが各階層のサーバに導入されることが多い。このため、従来では、ある階層で不正アクセスを検知したとしても、各階層間で送受信されたメッセージに当該不正アクセスとの関連性を見出すことが困難であった。
【０１９５】
これに対し、不正アクセス検出装置１００によれば、不正アクセスに関係すると考えられる複数の不正シーケンス候補について、各不正シーケンス候補を除いた正常系候補のメッセージ群で評価する。これにより、各不正シーケンス候補の確度を適正に評価することができる。その結果、不正アクセス検出装置１００は、多階層システムにおいて所定の階層で検知された不正アクセスについて、それに関係する複数の不正シーケンス候補を妥当性の高い順に提示することができる。
【０１９６】
システム管理者は、当該出力結果により、不正アクセスに関する通信シーケンス候補のうち確度のより高いものを容易に特定することができる。
よって、不正アクセス検出装置１００は多階層システムにおいて不正アクセスに関する通信シーケンスの特定を効率的に支援することができる。
【０１９７】
以上、本発明の解析プログラム、解析装置および解析方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１９８】
以上の実施の形態に関し、更に以下の付記を開示する。
（付記１）  複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出し、
前記記憶手段に記憶された通信履歴のうち、前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する、
処理をコンピュータに実行させることを特徴とする解析プログラム。
【０１９９】
（付記２）  前記記憶手段に記憶された前記通信履歴のうち、前記不正アクセスの発生時間前後の所定の時間幅に含まれる複数の通信につき、各情報処理装置が受信したリクエストと、当該リクエストに対して当該情報処理装置が送信したレスポンスと、の対応付けができるように前記時間幅を決定する処理を更に前記コンピュータに実行させ、
前記記憶手段に記憶された前記通信履歴のうち、前記時間幅の範囲で前記複数のシーケンス候補を抽出し、前記複数のシーケンス候補それぞれの前記評価値を算出する、
ことを特徴とする付記１記載の解析プログラム。
【０２００】
（付記３）  前記評価値として、前記第２の通信履歴により復元されたトランザクションの数に基づき第１の評価値を算出することを特徴とする付記１または２の何れか一項に記載の解析プログラム。
【０２０１】
（付記４）  前記評価値として、前記第２の通信履歴により復元された各トランザクションにつき、同一の情報処理装置が所定の処理に要した時間に基づき第２の評価値を算出することを特徴とする付記１乃至３の何れか一項に記載の解析プログラム。
【０２０２】
（付記５）  前記所定の処理に要した時間は、前記情報処理装置が第１のリクエストを受信してから他の情報処理装置に対する第２のリクエストを送信するまでのリクエスト発行時間であることを特徴とする付記４記載の解析プログラム。
【０２０３】
（付記６）  前記所定の処理に要した時間は、前記情報処理装置が第１のリクエストを受信してから他の情報処理装置に対する第２のリクエストを送信するまでのリクエスト発行時間と、前記他の情報処理装置から前記第２のリクエストに対する第１のレスポンスを受信してから前記第１のリクエストに対する第２のレスポンスを送信するまでのレスポンス発行時間と、を合計した時間であることを特徴とする付記４記載の解析プログラム。
【０２０４】
（付記７）  前記第２の評価値を、各情報処理装置が前記所定の処理に要した時間の変動係数を前記トランザクションで合計した変動係数合計に基づいて算出することを特徴とする付記４乃至６の何れか一項に記載の解析プログラム。
【０２０５】
（付記８）  前記第２の評価値を、変動係数合計ｘ（ｘは０以上の整数）につきｅｘｐ（−ｘ）の演算により算出することを特徴とする付記７記載の解析プログラム。
（付記９）  前記各評価値の降順に、前記確度が最高のものから最低のものへ対応付けて、当該評価値に対応する前記シーケンス候補を示す画像を表示手段に表示させることを特徴とする付記３または８の何れか一項に記載の解析プログラム。
【０２０６】
（付記１０）  複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出する抽出手段と、
前記記憶手段に記憶された通信履歴のうち、前記抽出手段が抽出した前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する評価手段と、
を有することを特徴とする解析装置。
【０２０７】
（付記１１）  解析装置の解析方法であって、
前記解析装置が、
複数の情報処理装置間の通信履歴を記憶する記憶手段に記憶された前記通信履歴に基づいて、前記複数の情報処理装置間でなされた不正アクセスに関する通信につき複数のシーケンス候補を抽出し、
前記記憶手段に記憶された通信履歴のうち、前記複数のシーケンス候補それぞれに対応する第１の通信履歴を除いた第２の通信履歴により復元できるトランザクションの正常性に基づいて、前記複数のシーケンス候補それぞれが不正アクセスであることの確度を示す評価値を算出し出力する、
ことを特徴とする解析方法。
【符号の説明】
【０２０８】
１  解析装置
１ａ  通信履歴記憶手段
１ｂ  抽出手段
１ｃ  評価手段
２，３，４  情報処理装置
５  シーケンス候補
５ａ，５ｂ，５ｃ  通信
【図１】
0005454363.tif 000003
【図２】
0005454363.tif 000004
【図３】
0005454363.tif 000005
【図４】
0005454363.tif 000006
【図５】
0005454363.tif 000007
【図６】
0005454363.tif 000008
【図７】
0005454363.tif 000009
【図８】
0005454363.tif 000010
【図９】
0005454363.tif 000011
【図１０】
0005454363.tif 000012
【図１１】
0005454363.tif 000013
【図１２】
0005454363.tif 000014
【図１３】
0005454363.tif 000015
【図１４】
0005454363.tif 000016
【図１５】
0005454363.tif 000017
【図１６】
0005454363.tif 000018
【図１７】
0005454363.tif 000019
【図１８】
0005454363.tif 000020
【図１９】
0005454363.tif 000021
【図２０】
0005454363.tif 000022
【図２１】
0005454363.tif 000023
【図２２】
0005454363.tif 000024
【図２３】
0005454363.tif 000025
【図２４】
0005454363.tif 000026
【図２５】
0005454363.tif 000027