(58)【調査した分野】(Int.Cl.,DB名)
前記分類可達性分析部は、あらかじめ定められた前記ノードの種別または前記エッジの種別と前記分析種別との間の関係の重要性を示す重み情報に基づいて前記グラフ構造をクラスタリングし、前記部分グラフ構造を抽出する、
ことを特徴とする請求項1に記載の情報分析システム。
【発明を実施するための形態】
【0018】
以下、実施例を図面を用いて説明する。
【0019】
図1は、本願の技術を適用した情報分析システムの構成図の例である。
【0020】
情報分析システム1000は本発明にかかる情報分析システム、情報分析方法を適用したシステムであり、情報源1100から各種の情報を取得し、関係性を分析した上で情報を構造化情報1051に保持し、また、分析依頼者1200からの分析依頼に基づいて上記の蓄積した情報を分析してその結果を返すシステムである。なお、それぞれの処理の詳細については後述する。
【0021】
情報取得部1001、および、関係情報生成部1002はいずれも、後述する
図8に示す構造化情報の形成処理において用いる機能である。
【0022】
情報取得部1001は、
図8に後述する構造化情報の形成処理において用いる機能であり、情報源1100から各種の情報を取得し、関係情報生成部1002に当該情報を入力する機能である。
【0023】
情報源1100から機械的に情報を取得する場合には、各情報源1100用のAPI(Application Programming Interface)を具備する。
【0024】
また、その際、取得する情報のフォーマットは後述の関係分析ロジック1052の入力情報種別4001で規定された種別の何れかでなければならない。
【0025】
情報源1100が本システムの運用員の手入力である場合には、情報取得部1001は手入力用のUI(User Interface)を備える必要がある。上記UIは、関係分析ロジック1052の入力情報種別4001で規定された種別の何れかを入力するための機構であってもよいし、あるいは、後述の構造化情報1051を直接編集するための機構であってもよい。
【0026】
情報源1100として手入力を受け付けることで、例えば、「後になってから、以前挙がったアラートAは実はマルウェアBと関係があったことが判明した」といった場合のように、既に入力した特定の情報と別の特定の情報の関係を明示的に編集することができ、その結果、後述する分析処理を行う際に、機械的に分析した情報と人が判断して判る情報とを組み合わせて分析できるようになる。
【0027】
情報源1100としては、上述の情報源1100の何れか一つのみに限るものではなく、情報源1100として複数種類の機器やWEBサイトなどを用い、それぞれにあわせて情報取得部1001も複数保持することができる。
【0028】
関係情報生成部1002は、情報取得部1001から受け取った情報について、関係分析ロジック1052を用いて、情報と、情報間の関係性をそれぞれ抽出するための機能であり、抽出結果は、構造化情報1051に格納する。処理の詳細は後述する。
【0029】
分析受付・応答インタフェース1003、起点情報検索部1004、枝重要度決定部1005、分類・可達性分析部1006、結合性分析部1007、出力生成部1008の6つの機能はいずれも後述の
図9に示す構造化情報の分析処理において用いる機能である。
【0030】
分析受付・応答インタフェース1003は、後述する分析依頼者1200から、分析対象の情報と、分析種別を受け取り、後述の分析処理の結果を上記の分析依頼者1200に返すためのインタフェースである。
【0031】
起点情報検索部1004は、分析受付・応答インタフェース1003を介して分析依頼者1200から受け取った分析対象の情報について、構造化情報1051の中で適合する情報を検索し、起点ノードである起点情報として返す機能である。処理の詳細については後述する。
【0032】
枝重要度決定部1005は、分類・可達性分析部1006の前処理として、分析依頼者1200が入力した分析種別情報と、枝重み情報1054を照らし合わせることで、それぞれの枝に重みを入れる処理である。
【0033】
本処理は分類・可達性分析部1006を実施するために必ずしも必要な処理ではない。すなわち、本処理を行わない場合、分析の種別に関わらず全ての枝を常に重さ1として処理することも可能である。
【0034】
しかしながら、本処理を行うことで、分析種別毎に、特定の種別の情報や特定の種別の関係性を重要視する、あるいは逆に特定種別の関係性の存在を軽視する、といった処理が可能になり、分析の精度を向上できる効果がある。
【0035】
分類・可達性分析部1006は、まず、情報の構造を枝の重みも考慮した上でクラスタリングし、起点情報検索部1004の結果である起点情報とその起点情報から到達可能な抽出対象ノードである抽出対象情報が含まれるクラスタを抽出する。さらに、抽出したクラスタの中で、抽出対象指定情報1053に含まれる分析種別を一つ以上含むクラスタのみを抽出する機能である。処理の詳細は後述するが、本処理の結果、分析種別に応じて、関係性の強い情報の一覧を取得することができる。
【0036】
結合性分析部1007は、本実施例で特に特徴的な機能であり、分類・可達性分析部1006の結果を入力として、起点情報から、各抽出対象情報への独立パスの数を計算する処理である。詳細は後述する。
【0037】
出力生成部1008は、結合性分析部1007の結果と、出力生成ロジック1055を用いて、分析受付・応答インタフェース1003を介して最終的に分析依頼者1200へ返すための出力を生成する処理である。詳細は後述する。
【0038】
構造化情報1051は、情報分析システム1000が分析対象とする情報である。保持する情報の詳細については
図3を用いて後述する。
【0039】
関係分析ロジック1052は、関係情報生成部1002が使用する情報である。保持する情報の詳細については
図4を用いて後述する。
【0040】
抽出対象指定情報1053は、分類・可達性分析部1006が使用する情報である。保持する情報の詳細については
図6を用いて後述する。
【0041】
枝重み情報1054は、枝重要度決定部1005が使用する情報である。保持する情報の詳細については
図5を用いて後述する。
【0042】
出力生成ロジック1055は、出力生成部1008が使用する情報である。保持する情報の詳細については
図7を用いて後述する。
【0043】
情報源1100は、本システムが取り扱う情報を取得する際の情報源である。例えば情報源1100は、ネットワーク機器やサーバ機器、あるいはセキュリティ機器であり、ログやアラートを情報として情報取得部1001に渡す。また、例えば情報源1100は、本システムの運用員などにより入力される情報である。人手により入力インタフェースを介して入力された情報源1100は、情報取得部1001に引き渡される。情報源1100は、上記のいずれか一つのみに限るものではなく、それらを組み合わせた複数の情報源であってよい。
【0044】
分析依頼者1200は、情報分析システム1000の利用者であり、分析したい対象の情報と、希望する分析種別を分析受付・応答インタフェース1003を介して本システムに入力し、その結果を同じく分析受付・応答インタフェース1003を介して受け取る。
【0045】
図2は、
図1の各構成要素の構成を例示した図である。
【0046】
これらの機器2000は、CPU2001と、メモリ2002と、インターネットやLANを介して他の装置と通信を行うための通信装置2004と、キーボードやマウス等の入力装置2005と、モニタやプリンタ等の出力装置2006と、読取装置2007と、ハードディスク等の外部記憶装置2003とが、インタフェース2008を介して接続されている。また、読取装置2007にはICカードやUSBメモリのような、可搬性を有する記憶媒体2009を接続することができる。
【0047】
本実施例における情報分析システム1000を実現するための装置や機器は、これらの機能を実現するプログラムがメモリ2002上にロードされ、CPU2001により実行されることにより具現化される。これらのプログラムは、あらかじめ、上記機器2000の外部記憶装置2003に格納されていても良いし、必要なときに、読取装置2007や通信装置2004と当該機器2000が利用可能な媒体を介して、他の装置から上記外部記憶装置に導入されてもよい。
【0048】
上記機器2000が利用可能な媒体とは、たとえば、読取装置2007に着脱可能な記憶媒体2009、または通信装置2004に接続可能なネットワーク2010またはネットワーク2010を伝搬する搬送波やディジタル信号を指す。そして、プログラムは一旦外部記憶装置2003に格納された後、そこからメモリ2002上にロードされてCPU2001に実行されてもよいし、あるいは外部記憶装置2003に格納されることなく、直接メモリ2002上にロードされて、CPU2001に実行されてもよい。
【0049】
図3は、情報分析システム1000が保持する構造化情報1051の例を示した図である。
【0050】
構造化情報1051としては、本システムは大きく、蓄積情報3000と、関係性情報3100の2種の情報を保持する必要がある。
【0051】
蓄積情報3000とは、本システムが蓄積する情報そのものであり、本実施例においては、例えば具体的には、図示したように、id3001と、種別3002と、内容3003の3つのカテゴリの情報を組にして保持する。
【0052】
id3001は、個々の情報をユニークに識別するためのID(Identifier)であり、必須ではないが、保持することで処理を簡潔に記載することが可能になる。
【0053】
種別3002は、ノードが有する個々の情報がどのようなカテゴリのものであるかを識別するための情報であり、本実施例において、抽出指定情報1053や、枝重み情報1054、出力生成ロジック1055と組み合わせて用いることで分析精度を向上したり、出力情報に付加情報を加えたりする効果を得られる。詳細については後述する。
【0054】
種別3002としては、1つの情報は1つの種別しか保持できないわけではなく、1つ以上の複数の種別を同時に保持してよい。その場合、後述の処理における「種別が一致した場合」の条件を、「いずれかの種別に一つでも一致した場合」と読み替えることで問題なく処理可能である。
【0055】
また、種別3002として指定可能な種別は、例示したものに限るわけではなく、情報を入力する際、適宜任意の種別を指定できる。すなわち、仮にそれまでに一つも現れなかった種別であっても、特にその他の処理を行わずに新しい種別を追加してよい。ただし、新しい種別は適宜任意に追加してよいが、本実施例の分析処理の精度を保つためには、同じ種別の情報には、同じ種別名が指定されている必要がある。すなわち、内容が従業員の氏名などをあらわすものであれば、それらには少なくとも「従業員」といった、共通の種別が一つは含まれているべきである。
【0056】
内容3003としては、その情報の内容である実体を保持することができる。本実施例では、任意のkey−valueを保持することで、情報の内容を表現しているが、特にkey−value方式に限定するわけではない。
【0057】
蓄積情報3000の例としては、例えば1行目は『ファイル名「hoge.exe」という名称のファイル』という情報がID0001、種別fileで登録されていることを示している。その他の行も同様である。
【0058】
関係性情報3100は、蓄積情報3000の個々の情報がどのような関係にあるかを保持する。本実施例においては、例えば、id3101と、from−id3102と、to−id3103と、種別3104を保持する。
【0059】
id3001は、ノード間のパスを示すエッジが有する個々の関係性をユニークに識別するためのIDであり、必須ではないが、保持することで処理を簡潔に記載することが可能になる。
【0060】
from−id3102、to−id3103、種別3104は、蓄積情報3000内のどの情報がどの情報とどのように関係があるかを表すエッジが有する情報である。具体的には、from−id3102は、エッジの起点となるノードのIDであり、to−id3103は、そのエッジの終点となるノードのIDである。種別3104は、そのエッジが有する関係性がどのようなカテゴリのものであるかを識別するための情報である。
【0061】
関係性情報3100の例としては、例えば1行目のid「r0001」は、『id「0006」が表す情報である、ハッシュ値「abcde1234」のmw(Malware)は、id「0001」が表す、名称「hoge.exe」のファイルを生成する』ことを意味している。その他の行も同様である。
【0062】
なお、本実施例においては、from−id3102、to−id3103として関係性に有向性を持たせているが、方向性を取り扱わず、無向性の関係性を保持してもよい。
【0063】
図4は、情報分析システム1000が保持する関係分析ロジック1052の例を示した図である。
【0064】
関係分析ロジック1052は、情報源1100から取得した情報を機械的に分析して構造化情報1051に保持するためのロジックを規定する情報をあらかじめ保持する。
【0065】
具体的に本実施例においては、情報源1100から取得した情報の種別を規定する入力情報種別4001と、その分析ロジック4002を保持することで実現する。
【0066】
例えば1行目は、Webサイト「hoge.security.com」から取得するウェブページについては、同じく1行目に記載したXPathを処理することで、蓄積情報3000と、その関係性情報3100として取り出せることを意味している。
【0067】
図5は、情報分析システム1000が保持する枝重み情報1054の例を示した図である。
【0068】
枝重み情報1054は、分析依頼者1200が指定した分析種別に応じ、どの種別の情報や、どの種別の関係性を重要視するか、あるいは軽視するかといった関係の重要性を規定するための情報である。
【0069】
具体的に本実施例においては、分析種別5001と、カテゴリ5002と、ノードorエッジ5003と、重み5004を保持する。
【0070】
分析種別5001は、分析依頼者1200が本システムに対して依頼可能な分析の種別の何れかである。
【0071】
カテゴリ5002は、蓄積情報3000の種別3002(すなわちノードの種別)、あるいは、関係性情報の種別3104(すなわちエッジの種別)のいずれかの値、もしくは任意の関係性を意味する「(その他)」である。
【0072】
ノードorエッジ5003は、カテゴリ5002が種別3002の値である場合はそのことを意味する「ノード」、逆に、種別3104の場合は、そのことを意味する「エッジ」という情報を保持する。なお、カテゴリ5002が「(その他)」の場合は、エッジとノードのいずれも含みうるため「−」を保持する。
【0073】
重み5004は、関係性をどの程度重視するかの指標であり、1がもっとも重視する、0は当該分析においては、関係性が存在しないものとみなすことを意味する。
【0074】
例えば「原因」を分析する際には、「通信」という種別の関係は重み1にする一方、例えば「アナリスト」という種別のノードから出ている全ての関係は重み0.1としてほとんど考慮に入れない、ことを意味している。
【0075】
図6は、情報分析システム1000が保持する抽出対象指定情報1053の例を示した図である。
【0076】
抽出対象指定情報1053は、あらかじめ分析の結果として出力する対象の情報のカテゴリを規定する情報である。
【0077】
具体的に本実施例においては、分析種別6001と、抽出対象カテゴリ6002を保持する。
【0078】
例えばこの例は、「原因」種別を分析する際には、最終的な結果として「マルウェア」カテゴリか「脆弱性」カテゴリの情報が出力対象とすることを意味している。
【0079】
図7は、情報分析システム1000が保持する出力生成ロジック1055の例を示した図である。
【0080】
出力生成ロジックは、分析結果を最終的に分析依頼者に表示する際、どのような情報を表示するかを規定するロジックである。
【0081】
本実施例においては、情報種別7001と、その種別の情報を表示する際に併せて表示する、付加情報内容7002と、その種別の情報が分析結果として抽出された根拠を文章として表示するための文章化ロジック7003を保持する。
【0082】
例えばこの例は、「対策」種別の情報は、その対策情報のダウンロードリンクを結果に併せて表示し、文章化ロジックは標準的な処理でよいことを意味している。
【0083】
なお、本実施例において標準的な文章化ロジックとは、『<from−id3102の情報>は、<to−id3103の情報>を<3104種別>する』のように主語、目的語、述語の順で連結する処理を表す。
【0084】
文章化ロジックとしては、例示した「従業員」種別のように、例外的な文章化方法を指定してもよい。この例では、関係性の種別が「通信履歴」、あるいは「保持」の場合は<from−id3102の情報>の後に“の端末”という文言を追加することを表している。
【0085】
以降、
図8から
図9を用いて、本解析システムの基本的な処理フローを例示し、さらに
図10から
図13を用いて、構造化情報がどのようなに処理されるかを説明する。
【0086】
図8は、
図3に示した構造化情報を形成する処理を表すフローの例である。
【0087】
まず処理8001において、情報取得部1001が、情報源1100から情報を取得する。その際、情報取得部1001は自身がどのような種別の情報を取得したかを記憶しておく。
【0088】
なお、情報の種別とは、関係分析ロジック1052の入力情報種別4001が規定するものの何れかである。
【0089】
また、情報源1100が手入力だった場合は、以降の処理に進まず
図1の説明において説明したように、直接構造化情報1051を編集してもよい。
【0090】
次に処理8002において、関係情報生成部1002は、処理8001において取得され情報を、関係性ロジック1052の分析ロジック4002に従って分析する。
【0091】
最後に処理8003において、関係情報生成部1002は、処理8002の分析結果を、蓄積情報3000と、関係性情報3100として保存する。
【0092】
図10に、そのようにして形成した構造化情報1051の一例をグラフ構造として表現したものを示す。
【0093】
例えば10001、10003は蓄積情報3000の例のそれぞれ1行目のid「0001」の情報と、id「0006」の情報を表し、また、その2つのノード間のエッジである10002は、関係性情報3100の例の1行目のid「r0001」の関係を表している。その他のノードと、エッジも同様である。また、10004として表したような破線で囲んだグレーの領域は、さらに同様のグラフ構造が連結していることを示している。
【0094】
図9は、
図8に示す処理によって形成された構造化情報1051を用いて、分析依頼者1200から受け取った分析条件と分析種別に従って情報を分析する処理のフローの例を示している。
【0095】
まず処理9001において、情報分析システム1000は、分析受付・ 応答インタフェース1003を介して、分析依頼者1200から分析対象である情報と、分析種別を受け取る。
【0096】
本実施例では、分析対象である情報とは具体的には文字列であって、例えば、何らかのセキュリティ機器からアラートが挙がった際のアラートに記載されたホスト名や、IPアドレスであってもよいし、不審なファイルのハッシュ値でもよい。
【0097】
また、分析種別とは、分析依頼者1200が何を知りたいのかを自ら指定するものであって、枝重み情報1054の分析種別5001のいずれかと一致する必要がある。
【0098】
次に、処理9002において、起点情報検索部1004は、処理9001で受け取った分析対象の文字列とマッチする内容を保持する蓄積情報3000を検索し、結果を起点情報として返す。
【0099】
マッチするとは、本実施例では文字列が一致、もしくは部分一致することである。複数マッチした場合は、それら全てを返す。本実施例では、分析対象が通信先の一つにマッチした場合の例を、
図11の11002の二重線のノードとして表している。
【0100】
次に、処理9003において、枝重要度決定部1005は、処理9001で取得した分析種別と、枝重み情報1054を照らし合わせ、各枝に重要度を設定する。
【0101】
本実施例では、分析種別が例えば「原因」であった場合について、重要度が0.1以下の関係性を、関係性がほとんど存在しないものとして、
図11の11001のように破線の矢印で表している。
【0102】
次に、処理9004において、分類・可達性分析部1006は、処理9003において設定した枝の重みを考慮した上で、グラフをクラスタリングする。グラフ情報のクラスタリング手法は既知の手法が多数あるが、本実施例において非常に好適な手法の一つは、コミュニティ分類と呼ばれる手法である。
【0103】
コミュニティ分類とは具体的には、グラフ構造をグラフラプラシアンと(あるいはラプラシアン行列とも)呼ばれる行列形式で表現し、そのゼロ固有値(もしくはゼロに近い固有値)と、その固有値に対応する固有ベクトルを計算して求める。最後にグラフ構造からグラフラプラシアンへの写像の逆写像を用いて、固有ベクトルをグラフのノード集合に引き戻すことで、グラフをいくつかの部分グラフに分割する方法である。この分割結果として取得される各部分グラフは、全体のグラフの中でそれぞれ、枝の重みが大きく、さらにそのような枝が密に張られているような部分が優先的に残るように上手く分割されたものであることが知られている。
【0104】
本処理においては、分類・可達性分析部1006は、分類結果の部分グラフの中で、起点情報であるノードを含む部分グラフを抽出し、処理結果として返す。
図11の11003に示したような二重線によって、本実施例においてコミュニティ分類を行った結果としての、全体グラフの分割線を示す。すなわち、本処理の結果は、部分グラフの中でも起点情報である11002を含むものであり、すなわち
図12に示すようなグラフが結果として返される。なお、起点情報が複数存在する場合は、各起点情報についてそれぞれ部分グラフを返す。
【0105】
次に、処理9005において、結合性分析部1007は、処理9004の結果の部分グラフについて(結果が複数存在する場合はそれぞれについて)、抽出対象指定情報1053を参照し、分析種別6001が処理90001で取得したものと一致する行の、抽出対象カテゴリ6002で指定された種別に一致する蓄積情報3000(すなわちノード)を全て検索する。この処理を行うことにより、起点情報に対する終点となる抽出対象情報がわかる。また、その抽出対象情報は、処理9001で入力された分析種別に対応するカテゴリに属する抽出対象情報のみが検索され、最終的に出力生成部1008により出力される。本実施例では、
図12の12001のようにグレーで塗り潰した二つのmw種別のノードがその結果の例である。
【0106】
ここまでの処理で、分析対象情報を入力として、関連の強いとみなせる情報の一覧を取得することができる。本実施例においては、そのような情報の根拠までを分析することが特徴であり、それは具体的には、次に示す処理で行うものである。
【0107】
さらに、処理9005において、結合性分析部1007は、起点情報(
図12内の二十枠のノード)から、抽出対象情報(
図12内のグレーで塗りつぶしたノード)それぞれに対して、エッジの向きを無視して、独立パスが何本存在するかを計算する。
【0108】
ここで、あるノードから別のノードへの二つのパスが独立であるとは、二つのパスが途中でいずれのエッジも共有することがないことを意味する。
【0109】
例えば、
図13(13−a)に示したグラフにおいては、ノードaからノードdへのパスはエッジb−cが常に共通するため、独立パスは1本のみである。
【0110】
一方で、
図13(13−b)に示したグラフにおいては、共通するパスはなく、ノードaからノードgへの独立パスはa−b−d−g、a−d−e−g、a−f−gの3本である。
【0111】
本実施例においては、この独立パスの本数は、何種類の互いに依存のない周辺情報が、対象情報を関係のある情報として指し示しているか、という意味であり、すなわちいわば状況証拠の数であると捉えることができる。
【0112】
逆に、
図13(13−a)のように、パス自体は多くても、独立パスが少なければ、結局は何らかの少数の情報のみに依存した関係性であり、そこが誤りであった場合には、一度に関係性が切れてしまうものである。したがって、上記のような共通するパスが少ないあるいは上記のような独立パスが多いほど根拠が揃うため情報を多面的に捉えることができ、有用性の高いより強い状況証拠となる。
【0113】
すなわちまとめると、処理9005は、起点情報から各抽出対象情報への独立パスの本数を計算し、独立パスの多い対象情報ノードをより根拠のそろった情報として、また、各独立パスを状況証拠として返す処理である。
【0114】
本実施例では、
図13(13−c)に示すような、独立パスが1本のmw種別情報と、
図13(13−d)に示したような独立パスが2本のmw種別情報が存在するため、後者がより根拠のそろった情報として返される。また、処理9005のさらに効果的な処理としては、独立パスであって、さらに各パスを構成するエッジの種別が異なるものであればさらに強い状況証拠として判断してもよい。
【0115】
最後に、処理9006において、出力生成部1008は、出力生成ロジック1055を参照し、応答として返す情報種別7001に応じて、付加情報表示内容7002で指定された付加的な情報を生成する。また、グラフ構造を基に抽出根拠を文章化する文章化ロジック7003を用いて、根拠を文章化して分析依頼者1200に通知することも可能である。
【0116】
本実施例の出力結果の表示例を
図14を用いて示す。14001は、分析依頼者1200が入力した分析対象である。
図14では、ファイル「hoge.exe」に記述されている文字列「example.com」を分析対象としていることを示している。14002は、分析依頼者1200が入力した分析種別である。
図14では、分析種別として「原因」が入力されたことを示している。14003は、分析結果として処理9005の結果返された抽出対象情報の総数である。
図14では、2件の分析結果(
図13の13−c、13−d)が得られたことを示している。
【0117】
14004は、分析結果をどのような順で表示するかを指定する機能である。本実施例によれば、独立パスが多いものほど重要であるため、そのような抽出対象情報から優先的に表示することが望ましいが、例えば情報が登録された時系列などの変更させることも可能である。
図14では、状況証拠の多い順となる降順で分析結果が表示されることを示している。14005は、それ以下に表示される情報が、MW0007の情報であることを示す。14006は、起点情報となる通信先0012と、抽出対象情報となるMW0007との間の独立パスを図示したものである。本情報により、分析依頼者1200はどのような関係性に基づいて、当該情報が抽出されたのかを理解することができる。また、例えば、14006内の各情報を選択することで、その情報種別に応じた付加情報を動的に生成して表示するなどの付加的な動作も可能である。
【0118】
14007は、当該情報が抽出された根拠を示しており、起点情報が選ばれた理由と、抽出対象情報の中でもっとも根拠が強い理由を示している。具体的な根拠については、14008と、14009に示すように、グラフ構造を文章化することでそのまま説明可能である。例えば、状況1として、MW0007は通信先0012に通信することを根拠として示している。14010は、抽出対象情報に付加的に追加して提示する情報であって、MW種別の場合はアンチウィルスソフトで検知可能か、など、通常必要となる情報があるならばあわせて提示することが可能である。14011は、表示する分析結果を切り替えるためのページネータである。
【0119】
以上に例示した構成にすることで、上述した本願の効果を得ることが可能となる。