(57)【特許請求の範囲】
【請求項１】
ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習部と、
分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析部と、
前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定部と
を備えたことを特徴とするログ分析装置。
【請求項２】
前記分析部によって攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成する攻撃パターン生成部をさらに備えることを特徴とする請求項１に記載のログ分析装置。
【請求項３】
前記学習部は、前記アクセスログからパラメータを抽出し、該抽出したパラメータを抽象化し、抽象化されたパラメータの出現頻度を学習することを特徴とする請求項１に記載のログ分析装置。
【請求項４】
前記学習部は、各パラメータの出現頻度を学習し、各パラメータのうち、出現頻度が所定の閾値以下であるパラメータについては、前記プロファイルから削除することを特徴とする請求項１に記載のログ分析装置。
【請求項５】
前記再学習要否判定部は、前記類似度が閾値未満である分析対象のアクセスログのうち、所定期間内で連続する複数のリクエストの時間間隔が閾値未満であるアクセスログについて、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定することを特徴とする請求項１に記載のログ分析装置。
【請求項６】
前記分析部によって攻撃と判定されたアクセスのパラメータが、既に生成された攻撃パターンとマッチするか否かを判定し、マッチすると判定した場合には、前記攻撃と判定されたアクセスのパラメータを削除する攻撃パターンマッチテスト部をさらに備えることを特徴とする請求項２に記載のログ分析装置。
【請求項７】
ログ分析装置によって実行されるログ分析方法であって、
ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習工程と、
分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析工程と、
前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定工程と
を含んだことを特徴とするログ分析方法。
【請求項８】
ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習ステップと、
分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析ステップと、
前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定ステップと
をコンピュータに実行させるためのログ分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ分析装置、ログ分析方法およびログ分析プログラムに関する。
【背景技術】
【０００２】
近年、インターネットの普及に伴い、Ｗｅｂサーバに対する攻撃が急増している。このような攻撃の対策としてＩＤＳ(Intrusion  Detection  System)、ＩＰＳ(Intrusion  Prevention  System)、ＷＡＦ(Web  Application  Firewall)等によるネットワークへの不正侵入検知・防御システムが知られている。ところが、このようなシステムにおいては、ブラックリストやシグネチャファイルを用いたパターンで検出を行うため、既知の攻撃の検知、防御しかできない場合がある。【０００３】
これに対して、未知の攻撃検出手法として、正常なＷｅｂサーバへのアクセス要求からパラメータ値の特徴を学習し、識別対象のアクセス要求の特徴と比較することにより攻撃（正常なアクセスではない）か否かを判定する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２３２７１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記した従来の未知の攻撃検出手法では、システムの仕様変更等で「正常なアクセス」の定義が変更になった場合に手動で再学習を行うため、運用に掛かる手間が大きく、高精度での攻撃検知を行うことができない場合があるという課題があった。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明のログ分析装置は、ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習部と、分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析部と、前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定部とを備えたことを特徴とする。【０００７】
また、本発明のログ分析方法であって、ログ分析装置によって実行されるログ分析方法であって、ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習工程と、分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析工程と、前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定工程とを含んだことを特徴とする。【０００８】
また、本発明のログ分析プログラムは、ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとして記憶部に格納する学習ステップと、分析対象のアクセスログからパラメータを抽出し、該パラメータと前記記憶部に記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、前記分析対象のアクセスログにおけるアクセスを攻撃と判定する分析ステップと、前記類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する再学習要否判定ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、運用に掛かる手間を低減し、高精度で未知の攻撃検知を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第一の実施の形態に係るログ分析装置の概要を示す構成図である。
【図２】図２は、プロファイル記憶部に記憶される情報の一例を示す図である。
【図３】図３は、アクセスログの具体例を説明する図である。
【図４】図４は、パラメータ抽出処理を説明する図である。
【図５】図５は、文字クラスの例を説明する図である。
【図６】図６は、抽象化後のパラメータ値の例を説明する図である。
【図７】図７は、プロファイル更新の例を説明する図である。
【図８】図８は、プロファイル更新の例を説明する図である。
【図９】図９は、プロファイル更新の例を説明する図である。
【図１０】図１０は、類似度比較処理の例を説明する図である。
【図１１】図１１は、第一の実施の形態に係るログ分析装置における学習処理の流れを示すフローチャートである。
【図１２】図１２は、第一の実施の形態に係るログ分析装置における分析処理の流れを示すフローチャートである。
【図１３】図１３は、第一の実施の形態に係るログ分析装置における再学習要否判定処理の流れを示すフローチャートである。
【図１４】図１４は、第二の実施の形態に係るログ分析装置の概要を示す構成図である。
【図１５】図１５は、パス抽象化処理の例を説明する図である。
【図１６】図１６は、第二の実施の形態に係るログ分析装置における学習処理の流れを示すフローチャートである。
【図１７】図１７は、第三の実施の形態に係るログ分析装置の概要を示す構成図である。
【図１８】図１８は、第三の実施の形態に係るログ分析装置における攻撃パターン生成処理の流れを示すフローチャートである。
【図１９】図１９は、第四の実施の形態に係るログ分析装置の概要を示す構成図である。
【図２０】図２０は、ログ分析プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願に係るログ分析装置、ログ分析方法およびログ分析プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係るログ分析装置、ログ分析方法およびログ分析プログラムが限定されるものではない。
【００１２】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係るログ分析装置１０の構成、ログ分析装置１０の処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
【００１３】
［ログ分析装置の構成］
まず、図１を用いて、ログ分析装置１０の構成を説明する。図１は、第一の実施の形態に係るログ分析装置の概要を示す構成図である。図１に示すように、このログ分析装置１０は、入力部１１、出力部１２、制御部１３および記憶部１４を有する。
【００１４】
入力部１１は、各種情報の入力操作を受け付けるデバイスであり、例えば、Ｗｅｂサーバへのアクセスログの入力を受け付ける。出力部１２は、各種情報を出力するデバイスであり、例えば、後述する分析処理による結果を出力する。
【００１５】
また、記憶部１４は、制御部１３による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、プロファイル記憶部１４ａ、分析済ログ記憶部１４ｂおよび再学習要否判定情報記憶部１４ｃを有する。例えば、記憶部１４は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００１６】
プロファイル記憶部１４ａは、アクセスログから抽出されたパラメータの出現頻度を記憶する。例えば、プロファイル記憶部１４ａは、図２に例示するように、プロファイルとして、「パス」と「パラメータキー」の組合せ「パス：パラメータキー」に対応付けて、「文字クラス列」および「出現回数」を記憶する。図２は、プロファイル記憶部に記憶される情報の一例を示す図である。
【００１７】
分析済ログ記憶部１４ｂは、後述する分析部１３ｂによって分析されたアクセスログを記憶する。分析済ログ記憶部１４ｂが記憶するアクセスログは、後述する学習部１３ａが再学習を行う際に、読み出されるデータである。
【００１８】
再学習要否判定情報記憶部１４ｃは、後述する分析部１３ｂによってプロファイルに無い、またはマッチしないパラメータ値を持つリクエストの「発ＩＰ」と、「日時」と、「パス」と、「パラメータキー」との組を記憶する。
【００１９】
制御部１３は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、学習部１３ａ、分析部１３ｂおよび再学習要否判定部１３ｃを有する。ここで、制御部１３は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００２０】
学習部１３ａは、ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとしてプロファイル記憶部１４ａに格納する。
【００２１】
学習部１３ａは、学習時の処理において、入力部１１を介して入力されたアクセスログからパラメータの特徴を学習し、プロファイルの生成および保存を行う。以下に学習時の処理について詳しく説明する。なお、以降の説明では、入力されたログが複数行分まとまって与えられるバッチ処理のイメージで記載しているが、１行ごとに与えられるリアルタイム処理であっても処理内容は同様である。また、学習または分析のどちらの動作を行うかは、システムに対する指示として与えてもよいし、例えば学習用ログ保存領域に保存されたログは学習の動作、分析用ログ保存領域に保存されたログは分析の動作というように、入力によって動作を変えてもよい。
【００２２】
まず、学習部１３ａは、入力部１１を介して学習用ログを取得する。かかる学習用ログは、ユーザ端末からＷｅｂサーバへのアクセスログであり、図３に例示するように、少なくとも「発ＩＰ」、「日時」、「リクエスト」を含む。図３は、アクセスログの具体例を説明する図である。
【００２３】
そして、学習部１３ａは、プロファイルを空のデータで初期化する。続いて、学習部１３ａは、学習ログから各種パラメータを抽出する。例えば、学習部１３ａは、図４に例示するように、入力された学習用ログの先頭からログを１行取り出し、パースして「発ＩＰ」、「日時」、「リクエスト」を抽出する。さらに、学習部１３ａは、「リクエスト」のパス部（図４における「リクエスト」の「？」より前）とクエリストリング部（図４における「リクエスト」の「？」より後）を分割し、クエリストリング部をパースして、パラメータキー（図４における「＝」より前）、パラメータ値（図４における「＝」より後）のペアを取得する。図４は、パラメータ抽出処理を説明する図である。
【００２４】
例えば、図４の具体例を挙げて説明すると、学習部１３ａは、リクエスト「/search.php?p1=value1&p2=value-2」について、「？」より前のパス部「/search.php」と、「？」より後のクエリストリング部「p1=value1&p2=value-2」とに分割する。そして、学習部１３ａは、クエリストリング部をパースして、パラメータキー「ｐ１」、パラメータ値「ｖａｌｕｅ１」のペアと、パラメータキー「ｐ２」、パラメータ値「ｖａｌｕｅ−２」のペアとを取得する。なお、クエリストリング部が無い場合、当該行は無視して次の行の処理に移る。
【００２５】
そして、学習部１３ａは、アクセスログからパラメータを抽出し、該抽出したパラメータを抽象化し、抽象化されたパラメータの出現頻度を学習する。例えば、学習部１３ａは、パラメータ値をアルファベット、数字などの文字クラスの列として抽象化する。文字クラスは、例えば正規表現によって表される。図５に例示するように、文字クラスには、「優先度」が設定されており、抽象化の際、先頭からできるだけ長くマッチするもの、長さが同じ場合、優先度の高いもの、すなわち優先度の数値が大きいものに抽象化する。例えば、「１２３」は「ＨＥＸ」ではなく「ＮＵＭ」と抽象化する。パラメータ値の先頭からこのような文字クラスへの抽象化を行ない、パラメータ値を文字クラスのシーケンス、すなわち文字クラス列に変換する。なお、文字クラスは事前に設定ファイル等で与えられているものとする。図５は、文字クラスの例を説明する図である。
【００２６】
また、抽象化後の文字クラス列の例を図６に例示する。図６は、抽象化後のパラメータ値の例を説明する図である。なお、文字クラス列をさらに抽象化して、順序性と重複を無視した文字クラス集合としてもよい。例えば、文字クラス列［ＡＬ，ＮＵＭ，ＡＬ，ＳＹＭ］も［ＳＹＭ，ＮＵＭ，ＡＬ］も同じ文字クラス集合｛ＡＬ，ＮＵＭ，ＳＹＭ｝として扱う。以降、特記しない場合、文字クラス列とは文字クラス列または文字クラス集合を指すものとする。
【００２７】
そして、学習部１３ａは、上記の抽象化処理で得られた［パス:パラメータキー］および文字クラス列を用いて、プロファイルを更新する。例えば、学習部１３ａは、図７に例示するように、上記の抽象化処理で得られた文字クラス列がプロファイルに存在する場合には、出現回数に１を加算する。図７の例では、学習部１３ａは、［パス:パラメータキー］が「/path:key1」、文字クラス列［ＡＬ］の出現回数「１」と、［パス:パラメータキー］が「/path:key2」、文字クラス列［ＨＥＸ］の出現回数「１」とにそれぞれ１を加算して出現回数を「２」にそれぞれに更新する。図７は、プロファイル更新の例を説明する図である。
【００２８】
また、例えば、学習部１３ａは、図８に例示するように、当該文字クラス列がプロファイルに無い場合、出現回数１回としてプロファイルに当該文字クラス列を追加する。また、例えば、学習部１３ａは、図９に例示するように、プロファイルに当該［パス:パラメータキー］が無い場合、出現回数１回としてプロファイルに当該［パス:パラメータキー］と当該文字クラス列を追加する。図８は、プロファイル更新の例を説明する図である。図９は、プロファイル更新の例を説明する図である。
【００２９】
その後、学習部１３ａは、学習すべきログが残っていれば、上記のパラメータ抽出処理に戻り、残りのログを学習する。なお、学習終了の条件は、学習用のログ全てを学習したかで判定してもよいし、例えば一定量以上のログを読み込んでも、新たなパスやパラメータキー、文字クラス列が現れず、プロファイルが変化しなくなったことを検知して判定してもよい。
【００３０】
学習部１３ａは、学習終了と判定した場合には、プロファイルを確定する。この際、学習部１３ａは、各パラメータの出現頻度を算出し、各パラメータのうち、出現頻度が所定の閾値以下であるパラメータについては、プロファイルから削除してもよい。例えば、学習部１３ａは、各［パス:パラメータキー］ごとに、文字クラス列の出現割合を算出し、頻度が小さいものをレアケースとしてプロファイルから削除する等の正規化処理を行ってもよい。そして、学習部１３ａは、確定したプロファイルをプロファイル記憶部１４ａに保存する。なお、渡されるパラメータ値の種類が限定的な環境においては、上記のパラメータ値抽象化の処理を省略し、パラメータ値そのものをプロファイルとして保存してもよい。
【００３１】
分析部１３ｂは、分析対象のアクセスログからパラメータを抽出し、該パラメータとプロファイル記憶部１４ａに記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、分析対象のアクセスログにおけるアクセスを攻撃と判定する。
【００３２】
分析部１３ｂは、分析時の処理において、入力部１１を介して入力された分析用ログからパラメータの特徴をプロファイルと比較し、異常なものを攻撃として判定するまでを行う。以下に分析時の処理について詳しく説明する。まず、分析部１３ｂは、入力部１１を介して分析用ログを取得する。かかるログは、学習用ログと同様に、Ｗｅｂサーバへのアクセスログであり、少なくとも「発ＩＰ」、「日時」、「リクエスト」を含む。
【００３３】
そして、分析部１３ｂは、プロファイル記憶部１４ａからプロファイルを読み出す。そして、分析部１３ｂは、入力された分析用ログの先頭からログを１行取り出し、パースして発ＩＰ、日時、リクエストを抽出する。さらに、分析部１３ｂは、リクエストのパス部とクエリストリング部を分割し、クエリストリング部をパースして、パラメータキー、パラメータ値のペアを取得する。パースが終わった分析用ログは、分析済みログ記憶部１４ｂに格納する。そして、分析部１３ｂは、パラメータ値をアルファベット、数字などの文字クラスの列として抽象化する。
【００３４】
続いて、分析部１３ｂは、抽象化された結果である文字クラス列をプロファイルと比較し、類似しないものを攻撃として抽出する。類似度合いの比較方法としては、文字クラス列の完全一致で比較するほか、文字クラス列同士の共通部分の割合や、文字クラス列同士の最長共通部分列（ＬＣＳ：Longest  Common  Subsequence）の長さを文字クラス列長と比較するなどの方法を用いてもよい。
【００３５】
ここで、図１０を用いて、類似度比較処理の例を説明する。図１０は、類似度比較処理の例を説明する図である。図１０に例示するように、分析部１３ｂは、分析対象のアクセスログにおけるパス「/path」とパラメータキー「key1」とに対応する文字クラス「ＡＬ」と、プロファイルにおける［パス:パラメータキー］が「/path:key1」の文字クラス列「ＡＬ」と比較すると、両者文字クラス列が「ＡＬ」で一致することから、ここでは類似度が閾値以上に大きいと判定され、分析対象のアクセスログにおけるアクセスを「非攻撃」と判定する。
【００３６】
一方、分析部１３ｂは、分析対象のアクセスログにおけるパス「/path」とパラメータキー「key2」とに対応する文字クラス「ＨＥＸ」と、プロファイルにおける［パス:パラメータキー］が「/path:key2」の文字クラス列「ＡＬ」と比較すると、両者文字クラス列が「ＨＥＸ」と「ＡＬ」とで一致しないことから、ここでは類似度が閾値より小さいと判定され、分析対象のアクセスログにおけるアクセスを「攻撃」と判定する。
【００３７】
そして、分析部１３ｂは、類似度比較の際、プロファイルに一致する［パス:パラメータキー］が存在しない場合、または文字クラス列の類似度が小さいと判断した場合、処理中ログの［発ＩＰ、日時、パス、パラメータキー］を再学習要否判定情報として再学習要否判定情報記憶部１４ｃに格納する。
【００３８】
その後、分析部１３ｂは、分析すべきログが残っていれば、上記の入力された学習用ログの先頭からログを１行取り出し、パースして発ＩＰ、日時、リクエストを抽出する処理に戻り、上記の処理を繰り返す。
【００３９】
また、分析部１３ｂは、分析すべきログが無くなった場合、分析結果を出力して終了する。分析結果としては、分析対象ログから得た発ＩＰ、日時、リクエスト、パースによって得られたパラメータキーおよびパラメータ値、類似度比較によって得られた判定結果、例えば、「攻撃」として判定したか「非攻撃」と判定したかなどを出力する。なお、バッチではなく１行ごとリアルタイムにログが与えられる場合、１行分析するたびに分析結果を出力してもよい。
【００４０】
再学習要否判定部１３ｃは、分析部１３ｂによる類似度比較の際、プロファイルに一致する［パス:パラメータキー］が存在しない、または類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する。
【００４１】
以下に再学習要否判定時の処理について詳しく説明する。まず、再学習要否判定部１３ｃは、再学習要否判定情報を取得する。具体的には、再学習要否判定部１３ｃは、分析時に更新した再学習要否判定情報（プロファイルに無い、または類似度が閾値未満であるパラメータ値を持つリクエストの［発ＩＰ、日時、パス、パラメータキー］）を再学習要否判定情報記憶部１４ｃから取得する。
【００４２】
そして、再学習要否判定部１３ｃは、多くのユーザから継続的にプロファイルに無い、または類似度が閾値未満であるパラメータ値が送られた場合、攻撃ではなくＷｅｂアプリケーション側の仕様変更が発生したと推定する。そして、再学習要否判定部１３ｃは、多くのユーザから継続的に送られていることを確認するため、再学習要否判定情報を集計する。
【００４３】
具体的には、再学習要否判定部１３ｃは、ある期間の再学習要否判定情報の［パス:パラメータキー］ごとに発ＩＰの種類数を集計する。そして、再学習要否判定部１３ｃは、発ＩＰの種類数が閾値以上であれば再学習が必要と判断する。なお、継続性を判断するため、例えば、期間内で連続する複数のリクエストの時間間隔が閾値未満であるものだけを集計の対象とする処理を加えてもよい。そして、再学習要否判定部１３ｃは、再学習が必要と判断した場合、学習部１３ａに当該［パス:パラメータキー］の再学習を指示する。なお、再学習要否判定情報は再学習要否判断処理が終わったあとは破棄してもよい。
【００４４】
ここで、再学習要否判定部１３ｃから再学習の指示を受けた学習部１３ａの再学習処理を説明する。学習部１３ａは、再学習要否判定部１３ｃから再学習の指示を受けると、再学習を行い、プロファイルを更新する。再学習の処理は、以下の（１）〜（３）を除き、学習時の処理と同一であるため、説明を省略する。（１）学習用ログの取得は、入力部１１から学習用ログを取得するのではなく、分析済ログ記憶部１４ｂの分析済みログを取得する。（２）プロファイル初期化は、初期化ではなく、プロファイル記憶部１４ａから既存のプロファイルを取得する。なお、その際、既存プロファイルに追加学習ではなく、ゼロから学習する場合には、再学習対象の［パス・パラメータキー］についてのみ初期化（出現回数を０にする）を行ってもよい。（３）パース後、再学習対象の［パス・パラメータキー］についてのみ処理を行う。なお、再学習要否判定処理は分析終了の都度行ってもよいし、分析数回の分をまとめて実施してもよい。また、分析済みログは再学習要否判定後は不要となるため、自動的に削除してもよい。これにより、記憶部１４の容量を削減することができる。
【００４５】
［ログ分析装置の処理の一例］
次に、図１１〜図１３を用いて、ログ分析装置１０における処理の流れを説明する。図１１は、第一の実施の形態に係るログ分析装置における学習処理の流れを示すフローチャートである。図１２は、第一の実施の形態に係るログ分析装置における分析処理の流れを示すフローチャートである。図１３は、第一の実施の形態に係るログ分析装置における再学習要否判定処理の流れを示すフローチャートである。
【００４６】
まず、図１１を用いて、ログ分析装置１０における学習処理の流れを説明する。図１１に示すように、ログ分析装置１０の学習部１３ａは、入力部１１を介して学習用ログを取得する（ステップＳ１０１）。そして、学習部１３ａは、プロファイルを空のデータで初期化する（ステップＳ１０２）。
【００４７】
続いて、学習部１３ａは、学習ログから各種パラメータを抽出する（ステップＳ１０３）。例えば、学習部１３ａは、入力された学習用ログの先頭からログを１行取り出し、パースして「発ＩＰ」、「日時」、「リクエスト」を抽出する。さらに、学習部１３ａは、「リクエスト」のパス部（図４における「？」より前）とクエリストリング部（図４における「？」より後）を分割し、クエリストリング部をパースして、パラメータキー、パラメータ値のペアを取得する。
【００４８】
そして、学習部１３ａは、アクセスログからパラメータを抽出し、該抽出したパラメータを抽象化する（ステップＳ１０４）。例えば、学習部１３ａは、パラメータ値をアルファベット、数字などの文字クラス列として抽象化する。続いて、学習部１３ａは、抽象化されたパラメータの出現頻度を学習し、プロファイルを更新する（ステップＳ１０５）。例えば、学習部１３ａは、上記の抽象化処理で得られた文字クラス列がプロファイルに存在する場合には、出現回数に１を加算する。
【００４９】
そして、学習部１３ａは、学習処理の終了条件を満たしたか否かを判定する（ステップＳ１０６）。この結果、学習部１３ａは、終了条件を満たしていないと判定した場合には（ステップＳ１０６否定）、ステップＳ１０３の処理に戻る。つまり、学習部１３ａは、例えば、学習すべきアクセスログが残っていれば、上記のパラメータ抽出処理に戻り、残りのログを学習する。なお、学習終了の条件は、学習用のログ全てを学習したかで判定してもよいし、例えば一定量以上のログを読み込んでも、新たなパスやパラメータキー、文字クラス列が現れず、プロファイルが変化しなくなったことを検知して判定してもよい。
【００５０】
また、学習部１３ａは、終了条件を満たしたと判定した場合には（ステップＳ１０６肯定）、プロファイルを確定する（ステップＳ１０７）。この際、学習部１３ａは、各パラメータの出現頻度を算出し、各パラメータのうち、出現頻度が所定の閾値以下であるパラメータについては、プロファイルから削除してもよい。例えば、学習部１３ａは、各［パス:パラメータキー］ごとに、文字クラス列の出現割合を算出し、頻度が小さいものをレアケースとしてプロファイルから削除する等の正規化処理を行ってもよい。そして、学習部１３ａは、確定したプロファイルをプロファイル記憶部１４ａに保存する（ステップＳ１０８）。
【００５１】
次に、図１２を用いて、ログ分析装置における分析処理の流れを説明する。図１２に示すように、分析部１３ｂは、入力部１１を介して分析用ログを取得する（ステップＳ２０１）。かかるログは、学習用ログと同様に、Ｗｅｂサーバへのアクセスログであり、少なくとも「発ＩＰ」、「日時」、「リクエスト」を含む。
【００５２】
そして、分析部１３ｂは、プロファイル記憶部１４ａからプロファイルを取得する（ステップＳ２０２）。そして、分析部１３ｂは、分析用ログから各種パラメータを抽出する（ステップＳ２０３）。パラメータ抽出が終わった分析用ログは分析済みログ記憶部１４ｂに格納する。
【００５３】
続いて、分析部１３ｂは、パラメータ値をアルファベット、数字などの文字クラスの列として抽象化する（ステップＳ２０４）。続いて、分析部１３ｂは、抽象化された結果である文字クラス列をプロファイルと比較する（ステップＳ２０５）。類似度合いの比較方法としては、文字クラス列の完全一致で比較するほか、文字クラス列同士の共通部分の割合や、文字クラス列同士の最長共通部分列（ＬＣＳ：Longest  Common  Subsequence）の長さを文字クラス列長と比較するなどの方法を用いてもよい。
【００５４】
そして、分析部１３ｂは、類似度比較の際、プロファイルに一致する［パス:パラメータキー］が存在しない場合、または文字クラス列の類似度が小さいと判断した場合、処理中ログの［発ＩＰ、日時、パス、パラメータキー］を再学習要否判定情報として再学習要否判定情報記憶部１４ｃに記憶された情報を更新する（ステップＳ２０６）。
【００５５】
その後、分析部１３ｂは、分析処理の終了条件を満たしたか否かを判定する（ステップＳ２０７）。この結果、分析部１３ｂは、終了条件を満たしていないと判定した場合には（ステップＳ２０７否定）、ステップＳ２０３の処理に戻る。また、分析部１３ｂは、終了条件を満たしたと判定した場合には（ステップＳ２０７肯定）、類似度比較によって得られた判定結果、例えば、「攻撃」として判定したか「非攻撃」と判定したかなどを出力する（ステップＳ２０８）。
【００５６】
次に、図１３を用いて、ログ分析装置における再学習要否判定処理の流れを説明する。図１３に示すように、再学習要否判定部１３ｃは、再学習要否判定情報を取得する（ステップＳ３０１）。具体的には、再学習要否判定部１３ｃは、分析時に更新した再学習要否判定情報（プロファイルに無い、または類似度が閾値未満であるパラメータ値を持つリクエストの［発ＩＰ、日時、パス、パラメータキー］）を再学習要否判定情報記憶部１４ｃから取得する。
【００５７】
そして、再学習要否判定部１３ｃは、多くのユーザから継続的に送られていることを確認するため、再学習要否判定情報を集計する集計処理を行う（ステップＳ３０２）。具体的には、再学習要否判定部１３ｃは、ある期間の再学習要否判定情報の［パス:パラメータキー］ごとに発ＩＰの種類数を集計する。
【００５８】
そして、再学習要否判定部１３ｃは、発ＩＰの種類数が閾値以上であるか否かを判定し、発ＩＰの種類数が閾値以上であれば再学習が必要と判断する（ステップＳ３０３）。この結果、再学習要否判定部１３ｃは、発ＩＰの種類数が閾値以上でない場合には、再学習が必要でないと判断し（ステップＳ３０３否定）、そのまま処理を終了する。また、再学習要否判定部１３ｃは、発ＩＰの種類数が閾値以上である場合には、再学習が必要であると判断し（ステップＳ３０３肯定）、学習部１３ａに再学習を指示する（ステップＳ３０４）。
【００５９】
［第一の実施の形態の効果］
このように、第一の実施の形態に係るログ分析装置１０は、ユーザ端末からサーバへのリクエストに関するアクセスログからパラメータを抽出して、該パラメータの出現頻度を学習し、学習結果をプロファイルとしてプロファイル記憶部１４ａに格納する。そして、ログ分析装置１０は、分析対象のアクセスログからパラメータを抽出し、該パラメータとプロファイル記憶部１４ａに記憶されたプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、分析対象のアクセスログにおけるアクセスを攻撃と判定する。続いて、ログ分析装置１０は、「パス：パラメータキー」がプロファイルに存在しない、または類似度が閾値未満である分析対象のアクセスログのうち、パラメータごとにリクエスト元のユーザ端末の種類数を集計し、該ユーザ端末の種類数が閾値以上のパラメータがある場合には、該パラメータの再学習を行うと判定する。このため、第一の実施の形態に係るログ分析装置１０では、運用に掛かる手間を低減し、高精度で未知の攻撃検知を行うことが可能である。
【００６０】
つまり、第一の実施の形態に係るログ分析装置１０は、再学習が可能なため、Ｗｅｂアプリケーションの仕様変更に追随することが可能である。さらに、第一の実施の形態に係るログ分析装置１０は、再学習要否判定機能を持つため、オペレータが再学習実施の判断を行う必要が無く、運用を自動化することが可能である。このため、運用に掛かる手間を低減し、高精度で未知の攻撃検知を行うことが可能である。また、第一の実施の形態に係るログ分析装置１０は、プロファイルとして統計情報ではなく、実際の出現回数を保持しているため、再学習の処理が加算処理のみで容易に行うことが可能である。
【００６１】
［第二の実施の形態］
上述した第一の実施の形態では、プロファイルとして、「パス：パラメータキー」に対応付けて「文字クラス列」と「出現回数」とを記憶する場合を説明したが、「パス：パラメータキー」の「パス」を抽象化するようにしてもよい。
【００６２】
Ｗｅｂアプリケーションによっては、パスが動的に生成されるため、静的なパスを前提として分析を行うと、正しく分析を行うことが出来ない場合がある。そこで、第二の実施の形態では、パスの抽象化を行うことで、動的に生成されるパスがあっても正しく分析できるようにする。なお、第一の実施の形態と同様の構成や処理については説明を省略する。
【００６３】
まず、図１４を用いて、第二の実施の形態に係るログ分析装置１０Ａの構成を説明する。図１４は、第二の実施の形態に係るログ分析装置の概要を示す構成図である。図１４に示すように、第二の実施の形態に係るログ分析装置１０Ａは、図１に示したログ分析装置１０と比較して、パス抽象化情報記憶部１４ｄを有している点が異なる。
【００６４】
パス抽象化情報記憶部１４ｄは、パス抽象化情報として、抽象化対象パスの正規表現と抽象化後のパスの設定を記憶する。パス抽象化情報記憶部１４ｄは、例えば、「/dynamic/path/foo」のあと、数字が３桁からなるパスについて、数字部分を＿ＮＵＭに抽象化する場合、以下の設定を記憶する。
抽象化対象正規表現：“/dynamic/path/foo[0-9]｛3｝”
抽象化後：“/dynamic/path/foo_NUM”
【００６５】
学習部１３ａは、学習用ログを全て処理し、プロファイルの更新が終わった後、抽象化対象となるパスのレコードをプロファイルから抽出する。具体的には、学習部１３ａは、パス部が抽象化対象正規表現にマッチするレコードを抽出する。
【００６６】
そして、学習部１３ａは、抽出されたレコードのパスを抽象化するパス抽象化処理を行う。ここで、図１５を用いて、パス抽象化処理の例を説明する。図１５は、パス抽象化処理の例を説明する図である。図１５に例示するように、学習部１３ａは、抽象化対象のパスについて、プロファイルの［パス:パラメータキー］の情報を［抽象化後のパス:パラメータキー］にマージする。そして、学習部１３ａは、マージした［パス:パラメータキー］の出現回数については、抽象化前の情報を加算して更新する。学習部１３ａは、抽象化によって同一の［パス:パラメータキー］となったものは集約する。なお、学習部１３ａは、再学習時にも同様にパスの抽象化を行う。
【００６７】
分析部１３ｂは、パラメータ抽出処理において、パラメータ抽出後、パス抽象化情報を参照して、抽象化対象正規表現にマッチするパスを抽象化する。
【００６８】
次に、図１６用いて、第二の実施の形態に係るログ分析装置１０Ａにおける処理の流れを説明する。図１６は、第二の実施の形態に係るログ分析装置における学習処理の流れを示すフローチャートである。
【００６９】
図１６に示すように、ログ分析装置１０Ａの学習部１３ａは、入力部１１を介して学習用ログを取得し（ステップＳ４０１）、プロファイルを空のデータで初期化する（ステップＳ４０２）。続いて、学習部１３ａは、学習ログから各種パラメータを抽出する（ステップＳ４０３）。そして、学習部１３ａは、アクセスログからパラメータを抽出し、該抽出したパラメータを抽象化する（ステップＳ４０４）。続いて、学習部１３ａは、抽象化されたパラメータの出現頻度を学習し、プロファイルを更新する（ステップＳ４０５）。
【００７０】
そして、学習部１３ａは、学習処理の終了条件を満たしたか否かを判定する（ステップＳ４０６）。この結果、学習部１３ａは、終了条件を満たしていないと判定した場合には（ステップＳ４０６否定）、ステップＳ４０３の処理に戻る。また、学習部１３ａは、終了条件を満たしたと判定した場合には（ステップＳ４０６肯定）、パス抽象化対象となるパスのレコードをプロファイルから抽出する（ステップＳ４０７）。
【００７１】
そして、学習部１３ａは、抽出されたレコードのパスを抽象化するパス抽象化処理を行う（ステップＳ４０８）。その後、学習部１３ａは、プロファイルを確定し（ステップＳ４０９）、確定したプロファイルをプロファイル記憶部１４ａに保存する（ステップＳ４１０）。
【００７２】
［第二の実施の形態の効果］
このように、第二の実施の形態に係るログ分析装置１０Ａは、パスの抽象化を行うので、Ｗｅｂアプリケーションが動的に生成されるパスを持つ場合であっても、正確に分析を行うことができる。
【００７３】
［第三の実施の形態］
上述した第一の実施の形態では、分析対象のアクセスログからパラメータを抽出し、該パラメータとプロファイルにおけるパラメータとを比較して類似度を求め、該類似度が閾値未満である場合には、分析対象のアクセスログにおけるアクセスを攻撃と判定する場合を説明した。このような攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成するようにしてよい。例えば、分析時において攻撃と判断されたパラメータから、攻撃パターンを生成し、ＷＡＦ等のシグネチャとして与えることで、類似の攻撃をブロックできるようにする。
【００７４】
そこで、以下の第三の実施の形態では、攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成する場合について説明する。なお、第一の実施の形態と同様の構成や処理については説明を省略する。
【００７５】
図１７を用いて、第三の実施の形態に係るログ分析装置１０Ｂの構成を説明する。図１７は、第三の実施の形態に係るログ分析装置の概要を示す構成図である。図１７に示すように、第三の実施の形態に係るログ分析装置１０Ｂは、図１に示したログ分析装置１０と比較して、攻撃パターン生成部１３ｄを有している点が異なる。
【００７６】
攻撃パターン生成部１３ｄは、攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成する。例えば、攻撃パターン生成部１３ｄは、分析部１３ｂから分析結果を取得し、攻撃と判定されたパラメータを取得する。そして、攻撃パターン生成部１３ｄは、パラメータから共通部分を抽出する。
【００７７】
例えば、攻撃パターン生成部１３ｄは、（ｉ）パラメータ集合をＰ＝｛ｐ１，ｐ２，．．．，ｐｎ｝とし、最初の要素ｐ１とＰのｐ１以外の要素との共通部分を求め、最も共通部分が長くなる要素（ｐｉとする）とｐ１の共通部分をＣ１とする。そして、攻撃パターン生成部１３ｄは、Ｃ１の長さが閾値以上であれば、Ｃ１を共通部分として保持し、Ｐからｐ１とｐｉを削除する。また、攻撃パターン生成部１３ｄは、Ｃ１の長さが閾値未満であればｐ１は他のどれとも共通部分を持たないと判断し、Ｃ１は破棄してＰからｐ１のみを削除する。
【００７８】
そして、攻撃パターン生成部１３ｄは、上記（ｉ）の手順で更新したＰについて、手順（ｉ）を繰り返し、共通部分Ｃ１，Ｃ２，．．．を抽出する。なお、共通部分抽出は他の手法によってもよい。例えば、２つの文字列の類似度を編集距離で計り、類似度に基づいてパラメータ集合をクラスタリングし、各々のクラスタから共通部分を抽出するなどである。
【００７９】
そして、攻撃パターン生成部１３ｄは、上記の手順で抽出した共通部分Ｃ１，Ｃ２，．．．から共通部分以外を“＊”で置き換えた正規表現を作り、攻撃パターンとする。例えば、攻撃パターン生成部１３ｄは、パラメータ値“ａｂｃ♯♯ＡＴＴＡＣＫ＄＄ｅｆ”と”１２♯♯ＡＴＴＡＣＫ＄＄ｘｙｚ”、その共通部分”♯♯ＡＴＴＡＣＫ＄＄”からは、”＊♯♯ＡＴＴＡＣＫ＄＄＊”という正規表現を生成し、攻撃パターンとし、生成した攻撃パターンを出力する。
【００８０】
次に、図１８用いて、第三の実施の形態に係るログ分析装置１０Ｂにおける処理の流れを説明する。図１８は、第三の実施の形態に係るログ分析装置における攻撃パターン生成処理の流れを示すフローチャートである。
【００８１】
図１８に示すように、ログ分析装置１０Ｂの攻撃パターン生成部１３ｄは、分析部１３ｂから分析結果を取得する（ステップＳ５０１）。そして、攻撃パターン生成部１３ｄは、パラメータから共通部分を抽出する（ステップＳ５０２）。
【００８２】
そして、攻撃パターン生成部１３ｄは、攻撃パターンを生成する（ステップＳ５０３）。例えば、攻撃パターン生成部１３ｄは、共通部分Ｃ１，Ｃ２，．．．から共通部分以外を“＊”で置き換えた正規表現を作り、攻撃パターンとする。その後、攻撃パターン生成部１３ｄは、生成した攻撃パターンを出力する（ステップＳ５０４）。
【００８３】
［第三の実施の形態の効果］
このように、第三の実施の形態に係るログ分析装置１０Ｂは、攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成するので、生成した攻撃パターンをＷＡＦ等のシグネチャとして与えることで、類似の攻撃をブロックすることが可能である。
【００８４】
［第四の実施の形態］
上述した第三の実施の形態では、攻撃と判定されたアクセスのパラメータにおける共通部分を抽出し、該共通部分を基に攻撃パターンを生成する場合を説明した。これに対して、既に生成された攻撃パターンと類似の攻撃パターンが重複して生成されることを防ぐために、攻撃と判定されたアクセスのパラメータが、既に生成された攻撃パターンとマッチするか否かを判定し、マッチすると判定した場合には、攻撃と判定されたアクセスのパラメータを削除するようにしてもよい。
【００８５】
そこで、以下の第四の実施の形態では、攻撃と判定されたアクセスのパラメータが、既に生成された攻撃パターンとマッチするか否かを判定し、マッチすると判定した場合には、攻撃と判定されたアクセスのパラメータを削除する場合について説明する。なお、第三の実施の形態と同様の構成や処理については説明を省略する。
【００８６】
図１９を用いて、第四の実施の形態に係るログ分析装置１０Ｃの構成を説明する。図１９は、第四の実施の形態に係るログ分析装置の概要を示す構成図である。図１９に示すように、第四の実施の形態に係るログ分析装置１０Ｃは、図１７に示したログ分析装置１０Ｂと比較して、攻撃パターンマッチテスト部１３ｅを有している点が異なる。
【００８７】
攻撃パターンマッチテスト部１３ｅは、分析部１３ｂによって攻撃と判定されたアクセスのパラメータが、既に生成された攻撃パターンとマッチするか否かを判定し、マッチすると判定した場合には、攻撃と判定されたアクセスのパラメータを削除する。
【００８８】
つまり、攻撃パターンマッチテスト部１３ｅは、攻撃パターン生成部１３ｄによって既に生成されたものと類似の攻撃パターンが生成されることを防ぐため、分析部１３ｂによって攻撃と判定された分析結果のパラメータ値と既に生成された攻撃パターンとのマッチテストを行い、マッチしなかったもののみを攻撃パターン生成部１３ｄに渡して攻撃パターン生成処理させる。
【００８９】
［第四の実施の形態の効果］
このように、第四の実施の形態に係るログ分析装置１０Ｃは、攻撃と判定されたアクセスのパラメータが、既に生成された攻撃パターンとマッチするか否かを判定し、マッチすると判定した場合には、攻撃と判定されたアクセスのパラメータを削除するので、類似の攻撃パターンが重複して生成されることを防ぐことが可能である。
【００９０】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、学習部１３ａと分析部１３ｂとを統合してもよい。
【００９１】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００９２】
［プログラム］
また、上記実施形態において説明したログ分析装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るログ分析装置１０が実行する処理をコンピュータが実行可能な言語で記述したログ分析プログラムを作成することもできる。この場合、コンピュータがログ分析プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるログ分析プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたログ分析プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【００９３】
図２０は、ログ分析プログラムを実行するコンピュータ１０００を示す図である。図２０に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００９４】
メモリ１０１０は、図２０に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図２０に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図２０に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図２０に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図２０に例示するように、例えばディスプレイ１１３０に接続される。
【００９５】
ここで、図２０に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記のログ分析プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００９６】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００９７】
なお、ログ分析プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、ログ分析プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００９８】
１０、１０Ａ、１０Ｂ、１０Ｃ  ログ分析装置
１１  入力部
１２  出力部
１３  制御部
１３ａ  学習部
１３ｂ  分析部
１３ｃ  再学習要否判定部
１３ｄ  攻撃パターン生成部
１３ｅ  攻撃パターンマッチテスト部
１４  記憶部
１４ａ  プロファイル記憶部
１４ｂ  分析済ログ記憶部
１４ｃ  再学習要否判定情報記憶部
【図１】
0006680945.tif 000002
【図２】
0006680945.tif 000003
【図３】
0006680945.tif 000004
【図４】
0006680945.tif 000005
【図５】
0006680945.tif 000006
【図６】
0006680945.tif 000007
【図７】
0006680945.tif 000008
【図８】
0006680945.tif 000009
【図９】
0006680945.tif 000010
【図１０】
0006680945.tif 000011
【図１１】
0006680945.tif 000012
【図１２】
0006680945.tif 000013
【図１３】
0006680945.tif 000014
【図１４】
0006680945.tif 000015
【図１５】
0006680945.tif 000016
【図１６】
0006680945.tif 000017
【図１７】
0006680945.tif 000018
【図１８】
0006680945.tif 000019
【図１９】
0006680945.tif 000020
【図２０】
0006680945.tif 000021