<第1の実施形態>
[構成]
本願発明の第1の実施形態を、図面を参照して説明する。図1は、第1の実施形態における、情報処理システム1の構成を示す図である。
情報処理システム1は、情報処理装置10と、監視対象システム20と、入力装置30と、出力装置40と、を備える。
情報処理装置10は、監視対象システム20で発生したプログラムの活動において異常を検知し、検知結果を出力する。
異常を検知するとは、プログラムの異常な活動を検知することを含む。異常とは、例えば、マルウェアが介在していると考えられるプログラムの活動等である。ただし、ここでいう異常とは、セキュリティ上の異常には限定されない。例えば、プログラムのバグ等によって、プロセスが想定外の動作を行っている等といった異常も含まれる。
情報処理装置10は、グラフ生成部11と、分析グラフ記憶部12と、正常グラフ生成部13と、正常グラフ記憶部14と、検知部15と、出力部16と、を備える。
グラフ生成部11は、エッジ及びノードを用いて、監視対象システム20におけるプログラムの活動を表す分析グラフを生成する。グラフ生成部11は、生成したイベントグラフを用いて分析グラフを生成し、生成した分析グラフを分析グラフ記憶部12に格納する。
エッジとは、起動、停止、通信、又は、アクセス等のように、プログラムの活動内容を示す。プログラムの活動内容とは、プロセスを起動する、プロセスを停止する、ファイルをオープンする、ファイルからデータを読み込む、ファイルにデータを書き込む、ソケットをオープンする、ソケットからデータを読み込む、又「ソケットにデータを書き込む等が挙げられる。なお、ソケットに対するアクセスは、そのソケットに対応付けられた他の装置へのアクセスを意味する。なお、エッジには、プログラムの活動内容の他にも、成功可否、実行ユーザ、実行日時等の情報を、付加情報として含めることが可能である。
ノードとは、監視対象システム20で発生したプログラムの活動内容における要素を示す。ノードの具体例としては、ファイル、プロセス、ソケット、監視対象の装置、等が挙げられる。例えば、ノードがプロセスである場合、当該ノードにはそのプロセスの識別情報等を含む。プロセスの識別情報とは、例えば、そのプロセスのID等を含む。また、ノードがファイルである場合、当該ノードにはそのファイルの識別情報等を含む。ファイルの識別情報とは、例えば、そのファイルの名称やパス等である。また、ファイルの識別情報は、ファイルのハッシュ値や、ファイルシステムの識別情報、そのファイルシステム上でそのファイルを構成するディスクブロックの識別情報との組み合わせであっても良い。更に、ノードがソケットである場合、ノードは当該ソケットの識別情報を含み、ノードが監視対象の装置である場合、ノードは当該監視対象の装置の識別情報を含む。
ノードは、例えば、プログラムの活動内容における、主体と客体とを示すものであっても良いし、オブジェクトとサブジェクトとを示すものであっても良いし、親と子の関係性を示すものであっても良い。
以後、ノードが、プログラムの活動内容における主体と客体とを示すものである場合について説明を行う。例えば、ノードが主体と客体とを示すものである場合、グラフ生成部11は、監視対象システム20で発生したイベントにおける活動内容をエッジとして表し、なおかつその活動内容の主体と客体それぞれをノードとして表すイベントグラフを生成する。
グラフとは、複数のノード及びノード間を接続するエッジによって構成されるデータ構造である。
イベントとは、プログラムにおける主体が何らかの客体に対して行った活動を示す。イベントの具体例として、例えば、「特定のプロセスが特定のファイルを読み込む」活動等が、イベントの一例として挙げられる。
イベントグラフとは、グラフ生成部11が、取得したイベントを用いて生成したグラフである。具体的に、イベントグラフは、1つのエッジ及びそのエッジによって接続される2つのノードを用いて示される。
図2に、監視対象システム20内のあるコンピュータにおいて、プロセス「fileread.exe」がファイル「testdata.txt」を読み込むというイベントが発生した場合に、グラフ生成部11が生成するイベントグラフの概念図を示す。
図2に示すイベントグラフの概念図は、「fileread.exe」を示すノードN1と、「testdata.txt」を示すノードN2と、ノードN1及びノードN2を接続する「read」を示すエッジE1とで構成されている。
ここで、図2では、向きを表す矢印をエッジE1として示すことで、イベントの流れを表している。具体的には、エッジE1の始点と接続されているノードN1が活動内容の主体を示し、エッジの終点と接続されているノードN2が活動内容の客体を示す。そして、エッジE1が示す方向に向かって順にノードを見ていくことで、プログラムの活動内容を時系列に沿って把握することが可能となる。
なお、エッジの出力態様は、必ずしも向きを表すものに限定されず、直線などの向きを表さないものであってもよい。エッジが向きを表さない態様で出力される場合、例えば、「グラフにおいて、イベントの流れは左から右へ向かう向きで表される」といったルールを予め定めておき、そのルールに従ってグラフを生成するようにしても良い。
分析グラフとは、グラフ生成部11が生成し、分析グラフ記憶部12に記憶されるグラフである。具体的に、分析グラフは1以上のエッジ及びそのエッジによって接続される2以上のノードを用いて示される。
分析グラフ記憶部12は、グラフ生成部11が生成した分析グラフを記憶する。
グラフ生成部11は、分析グラフ記憶部12に記憶された分析グラフとイベントグラフとを用いて、新たな分析グラフを生成する。グラフ生成部11が、分析グラフを生成する構成について、具体的に説明する。
グラフ生成部11は、イベントグラフを生成した場合、当該イベントグラフと分析グラフ記憶部12に記憶されている分析グラフとの連続関係の有無を確認する。イベントグラフと分析グラフとの連続関係に関する説明については、後述する。
グラフ生成部11は、イベントグラフと分析グラフ記憶部12に記憶されている分析グラフとが連続関係を有する場合、当該分析グラフにイベントグラフを結合させることで、新たな分析グラフを生成し、分析グラフ記憶部12に格納する。グラフ生成部11は、イベントグラフが、分析グラフ記憶部12に記憶されている分析グラフと連続関係を有さない場合、当該イベントグラフを分析グラフとして分析グラフ記憶部12に格納する。
正常グラフ生成部13は、監視対象システム20における正常時の活動をエッジ及びノードを用いて表す正常グラフを生成する。具体的に、正常グラフ生成部13は、監視対象システム20における正常時の活動内容をエッジとして表し、なおかつその活動内容の主体と客体それぞれをノードとして表す正常グラフを生成し、正常グラフ記憶部14に格納する。正常グラフ生成部13が正常グラフを生成する際の説明については後述する。
正常グラフとは、監視対象システム20における正常時の活動をエッジ及びノードを用いて表したものである。また、正常グラフは、1以上のエッジ及びそのエッジによって接続される2以上のノードを用いて示される。
正常グラフ記憶部14は、正常グラフ生成部13が生成した正常グラフを記憶する。分析グラフ記憶部12及び正常グラフ記憶部14は、グラフデータベース等のように、グラフを記憶することが可能なデータベースを利用可能である。
検知部15は、グラフ生成部11が生成した分析グラフと正常グラフ記憶部14に記憶された正常グラフとを用いて、異常を検知する。具体的に、検知部15は、所定の条件を満たす場合に、グラフ生成部11が生成した分析グラフと、正常グラフ記憶部14に記憶された正常グラフとの類似度を算出し、当該類似度と予め定めた閾値とを用いて異常を検知する。
所定の条件とは、例えば、グラフ生成部11が、分析グラフとイベントグラフとを結合させることで分析グラフを生成した場合等でも良い。この場合、検知部15は、グラフ生成部11が分析グラフとイベントグラフとを結合させることで分析グラフを生成した場合に、当該分析グラフと、正常グラフとの類似度を算出し、当該類似度と予め定めた閾値とを用いて異常を検知する。
なお、所定の条件は上記の例に限られない。例えば、所定の条件は、グラフ生成部11が、イベントグラフを分析グラフとして格納した場合でも良い。つまり、検知部15は、グラフ生成部11が分析グラフを新たに生成する度に類似度を算出するとしても良い。
また、所定の条件は、グラフ生成部11が生成した分析グラフに含まれているノード又はエッジの数が所定の値になった場合でも良い。また、所定の条件は、グラフ生成部11が生成した分析グラフに所定のノード又はエッジが含まれている場合でも良い。更に、所定の条件は、正常グラフが有するノード又はエッジの数と、分析グラフが有するノード又はエッジの数との差分が所定の値以内の場合でも良く、検知部15は、当該差分が所定の値以上の場合は、類似度を算出しなくても良い。このように、所定の条件は、検知部15が分析グラフと正常グラフとの類似度を算出するタイミングを定める条件であれば、どのような条件を用いても構わない。
なお、検知部15が類似度を算出する方法は、「graph edit distance」、「Sim Rank」、又は「Maximum common subgraph」等のように、グラフとグラフとの類似度を算出できる方法であれば、どのような方法を用いても構わない。
出力部16は、検知部15が異常を検知した場合、当該異常に関する情報を出力装置40に出力する。
監視対象システム20は、ネットワーク等で接続された1以上のコンピュータを含む。具体的に、監視対象システム20は、PC(Personal Computer)、サーバマシン、タブレット端末、又は、スマートフォン等のような任意のコンピュータを含む。また、監視対象システム20は、物理マシンに限定されず、仮想マシンであっても良い。
監視対象システム20は、対象が1つであっても良いし、対象が複数であっても良い。なお、イベントは、対象毎にそれぞれ発生する場合や、対象間を通信することで発生する場合がある。
なお、監視対象システム20で発生するイベントは、ログ形式のデータやグラフ形式のデータ等、監視対象システム20で発生するイベントを示すものであるならば何でも良い。例えば、監視対象システム20で発生するイベントがログ形式のデータである場合、グラフ生成部11は、当該ログ形式のデータを用いてイベントグラフを生成する。
入力装置30は、情報処理装置10に対して情報を入力する。入力装置30とは、例えば、マウスやタッチパネル等のポインティングデバイスや、キーボード、又はスキャナ等が挙げられるが、情報処理装置10に対して情報を入力することが可能な装置であれば、これらに限定されるものではない。入力装置30が入力する内容としては、監視対象システム20における正常時の活動に関する情報が挙げられるが、本願発明はこれに限定されない。
出力装置40は、出力部16が出力した情報を受信し、当該情報を出力する。出力装置40とは、例えば、ディスプレイ、スピーカー、ランプ、又はプリンタ等が挙げられるが、外部出力が可能な装置であれば、これらに限定されるものではない。例えば、出力装置40がディスプレイの場合、ディスプレイは、出力部16が出力した情報を表示する。
[動作]
次に、第1の実施形態における動作を、フローチャートを用いて説明する。
図3は、情報処理装置10の動作を示すフローチャートである。
グラフ生成部11は、監視対象システム20で発生したイベントを取得する(S1)。
グラフ生成部11は、取得したイベントを用いてイベントグラフを生成する(S2)。
グラフ生成部11は、生成したイベントグラフが、分析グラフ記憶部12に記憶された分析グラフと連続関係を有するか否かを確認する(S3)。
グラフ生成部11は、生成したイベントグラフと分析グラフ記憶部12に記憶されている分析グラフとが連続関係を有する場合(S3でYes)、当該分析グラフにイベントグラフを結合することで、新たな分析グラフを生成する(S4)。
グラフ生成部11は、新たな分析グラフを分析グラフ記憶部12に格納する(S5)。
グラフ生成部11は、生成したイベントグラフが、分析グラフ記憶部12に記憶されている分析グラフと連続関係を有さない場合(S3でNo)、当該イベントグラフを分析グラフとして分析グラフ記憶部12に格納する(S6)。
検知部15は、所定の条件を満たす場合(S7でYes)、グラフ生成部11が生成した分析グラフと、正常グラフ記憶部14に記憶された正常グラフとの類似度を算出し、当該類似度と予め定めた閾値とを用いて異常を検知する(S8)。
出力部16は、検知部15が異常を検知した場合(S9でYes)、当該異常を検知した分析グラフに関する情報を出力する(S10)。
[具体例]
次に、第1の実施形態における詳細な動作について、具体例を用いながら説明する。
第1の実施形態は、正常グラフの生成フェーズと、分析グラフの生成フェーズと、異常検知フェーズとに分けることが可能である。
<正常グラフの生成フェーズ>
ユーザは、入力装置30を用いて、監視対象システム20における正常時の活動を示す情報を情報処理装置10に入力する。具体的に、ユーザは、隣接行列や隣接リスト等を入力しても良いし、描画ツール等を用いて生成したグラフを入力しても良い。
正常グラフ生成部13は、入力装置30から入力された情報を用いて、監視対象システム20における正常時の活動を示す正常グラフを生成し、正常グラフ記憶部14に格納する。
なお、正常グラフ生成部13は、ユーザによって入力された情報を用いて正常グラフを生成すると説明したが、本願発明はこれに限られない。
例えば、正常グラフ生成部13は、監視対象システム20におけるプログラムの活動を監視し、予め定められた条件に基づき正常と想定される活動を選定し、当該選定した情報を用いて正常グラフを生成することが可能である。また、監視対象システム20におけるプログラムの活動から、ユーザが正常と想定される活動を選定してもよいし、自動で正常と想定される活動が選定されてもよい。更に、正常グラフ生成部13は、監視対象システム20において正常なプログラムを実行させ、プログラムの活動を監視することにより、グラフ生成部11と同等の動作によってグラフを生成し、生成されたグラフを正常グラフとしてもよい。このように、正常グラフを生成することが可能であれば、どのような方法を用いても構わない。
<分析グラフ生成フェーズ>
グラフ生成部11は、監視対象システム20で発生したイベントを取得し、当該取得したイベントを用いてイベントグラフを生成する。なお、グラフ生成部11は、イベントを取得することができるのであれば、監視対象システム20から送られてきたイベントを取得する等のように、どのような方法を用いても構わない。
グラフ生成部11は、生成したイベントグラフと分析グラフ記憶部12に記憶されている分析グラフとが連続関係を有するか否かを確認する。
イベントグラフと分析グラフとが連続関係を有するか否かは、ノード一致条件に基づき判断することができる。ノード一致条件とは、例えば、イベントグラフに含まれるノードと、分析グラフに含まれるノードとが等しく、かつ、これらのノードを有するイベントの実行日時の差分が閾値以下の場合に、イベントグラフと分析グラフとが連続関係を有すると判断することができる。
イベントグラフに含まれるノードと、分析グラフに含まれるノードとが等しい場合とは、例えば、イベントグラフにおいて主体を示すノードと、分析グラフにおいて客体を示すノードとが同じノードである場合等が挙げられる。
なお、イベントグラフに含まれるノードと、分析グラフに含まれるノードとが等しい場合であっても、これらの実行日時が離れている場合、これらのグラフは一連の活動を示すものではなく、それぞれ独立した活動であることが考えられる。
実行日時とは、例えば、主体のノードを含むイベントの実行日時と、客体のノードを含むイベントの実行日時とのように、プログラムの活動が実行された時間を示す。従って、これらのノードの実行日時が閾値以上離れている場合、当該イベントグラフと分析グラフとは連続関係を有していないと判断することができる。
また、実行日時について、ミリ秒単位のような精度が高いタイムスタンプを参照する場合は、誤差が含まれることが想定される。従って、実行日時の差分を示す閾値については、誤差等も考慮した設定を行うことが好適である。
また、ノード一致条件には、「プログラムの実行ユーザが等しい場合」等のように、新たな条件を加えることや、既存の条件を削除することが可能である。このように、ノード一致条件に関する許容値や条件を適切に設定することで、セキュアシェル等の通信によるリモート操作であっても、グラフを適切に連結することが可能となる。
グラフ生成部11が、連続関係を有するイベントグラフと分析グラフとを連結する場合の具体例について、図面を用いて説明する。
図4に、分析グラフ記憶部12に記憶されている分析グラフの1例を示す。図4を参照すると、ノードN3とノードN4とがエッジE2によって接続され、ノードN4とノードN5とがエッジE3によって接続され、ノードN4とノードN6とがエッジE4によって接続されている。
図4に示す分析グラフは、例えば、「readwrite.exe」が「testdata.txt」を読み込んで、「csvwriter.sh」を起動するという動作を示すものであっても良い。例えば、この場合、図4に示す分析グラフは、ノードN3が「start.exe」を示し、エッジE2が「execute」を示し、ノードN4が「readwrite.exe」を示すものであっても良い。また、エッジE3が「execute」を示し、ノードN5が「csvwriter.sh」を示すものであっても良い。更に、エッジE4が「read」を示し、ノードN6が「testdata.txt」を示すものであっても良い。
ここで、監視対象システム20で、「csvwriter.sh」が「data.csv」に書き込み処理を行うというイベントが発生し、グラフ生成部11がイベントグラフを生成したとする。
図5に、グラフ生成部11が生成したイベントグラフの一例を示す。図5に示すように、グラフ生成部11が生成したイベントグラフは、ノードN5とノードN7とが、エッジE5によって接続されている。
なお、図5に示すイベントグラフは、ノードN5が「csvwriter.sh」を示し、エッジE5が「write」を示し、ノードN7が「data.csv」を示すものであっても良い。
なお、図5に示すイベントグラフと、図4に示す分析グラフとは、実行ユーザが等しく、共通するノードN5を有するイベントの実行日時の差分が閾値以下であるとする。
グラフ生成部11は、当該生成したイベントグラフと、分析グラフ記憶部12に記憶されている分析グラフとが、連続関係を有するか否かを確認する。
図5に示すイベントグラフは、図4に示す分析グラフと、ノードN5が等しく、実行ユーザが等しく、かつ、ノードN5を有するイベントの実行日時の差分が閾値以下であるため、グラフ生成部11は、連続関係を有すると判断することができる。グラフ生成部11は、図4に示す分析グラフに、図5に示すイベントグラフを結合することで、新たな分析グラフを生成し、当該分析グラフを分析グラフ記憶部12に格納する。
図6に、グラフ生成部11が新たに生成した分析グラフの一例を示す。図6に示すように、図4に示す分析グラフから、エッジE5及びノードN7が新たに追加されている。
なお、図4、図5、及び図6を用いて説明したグラフの例はあくまで一例である。本願は、例えば、ノードN3がノードN4を起動し、ノードN4がノードN5及びノードN6を起動し、ノードN6がノードN7を起動している場合等のように、プログラムの活動を示すものであれば、どのようなグラフであっても構わない。
次に、グラフ生成部11が生成したイベントグラフが、分析グラフ記憶部12が記憶する分析グラフと連続関係を有していない場合について説明する。
図7に、グラフ生成部11が生成したイベントグラフの一例を示す。図7に記載のように、グラフ生成部11が生成したイベントグラフは、ノードN8とノードN9とが、エッジE6によって接続されている。
グラフ生成部11は、図7に示すイベントグラフと、分析グラフ記憶部12に記憶されている分析グラフとが、連続関係を有するか否かを確認する。
グラフ生成部11は、図7に示すイベントグラフについて、ノード一致条件を満たす分析グラフが分析グラフ記憶部12に記憶されていない場合、当該グラフは連続関係を有していないと判断する。
グラフ生成部11は、図7に示すイベントグラフが、分析グラフ記憶部12に記憶されている分析グラフと連続関係を有さない場合、当該イベントグラフを新たな分析グラフとして、分析グラフ記憶部12に格納する。
なお、グラフ生成部11は、分析グラフ記憶部12に複数の分析グラフが記憶されている場合、記憶されている全ての分析グラフについて、イベントグラフとの連続関係を確認し、最も連続関係を有する分析グラフに、イベントグラフを結合しても良いが、本願はこれに限られない。例えば、分析グラフ記憶部12は、分析グラフを実行ユーザ毎に分類して記憶し、グラフ生成部11は、取得したイベントの実行ユーザが同じ分類の中から、当該取得したイベントと連続関係を有するグラフを探すように構成しても良い。分析グラフ記憶部12は、実行ユーザ毎の分類に限られず、実行日時毎等のように様々な条件を用いて、分析グラフを分類して記憶しても良く、グラフ生成部11は当該分類を用いて連続関係を有するグラフを探しても良い。このように構成することで、グラフ生成部11は、連続関係を有するグラフを効率良く探す事が可能となる。
なお、グラフ生成部11は、監視対象システム20で発生するイベントについて、グラフ形式のデータとして取得しても良い。グラフ生成部11は、監視対象システム20で発生するイベントについて、グラフ形式のデータとして取得した場合、イベントグラフを生成せずに、当該グラフ形式のデータが分析グラフ記憶部12に記憶された分析グラフと連続関係を有しているか否かを確認する。グラフ生成部11は、当該取得したグラフ形式のデータが、分析グラフと連続関係を有している場合、当該グラフ形式のデータと分析グラフとを結合することで新たな分析グラフを生成する。グラフ生成部11は、当該取得したグラフ形式のデータが、分析グラフと連続関係を有していない場合、当該取得したグラフ形式のデータを新たな分析グラフとして、分析グラフ記憶部12に格納する。
<異常検知フェーズ>
検知部15は、所定の条件を満たす場合に、グラフ生成部11が生成した分析グラフと、正常グラフ記憶部14に記憶された正常グラフとの類似度を算出し、当該類似度と予め定めた閾値とを用いて異常を検知する。
一例として、所定の条件が、グラフ生成部11が、分析グラフとイベントグラフとを結合させることで分析グラフを生成した場合の具体例について説明する。例えば、検知部15は、グラフ生成部11が分析グラフとイベントグラフとを結合させることで分析グラフを生成した場合に、当該分析グラフと、正常グラフとの類似度を算出し、当該類似度が予め定めた閾値以下の場合に異常を検知する。
なお、検知部15が異常を検知する手法は、上記手法に限られない。例えば、検知部15は、分析グラフと正常グラフとが完全一致していない場合に異常を検知しても良い。このように、検知部15は、分析グラフと正常グラフとを用いて異常を検知するものであれば、どのような手法を用いても良い。
また、検知部15は、分析グラフが有するノードやエッジの数に応じて、閾値を変更しても良い。例えば、分析グラフは、様々な活動を行う度に、当該分析グラフが有するノードやエッジの数が多くなる。分析グラフが有するノードやエッジの数が多くなるにつれて、予め定められた正常グラフとの類似度が低下し、その分析グラフが正常な活動を示すものであったとしても、異常と検知されてしまうおそれがある。従って、検知部15は、分析グラフが有するノードやエッジの数が所定の数よりも多くなる際は異常と検知するための閾値を下げる等のように、分析グラフが有するノードやエッジの数に応じて閾値を変更することで、正常な活動に対して異常と検知することを防止することができる。このように、検知部15は、分析グラフが有するノードやエッジの数に応じて閾値を変更することで、柔軟な異常検知を行うことが可能となる。
また、検知部15が分析グラフとの類似度を算出する対象は、正常グラフ記憶部14に記憶された全ての正常グラフでも良いし、正常グラフ記憶部14に記憶された一部の正常グラフでも良い。例えば、検知部15は、正常グラフ記憶部14に記憶された全ての正常グラフと、グラフ生成部11が生成した分析グラフとの類似度を算出する際、類似度が閾値以上の正常グラフが1つも無い場合に異常と判断することができる。このように、検知部15は、正常グラフ記憶部14に記憶された全ての正常グラフと分析グラフとの類似度を算出することで、精度良く異常検知を行うことが可能となる。また、検知部15は、正常グラフ記憶部14に記憶された一部の正常グラフと分析グラフとの類似度を算出することで、全ての正常グラフについて類似度を算出する場合に比べて、処理を軽減することができる。
なお、類似度を算出する対象となる正常グラフは、ユーザが選定しても良いし、所定の基準等を定めて自動で選定されるようにしても良い。例えば、検知部15は、分析グラフが有する最新のノードと最新のノードが一致する正常グラフについて、類似度を算出する対象として選定しても良い。このように、検知部15が、類似度を算出する対象となる正常グラフを選定できるのであれば、所定の基準等は何でも良い。
出力部16は、検知部15が異常を検知した場合、当該異常に関する情報を出力する。
異常に関する情報として、例えば、出力部16は、検知部15が異常を検知したグラフの全体を表示するように出力をしても良いし、正常グラフとの不一致箇所のみを表示するように出力しても良い。また、正常グラフとの不一致箇所を強調表示するように出力しても良いし、正常グラフとの一致箇所をグレースケールや点線等を用いて表示を変更するように出力しても良いし、異常と判断された原因を表示するように出力しても良い。
このように、出力部16は、グラフ生成部11が生成した分析グラフと正常グラフとの一致箇所及び不一致箇所について互いに異なる態様で出力することで、ユーザ等が容易に異常な箇所を特定することが可能となる。
なお、分析グラフと正常グラフとの一致箇所及び不一致箇所を判定する手法については、分析グラフと正常グラフとを対比することで一致部分と不一致部分とを判定する手法等のように、様々な手法を採用することが可能である。
更に、出力部16は、スピーカーで流す音声を出力しても良いし、ランプの点灯を変更させるように出力しても良いし、異常に関する情報をプリントするように出力しても良い。このように、出力部16が出力を行う異常に関する情報は、任意に変更可能である。
一例として、検知部15が図6に示す分析グラフの異常を検知した場合における、出力部16の出力例について説明する。このとき、正常グラフ記憶部14には図4に示すグラフが正常グラフとして記憶されており、グラフ生成部11が図6に示す分析グラフを生成したものとする。図8に、出力部16が、分析グラフと正常グラフとの不一致箇所を強調表示するように出力した場合の具体例を示す。
図8に示す具体例では、ノードN5とノードN7との間を枠線で囲むことで、正常グラフとの不一致箇所を強調表示している。なお、出力部16は、強調表示だけでなく、図8の吹き出し中に示すように、注意書きや異常と判断された原因等を表示するように出力しても良い。このように、出力部16が正常グラフとの不一致箇所を、一致箇所と異なる態様で出力することで、ユーザは、異常な活動を直感的に把握することができる。
なお、出力部16は、検知部15が検知した異常に関する情報を外部の記憶装置等に出力し、当該情報を記憶させる等、出力装置40以外の装置に出力することも可能である。
なお、出力部16が出力する情報は、例えば、監視対象システム20の監視を行うユーザによって利用される。ユーザは、出力部16が出力する情報を出力装置40から取得することにより、監視対象システム20の状況を把握することができる。より具体的には、ユーザは、出力装置40から情報を取得することにより、監視対象システム20において、異常な状態を表すプログラムの活動が発生していないかどうかを確認する。なお、監視対象システム20において異常な状態を表すプログラムの活動が発生した場合、ユーザが当該異常に対する対処を行ってもいいし、情報処理装置10が当該異常に対する対処を行っても良い。
なお、入力装置30と出力装置40とは、別個の装置として説明したが、入出力装置として、1つの装置にまとめても良い。また、入力装置30及び出力装置40と情報処理装置10とは別個の装置として説明したが、情報処理装置10は、入力装置30又は出力装置40を含めても良い。
なお、グラフ生成部11は、イベントとグラフとの連続関係を確認する際、イベントグラフを生成した上で、分析グラフとの連続関係を確認しても良い。また、グラフ生成部11は、イベントからグラフを生成しない状態、つまり、ログ等の状態から、分析グラフ記憶部12に記憶された分析グラフとの連続関係を確認しても良い。グラフ生成部11は、連続関係を有する場合、当該ログと分析グラフとを用いて新たな分析グラフを生成し、連続関係を有さない場合、当該ログを用いて分析グラフを生成する。
なお、グラフ生成部11は、連続関係を有するイベントグラフと分析グラフとを結合し、新たな分析グラフを生成することで、連続的に推移するような活動を、異常検知の対象となる分析グラフとして表現することが可能となる。
なお、ノード、エッジ、分析グラフ、正常グラフ、監視対象システム20内の監視対象、実行ユーザ、及び実行日時等には、それぞれ重み付けをすることが可能である。それぞれに適切な重み付けを設定することで、異常検知の精度を向上させることが可能である。
[効果]
本願発明は、上記のような構成を有することにより、連続的に推移するような活動であっても、異常を検知することが可能となる。
特に、本願発明は、マルチホップの活動について、異常を検知する際に効果を奏する。具体的に、本願発明は、異常を検知する対象となる活動(分析グラフ)及びホワイトリスト(正常グラフ)にグラフ構造を用いているため、ユーザAからユーザBへ推移し、ユーザBからユーザCへ推移するようなマルチホップの活動についても、異常を検知することが可能となる。
また、グラフ構造が有するマルチホップでの親子関係や、グラフが有する様々な付加情報を用いることで、異常検知の精度を向上させることが可能である。更に、異常を検知する対象となる活動やホワイトリストにグラフを用いることで、ユーザが活動を監視する際の視認性を向上させることができる。
<第2の実施形態>
[構成]
本願発明の第2の実施形態を、図面を参照して説明する。図9は、第2の実施形態における、情報処理装置100のブロック図を示す図である。第2の実施形態における情報処理装置100は、生成部200と、正常グラフ記憶部300と、検知部400とを含む。
生成部200は、エッジ及びノードを用いてプログラムの活動を表す分析グラフを生成する。
正常グラフ記憶部300は、監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶する。
検知部400は、生成部200が生成した分析グラフと正常グラフ記憶部300が記憶する正常グラフとに基づいて異常を検知する。
[動作]
次に、本願発明の第2の実施形態における主な動作を説明する。
図10は、情報処理装置100の動作を示すフローチャートである。
生成部200は、エッジ及びノードを用いてプログラムの活動を表す分析グラフを生成する(S100)。
正常グラフ記憶部300は、監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶する(S200)。
検知部400は、生成部200が生成した分析グラフと正常グラフ記憶部300が記憶する正常グラフとに基づいて異常を検知する(S300)。
本願発明は、上記のような構成を有することにより、連続的に推移するような活動であっても、異常を検知することが可能となる。
[プログラム]
本願発明におけるプログラムは、コンピュータに、本願発明の処理を実行させるプログラムである。このプログラムをコンピュータにインストールし、実行することによって、本願発明を実現することができる。
ここで、本願発明におけるプログラムを実行することによって、本願発明を実現するコンピュータについて図11を用いて説明する。
図11は、本願発明を実現するコンピュータの一例を示すブロック図である。
図11に示すように、コンピュータ110は、CPU111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
CPU111は、記憶装置113に格納された、本願発明におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。また、本願発明におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本願発明におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであっても良い。
また、記憶装置113は、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス114は、CPU111と、入力機器118との間のデータ伝送を仲介する。入力機器118とは、例えば、キーボード及びマウス並びにタッチパネル等が挙げられる。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と他のコンピュータとの間のデータ伝送を仲介する。
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、又はフレキシブルディスク(Flexible Disk)等の磁気記憶媒体が挙げられる。更に、記録媒体120の具体例としては、CD-ROM(Compact Disk Read Only Memory)などの光学記憶媒体も挙げられる。
ここまで、本願発明を実施するための形態を説明してきたが、本願発明は上述した実施形態に限定されるものではない。例えば、本明細書で記載したフローチャートにおける処理の順序はあくまでも一例に過ぎず、本願発明を実施する際に矛盾のない範囲で変更する事が可能である。また、本明細書で記載した構成はあくまでも一例に過ぎず、本願発明を実施する際に矛盾のない範囲で構成を変更する事が可能である。即ち、本願発明は、本願発明を実施する際に矛盾のない範囲で当業者が理解し得る様々な態様を適用することができ、上記各実施形態の変形例や、その組合せ等も、本願発明の技術的範囲に含まれる。
[付記]
本発明における一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置、情報処理方法、情報処理プログラム、情報処理システムの構成の概略を説明する。ただし、本発明は、以下の構成に限定されない。
(付記1)
エッジ及びノードを用いてプログラムの活動を表す分析グラフを生成する生成部と、
監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶する正常グラフ記憶部と、
前記生成部が生成した分析グラフと前記正常グラフ記憶部が記憶する正常グラフとに基づいて異常を検知する検知部と、
を有する情報処理装置。
(付記2)
前記検知部は、前記正常グラフ記憶部が記憶する正常グラフと、前記生成部が生成した分析グラフとの類似度を算出し、当該類似度に基づき異常を検知する、
付記1に記載の情報処理装置。
(付記3)
前記検知部は、前記生成部が分析グラフを生成したタイミングで類似度を算出する、
付記2に記載の情報処理装置。
(付記4)
前記生成部が生成した分析グラフを格納する分析グラフ記憶部を更に有し、
前記生成部は、1つのエッジ及びそのエッジによって接続される2つのノードを有するイベントグラフを生成し、当該イベントグラフと前記分析グラフ記憶部が記憶する分析グラフとを用いて、新たな分析グラフを生成する、
付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記生成部は、イベントグラフと前記分析グラフ記憶部が記憶する分析グラフとの連続関係を確認し、イベントグラフと前記分析グラフ記憶部が記憶する分析グラフとが連続関係を有する場合は、当該分析グラフにイベントグラフを結合することで、新たな分析グラフを生成する、
付記4に記載の情報処理装置。
(付記6)
前記生成部は、イベントグラフと前記分析グラフ記憶部が記憶する分析グラフとの連続関係を確認し、イベントグラフと前記分析グラフ記憶部が記憶する分析グラフとが連続関係を有さない場合は、当該イベントグラフを新たな分析グラフとして、前記分析グラフ記憶部に格納する、
付記4又は5に記載の情報処理装置。
(付記7)
検知部が異常を検知した場合、当該異常に関する情報を出力する出力部を更に有し、
前記出力部は、正常グラフと分析グラフとの一致部分と、正常グラフと分析グラフとの不一致部分とを、異なる態様で出力する、
付記1乃至6のいずれか1項に記載の情報処理装置。
(付記8)
エッジ及びノードを用いてプログラムの活動を表す分析グラフを生成し、
監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶し、
前記分析グラフと前記正常グラフとに基づいて異常を検知する、
情報処理方法。
(付記9)
エッジ及びノードを用いてプログラムの活動を表す分析グラフを生成し、
監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶し、
前記分析グラフと前記正常グラフとに基づいて異常を検知する処理をコンピュータに実行させる、
情報処理プログラム。
(付記10)
情報処理装置と、
1以上のコンピュータを含む監視対象と、
前記情報処理装置に対して情報を入力する入力装置と、
前記情報処理装置が処理を行った情報を出力する出力装置と、
を有し、
前記情報処理装置は、
前記監視対象におけるプログラムの活動をエッジ及びノードを用いて表す分析グラフを生成する生成部と、
前記入力装置から入力された情報に基づき、監視対象における正常時の活動をエッジ及びノードを用いて表す正常グラフを記憶する正常グラフ記憶部と、
前記生成部が生成した分析グラフと前記正常グラフ記憶部が記憶する正常グラフとに基づいて異常を検知する検知部とを有する、
情報処理システム。