(57)【特許請求の範囲】
【請求項１】
情報システムに対する攻撃が行われる過程において前記情報システムで観測されるイベントと、前記イベントが観測される前の攻撃の進展段階であるイベント前段階と、前記イベントが観測された後の攻撃の進展段階であるイベント後段階とが記述されるイベント段階情報を、複数のイベントに対して記憶するイベント段階情報記憶部と、
前記情報システムで観測された観測イベントを通知する観測イベント通知情報を受信する観測イベント通知情報受信部と、
前記観測イベント通知情報で通知されている観測イベントが記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベント前段階に合致するイベント後段階または検索したイベント段階情報のイベント後段階に合致するイベント前段階が記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベントが観測できない観測不可イベントである場合、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成するイベント列生成部と
を備える攻撃検知装置。
【請求項２】
前記イベント列生成部は、前記観測不可イベントのイベント前段階に合致するイベント後段階または前記観測不可イベントのイベント後段階に合致するイベント前段階が記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベントが観測されていた場合、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成する請求項１記載の攻撃検知装置。
【請求項３】
複数のイベントの連鎖確率を記憶する連鎖確率記憶部を備え、
前記イベント列生成部は、前記連鎖確率記憶部に記憶された前記連鎖確率に基づいてイベント列の発生確率を算出し、この発生確率が閾値以上である場合に、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成する請求項１記載の攻撃検知装置。
【請求項４】
イベントの検知漏れ率を記憶する検知漏れ率記憶部を備え、
前記イベント列生成部は、前記検知漏れ率記憶部に記憶された前記検知漏れ率が閾値を越えた場合に、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成する請求項１記載の攻撃検知装置。
【請求項５】
前記イベント段階情報記憶部が記憶する前記イベント段階情報に前記イベント前段階または前記イベント後段階が複数記述され、
前記イベント列生成部は、前記イベント段階情報に記述された複数の前記イベント前段階または前記イベント後段階の観測可否の判定結果に基づき、イベント列を生成する請求項１から請求項４のいずれか一項に記載の攻撃検知装置。
【請求項６】
前記観測イベントのイベント後段階が合致するイベント前段階が記述されているイベント段階情報を記憶する観測期待イベント記憶部を備え、
前記イベント列生成部は、観測イベントが前記イベント前段階に記述されているイベント段階情報を前記観測期待イベント記憶部から検索してイベント列を生成する請求項１から請求項４のいずれか一項に記載の攻撃検知装置。
【請求項７】
情報システムに対する攻撃を検知する攻撃検知装置の攻撃検知方法であって、
イベント段階情報記憶部が、前記情報システムに対する攻撃が行われる過程において前記情報システムで観測されるイベントと、前記イベントが観測される前の攻撃の進展段階であるイベント前段階と、前記イベントが観測された後の攻撃の進展段階であるイベント後段階とが記述されるイベント段階情報を、複数のイベントに対して記憶するイベント段階情報記憶ステップと、
観測イベント通知情報受信部が、前記情報システムで観測された観測イベントを通知する観測イベント通知情報を受信するステップと、
イベント列生成部が、前記観測イベント通知情報で通知されている観測イベントが記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベント前段階に合致するイベント後段階または検索したイベント段階情報のイベント後段階に合致するイベント前段階が記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベントが観測できない観測不可イベントである場合、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成するイベント列生成ステップと
を備える攻撃検知方法。
【請求項８】
情報システムに対する攻撃が行われる過程において前記情報システムで観測されるイベントと、前記イベントが観測される前の攻撃の進展段階であるイベント前段階と、前記イベントが観測された後の攻撃の進展段階であるイベント後段階とが記述されるイベント段階情報を、複数のイベントに対して記憶するコンピュータに、
前記情報システムで観測された観測イベントを通知する観測イベント通知情報を受信する観測イベント通知情報受信処理と、
前記観測イベント通知情報で通知されている観測イベントが記述されているイベント段階情報を検索し、検索したイベント段階情報のイベント前段階に合致するイベント後段階または検索したイベント段階情報のイベント後段階に合致するイベント前段階が記述されているイベント段階情報を検索し、検索したイベント段階情報のイベントが観測できない観測不可イベントである場合、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成するイベント列生成処理とを実行させる攻撃検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して、複数の段階に分かれて行なわれる攻撃を検知する攻撃検知装置に関する。
【背景技術】
【０００２】
多段攻撃とは、攻撃者が一つの目的のために、複数の段階に分かれた攻撃を行なうことを指す。従来、この攻撃を検知するために、例えば、ＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ）アラートのような各イベントに対し、イベントが成立するための必要条件（ここではイベントの事前条件と呼ぶ）、及びイベントによる状態変化（ここではイベントの結果と呼ぶ）を定義し、イベントの結果が他のイベントの事前条件となるようなイベントをつなげたイベント列が生成可能かどうかで攻撃か否かを判定する手法がある。（例えば、非特許文献１）。【０００３】
具体的には、非特許文献１の手法では、あらかじめ検知されるイベントごとの依存関係を定義する。例えば、「ポートスキャンのイベントの後に実際の攻撃のイベントがある。」のように依存関係を定義する。この依存関係の定義の中で、発生し得る各イベントに対し、事前条件と結果（文献中ではprerequisite、consequence）をさらに定義し、あるイベントＢの事前条件を満たす結果を別のイベントＡが提供する場合、ＢはＡに依存するとみなす。このようなイベントごとの依存関係を利用して、観測されたイベント間を依存関係に従ってグラフ化することにより、多段攻撃が発生しているかどうかの判定が可能となる。【０００４】
また、イベントの検知に漏れがある場合であっても、イベントの依存関係を判定する手法が既に提案されている（例えば、特許文献１）。この手法は、あらかじめイベントの管理対象間の関係を定め、それぞれの管理対象のイベントの依存性を判定するものである。具体的には、第１の管理対象と、この第１の管理対象で発生した第１のイベントに依存して第２のイベントを発生する第２の管理対象と、この第２の管理対象で発生した前記第２のイベントに依存して第３のイベントを発生する第３の管理対象があるとき、第１のイベントの発生時刻と第３のイベントの発生時刻との差分を求め、この差分の時間が一定の時間内であれば、第２イベントの検知が漏れていたとしても、第１、第３のイベント間に依存性があると判定することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１２８８１１号公報
【非特許文献】
【０００６】
【非特許文献１】Ｐｅｎｇ  Ｎｉｎｇ，  Ｙｕｎ  Ｃｕｉ，  Ｄｏｕｇｌａｓ  Ｓ．  Ｒｅｅｖｅｓ，  “Ｃｏｎｓｔｒｕｃｔｉｎｇ  Ａｔｔａｃｋ  Ｓｃｅｎａｒｉｏｓ  ｔｈｒｏｕｇｈ Ｃｏｒｒｅｌａｔｉｏｎ  ｏｆ  Ｉｎｔｒｕｓｉｏｎ  Ａｌｅｒｔｓ”，ＣＣＳ’０２，Ｎｏｖｅｍｂｅｒ，１８―２２，２００２，Ｗａｓｈｉｎｇｔｏｎ，ＤＣ，ＵＳＡ．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
イベントの中には、ログに記載されない、またはコストの関係で監視対象に入らないなどの理由で、システムが観測することができないイベントや、検知漏れによってシステムが観測できなかったイベントが含まれる可能性がある。このとき、非特許文献１の手法では、本来観測可能であればイベント列として検知できるはずの攻撃がイベント列としてみなされず、多段攻撃検知が遅れるという課題があった。【０００８】
また、特許文献１の手法では、イベントの検知に漏れがある場合、観測されたイベント間の依存関係を判定することはできるが、観測されなかったイベント（前記第２のイベント）との依存関係を推定することができないという課題があった。
また、この特許文献１の手法は、イベントの検知に漏れがある場合、依存関係の判定を行なうために、各イベントの管理対象の依存関係をプロセス割当テーブルによって保持することが開示されている。このため、全てのイベントの管理対象の依存関係を保持する必要があり、管理するイベントの数の増大に従ってイベントの管理対象の依存関係が爆発的に増加してしまうという課題があった。【０００９】
本発明は、上記のような課題を解決するためになされたもので、観測することのできないイベントの推定を行ない、イベント列を生成することで、観測されなかったイベントを含むイベントの依存関係を判定することを目的とする。
また、本発明は、イベントに事前条件と結果を定義することにより、発生したイベントと依存関係のあるイベントを動的に調べ、全てのイベントの管理対象の依存関係を保持することなく、システムが検知することのできないイベントの推定を行なうことにより、管理するイベントの数の増大に従ってイベントの管理対象の依存関係が爆発的に増加することを防止することを目的とする。
【課題を解決するための手段】
【００１０】
上記で述べた課題を解決するため、本発明の攻撃検知装置は、情報システムに対する攻撃が行われる過程において前記情報システムで観測されるイベントと、前記イベントが観測される前の攻撃の進展段階であるイベント前段階と、前記イベントが観測された後の攻撃の進展段階であるイベント後段階とが記述されるイベント段階情報を、複数のイベントに対して記憶するイベント段階情報記憶部と、前記情報システムで観測された観測イベントを通知する観測イベント通知情報を受信する観測イベント通知情報受信部と、前記観測イベント通知情報で通知されている観測イベントが記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベント前段階に合致するイベント後段階または検索したイベント段階情報のイベント後段階に合致するイベント前段階が記述されているイベント段階情報を前記イベント段階情報記憶部から検索し、検索したイベント段階情報のイベントが観測できない観測不可イベントである場合、前記観測不可イベントが観測されたとみなして前記観測イベントと前記観測不可イベントとを依存関係で接続してイベント列を生成するイベント列生成部とを備えることとしたものである。
【発明の効果】
【００１１】
本発明によれば、各イベントに対してシステムで観測することができるかどうかのパラメータを定義し、システムがイベントを観測することができない場合、該当イベントは観測したものとみなし、該当イベントとの依存関係を動的に推定してイベント列を生成することにより、システムが観測することができないイベントを含む場合であってもイベント列を生成することができるので、多段攻撃の検知漏れを防ぐことができるという効果がある。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る攻撃検知装置の一構成例を示す構成図である。
【図２】実施の形態１に係る攻撃検知装置の全体処理の流れを示すフローチャートである。
【図３】攻撃イベント定義情報の例を示す図である。
【図４】イベントデータベース５に格納された攻撃イベント定義情報９の一例である。
【図５】実施の形態１に係るイベント列生成部４の一構成例を示す構成図である。
【図６】実施の形態１に係る判定部２５の処理の流れを示すフローチャートである。
【図７】実施の形態１に係る推定部２６の処理の流れを示すフローチャートである。
【図８】実施の形態１に係る生成部２８の処理の流れを示すフローチャートである。
【図９】実施の形態２に係る攻撃検知装置のイベント列生成部の一構成例を示す構成図である。
【図１０】実施の形態２に係る推定部２６の処理の流れを示すフローチャートである。
【図１１】実施の形態３に係るイベント列生成部４の一構成例を示す構成図である。
【図１２】実施の形態３に係る推定部２６の処理の流れを示すフローチャートである。
【図１３】実施の形態３に係る生成部２８の処理の流れを示すフローチャートである。
【図１４】実施の形態４に係るイベント列生成部４の一構成例を示す構成図である。
【図１５】実施の形態４に係る推定部２６の処理の流れを示すフローチャートである。
【図１６】実施の形態５に係るイベント列生成部４の一構成例を示す構成図である。
【図１７】実施の形態５に係る判定結果テーブル３３の格納例を示す図である。
【図１８】実施の形態５に係る判定部２５の処理の流れを示すフローチャートである。
【図１９】実施の形態５に係る終了判定部３２の処理の流れを示すフローチャートである。
【図２０】実施の形態５に係る推定部２６の処理の流れを示すフローチャートである。
【図２１】実施の形態５に係る生成部２８の処理の流れを示すフローチャートである。
【図２２】実施の形態６に係る攻撃検知装置１の一構成例を示す構成図である。
【図２３】実施の形態６に係るイベント列生成部４の一構成例を示す構成図である。
【図２４】実施の形態６に係る攻撃検知装置の処理の流れを示すフローチャートである。
【図２５】実施の形態６に係る判定部２５の処理の流れを示すフローチャートである。
【図２６】実施の形態６に係る推定部２６の処理の流れを示すフローチャートである。
【図２７】実施の形態６に係る生成部２８の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係る攻撃検知装置の一構成例を示す構成図である。
図１において、攻撃検知装置１は、アラート受信部２、アラート解釈部３、イベント列生成部４、イベントデータベース５、イベント検索部６、イベント列記憶部７、検知状態管理部８により構成される。
【００１４】
攻撃検知装置１は、外部から得られた検知アラートに基づき、既に観測された攻撃イベントとの依存関係を調べ、イベント列を生成することにより、多段攻撃を検知する。
【００１５】
アラート受信部２は、外部から検知したアラートを受信し、アラート解釈部３にアラートを出力する。アラート解釈部３は、アラート受信部２により受信したアラートから、予め定義された攻撃イベント定義情報（後述）に対応する情報を抽出し、攻撃イベントとして解釈して観測イベント通知情報（後述）を生成し、この観測イベント通知情報（解釈結果の攻撃イベント）をイベント列生成部４に出力する。なお、アラート受信部２とアラート解釈部３は、観測イベント通知情報受信部の一構成例である。
【００１６】
イベント列生成部４は、アラート解釈部３より入力された攻撃イベントを、観測済みの攻撃イベントのイベント列に追加して新たなイベント列を生成する。また、生成した新たなイベント列をイベント列記憶部７に登録するとともに、イベント列生成部４内に保持している既存のイベント列を新たなイベント列に更新する。
【００１７】
イベントデータベース５は、予め定義された攻撃イベント定義情報（後述）を格納する。イベントデータベース５は、イベント段階情報記憶部の一例であり、攻撃イベント定義情報は、イベント段階情報の一例である。
【００１８】
イベント検索部６は、アラート解釈部３、及びイベント列生成部４からの検索要求に従ってイベントデータベース５を検索し、検索結果をそれぞれアラート解釈部３、及びイベント列生成部４に出力する。
【００１９】
イベント列記憶部７は、イベント列生成部４によって生成されたイベント列を記憶する。
【００２０】
検知状態管理部８は、イベント列生成部４によるイベント列記憶部７の登録・更新処理の完了通知を入力として、イベント列記憶部７の状態から多段攻撃が行なわれているか否かを判定し、多段攻撃が行なわれていた場合、外部に通知する。
【００２１】
次に、実施の形態１に係る攻撃検知装置の動作について、図２を参照して説明する。
図２は、実施の形態１に係る攻撃検知装置の処理の流れを示すフローチャートである。
【００２２】
まず、ステップＳ１０１において、アラート受信部２は、外部から検知アラートを受信する。検知アラートは、ネットワークに接続された各種機器から送信される警告メッセージであり、例えば、ＩＤＳアラートである。検知アラートには、送信先のＩＰアドレスやポート番号、発信元のＩＰアドレスやポート番号、ＴＣＰやＵＤＰなどのプロトコル、検知した攻撃イベント（ログイン、ポートスキャンなど）の情報が含まれている。アラート受信部２は、検知アラートを受信するとアラート解釈部３にアラート情報を入力する。
【００２３】
次に、ステップＳ１０２において、アラート解釈部３が、アラートに対応する攻撃イベント定義情報の検索をイベント検索部６に要求する。アラート解釈部３は、入力されたアラート情報に含まれる攻撃イベント名を含む検索要求を生成して、イベント検索部６に検索要求を送信する。
【００２４】
次に、ステップＳ１０３において、イベント検索部６が、イベントデータベース５内を検索し、アラートに対応する攻撃イベント定義情報を返却する。イベント検索部６は、イベントデータベース５に格納されている攻撃イベント定義情報の中から、検索要求に含まれている攻撃イベントに合致する攻撃イベント定義情報を検索し、検索結果をアラート解釈部３に返却する。
【００２５】
攻撃イベント定義情報は、攻撃イベントに関する情報が予め定義された情報である。
図３は、攻撃イベント定義情報の例を示す図である。
図３の攻撃イベント定義情報９のように、攻撃イベント定義情報は、事前条件１０、イベント１１、達成状態１２、攻撃確度１３、観測可否１４で構成されている。
【００２６】
事前条件１０には、攻撃発生時にイベント１１が発生するための前提条件が述語論理の形式で記述されている。つまり、事前条件１０には、イベント１１が観測される前の攻撃の進展段階（イベント前段階）が記述されている。例えば、図３の符号１５で示す述語論理は、事前条件として、「ＡがＨにログインしている」段階であることを表している。なお、符号１５で示されるＡ、Ｈは変数であり、観測イベントから得られた値などによって具体的な値（例えば“ｕｓｅｒ００１”等）に束縛され
る。
【００２７】
イベント１１は、情報システムに対する攻撃が行われる過程において情報システムで観測されるイベントである。イベント１１に対して、イベント発生源１６、イベント種別１７、イベントパラメータ１８が定義されている。
イベント発生源１６は、攻撃イベント定義情報９が対象とするイベント発生源を示している。符号１９は、発生源として許される値を示しており、この例では変数Ｈによって事前条件１５と関連付けられている（「＄Ｈ」の冒頭にあるドルマーク（＄）は、Ｈが変数であることを示している）。
イベント種別１７は、攻撃イベント定義情報９が対象としているイベントの種別を指定している。具体的なイベント種別は、符号２０のように指定される。
イベントパラメータ１８は、イベントのパラメータを示す。イベントパラメータ１８では、攻撃イベント定義情報９が対象とする値が指定されている。図３に示した例では、符号２１でＵＳＥＲという名称のパラメータが符号１５で示されている変数Ａと同じ値をとることが求められている。
【００２８】
観測イベント通知情報では、図３の攻撃イベント定義情報９と同様に、イベント発生源、イベント種別、イベントパラメータが通知される。図３の攻撃イベント定義情報９では、イベント発生源１６、イベントパラメータ１８の各変数の値は特定されていないが、観測イベント通知情報では、イベント発生源１６、イベントパラメータ１８の各変数の値が特定されている。
【００２９】
達成状態１２は、攻撃イベント定義情報９の符号１６〜１８の項目に合致するイベントが発生した時に、攻撃者が達成した状態を述語論理で示している。つまり、達成状態１２には、符号１６〜１８の項目に合致するイベントが観測された後の攻撃の進展段階（イベント後段階）が記述されている。図３の例では、符号２２で「ユーザＡがホストＨの機密を入手した」段階であることが示されている。
【００３０】
攻撃確度１３は、攻撃イベント定義情報９の符号１６〜１８の項目に合致するイベントが発生した時の、情報システムに対する攻撃の確度を示している。図３の例では、符号２３で示すように、確度値を０．５と定義している。
【００３１】
観測可否１４は、イベント１１が、システムが観測することのできないイベントか否かを示している。例えば、パスワード流出のようにログに記載されないイベントや、コストや監視負荷の関係で監視対象に入らないイベントなどが観測不可イベントに該当する。図３の例では、符号２４で観測することが可能であることを示す「可」が設定されている。また、観測することができない場合は、「否」が設定される。
【００３２】
以上述べた攻撃イベント定義情報９は、多段攻撃で発生すると考えられる複数のイベントに対して予め定義され、イベントデータベース５内に検索可能な状態で格納される。
図４は、イベントデータベース５に格納された攻撃イベント定義情報９の一例である。
図４の格納例では、攻撃イベント定義情報９に定義される情報の他、攻撃イベントを検知した際に記録される発生時刻、発生源、送信先などの情報も含まれている。発生源は、例えば、発信元ＩＰアドレスであり、送信先は、送信先ＵＲＬが記録される。なお、図４の格納例では、攻撃イベントが検知される前の状態を示しており、発生時刻、発生源、送信先は空欄になっている。
【００３３】
次に、ステップＳ１０４において、アラート解釈部３は、受け取った検索結果の攻撃イベント定義情報をアラートに対応する攻撃イベントと解釈する。ここで、「解釈する」処理とは、イベント検索部６による検索結果の攻撃イベント定義情報に対して、アラートに含まれるイベント発生源、イベント種別、イベントパラメータの具体的な値を代入して、観測イベントを攻撃イベント（観測イベント通知情報）として処理可能なデータ形式にする処理のことを指す。
【００３４】
次に、ステップＳ１０５において、アラート解釈部３は、イベント列生成部４にイベントを入力する。アラート解釈部３は、ステップＳ１０４で観測イベントから解釈された攻撃イベントをイベント列生成部４に入力する。
【００３５】
次に、ステップＳ１０６において、イベント列生成部４は、入力された攻撃イベントを追加可能なイベント列をイベント列記憶部７から検索する。
【００３６】
次に、ステップＳ１０７において、イベント列生成部４は、イベント推定が必要か否かを判定する。イベント列生成部４は、ステップＳ１０６で検索した結果、追加可能なイベント列がイベント列記憶部７にない場合、Ｙｅｓの分岐に進み、ステップＳ１０８でイベント推定を行なう。イベント推定に関する処理の詳細は後述する。追加可能なイベント列がイベント列記憶部７にある場合は、イベント列生成部４は、イベント推定が不要と判定して、Ｎｏの分岐に進む。
【００３７】
次に、ステップＳ１０８において、イベント列生成部４は、入力された攻撃イベントの事前条件を達成状態に持つイベントの検索を、イベント検索部６に要求して、イベント推定の処理を実行する。
【００３８】
次に、ステップＳ１０９において、イベント検索部６が、イベントデータベース５内を検索し、検索要求に対応する攻撃イベント定義情報を返却する。
【００３９】
次に、ステップＳ１１０において、イベント列生成部４は、ステップＳ１０９で検索された攻撃イベント定義情報を利用してイベント列を生成し、イベント列記憶部７内に生成したイベント列を登録、またはイベント列記憶部７内のイベント列を更新する。
【００４０】
次に、ステップＳ１１１において、イベント列生成部４は、イベント列記憶部７にイベント列が登録、または更新されたことを検知状態管理部８に通知する。
【００４１】
最後に、ステップＳ１１２において、検知状態管理部８は、イベント列記憶部７内の状態を読み取り、攻撃の検知条件を満たしていればアラートを外部に通知する。検知状態管理部８は、イベント列生成部４からの通知を受けてイベント列記憶部７内にあるイベント列を調べ、イベント列を構成する各攻撃イベントの攻撃確度の合計値がしきい値以上であった場合、多段攻撃が発生したと判定して外部に通知する。
【００４２】
以上が、実施の形態１に係る攻撃検知装置の全体処理の流れである。
【００４３】
次に、実施の形態１のイベント列生成部４の構成と動作の詳細を説明する。
まず、イベント列生成部４の構成に関して説明する。
図５は、実施の形態１に係るイベント列生成部４の一構成例を示す構成図である。
【００４４】
判定部２５は、アラート解釈部３から入力された攻撃イベントが、イベント列記憶部７に登録されたイベント列に追加できるか否かを検証し、イベント列に追加できない場合は、観測されていないイベントの推定が必要と判定する。また、イベント列に追加できる場合は、観測されていないイベントの推定が不要と判定する。観測されていないイベントの推定が必要と判定した場合は、推定部２６によって観測されていないイベントの推定を行なう。推定が不要の場合は、入力された攻撃イベントを生成部２８に入力し、イベント列を生成する。
【００４５】
推定部２６は、入力された攻撃イベントと依存関係にある攻撃イベントの検索をイベント検索部６に要求し、イベント検索部６の検索結果を受け取る。検索結果の攻撃イベントが、システムが観測することのできない攻撃イベントである場合、検索によって新たに得られた攻撃イベントを観測したものと判定する。このとき、推定部２６に入力された攻撃イベントは、記憶部２７に記憶する。観測されたものとみなされた攻撃イベントは、判定部２５に入力し、イベント列に追加できるか否かの検証を行なう。判定部２５により推定が必要と判定された場合は、さらに推定部２６に入力し、攻撃イベントの推定を行なう。判定部２５により推定が不要と判定された場合は、入力された攻撃イベントを生成部２８に入力し、イベント列を生成する。
【００４６】
生成部２８は、判定部２５、または推定部２６から入力された攻撃イベントに対し、入力された攻撃イベントに依存する攻撃イベントを記憶部２７から呼び出す。その後、呼び出した攻撃イベントに、入力された攻撃イベントを追加して新たなイベント列を生成する。新たに生成したイベント列は、イベント列記憶部７に登録する。既存のイベント列に追加可能なイベントを含む場合は、既存のイベント列と結合し、イベント列記憶部７の更新を行なう。生成部２８は、イベント列の生成によってイベント列記憶部７の更新が行なわれたことを検知状態管理部８に通知する。
【００４７】
次に、イベント列生成部４の動作の詳細を説明する。
図６は、実施の形態１に係る判定部２５の処理の流れを示すフローチャートである。
【００４８】
まず、ステップＳ２０１において、アラート解釈部３が、判定部２５にイベントＸを入力する。ここでイベントＸは、図３のステップＳ１０５における攻撃イベント（観測イベント通知情報）である。
【００４９】
次に、ステップＳ２０２において、判定部２５は、イベントＸは事前条件を持つか否かを確認し、事前条件を持つ場合は、Ｙｅｓの分岐によりステップＳ２０３に進む。事前条件を持たない場合は、Ｎｏの分岐によりステップＳ２０９に進む。
【００５０】
次に、ステップＳ２０３において、判定部２５は、イベントＸの事前条件を達成状態に持つイベントが含まれるイベント列の検索を、イベント検索部６に要求し、イベント列記憶部７から検索する。
【００５１】
次に、ステップＳ２０４において、判定部２５は、検索要求に該当するイベント列が存在するか否かを判断し、検索要求に該当するイベント列が存在する場合は、Ｙｅｓの分岐によりステップＳ２０５に進む。検索要求に該当するイベント列が存在しない場合は、Ｎｏの分岐によりステップＳ２０７に進む。
【００５２】
次に、ステップＳ２０５において、判定部２５は、イベントＸは、既存イベント列に追加可能であると判定し、ステップＳ２０６で生成部２８にイベントＸを入力して処理が終了する。
【００５３】
また、ステップＳ２０４で検索要求に該当するイベント列が存在しない場合、ステップＳ２０７において、判定部２５は、イベントの推定が必要であると判定し、ステップＳ２０８で推定部２６にイベントＸを入力して処理が終了する。
【００５４】
また、ステップＳ２０２でイベントＸが事前条件を持たないイベントであった場合、ステップＳ２０９において、判定部２５は、新たなイベント列であると判定し、ステップＳ２１０で生成部２８に入力イベントＸを入力して処理が終了する。
【００５５】
以上のように、判定部２５に入力されたイベントＸは、判定部２５内の処理によって推定部２６、または、生成部２８に入力される。
【００５６】
次に、推定部２６にイベントＸが入力された場合の動作を説明する。
図７は、実施の形態１に係る推定部２６の処理の流れを示すフローチャートである。
【００５７】
まず、ステップＳ３０１において、判定部２５が、推定部２６にイベントＸを入力する。
【００５８】
次に、ステップＳ３０２において、推定部２６は、イベントＸの事前条件を達成状態に持つイベントの検索を、イベント検索部６に要求し、イベントデータベース５から検索する。
【００５９】
次に、ステップＳ３０３において、推定部２６は、検索要求に該当するイベントが存在するか否かを判断し、検索要求に該当するイベントが存在する場合（ここでは２つ以上の該当イベントは存在しないと仮定する）は、Ｙｅｓの分岐によりステップＳ３０４に進む。検索要求に該当するイベントが存在しない場合は、Ｎｏの分岐によりステップＳ３０９に進む。
【００６０】
次に、ステップＳ３０４において、推定部２６は、検索要求に該当するイベントＸ’をイベント検索部６から得る。
【００６１】
次に、ステップＳ３０５において、推定部２６は、観測可否の設定から、イベントＸ’は観測できないイベントか否かを確認し、観測できないイベントである場合は、Ｙｅｓの分岐によりステップＳ３０６に進む。観測できるイベントである場合は、Ｎｏの分岐によりステップＳ３０９に進む。
【００６２】
次に、ステップＳ３０６において、推定部２６は、イベントＸ’は、既に観測したものと判定し、ステップＳ３０７において、入力されたイベントＸを記憶部２７に記憶して、ステップＳ３０８で、判定部にイベントＸ’を入力して処理が終了する。
【００６３】
また、ステップＳ３０５でイベントＸ’が観測できるイベントである場合、または、ステップＳ３０３で検索要求に該当するイベントが存在しない場合は、ステップＳ３０９において、推定部２６は、入力されたイベントＸは、新たなイベント列であると判定し、ステップＳ３１０で生成部２５にイベントＸを入力して処理が終了する。
【００６４】
次に、判定部２５または推定部２６内の処理によって生成部２８にイベントＸが入力された場合の動作を説明する。
図８は、実施の形態１に係る生成部２８の処理の流れを示すフローチャートである。
【００６５】
まず、ステップＳ４０１において、判定部２５または推定部２６が、生成部２８にイベントＸを入力する。
【００６６】
次に、ステップＳ４０２において、生成部２８は、入力されたイベントＸが判定部２５または推定部２６によって新たなイベント列と判定されたかを確認し、新たなイベント列と判定された場合は、Ｙｅｓの分岐によりステップＳ４０３に進む。新たなイベント列でないと判定された場合は、Ｎｏの分岐によりステップＳ４０６に進む。
【００６７】
次に、ステップＳ４０３において、生成部２８は、イベントＸと依存関係にあるイベントを記憶部２７から呼び出す。このとき、依存関係は、記憶部２７に記憶されたイベントの事前条件、及び達成状態の関係によって定める。
【００６８】
次に、ステップＳ４０４において、生成部２８は、記憶部２７より呼び出した各イベントの事前条件と達成状態からイベント列を生成し、新たなイベント列としてイベント列記憶部７に登録する。
【００６９】
次に、ステップＳ４０５において、生成部２８は、イベント列記憶部７の更新を行なったことを検知状態管理部８に通知し、処理が終了する。
【００７０】
また、ステップＳ４０２で新たなイベント列でないと判定された場合は、ステップＳ４０６において、生成部２８は、入力されたイベントＸが、判定部２５または推定部２６によって、既存のイベント列に追加可能と判定されたかを確認し、追加可能と判定された場合は、Ｙｅｓの分岐によりステップＳ４０７に進む。追加可能でないと判定された場合は、Ｎｏの分岐により、処理が終了する。
【００７１】
次に、ステップＳ４０７において、生成部２８は、イベントＸと依存関係にあるイベントを記憶部２７から呼び出す。このとき、依存関係は、記憶部２７に記憶されたイベントの事前条件、及び達成状態の関係によって定める。
【００７２】
次に、ステップＳ４０８において、生成部２８は、入力されたイベントＸの事前条件を達成状態に持つイベントを含むイベント列に、イベントＸを追加する。
【００７３】
次に、ステップＳ４０９において、生成部２８は、記憶部２７より呼び出した各イベントの事前条件と達成状態からイベント列を生成し、ステップＳ４０８でイベントＸを追加したイベント列に、順次追加する処理を行なう。
【００７４】
次に、ステップＳ４１０において、生成部２８は、イベント列記憶部７内の追加前のイベント列を、追加後のイベント列で更新し、ステップＳ４０５の処理を行なって、処理が終了する。
【００７５】
以上のように、本実施の形態１の発明は、各イベントに対してシステムで観測することができるかどうかのパラメータを定義し、システムがイベントを観測することができない場合、該当イベントは観測したものとみなし、該当イベントとの依存関係を動的に推定してイベント列を生成することにより、システムが観測することができないイベントを含む場合であってもイベント列を生成することができるので、多段攻撃の検知漏れを防ぐことができるという効果がある。
【００７６】
実施の形態２．
以上の実施の形態１では、システムが観測することができないイベントは発生したとみなしてイベント列を生成するようにしたものであるが、実施の形態２では、あるイベントＡが観測できないとき、その事前条件を満たすイベントＢ、及びイベントＡの達成状態を事前条件に持つイベントＸの両者を観測できたとき、イベントＡを発生したものとみなしてイベント列を生成し、検知精度をさらに向上させる実施形態を示す。
【００７７】
図９は、実施の形態２に係る攻撃検知装置のイベント列生成部の一構成例を示す構成図である。
図９において、イベント列生成部４は、判定部２５、記憶部２７、生成部２８については、実施の形態１と同様の構成となる。以下、推定部２６および観測待機イベント記憶部２９について説明する。
【００７８】
推定部２６は、入力されたイベントＸと依存関係にあるイベントの検索を、イベント検索部６に要求する。検索した結果、得られたイベントＡが、システムが観測することのできないイベントであった場合、観測待機イベント記憶部２９にイベントＡを記憶する。このとき、推定部２６に入力されたイベントＸは、記憶部２７に記憶する。
【００７９】
さらに、推定部２６は、観測することのできないイベントＡを判定部２５に入力し、イベント列に追加可能かどうかの判定を行なう。判定部２５によって観測することのできないイベントＡに対して、イベント列に追加可能と判定された場合（観測することのできないイベントＡと依存関係のあるイベントＢが、既に観測されていた場合）、イベントＡは発生したものとみなしてイベント列を生成する。
【００８０】
一方、判定部２５によって観測することのできないイベントＡに対して、イベント列に追加できず推定が必要と判定された場合（観測することのできないイベントＡと依存関係のあるイベントが未だ観測されていない場合）、観測することのできないイベントＡは、再び、推定部２６に入力される。このとき、推定部２６に入力されたイベントＡは、観測待機イベント記憶部２７に既に存在しているので、推定部２６は、観測待機イベント記憶部２７に記憶されたイベントＡは発生していなかったものと判定し、最初に推定部に入力されたイベントＸは、新たなイベント列であると判定する。
【００８１】
また、推定部２６において推定するイベントがなかった場合は、新たなイベント列と判定し、入力された攻撃イベントを生成部２８に入力し、イベント列を生成する。
【００８２】
次に、実施の形態２に係る攻撃検知装置のイベント列生成部４の動作について説明する。
アラート解釈部３から出力された攻撃イベントは、判定部２５に入力される。判定部２５の動作については、図６と同様である。判定部２５に入力された攻撃イベントは、判定部２５内の処理によって、推定部２６または生成部２８に入力される。
【００８３】
以下、推定部２６の動作について説明する。
図１０は、実施の形態２に係る推定部２６の処理の流れを示すフローチャートである。
【００８４】
まず、ステップＳ５０１において、判定部２５が、推定部２６にイベントＸを入力する。
【００８５】
次に、ステップＳ３０２において、推定部２６は、入力されたイベントＸが、観測待機イベント記憶部２７に存在しないか否かを判断し、存在しない場合は、Ｙｅｓの分岐によりステップＳ５０３に進む。入力されたイベントＸが、観測待機イベント記憶部２７に存在する場合は、Ｎｏの分岐によりステップＳ５１０に進む。
【００８６】
次に、ステップＳ５０３において、推定部２６は、イベントＸの事前条件を達成状態に持つイベントの検索を、イベント検索部６に要求し、イベントデータベース５から検索する。
【００８７】
次に、ステップＳ５０４において、推定部２６は、検索要求に該当するイベントが存在するか否かを判断し、検索要求に該当するイベントが存在する場合（ここでは２つ以上の該当イベントは存在しないと仮定する）は、Ｙｅｓの分岐によりステップＳ５０５に進む。検索要求に該当するイベントが存在しない場合は、Ｎｏの分岐によりステップＳ５１１に進む。
【００８８】
次に、ステップＳ５０５において、推定部２６は、検索要求に該当するイベントＸ’をイベント検索部６から得る。
【００８９】
次に、ステップＳ５０６において、推定部２６は、観測可否の設定から、イベントＸ’は観測できないイベントか否かを確認し、観測できないイベントである場合は、Ｙｅｓの分岐によりステップＳ５０７に進む。観測できるイベントである場合は、Ｎｏの分岐によりステップＳ５１１に進む。
【００９０】
次に、ステップＳ５０７において、推定部２６は、イベントＸ’は、既に観測したものと判定し、ステップＳ５０８において、入力されたイベントＸを記憶部２７に記憶して、ステップＳ５０９で、判定部にイベントＸ’を入力して処理が終了する。
【００９１】
また、ステップＳ５０６でイベントＸ’が観測できるイベントである場合、または、ステップＳ５０４で検索要求に該当するイベントが存在しない場合は、ステップＳ５１１において、推定部２６は、入力されたイベントＸは、新たなイベント列であると判定し、ステップＳ５１２で生成部２５にイベントＸを入力して処理が終了する。
【００９２】
また、ステップＳ５０２で、入力されたイベントＸが、観測待機イベント記憶部２７に存在する場合は、ステップＳ５１０において、推定部２６は、記憶部２７に記憶されたイベントＸと依存関係のあるイベント(前回の入力イベントに相当する)をイベントＸと置換する。その後、ステップＳ５１１において、新たなイベントであると判定し、ステップＳ５１２で生成部２５にイベントＸを入力して処理が終了する。
【００９３】
判定部２５または推定部２６内の処理によって、生成部２８に入力された場合の動作は、実施の形態１と同様である。
【００９４】
以上のように、本実施の形態２の発明は、あるイベントＡが観測できないとき、その事前条件を満たすイベントＢ、及びイベントＡの達成状態を事前条件に持つイベントＸの両者を観測できたとき、イベントＡを発生したものとみなしてイベント列を生成することにより、検知精度をさらに向上させることができるようになる。
【００９５】
実施の形態３．
以上の実施の形態２では、直前のイベントと直後のイベントを観測できているか否かによって、システムが観測することができないイベントを発生したものとみなすようにしたが、イベント間の依存度合い（発生確率）を評価しないため、実際には観測したとは考えにくいようなイベントを観測したものとみなしてしまう可能性がある。そこで、実施の形態３では、イベント連鎖の発生確率を用いて、システムが観測することのできないイベントか否かを評価し、発生確率が閾値を越えた場合に発生したものと判定することができるような実施形態を示す。
【００９６】
図１１は、実施の形態３に係るイベント列生成部４の一構成例を示す構成図である。
図１１において、イベント列生成部４は、図５の構成に加え、複数のイベントが連鎖する確率である連鎖確率を記憶する連鎖確率記憶部３０を備えている。
【００９７】
次に、実施の形態３におけるイベント列生成部４の動作を説明する。
アラート解釈部３から出力された攻撃イベントは、判定部２５に入力される。判定部２５の動作については、図６と同様である。判定部２５に入力された攻撃イベントは、判定部２５内の処理によって、推定部２６または生成部２８に入力される。
【００９８】
図１２は、実施の形態３に係る推定部２６の処理の流れを示すフローチャートである。
以下、図１２を参照して、実施の形態３に係る推定部２６の処理の流れを説明する。
【００９９】
まず、ステップＳ６０１〜Ｓ６０５の処理は、図７に示した実施の形態１における推定部２６のステップＳ３０１〜Ｓ３０５の処理と同様である。
【０１００】
次に、ステップＳ６０６において、推定部２６は、イベントＸ’が、システムが観測することのできないイベントであった場合、イベントＸ’に、観測判定待ちイベントであることを示す情報を加える。この情報は、例えば、観測判定待ちの場合に１、観測判定待ちでない場合に０が設定されるフラグ情報である。
【０１０１】
次に、ステップＳ６０７〜Ｓ６１０の処理は、図７に示した実施の形態１における推定部２６のステップＳ３０７〜Ｓ３１０の処理と同様である。
【０１０２】
図１３は、実施の形態３に係る生成部２８の処理の流れを示すフローチャートである。
以下、図１３を参照して、実施の形態３に係る生成部２８の処理の流れを説明する。
【０１０３】
まず、ステップＳ７０１において、判定部２５または推定部２６が、生成部２８にイベントＸを入力する。
【０１０４】
次に、ステップＳ７０２において、生成部２８は、イベントＸと依存関係にあるイベントを記憶部２７から呼び出す。このとき、依存関係は、記憶部２７に記憶されたイベントの事前条件、及び達成状態の関係によって定める。
【０１０５】
次に、ステップＳ７０３において、生成部２８は、記憶部２７より呼び出した各イベントの事前条件と達成状態からイベント列を生成する。
【０１０６】
次に、ステップＳ７０４において、生成部２８は、ステップＳ７０３で生成されたイベント列に対し、隣接する既に観測されたイベントに基づいて、観測待ちイベントの発生確率を計算する。発生確率は、例えば、過去のイベント発生事例のデータを蓄積し、これらの統計的データを利用して、複数のイベントが連鎖する場合の条件付き確率として与える。このような複数のイベントの連鎖確率は、連鎖確率記憶部３０に記憶されている。生成部２８は、計算した発生確率が、設定した閾値以上となった観測待ちイベントを、観測したものと判定する。
【０１０７】
次に、ステップＳ７０５において、生成部２８は、入力されたイベントＸが判定部２５または推定部２６によって新たなイベント列と判定されたかを確認し、新たなイベント列と判定された場合は、Ｙｅｓの分岐によりステップＳ７０６に進む。新たなイベント列でないと判定された場合は、Ｎｏの分岐によりステップＳ７０９に進む。
【０１０８】
次に、ステップＳ７０６において、生成部２８は、観測されたイベントのみでイベント列の再生成を行なう。このとき、再生成されるイベント列は、複数のイベント列となることもある。
【０１０９】
次に、ステップＳ７０７において、生成部２８は、再生成したイベント列をイベント列記憶部７に登録する。
【０１１０】
次に、ステップＳ７０８において、生成部２８は、イベント列記憶部７の更新を行なったことを検知状態管理部８に通知し、処理が終了する。
【０１１１】
また、ステップＳ７０５で新たなイベント列でないと判定された場合は、ステップＳ７０９において、生成部２８は、入力されたイベントＸが、判定部２５または推定部２６によって、既存のイベント列に追加可能と判定されたかを確認し、追加可能と判定された場合は、Ｙｅｓの分岐によりステップＳ７１０に進む。追加可能でないと判定された場合は、Ｎｏの分岐により、ステップＳ７０７に進み、イベント列記憶部の登録・更新を行なった後、ステップＳ７０８の処理を行なって、処理が終了する。
【０１１２】
次に、ステップＳ７１０において、生成部２８は、既存のイベント列に結合可能なイベント列を追加する。
【０１１３】
次に、ステップＳ７１１において、生成部２８は、記憶部に記憶した全てのイベントが既存のイベント列に追加可能かを判定し、追加可能と判定された場合は、Ｙｅｓの分岐によりステップＳ７０７に進み、イベント列記憶部の登録・更新を行なった後、ステップＳ７０８の処理を行なって、処理が終了する。追加可能でないと判定された場合は、Ｎｏの分岐によりステップＳ７１２に進む。
【０１１４】
次に、ステップＳ７１２において、生成部２８は、追加できないイベントを新たなイベント列とみなし、ステップＳ７０６からＳ７０８までの処理を行なって、処理が終了する。
【０１１５】
以上のように、本実施の形態３の発明は、観測することのできないイベントに対し、依存関係のある、既に観測されたイベントに基づいて発生確率を計算することにより、観測したものとみなしてよいかどうかの評価を加味したイベント列が生成可能となり、検知精度をさらに向上させることができるようになる。
【０１１６】
実施の形態４．
以上の実施の形態１〜３は、システムが観測することのできない攻撃イベントに関する攻撃イベント推定の手法であるが、本実施の形態４では、システムが検知漏れによって観測することのできなかった攻撃イベントを推定し、イベント列を生成する実施形態を示す。
【０１１７】
図１４は、実施の形態４に係るイベント列生成部４の一構成例を示す構成図である。
図１４において、イベント列生成部４は、図５の構成に加え、イベントの検知漏れ率を記憶する検知漏れ率記憶部３１を備えている。
【０１１８】
次に、実施の形態４におけるイベント列生成部４の動作を説明する。
アラート解釈部３から出力された攻撃イベントは、判定部２５に入力される。判定部２５の動作については、図６と同様である。判定部２５に入力された攻撃イベントは、判定部２５内の処理によって、推定部２６または生成部２８に入力される。
【０１１９】
図１５は、実施の形態４に係る推定部２６の処理の流れを示すフローチャートである。
以下、図１５を参照して、実施の形態４に係る推定部２６の処理の流れを説明する。
【０１２０】
まず、ステップＳ８０１〜Ｓ８０４の処理は、図７に示した実施の形態１における推定部２６のステップＳ３０１〜Ｓ３０４の処理と同様である。
【０１２１】
次に、ステップＳ８０５において、推定部２６は、検知漏れ率記憶部３１を参照して、イベントＸ’の検知漏れ率を調べ、予め設定した閾値以上かを判定する。検知漏れ率記憶部３１が記憶する検知漏れ率は、例えば、過去に発生したイベントの検知漏れ事例データを蓄積し、これらの統計的データを利用して、検知漏れ率を算出したものを用いる。推定部２６は、検知漏れ率が閾値以上である場合、Ｙｅｓの分岐によりステップＳ８０６に進む。検知漏れ率が閾値以上でない場合は、Ｎｏの分岐によりステップＳ８０９に進む。
【０１２２】
次に、ステップＳ８０６〜Ｓ８１０の処理は、図７に示した実施の形態１における推定部２６のステップＳ３０６〜Ｓ３１０の処理と同様である。
【０１２３】
以上のように、本実施の形態４の発明は、予め各イベントに対して、検知漏れが起こる割合を検知漏れ率として定義し、検知漏れ率が閾値以上であった場合に、観測したものと判定することにより、検知漏れによって観測できなかったイベントを含む場合においても、イベント列を生成することが可能となり、検知精度をさらに向上させることができるようになる。
【０１２４】
実施の形態５．
以上の実施の形態１〜４は、イベント列生成のために複数の事前条件が必要であるという仮定がなく、イベント列は１列となっていることを前提としていた。本実施の形態５では、複数の事前条件によってイベント列が生成される場合においてもイベント発生の推定を行ない、イベント列の生成が可能になる実施形態を示す。
【０１２５】
図１６は、実施の形態５に係るイベント列生成部４の一構成例を示す構成図である。
図１６において、イベント列生成部４は、図５の構成に加え、攻撃イベントの推定処理の終了を判定する終了判定部３２、及び判定部２５と推定部２６による判定結果を格納する判定結果テーブル３３を備えている。
図１７は、実施の形態５に係る判定結果テーブル３３の格納例を示す図である。
図１７において、システムが観測できないイベントである「パスワード流出」が、推定部２６の推定結果により、発生したものとみなされて発生判定が「可」と判定された例である。
【０１２６】
判定部２５は、アラート解釈部３から入力された攻撃イベントが、イベント列記憶部７に登録されたイベント列に追加できるか否かを検証し、イベント列に追加できない場合は、観測されていないイベントの推定が必要と判定する。観測されていないイベントの推定が必要と判定された場合は、推定部２６によって推定を行なう。入力された攻撃イベントが、イベント列記憶部７内の既存のイベント列に追加可能であるか、もしくは、新たなイベント列であると判定された場合は、判定結果を判定結果テーブル３３に追加した後に、入力された攻撃イベントを終了判定部３２に入力し、攻撃イベントの推定処理の終了を判定する。
【０１２７】
推定部２６は、入力された攻撃イベントと依存関係にある攻撃イベントの検索をイベント検索部６に要求し、イベント検索部６の検索結果を受け取る。検索結果の攻撃イベント各々に対し、検索結果の攻撃イベントが、システムが観測することのできない攻撃イベントである場合、検索によって新たに得られた攻撃イベントを観測したものと判定する。観測されたものとみなされたそれぞれの攻撃イベントは、判定部２５に入力し、入力された攻撃イベントがイベント列記憶部７内の既存のイベント列に追加可能であるか、もしくは、新たなイベント列であると判定されるまで、再帰的に推定が行なわれる。
【０１２８】
推定部２６に入力された攻撃イベントと依存関係を持つ全ての攻撃イベントの推定が行なわれると、入力された攻撃イベントが観測されるために必要な事前条件がすべて満たされているかどうか確認を行ない、確認結果を判定結果テーブル３３に追加する。その後、推定部２６に入力された攻撃イベントを記憶部２７に記憶し、終了判定部３２に入力された攻撃イベントを生成部２８に入力する。
【０１２９】
生成部２８は、終了判定部３２から入力された攻撃イベントに対し、入力された攻撃イベントに依存する攻撃イベントを記憶部２７から呼び出す。その後、呼び出した各攻撃イベントからイベント列を生成する。イベント列生成時は、判定結果テーブル３３に基づき、新たなイベント列と判定された攻撃イベントは独立したイベント列とみなす。
【０１３０】
次に、生成部２８は、イベント列記憶部７内に登録されたイベント列に追加可能なイベントを含むイベント列を結合する。このとき、イベント列記憶部７内に登録された複数のイベント列を結合可能な場合は、それらを結合して１つのイベント列とする。推定部２６によって、観測するために必要な事前条件を一部または全て満たしていないと判定された攻撃イベントは、イベント列生成から除外する。
【０１３１】
以上の処理を行なった後に、生成部２８は、生成した新たなイベント列、及びイベント列記憶部７内に登録されたイベント列に結合したイベント列を、イベント列記憶部７に登録・更新する。生成部２８は、イベント列の生成によってイベント列の更新が行なわれたことを、検知状態管理部８に通知する。
【０１３２】
終了判定部３２は、まず、アラート解釈部３から入力された攻撃イベントを初期イベントとして記憶する。その後、新たな攻撃イベントが入力されたとき、初期イベントと同じかどうかの比較を行なう。初期イベントと同じイベントが入力されたとき、生成部２８に初期イベントを入力する。
【０１３３】
次に、本実施の形態におけるイベント列生成部４の動作の詳細を説明する。アラート解釈部３から出力された攻撃イベントは、判定部２５、および終了判定部３２に入力される。
以下、判定部２５の動作について説明する。
図１８は、実施の形態５に係る判定部２５の処理の流れを示すフローチャートである。
【０１３４】
まず、ステップＳ９０１〜Ｓ９０４の処理は、図６に示した実施の形態１における判定部２５のステップＳ２０１〜Ｓ２０４の処理と同様である。
【０１３５】
次に、ステップＳ９０４で該当するイベント列が存在した場合は、ステップＳ９０５において、判定部２５は、入力されたイベントＸは、既存イベント列に追加可能であると判定し、判定結果テーブル３３に追記される。
【０１３６】
次に、ステップＳ９０６において、事前条件が複数存在する場合に、全ての事前条件を判定したか否かを確認する。全ての事前条件を判定した場合は、Ｙｅｓの分岐によりステップＳ９０７に進み、終了判定部３２にイベントＸを入力し、処理が終了する。
【０１３７】
また、ステップＳ９０６で全ての事前条件を判定していない場合は、Ｎｏの分岐によりステップＳ９０８に進み、判定していない事前条件について判定を実施することとし、ステップＳ９０３に戻って、再び、判定の処理を継続して実施する。
【０１３８】
また、ステップＳ９０４で該当するイベント列が存在しなかった場合は、ステップＳ９０９において、判定部２５は、イベントの推定が必要であると判定し、ステップＳ９１０で推定部２６にイベントＸを入力して処理が終了する。
【０１３９】
また、ステップＳ９０２でイベントＸが事前条件を持たないイベントであった場合は、ステップＳ９１１において、判定部２５は、入力されたイベントＸは、新たなイベント列であると判定し、ステップＳ９１２で終了判定部３２にイベントＸを入力して処理が終了する。
【０１４０】
次に、アラート解釈部３から出力された攻撃イベントが、終了判定部３２に入力されるときの動作について説明する。
図１９は、実施の形態５に係る終了判定部３２の処理の流れを示すフローチャートである。
【０１４１】
まず、ステップＳ１００１において、アラート解釈部３が終了判定部３２に、初期イベントＸを入力する。
【０１４２】
次に、ステップＳ１００２、及びステップＳ１００３において、終了判定部３２は、判定部２５、または推定部２６から入力されるイベントを待つ状態となる。ステップＳ１００３において、イベントが入力されていなかった場合は、Ｎｏの分岐によりステップＳ１００２に戻り、再び、イベントの入力待ち状態となる。ステップＳ１００３において、イベントが入力されたとき、Ｙｅｓの分岐によりステップＳ１００４に進む。
【０１４３】
次に、ステップＳ１００４において、終了判定部３２は、入力されたイベントが初期イベントＸに等しいか否かを判定する。入力されたイベントが初期イベントＸに等しい場合は、Ｙｅｓの分岐によりステップＳ１００５に進む。
【０１４４】
次に、ステップＳ１００５において、終了判定部３２は、生成部２５に初期イベントＸを入力して、処理が終了する。
【０１４５】
また、ステップＳ１００３において、入力されたイベントが初期イベントＸと異なっていた場合、ステップＳ１００２で入力待ち状態となる。
以上が、、終了判定部３２の処理の流れである。
【０１４６】
次に、判定部２５に入力されたイベントＸは、判定部２５内の処理によって、推定部２６、または、終了判定部３２に入力される。以下、イベントＸが推定部２６に入力された場合の動作について説明する。
図２０は、実施の形態５に係る推定部２６の処理の流れを示すフローチャートである。
【０１４７】
まず、ステップＳ１１０１において、判定部２５が、推定部２６にイベントＸを入力する。
【０１４８】
次に、ステップＳ１１０２において、推定部２６は、イベントＸの事前条件を達成状態に持つイベントの検索を、イベント検索部６に要求し、イベントデータベース５から検索する。
【０１４９】
次に、ステップＳ１１０３において、推定部２６は、検索要求に該当するイベントが存在するか否かを判断し、検索要求に該当するイベントが存在する場合は、Ｙｅｓの分岐によりステップＳ１１０４に進む。検索要求に該当するイベントが存在しない場合は、Ｎｏの分岐によりステップＳ１１１１に進む。
【０１５０】
次に、ステップＳ１１０３で検索要求に該当するイベントが存在しない場合は、ステップＳ１１１１において、推定部２６は、入力されたイベントＸは、新たなイベント列であると判定し、判定結果テーブル３３に追加する。その後、ステップＳ１１１２の処理を行なう。
【０１５１】
また、ステップＳ１１０３で検索要求に該当するイベントが存在する場合は、ステップＳ１１０４において、推定部２６は、一つ以上の該当イベント(X'_1, X'_2, …)を得る。その後、ステップＳ１１０５において、反復処理のための変数ｉを１に初期化する。
【０１５２】
次に、ステップＳ１１０６において、推定部２６は、X'_iがシステムの観測することのできないイベントであった場合、Ｙｅｓの分岐によりステップＳ１１０７に進む。X'_iがシステムの観測することができないイベントでなかった場合は、Ｎｏの分岐によりステップＳ１１０９に進む。
【０１５３】
次に、ステップＳ１１０７において、推定部２６は、イベントX'_iを観測したものと判定し、さらに、ステップＳ１１０８で判定部２５に、イベントX'_iを入力する。ステップＳ１１０８の処理が終了すると、ステップＳ１１０９の処理を行なう。
【０１５４】
次に、ステップＳ１１０９において、推定部２６は、ステップＳ１１０４で得られた全てのイベントX'_iを判定したかを判断し、全てのイベントX'_iを判定した場合は、Ｙｅｓの分岐によりステップＳ１１１２に進む。全てのイベントX'_iを判定していない場合は、Ｎｏの分岐によりステップＳ１１１０に進み、反復処理のための変数iをインクリメントして更新し、ステップＳ１１０６に戻る。
【０１５５】
次に、ステップＳ１１１２において、推定部２６は、入力されたイベントＸが、観測されるための事前条件を全て満たしているかを確認し、事前条件を全て満たしている場合は、Ｙｅｓの分岐によりステップＳ１１１４に進む。事前条件の一部または全てを満たしていない場合は、Ｎｏの分岐によりステップＳ１１１３に進む。
【０１５６】
ステップＳ１１１２で事前条件の一部または全てを満たしていない場合は、ステップＳ１１１３において、推定部２６は、入力されたイベントＸは、観測されなかったものと判定し、判定結果テーブル３３に追加する。このとき、ステップＳ１１０７によって観測されたものとみなされていても、ステップＳ１１１３の判定結果を優先する。
【０１５７】
ステップＳ１１１２で入力されたイベントＸが観測されるために必要な事前条件を全て満たしている場合、またはステップＳ１１１３の処理の後に、ステップＳ１１１４において、推定部２６は、入力されたイベントＸを記憶部２７に記憶し、その後、ステップＳ１１１５において、終了判定部３２にイベントＸを入力する。
【０１５８】
次に、終了判定部３２内の処理によって、攻撃イベントが生成部２８に入力された場合の動作を説明する。
図２１は、実施の形態５に係る生成部２８の処理の流れを示すフローチャートである。
【０１５９】
まず、ステップＳ１２０１において、終了判定部３２が、生成部２８にイベントＸを入力する。
【０１６０】
次に、ステップＳ１２０２において、生成部２８は、イベントＸと依存関係にあるイベントを記憶部２７から呼び出す。このとき、依存関係は、記憶部２７に記憶されたイベントの事前条件、及び達成状態の関係によって定める。
【０１６１】
次に、ステップＳ１２０３において、生成部２８は、記憶部２７より呼び出した各イベントの事前条件と達成状態からイベント列を生成する。
【０１６２】
次に、ステップＳ１２０４において、生成部２８は、ステップＳ１２０３で生成したイベント列に対し、判定結果テーブル３３に基づき、次の処理を行なう。まず、イベント列記憶部７内に登録された既存のイベント列に結合可能と判定されたイベントを、イベント列に結合する。このとき、イベント列記憶部７内に登録された複数のイベント列が結合された場合、１つのイベント列として更新する。また、既存のイベント列に結合できないイベント列は、新たなイベント列とみなす。また、推定部２６によって、イベントが観測されなかったとみなされた場合、該当イベントは、イベント列生成から除外する。
【０１６３】
次に、ステップＳ１２０５において、生成部２８は、生成した新たなイベント列、または、イベント列記憶部７内に登録されたイベント列に結合したイベント列を、イベント列記憶部７に登録・更新する。
【０１６４】
最後に、ステップＳ１２０６において、生成部２８は、イベント列の生成によってイベント列記憶部７の更新を行なったことを検知状態管理部８に通知し、処理が終了する。
【０１６５】
以上のように、本実施の形態５の発明は、複数の事前条件によってイベント列が生成される場合においてもイベント発生の推定を行ない、イベント列の生成が可能となる。これにより、複雑な事前条件を持つような攻撃イベントについても、観測できない攻撃イベントの推定を行なうことができるようになり、本発明における実施の形態１〜４の汎用性を高めることができる。
【０１６６】
実施の形態６．
以上の実施の形態１〜５は、観測された攻撃イベントの事前条件を利用し、過去に発生したイベントを遡るように検索することによってイベント列の生成を行なっていた。本実施の形態６では、観測された攻撃イベントの結果から次に観測することが期待される攻撃イベントを記憶し、新たに観測された攻撃イベントが、既存のイベント列に追加可能であるかどうかをより効率良く判定することが可能になる実施形態を示す。
【０１６７】
図２２は、実施の形態６に係る攻撃検知装置１の一構成例を示す構成図である。
図２２において、攻撃検知装置１は、図１の構成に加えて、イベント列記憶部７に記憶されているイベント列のいずれかに追加可能な攻撃イベントを記憶する観測期待イベント記憶部３４を備える。
【０１６８】
図２３は、実施の形態６に係るイベント列生成部４の一構成例を示す構成図である。
図２３において、アラート解釈部３から入力された攻撃イベントは、判定部２５に入力される。判定部２５は、観測期待イベント記憶部３４内を検索し、入力された攻撃イベントが含まれているかどうかを調べ、イベント列に追加可能なイベントかどうかを判定する。
【０１６９】
推定部２６は、入力イベントの達成状態を事前条件に持つ攻撃イベントを、イベント検索部６を用いてイベントデータベース５内から検索し、観測期待イベント記憶部３４に記憶する。また、推定部２６は、イベント検索部６による検索の結果が、システムの観測することのできないイベントであった場合、システムの観測することのできないイベントの推定を行なう。推定の手法は後述する。
【０１７０】
生成部２８は、判定部２５によって得られたイベント列に、記憶部２７内の攻撃イベント、及び入力された攻撃イベントを追加し、イベント列記憶部７を更新する。あるいは、生成部２８は、新たにイベント列をイベント列記憶部７に登録する。
【０１７１】
次に、実施の形態６に係る攻撃検知装置１の動作について、図２４を参照して説明する。
図２４は、実施の形態６に係る攻撃検知装置の処理の流れを示すフローチャートである。
【０１７２】
図２４において、アラート受信部２、アラート解釈部３、イベント検索部６に関するステップＳ１３０１〜Ｓ１３０４の処理は、実施の形態１と同様である。
次に、ステップＳ１３０５において、アラート解釈部３は、イベント列生成部４に攻撃イベントを入力する。
【０１７３】
次に、ステップＳ１３０６において、イベント列生成部４は、観測期待イベント記憶部３４内を検索し、ステップＳ１３０７において、検索の結果、入力された攻撃イベントが既存のイベント列に追加可能かを判定する。この判定は、検索結果の中に、入力された攻撃イベントが含まれている場合に、入力された攻撃イベントが既存のイベント列に追加可能であると判定する。この判定結果は、後のステップＳ１３１１で用いられる。
【０１７４】
次に、ステップＳ１３０８において、イベント列生成部４は、入力された攻撃イベントの達成状態を事前条件に持つイベントの検索を、イベント検索部６に要求する。
【０１７５】
次に、ステップＳ１３０９において、イベント検索部６が、イベントデータベース５内を検索し、検索要求に対応する攻撃イベント定義情報を返却する。
【０１７６】
次に、ステップＳ１３１０において、イベント列生成部４は、観測期待イベント記憶部３４に検索要求に対応する攻撃イベント定義情報を登録する。
【０１７７】
次に、ステップＳ１３１１において、イベント列生成部４は、ステップＳ１３０７での判定結果を参照し、入力された攻撃イベントが既存のイベント列に追加可能と判定された場合は、Ｙｅｓの分岐によりステップＳ１３１２に進む。追加可能でないと判定された場合は、Ｎｏの分岐によりステップＳ１３１３に進む。
【０１７８】
次に、ステップＳ１３１１でＹｅｓの分岐に進んだ場合、ステップＳ１３１２において、イベント列生成部４は、該当する観測期待イベント記憶部３４内の攻撃イベントに対応するイベント列に、攻撃イベントを追加して、イベント列記憶部７を更新する。
【０１７９】
次に、ステップＳ１３１４とステップＳ１３１５におけるイベント列記憶部７、検知状態管理部８の振る舞いについては、実施の形態１と同様である。
【０１８０】
一方、ステップＳ１３１１でＮｏの分岐に進んだ場合、ステップＳ１３１３において、イベント列生成部４は、入力された攻撃イベントを新たなイベント列として、イベント列記憶部７に登録する。その後、ステップＳ１３１４とステップＳ１３１５の処理を行なう。
【０１８１】
次に、実施の形態６のイベント列生成部４の動作の詳細を説明する。
図２５は、実施の形態６に係る判定部２５の処理の流れを示すフローチャートである。
【０１８２】
まず、ステップＳ１４０１において、アラート解釈部３が、判定部２５にイベントＸを入力する。
【０１８３】
次に、ステップＳ１４０２において、判定部２５は、観測期待イベント記憶部３４内を検索し、イベントＸが存在するか否か調べる。
【０１８４】
次に、ステップＳ１４０３において、判定部２５は、検索を行なった結果、イベントＸが存在するか否かを判定する。イベントＸが存在する場合は、Ｙｅｓの分岐によりステップＳ１４０４に進む。イベントＸが存在しない場合は、Ｎｏの分岐によりステップＳ１４０６に進む。
【０１８５】
次に、ステップＳ１４０４において、判定部２５は、入力されたイベントＸは、既存イベント列に追加可能であると判定する。
【０１８６】
次に、ステップＳ１４０５において、判定部２５は、観測期待イベント記憶部３４に記憶されたイベントＸに対応するイベント列情報を、イベントＸに引き継ぎ、観測期待イベント記憶部３４から削除する。
【０１８７】
次に、ステップＳ１４０７において、判定部２５は、推定部２６にイベントＸを入力して、処理が終了する。
【０１８８】
一方、ステップＳ１４０３でイベントＸが存在しなかった場合は、ステップＳ１４０６において、判定部２５は、イベントＸは、新たなイベント列であると判定される。その後、ステップＳ１４０７の処理によって、判定部２５は、推定部２６にイベントＸを入力して、処理が終了する。
【０１８９】
次に、推定部２６にイベントＸが入力された場合の動作を説明する。
図２６は、実施の形態６に係る推定部２６の処理の流れを示すフローチャートである。
【０１９０】
まず、ステップＳ１５０１において、判定部２５が、推定部２６にイベントＸを入力する。
【０１９１】
次に、ステップＳ１５０２において、推定部２６は、イベントＸが達成状態を持つか否かを判断し、達成状態を持つ場合は、Ｙｅｓの分岐によりステップＳ１５０３に進む。達成状態を持たない場合は、Ｎｏの分岐によりステップＳ１５１３に進む。
【０１９２】
次に、ステップＳ１５０３において、推定部２６は、イベントＸの達成状態を事前条件に持つイベントの検索を、イベント検索部６に要求し、イベントデータベース５から検索する。
【０１９３】
次に、ステップＳ１５０４において、推定部２６は、検索要求に該当するイベントが存在するか否かを判断し、検索要求に該当するイベントが存在する場合は、Ｙｅｓの分岐によりステップＳ１５０５に進む。検索要求に該当するイベントが存在しない場合は、Ｎｏの分岐によりステップＳ１５１３に進む。
【０１９４】
次に、ステップＳ１５０５において、推定部２６は、検索要求に該当するイベントＸ’をイベント検索部６から得る。
【０１９５】
次に、ステップＳ１５０６において、推定部２６は、観測可否の設定から、イベントＸ’は観測できないイベントか否かを確認し、観測できないイベントである場合は、Ｙｅｓの分岐によりステップＳ１５０７に進む。観測できるイベントである場合は、Ｎｏの分岐によりステップＳ１５１１に進む。
【０１９６】
次に、ステップＳ１５０７において、推定部２６は、イベントＸ’は、既に観測したものと判定する。
【０１９７】
次に、ステップＳ１５０８において、推定部２６は、イベントＸ'に、イベントＸと対応するイベント列情報を引き継ぐ。その後、ステップＳ１５０９で記憶部２７にイベントＸを記憶し、ステップＳ１５１０でイベントＸ'を新たにイベントＸとして、ステップＳ１５０２に戻る。
【０１９８】
一方、ステップＳ１５０６で、イベントＸ'はシステムが観測することのできるイベントであった場合、ステップＳ１５１１において、推定部２６は、イベントＸ'に、イベントＸと対応するイベント列情報を引き継ぐ。
【０１９９】
次に、ステップＳ１５１２において、推定部２６は、観測期待イベント記憶部３４にイベントＸ'を追加して、観測期待イベント記憶部３４を更新する。その後、ステップＳ１５１３で、推定部２６は、生成部２８にイベントＸを入力して、処理が終了する。
【０２００】
また、ステップＳ１５０２で、イベントＸが達成状態を持たなかった場合、または、ステップＳ１５０４で、検索の結果、該当するイベントが存在しなかった場合は、ステップＳ１５１３で、推定部２６は、生成部２８にイベントＸを入力して、処理が終了する。
【０２０１】
次に、推定部２６内の処理によって生成部２８にイベントＸが入力された場合の動作を説明する。
図２７は、実施の形態６に係る生成部２８の処理の流れを示すフローチャートである。
【０２０２】
まず、ステップＳ１６０１において、推定部２６が、生成部２８にイベントＸを入力する。
【０２０３】
次に、ステップＳ１６０２において、生成部２８は、イベントＸと依存関係にあるイベントを記憶部２７から呼び出す。このとき、依存関係は、記憶部２７に記憶されたイベントの事前条件、及び達成状態の関係によって定める。
【０２０４】
次に、ステップＳ１６０３において、生成部２８は、入力されたイベントＸが判定部２５によって新たなイベント列と判定されたかを確認し、新たなイベント列と判定された場合は、Ｙｅｓの分岐によりステップＳ１６０４に進む。新たなイベント列でないと判定された場合は、Ｎｏの分岐によりステップＳ１６０５に進む。
【０２０５】
次に、ステップＳ１６０４において、生成部２８は、記憶部２７より呼び出した各イベントの事前条件と達成状態からイベント列を生成し、新たなイベント列としてイベント列記憶部７に登録する。
【０２０６】
次に、ステップＳ１６０９において、生成部２８は、イベント列記憶部７の更新を行なったことを検知状態管理部８に通知し、処理が終了する。
【０２０７】
また、ステップＳ１６０３で新たなイベント列でないと判定された場合は、ステップＳ１６０５において、生成部２８は、入力されたイベントＸが、判定部２５によって、既存のイベント列に追加可能と判定されたかを確認し、追加可能と判定された場合は、Ｙｅｓの分岐によりステップＳ１６０６に進む。追加可能でないと判定された場合は、Ｎｏの分岐により、処理が終了する。
【０２０８】
次に、ステップＳ１６０６において、生成部２８は、入力されたイベントＸに対応するイベント列情報を基に、イベント列記憶部７からイベント列を呼び出す。
【０２０９】
次に、ステップＳ１６０７において、生成部２８は、記憶部２７から呼び出した各イベントの事前条件と達成状態からイベント列を生成し、イベント列記憶部７から呼び出したイベント列に追加する。
【０２１０】
次に、ステップＳ１６０８において、生成部２８は、イベント列記憶部７内の追加前のイベント列を、追加後のイベント列で更新し、ステップＳ１６０９の処理を行なって、処理が終了する。
【０２１１】
以上のように、本実施の形態６の発明は、観測された攻撃イベントの達成状態から、次に観測することが期待される攻撃イベントを記憶することで、新たに観測された攻撃イベントが、既存のイベント列に追加可能であるかどうかを判定する。これにより、イベント列に追加可能か否かの判定は、記憶された、観測が期待される攻撃イベントを調べるだけでよいため、イベント列ごとに検索する必要のある実施の形態１〜５と比較して、より効率良く判定することができるようになる。
【符号の説明】
【０２１２】
１  攻撃検知装置、２  アラート受信部、３  アラート解釈部、４  イベント列生成部、５  イベントデータベース、６  イベント検索部、７  イベント列記憶部、８  検知状態管理部、９  攻撃イベント定義情報、１０  事前条件、１１  イベント、１２  達成状態、  １３  攻撃確度、１４  観測可否、１５  事前条件（具体例）、１６  イベント発生源、１７  イベント種別、１８  イベントパラメータ、１９  イベント発生源（具体例）、２０  イベント種別（具体例）、２１  イベントパラメータ（具体例）、２２  達成状態（具体例）、２３  攻撃確度（具体例）、２４  観測可否（具体例）、２５  判定部、２６  推定部、２７  記憶部、２８  生成部、２９  観測待機イベント記憶部、３０  連鎖確率記憶部、３１  検知漏れ率記憶部、３２  終了判定部、３３  判定結果テーブル、３４  観測期待イベント記憶部。
【図１】
0006000495.tif 000002
【図２】
0006000495.tif 000003
【図３】
0006000495.tif 000004
【図４】
0006000495.tif 000005
【図５】
0006000495.tif 000006
【図６】
0006000495.tif 000007
【図７】
0006000495.tif 000008
【図８】
0006000495.tif 000009
【図９】
0006000495.tif 000010
【図１０】
0006000495.tif 000011
【図１１】
0006000495.tif 000012
【図１２】
0006000495.tif 000013
【図１３】
0006000495.tif 000014
【図１４】
0006000495.tif 000015
【図１５】
0006000495.tif 000016
【図１６】
0006000495.tif 000017
【図１７】
0006000495.tif 000018
【図１８】
0006000495.tif 000019
【図１９】
0006000495.tif 000020
【図２０】
0006000495.tif 000021
【図２１】
0006000495.tif 000022
【図２２】
0006000495.tif 000023
【図２３】
0006000495.tif 000024
【図２４】
0006000495.tif 000025
【図２５】
0006000495.tif 000026
【図２６】
0006000495.tif 000027
【図２７】
0006000495.tif 000028