IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-25
(45)【発行日】2024-12-03
(54)【発明の名称】サイバー検出ファジー・パターン照合
(51)【国際特許分類】
   G06F 21/55 20130101AFI20241126BHJP
   G06N 3/04 20230101ALI20241126BHJP
   G06F 11/34 20060101ALI20241126BHJP
【FI】
G06F21/55 320
G06N3/04 100
G06F11/34 147
G06F11/34 152
【請求項の数】 12
(21)【出願番号】P 2022545371
(86)(22)【出願日】2020-11-26
(65)【公表番号】
(43)【公表日】2023-03-27
(86)【国際出願番号】 EP2020083530
(87)【国際公開番号】W WO2021155971
(87)【国際公開日】2021-08-12
【審査請求日】2023-04-24
(31)【優先権主張番号】16/783,274
(32)【優先日】2020-02-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シュー、シャオクイ
(72)【発明者】
【氏名】グ、ションシュ
(72)【発明者】
【氏名】シュトークリン、マーク、フィリップ
(72)【発明者】
【氏名】ジャムジョーム、ハニ、タラル
【審査官】塩澤 如正
(56)【参考文献】
【文献】米国特許出願公開第2017/0346839(US,A1)
【文献】米国特許出願公開第2019/0354689(US,A1)
【文献】米国特許第07624448(US,B2)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06N 3/04
G06F 11/34
(57)【特許請求の範囲】
【請求項1】
コンピュータ・システムの要素の活動を特徴付ける活動データにおいて、対象の計算リソースの活動のパターンを識別するためのデータ処理システム内の方法であって、
前記データ処理システムによって、監視されるコンピューティング環境の1つまたは複数のコンピューティング・デバイスから、コンピュータ・システムの要素の活動を特徴付ける前記活動データを受信することと、
前記データ処理システムによって、前記活動データの時間的グラフを生成することであって、前記時間的グラフが、前記コンピュータ・システムの要素を表すノード、およびノードを接続するエッジを含み、各エッジが、前記エッジによって接続されたノードによって表されたコンピュータ・システムの要素間に発生するイベントを表す、前記生成することと、
前記データ処理システムによって、フィルタを前記時間的グラフに適用し、1つまたは複数の第1のベクトル表現を生成することであって、各ベクトル表現が、前記フィルタによって定義された移動時間枠内のノードおよびエッジを特徴付ける、前記生成することと、
前記データ処理システムによって、前記時間的グラフにおいて識別される前記計算リソースの活動のパターンを示す、複数の実体と複数の実体間のイベントのパターンを表すパターン・グラフに前記フィルタを適用することであって、前記パターン・グラフへの前記フィルタの適用が、第2のベクトル表現を作成する、前記適用することと、
前記データ処理システムによって、前記第2のベクトル表現を前記1つまたは複数の第1のベクトル表現と比較して、前記1つまたは複数の第1のベクトル表現において1つまたは複数の近接ベクトルを識別することと、
前記データ処理システムによって、前記識別された1つまたは複数の近接ベクトルに対応する1つまたは複数のサブグラフ・インスタンスを前記時間的グラフの部分一致としてインテリジェンス・コンソール・コンピューティング・システムに出力することと
を含む、方法。
【請求項2】
前記インテリジェンス・コンソール・コンピューティング・システムがサイバー・セキュリティ・インテリジェンス・センターであり、前記1つまたは複数の近接ベクトルが前記1つまたは複数のコンピューティング・デバイスに対する可能性のあるコンピュータ攻撃を表す、請求項1に記載の方法。
【請求項3】
入力グラフの前記ノードおよびエッジの属性のベクトル埋め込みを実行して、前記入力グラフの前記ノードおよびエッジの前記属性に対応するベクトル出力を生成するように、トレーニング・データセットに基づいて少なくとも1つのグラフ・ニューラル・ネットワーク(GNN)をトレーニングすることをさらに含み、前記フィルタを前記時間的グラフに適用することが、トレーニング済みの少なくとも1つのGNNを前記入力グラフとしての前記時間的グラフに対して実行することを含み、前記フィルタを前記パターン・グラフに適用することが、前記トレーニング済みの少なくとも1つのGNNを前記入力グラフとしての前記パターン・グラフに対して実行することを含む、請求項1に記載の方法。
【請求項4】
前記トレーニング・データセットが、計算要素の既知のセットによって実行された活動に対応する1つまたは複数の既知の活動グラフと、対象の活動の少なくとも1つの既知のパターンに対応する少なくとも1つの既知のパターン・グラフと、前記少なくとも1つのGNNへの入力としての前記1つまたは複数の既知の活動グラフおよび前記少なくとも1つの既知のパターン・グラフに基づいて、前記少なくとも1つのGNNによって生成される正しいベクトル出力または分類の指示とを含む、請求項3に記載の方法。
【請求項5】
前記少なくとも1つのGNNが複数のGNNを含み、各GNNが、異なるサイズの対応するフィルタを含み、前記フィルタを前記時間的グラフに適用すること、および前記フィルタを前記パターン・グラフに適用することが、前記パターン・グラフのサイズに対応するサイズの対応するフィルタを含んでいる前記複数のGNNから選択されたGNNを実行することを含む、請求項3に記載の方法。
【請求項6】
前記フィルタが、前記移動時間枠内の第1のノードからのノードの距離を示す到達可能性制限に対応する第1の次元、および前記移動時間枠内のイベントの、前記移動時間枠の中心の時点に対応する時点からの、時間範囲に対応する第2の次元を有する、請求項1に記載の方法。
【請求項7】
前記フィルタを前記時間的グラフに適用することが、前記移動時間枠内のノードおよびエッジの属性への前記1つまたは複数の第1のベクトル表現の部分のマッピングを格納することをさらに含み、前記識別された1つまたは複数の近接ベクトルに対応する前記1つまたは複数のサブグラフ・インスタンスを出力することが、前記格納されたマッピングに基づいて、前記1つまたは複数の近接ベクトルを、前記1つまたは複数のサブグラフ・インスタンス内の対応するサブグラフ・インスタンスに変換することを含む、請求項1に記載の方法。
【請求項8】
前記第2のベクトル表現を前記1つまたは複数の第1のベクトル表現と比較し、前記1つまたは複数の第1のベクトル表現内の1つまたは複数の近接ベクトルを識別することが、前記1つまたは複数の第1のベクトル表現の部分との前記第2のベクトル表現の部分照合に基づいて前記1つまたは複数の近接ベクトルを識別することを含み、それによって前記1つまたは複数の近接ベクトルを識別する、請求項1に記載の方法。
【請求項9】
前記第2のベクトル表現を前記1つまたは複数の第1のベクトル表現と比較し、前記1つまたは複数の第1のベクトル表現内の前記1つまたは複数の近接ベクトルを識別することが、前記1つまたは複数の第1のベクトル表現内の第1のベクトル表現ごとに、
前記第1のベクトル表現との第2ベクトル表現のベクトル距離に基づく比較を実行し、前記第1のベクトル表現に対応する類似性尺度を生成することと、
前記類似性尺度を類似性尺度のしきい値と比較して、前記第1のベクトル表現が近接ベクトルを表しているかどうかを判定することと、
前記類似性尺度が、前記類似性尺度のしきい値に対して既定の関係を有しているということに応じて、前記第1のベクトル表現を近接ベクトルとして返すこととを含む、請求項1に記載の方法。
【請求項10】
前記方法が、前記時間的グラフが時間と共に動的に変化しながら動的に実行される、請求項1に記載の方法。
【請求項11】
プロセッサに、請求項1ないし10のいずれか一項に記載の方法を実行させるためのプログラム。
【請求項12】
プロセッサと、
前記プロセッサに結合されたメモリとを備えている装置であって、前記メモリが命令を含み、前記命令が、前記プロセッサによって実行された場合に、請求項1ないし10のいずれか一項に記載の前記ステップを実行する、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、改良されたデータ処理装置および方法に関連しており、より詳細には、サイバー検出ファジー・パターン照合(fuzzy cyber detection pattern matching)のためのメカニズムに関連している。
【背景技術】
【0002】
APT(advanced persistent threat)攻撃などの新たに出現したサイバー攻撃は、通常は複数のプロセスの相互動作を伴って、ますます見えにくくなり、洗練されるようになった。そのような包括的な攻撃キャンペーンは、攻撃の目的を達成するために、通常、単一のホスト上または複数のホスト上で複数のプロセスを利用する長い攻撃経路/ベクトルで構成される。したがって、プロセス間の挙動を理解することは、攻撃を識別し、誤警報を減らすことにとって重要である。
【0003】
攻撃/侵入検出の製品、システム、およびサービスがよく知られている。ほとんどのホストベースおよびネットワークベースの攻撃/侵入検出製品は、静的なシグネチャ照合手法を利用する。例えば、ウイルス対策の製品、ファイアウォール、侵入検出システム(IDS:intrusion detection systems)などは、具体的な2進数またはネットワーク通信のシグネチャに頼って攻撃を識別する。これらの製品では、検出手順は、(i)攻撃の発見、(ii)シグネチャの選択、(iii)シグネチャの配布、および(iv)エンドポイントのシグネチャ照合を含む。
【0004】
プログラム異常検出の文献および最先端の商用のエンドポイントでの侵入検出製品によって証明されているように、プロセス内の挙動のモデル化および検出もよく知られている。これらのメカニズムは、基本的に、システム・イベント(例えば、各プロセスのシステム・コールまたはWindows(R) APIあるいはその両方)を監視し、その後、挙動モデルに基づいてプロセスが悪質であるかどうかを判定する。この種の解決策は、プロセス全体にわたって見えない攻撃が実施される場合、または攻撃者が無害なプロセスを利用して攻撃の目的を達成する場合、無効にされる可能性がある。前述の手法は優位性もたらすが、多くの場合、新しい攻撃または急速に更新される攻撃をタイムリーな方法で検出することができず、プロセス間活動を活用する攻撃に対して十分な攻撃対象領域の範囲を提供することもできない。
【0005】
一部の挙動に基づくエンドポイントでの検出製品は、プロセスの生成およびマルウェアのダウンロードなどの、直接的なプロセス間活動のモデル化を試みることによって、これらの欠陥に対処しようとする。この種のプロセス間活動のモデル化は有用であるが、既知の解決策は、既存の製品における実用性の制約に起因して、少量の直接的なプロセス間活動のみがモデル化されて、その場しのぎに動作する。さらに、これらの手法は、間接的なプロセス間活動に対処しない。したがって、何らかのプロセス間活動のモデル化が使用可能である場合でさえ、攻撃者は、例えば、大きい時間枠内に複数のプロセスおよびファイルを含む見えない攻撃を構築することによって、検出を回避することができる。
【0006】
そのような攻撃の一例は、最近のTarget(R)の店舗のデータ漏洩だった。このデータ漏洩の間に、店舗販売時点情報管理機から漏洩したデータは、ディスク上で暗号化されたが、集計のための作業時に別のプロセスによって後で読み取られた。この環境では、間接的なプロセス間(暗号化されたファイルを書き込み、読み取るプロセス間)の活動が明示的でなく、したがって、識別されて軽減されなかった。すなわち、サイバー・インシデントの推論のための既存の研究は、シグネチャの完全一致または正規表現に基づく文字列の照合のいずれかに重点を置く。
【発明の概要】
【0007】
この「発明の概要」は、概念の選択を簡略化された形態で導入するために提供されており、本明細書の「発明を実施するための形態」において、さらに説明される。この「発明の概要」は、請求される対象の重要な要因または不可欠な特徴を識別するよう意図されておらず、請求される対象の範囲の制限に使用されることも意図されていない。
【0008】
1つの実施形態例では、コンピュータ・システムの要素の活動を特徴付ける活動データにおいて、対象の計算リソースの活動のパターンを識別するためのデータ処理システム内の方法が提供される。この方法は、データ処理システムによって、監視されるコンピューティング環境の1つまたは複数のコンピューティング・デバイスから、コンピュータ・システムの要素の活動を特徴付ける活動データを受信することと、データ処理システムによって、活動データの時間的グラフを生成することとを含む。時間的グラフは、コンピュータ・システムの要素を表すノード、およびノードを接続するエッジを含み、各エッジは、エッジによって接続されたノードによって表されたコンピュータ・システムの要素間に発生するイベントを表す。
【0009】
この方法は、データ処理システムによってフィルタを時間的グラフに適用し、1つまたは複数の第1のベクトル表現を生成することをさらに含み、各ベクトル表現は、フィルタによって定義された移動時間枠内のノードおよびエッジを特徴付ける。この方法は、データ処理システムによって、時間的グラフにおいて識別される計算リソースの活動のパターンを示す、複数の実体と複数の実体間のイベントのパターンを表すパターン・グラフにフィルタを適用することも含む。パターン・グラフへのフィルタの適用は、第2のベクトル表現を作成する。加えて、この方法は、データ処理システムによって、第2のベクトル表現を1つまたは複数の第1のベクトル表現と比較して、1つまたは複数の第1のベクトル表現において1つまたは複数の近接ベクトルを識別することと、データ処理システムによって、識別された1つまたは複数の近接ベクトルに対応する1つまたは複数のサブグラフ・インスタンス(subgraph instances)を時間的グラフの部分一致としてインテリジェンス・コンソール・コンピューティング・システムに出力することとを含む。
【0010】
他の実施形態例では、コンピュータ可読プログラムを含んでいるコンピュータ使用可能媒体またはコンピュータ可読媒体を備えているコンピュータ・プログラム製品が提供される。このコンピュータ可読プログラムは、コンピューティング・デバイス上で実行された場合、コンピューティング・デバイスに、方法の実施形態例に関して上で概説された動作のうちのさまざまな動作およびその組み合わせを実行させる。
【0011】
さらに別の実施形態例では、システム/装置が提供される。このシステム/装置は、1つまたは複数のプロセッサおよび1つまたは複数のプロセッサに結合されたメモリを備えてよい。このメモリは命令を含んでよく、これらの命令は、1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサに、方法の実施形態例に関して上で概説された動作のうちのさまざまな動作およびその組み合わせを実行させる。
【0012】
本発明の実施形態例の以下の詳細な説明を考慮して、本発明のこれらおよびその他の特徴および優位性が説明され、当業者にとって明らかになるであろう。
【0013】
本発明ならびに本発明の最もよく使われる使用方法とその他の目的、および優位性は、実施形態例の以下の詳細な説明を、添付の図面と一緒に読みながら参照することによって、最も良く理解されるであろう。
【図面の簡単な説明】
【0014】
図1】実施形態例の例示的な態様が実装され得る分散データ処理環境の例示的なブロック図を示す図である。
図2】実施形態例の例示的な態様が実装され得るデータ処理システムの例示的なブロック図である。
図3】1つまたは複数の実施形態例の技術が実践され得るセキュリティ・インテリジェンス・プラットフォームを示す図である。
図4】1つまたは複数の実施形態例の技術が実践され得るAPT(Advanced Persistent Threat)プラットフォームを示す図である。
図5】エンドポイント・マシンを管理するために認知サイバーセキュリティ・インテリジェンス・センターが使用され、1つまたは複数の実施形態例の技術が実施され得る、動作環境を示す図である。
図6】1つの実施形態例に従って、代表的な悪意のある挙動のグラフ抽象化、およびグラフ抽象化と照合される複数のプロセス間活動グラフを示す図である。
図7】実施形態のうちの1つまたは複数に従って、エンドポイント内の実体間の活動を監視することによって構築された代表的なプロセス間グラフ、およびエンドポイント保護システムによって、そのグラフに対してさまざまな照合技術が実行される方法を示す図である。
図8】1つの実施形態例に従って、エンドポイントのプロセス間活動抽出およびパターン照合システムの実装を示す図である。
図9】1つの実施形態例においてラベル付けされたサブグラフの照合が実装される方法を示す図である。
図10】1つの実施形態例に従って、取り込み機能をさらに詳細に示す図である。
図11】1つの実施形態例に従って、活動グラフを発達させるためにエージング機能が使用される方法を示す図である。
図12】1つの実施形態例に従って、エージング機能をさらに詳細に示す図である。
図13】1つの実施形態例に従って、一時的プロセス間活動および永続的プロセス間活動に対して検出システムがディスク上のストレージを使用して間接的なプロセス間活動をモデル化する方法を示す図である。
図14】1つの実施形態例に従って、照合機能ならびに軽減および回復力機能に関する追加の詳細を示す図である。
図15】1つの実施形態例に従って、ホスト・レベルの活動の代表的な活動グラフを示す図である。
図16】1つの実施形態例に従って、ネットワークレベルの活動の代表的な活動グラフを示す図である。
図17】1つの実施形態例に従って、プロセス・レベルの活動の代表的な活動グラフを示す図である。
図18】1つの実施形態例に従って、反復的制約解決アルゴリズムをプロセス・フローとして示す図である。
図19】1つの実施形態例に従って、代表的なパターン・グラフの代表的な例、およびこの例から得られた対応する制約グラフ(GoC:graph of constraint)を示す図である。
図20図19のパターン・グラフに関する1つの実施形態例の反復的制約解決プロセスまたはアルゴリズムの適用を示す図である。
図21図19のパターン・グラフに関する1つの実施形態例の反復的制約解決プロセスまたはアルゴリズムの適用を示す図である。
図22図19のパターン・グラフに関する1つの実施形態例の反復的制約解決プロセスまたはアルゴリズムの適用を示す図である。
図23図19のパターン・グラフに関する1つの実施形態例の反復的制約解決プロセスまたはアルゴリズムの適用を示す図である。
図24】1つまたは複数の実施形態例の技術が実装され得る代表的なグラフ計算プラットフォームを示す図である。
図25】1つの実施形態例に従って、侵入、攻撃、または脅威を表すパターンを定義するために使用されるパターン、および2つのファジー一致のサブグラフの例を示す図である。
図26】1つの実施形態例に従って、動的に成長する時間的グラフを示す例示的な図である。
図27】移動畳み込みフィルタ(moving convolution filter)を使用して時間的グラフ(例えば、AG/CG)のサブグラフから情報を抽出するためのプロセスをグラフで示す例示的な図である。
図28】1つの実施形態例に従って、ファジー照合を実行するための例示的な一般化された動作の概要を示す例示的なフロー図である。
図29】埋め込みを実行するために複数のグラフ・ニューラル・ネットワーク(GNN:graph neural networks)が実装される1つの実施形態例に従って、例示的なファジー照合動作の概要を示すフローチャート図である。
図30】1つの実施形態例に従って、サイバー検出ファジー・パターン照合を実行するための例示的なシステム設計およびプロセス・フローを示す図である。
【発明を実施するための形態】
【0015】
実施形態例は、サイバー検出ファジー・パターン照合を実施するためのメカニズムを提供する。前述したように、攻撃/脅威の検出のための既知の手法には、さまざまな欠点がある。上記の欠点に加えて、これらの既知の手法が、悪意のある/興味深い挙動の高レベルの挙動記述のカテゴリである抽象グラフ・パターン(abstract graph patterns)を扱わないということにも注意するべきである。すなわち、コンピューティング・デバイスの監視された計算活動が時間的グラフとして表されてよく、実施形態例のメカニズムは、ファジー・パターン照合を実行してサイバー攻撃を検出するための基礎として、時間的グラフを使用してよい。時間的グラフは、例えば、1つの軸に沿う時間のインスタンスに関して、特定の計算コンポーネントおよびその時間インスタンスに発生するそれらの計算コンポーネントの相互作用を示し得る。
【0016】
挙動に基づく脅威の検出およびサイバー・ハンティングにおいて、抽象グラフ・パターン照合が使用されてよい。すなわち、抽象グラフ・パターン照合では、あるプロセスがスレッドを別のプロセス内に作成することなどの抽象パターンを前提として、例えば、監視されたホストが一致する活動を見つけるために、グラフ・パターン照合アルゴリズムが時間的グラフの検索に使用されてよい。その後、一致した活動が、さらなる検査(例えば、セキュリティ・アナリストまたは脅威ハンターによる検査)のために返されることができる。加えて、「特定のファイルがnステップでいずれかのネットワーク・ソケットに流れる」などの高度な抽象パターンが評価され、データ抽出の検出に使用されてよい。
【0017】
さらに一般的には、抽象グラフ・パターンは、制約(または述語表現)を伴う要素および要素間の接続と考えられることができる。パターン照合は、すべての要素のすべての制約およびそれらの要素の接続方法を満たすことを必要とする。このタスクは、あるパターンがパラメータを介して他のパターンを参照する可能性があるため、およびグラフが通常、分散された外部ストレージに格納されるため、計算的に非自明であり、各述語に関連付けられたデータをチェックすることを高価にする。
【0018】
抽象グラフ・パターン照合は、本明細書に記載された一部の実施形態例では、サブグラフの完全な照合を含む。すなわち、計算グラフ(CG:computation graph)、またはさまざまなレベルでのコンピュータの実行状態の時間的グラフを前提として(以下の図15~17の例を参照)、抽象グラフ・パターン照合は、以下で説明されるように、攻撃または脅威のパターン・グラフ(PG:pattern graph)をCGの一部またはサブグラフと完全に照合しようとする。このようにして、抽象グラフ・パターン照合に基づいて、可能性のあるサイバー攻撃または脅威が識別され得る。しかし、完全なパターン照合がそのような攻撃または脅威の事例を必ずしも識別しない(例えば、サイバー攻撃/脅威のPGを生成するための十分なサイバー攻撃/脅威に関する情報がない)一部のサイバー攻撃または脅威が考案されることがある。そのような状況の場合、実施形態例のメカニズムは、以下で説明されるように、サイバー攻撃/脅威のパターンを学習し、それらのパターンを使用して、前述した計算グラフ(CG)などのコンピューティング・システムの活動の時間的グラフに存在する可能性のある攻撃/脅威を識別するために、ニューラル・ネットワークおよび機械学習を利用できるファジー・パターン照合または部分パターン照合コンピュータ・メカニズムも提供する。
【0019】
ここで図面を参照し、特に図1~2を参照すると、本発明の実施形態例が実装され得るデータ処理環境の例示的な図が示されている。図1~2は単なる例であり、開示される対象の態様または実施形態が実装され得る環境に関して、どのような制限も主張することも、意味することも意図されていないということが、理解されるべきである。本発明の範囲から逸脱することなく、示された環境に対して多くの変更が行われてよい。
【0020】
ここで図面を参照し、図1は例示的な分散データ処理システムを示している。分散データ処理システム100は、実装形態例の態様が実装され得るコンピュータのネットワークを含んでよい。分散データ処理システム100は、分散データ処理システム100内で一緒に接続されているさまざまなデバイスとコンピュータの間の通信リンクを提供するために使用される媒体である、少なくとも1つのネットワーク102を含んでいる。ネットワーク102は、ワイヤ、無線通信リンク、または光ファイバ・ケーブルなどの接続を含んでよい。図に示された例では、サーバ104およびサーバ106が、ストレージ・ユニット108と共にネットワーク102に接続されている。加えて、クライアント110、112、および114もネットワーク102に接続されている。これらのクライアント110、112、および114は、例えば、パーソナル・コンピュータ、ネットワーク・コンピュータなどであってよい。図に示された例では、サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを、クライアント110、112、および114に提供する。クライアント110、112、および114は、図に示された例では、サーバ104のクライアントである。分散データ処理システム100は、図に示されていない追加のサーバ、クライアント、およびその他のデバイスを含んでよい。
【0021】
図に示された例では、分散データ処理システム100は、相互に通信するための一連のプロトコルである送信制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)を使用する世界全体のネットワークとゲートウェイの集合を表す、ネットワーク102を含むインターネットである。インターネットの中心には、主要なノード間またはホスト・コンピュータ間を接続する高速データ通信ラインのバックボーンがあり、データおよびメッセージをルーティングする多数の民間のコンピュータ・システム、政府機関のコンピュータ・システム、教育機関のコンピュータ・システム、およびその他のコンピュータ・システムで構成されている。当然、分散データ処理システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN:local area network)、広域ネットワーク(WAN:wide area network)などの、多数の各種ネットワークを含むように実装されてもよい。前述したように、図1は、開示される対象の異なる実施形態に対するアーキテクチャの制限ではなく、一例となるよう意図されており、したがって、図1に示されている特定の要素は、本発明の実施形態例が実装され得る環境に関して制限していると見なされるべきではない。
【0022】
ここで図2を参照すると、実施形態例が実装されてよいデータ処理システムのブロック図が示されている。データ処理システム200は、図1のサーバ104またはクライアント110などのコンピュータの例であり、データ処理システム200内に、実施形態例のプロセスを実装するコンピュータ使用可能なプログラム・コードまたは命令が配置されてよい。この例では、データ処理システム200は、プロセッサ・ユニット204、メモリ206、永続的ストレージ208、通信ユニット210、入出力(I/O:input/output)ユニット212、およびディスプレイ214の間の通信を提供する通信ファブリック202を含んでいる。プロセッサ・ユニット204は、メモリ206に読み込まれ得るソフトウェアの命令を実行する役目を果たす。プロセッサ・ユニット204は、特定の実装に応じて、1つまたは複数のプロセッサのセットであってもよく、マルチプロセッサ・コアであってもよい。さらに、プロセッサ・ユニット204は、単一チップ上にメイン・プロセッサが二次プロセッサと共に存在する、1つまたは複数の異種プロセッサ・システムを使用して実装されてよい。別の例として、プロセッサ・ユニット204は、同じ種類の複数のプロセッサを含んでいる対称型マルチプロセッサ(SMP:symmetric multi-processor)システムであってよい。メモリ206および永続的ストレージ208は、ストレージ・デバイスの例である。ストレージ・デバイスは、一時的に、または永続的に、あるいはその両方で情報格納することができる任意のハードウェアである。これらの例では、メモリ206は、例えば、ランダム・アクセス・メモリあるいは任意のその他の適切な揮発性または不揮発性ストレージ・デバイスであってよい。
【0023】
永続的ストレージ208は、特定の実装に応じて、さまざまな形態をとってよい。例えば、永続的ストレージ208は、1つまたは複数のコンポーネントまたはデバイスを含んでよい。例えば、永続的ストレージ208は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能光ディスク、書き換え可能磁気テープ、またはこれらの組み合わせであってよい。永続的ストレージ208によって使用される媒体は、取り外し可能であってもよい。例えば、取り外し可能ハード・ドライブが、永続的ストレージ208に使用されてよい。これらの例において、通信ユニット210は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット210は、ネットワーク・インターフェイス・カードである。通信ユニット210は、物理的通信リンクまたは無線通信リンクのいずれか、あるいはその両方を使用して通信を提供できる。
【0024】
入出力ユニット212は、データ処理システム200に接続され得る他のデバイスとの間で、データの入力および出力を可能にする。例えば、入出力ユニット212は、キーボードおよびマウスを介したユーザ入力のための接続を提供してよい。さらに、入出力ユニット212は、出力をプリンタに送信してよい。ディスプレイ214は、情報をユーザに表示するためのメカニズムを提供する。
【0025】
オペレーティング・システムおよびアプリケーションまたはプログラムの命令は、永続的ストレージ208上に配置される。これらの命令は、プロセッサ・ユニット204によって実行するために、メモリ206に読み込まれてよい。さまざまな実施形態のプロセスは、プロセッサ・ユニット204によって、メモリ206などのメモリ内に配置され得るコンピュータ実装命令を使用して実行されてよい。これらの命令は、プロセッサ・ユニット204内のプロセッサによって読み取って実行できるプログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれる。さまざまな実施形態におけるプログラム・コードは、メモリ206または永続的ストレージ208などの、異なる物理的な、または有形のコンピュータ可読媒体上で具現化されてよい。プログラム・コード216は、選択的に取り外すことができるコンピュータ可読媒体218上に機能的形態で配置され、プロセッサ・ユニット204によって実行するために、データ処理システム200に読み込まれるか、または転送されてよい。これらの例では、プログラム・コード216およびコンピュータ可読媒体218が、コンピュータ・プログラム製品220を形成する。1つの例では、コンピュータ可読媒体218は、例えば、ドライブに挿入または配置される光ディスクまたは磁気ディスク、あるいは永続的ストレージ208の一部であるハード・ドライブなどの、ストレージ・デバイスに転送するための永続的ストレージ208の一部であるその他のデバイスなどの、有形の形態で存在してよい。有形の形態において、コンピュータ可読媒体218は、データ処理システム200に接続されたハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの、永続的ストレージの形態をとってもよい。コンピュータ可読媒体218の有形の形態は、コンピュータ記録可能ストレージ媒体とも呼ばれる。一部の例では、コンピュータ記録可能媒体218は、取り外し可能でなくてよい。
【0026】
代替として、プログラム・コード216は、通信ユニット210への通信リンクを介して、または入出力ユニット212への接続を介して、あるいはその両方を介して、コンピュータ可読媒体218からデータ処理システム200に転送されてよい。この例において、通信リンクまたは接続あるいはその両方は、物理的または無線であってよい。コンピュータ可読媒体は、プログラム・コードを含んでいる通信リンクまたは無線送信などの非有形の媒体の形態をとってもよい。データ処理システム200に示されているさまざまなコンポーネントは、さまざまな実施形態が実装され得る方法に対するアーキテクチャの制限をもたらすよう意図されていない。データ処理システムでは、データ処理システム200に示されている構成要素に加えた構成要素、またはそれらの構成要素の代わりになる構成要素を含む、さまざまな実施形態例が実装されてよい。図2に示されている他のコンポーネントは、示されている例から変化することができる。1つの例として、データ処理システム200内のストレージ・デバイスは、データを格納できる任意のハードウェア装置である。メモリ206、永続的ストレージ208、およびコンピュータ可読媒体218は、有形の形態でのストレージ・デバイスの例である。別の例では、通信ファブリック202を実装するためにバス・システムが使用されてよく、バス・システムは、システム・バスまたは入出力バスなどの1つまたは複数のバスから成ってよい。当然ながら、バス・システムは、バス・システムに接続された異なるコンポーネントまたはデバイス間のデータの転送を提供する任意の適切な種類のアーキテクチャを使用して、実装されてよい。
【0027】
さらに、通信ユニットは、モデムまたはネットワーク・アダプタなどの、データを送信および受信するために使用される1つまたは複数のデバイスを含んでよい。さらに、メモリは、例えば、通信ファブリック202内に存在し得るインターフェイスおよびメモリ・コントローラ・ハブに見られるような、メモリ206またはキャッシュであってよい。本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)(TM)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されてよい。プログラム・コードは、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続を、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行うことができる。
【0028】
当業者は、図1~2のハードウェアが実装に応じて変わってよいということを、理解するであろう。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブなどの、その他の内部ハードウェアまたは周辺機器が、図1~2に示されているハードウェアに加えて、またはそれらのハードウェアの代わりに、使用されてよい。また、実施形態例のプロセスは、開示される対象の範囲から逸脱することなく、前述したSMPシステム以外のマルチプロセッサ・データ処理システムに適用されてよい。下で説明されているように、本明細書に記載された手法は、図1に示されているような標準的なクライアント/サーバの枠組みと共に動作してよく、クライアント/サーバの枠組みでは、クライアント・マシンが、一連の1つまたは複数のマシン上で実行されているインターネットアクセス可能なWebベースのポータルと通信する。エンド・ユーザは、ポータルにアクセスして情報をやりとりすることができるインターネット接続可能なデバイス(例えば、デスクトップ・コンピュータ、ノートブック・コンピュータ、インターネット対応のモバイル・デバイスなど)を操作する。
【0029】
通常、各クライアント・マシンまたはサーバ・マシンは、ハードウェアおよびソフトウェアを備えている図2に示されているようなデータ処理システムであり、これらの実体は、ネットワーク(インターネット、イントラネット、エクストラネット、プライベート・ネットワーク、あるいは任意のその他の通信媒体またはリンクなど)を経由して互いに通信する。データ処理システムは、通常、1つまたは複数のプロセッサ、オペレーティング・システム、1つまたは複数のアプリケーション、および1つまたは複数のユーティリティを含む。データ処理システム上のアプリケーションは、特にHTTP、SOAP、XML、WSDL、UDDI、およびWSFLのサポートを含むが、これらに限定されない、Webサービスのネイティブ・サポートを提供する。SOAP、WSDL、UDDI、およびWSFLに関する詳細は、これらの規格を開発および維持する役割を担っているワールド・ワイド・ウェブ・コンソーシアム(W3C:World Wide Web Consortium)から提供されており、HTTPおよびXMLに関する詳細は、インターネット・エンジニアリング・タスク・フォース(IETF:Internet Engineering Task Force)から提供されている。これらの規格を熟知していることが仮定される。
【0030】
インシデント・フォレンジックを含むセキュリティ・インテリジェンス・プラットフォーム
【0031】
図3に、1つまたは複数の実施形態例の技術が実践され得る代表的なセキュリティ・インテリジェンス・プラットフォームが示されている。通常、このプラットフォームは、セキュリティ・インシデント調査を支援するために、検索駆動型データ探索(search-driven data exploration)、セッション再構築、およびフォレンジック・インテリジェンス(forensics intelligence)を提供する。関連する部分において、プラットフォーム300は、一連のパケット・キャプチャ・アプライアンス302、インシデント・フォレンジック・モジュール・アプライアンス(incident forensics module appliance)304、分散データベース306、およびセキュリティ・インテリジェンス・コンソール308を備える。パケット・キャプチャ・アプライアンス302およびインシデント・フォレンジック・モジュール・アプライアンス304は、ネットワーク・アプライアンスとして構成されるが、仮想アプライアンスとして構成されてもよい。パケット・キャプチャ・アプライアンス302は、既知の、または今後開発されるパケット・キャプチャ(pcap:packet capture)アプリケーション・プログラミング・インターフェイス(API:application programming interfaces)、あるいはその他の既知の/今後開発される技術を使用して、図1のネットワーク102などのネットワークからパケットを捕捉するよう機能する。パケット・キャプチャ・アプライアンス302は、そのようなデータ(例えば、リアルタイムのログ・イベントおよびネットワーク・フロー)を分散データベース306にも提供し、このデータは格納され、フォレンジック・モジュール304およびセキュリティ・インテリジェンス・コンソール308による分析に使用できる。パケット・キャプチャ・アプライアンス302は、セッション指向の方法で動作し、フロー内のすべてのパケットを捕捉して、メタデータおよびペイロードにインデックスを付与し、高速な検索駆動型データ探索を可能にする。
【0032】
データベース306は、フォレンジック・リポジトリを提供し、フォレンジック・リポジトリは、パケット・キャプチャ・アプライアンス302によって収集された情報を含んでいる分散された異種データ・セットを含む。コンソール308は、調査員によるインシデント調査ワークフローを容易にするための「フォレンジック」ダッシュボード・タブを公開する、Webまたはクラウドにアクセスできるユーザ・インターフェイス(UI:user interface)を提供する。調査員は、ダッシュボードを使用してセキュリティ・インシデントを選択する。インシデント・フォレンジック・モジュール304は、選択されたセキュリティ・インシデントに関するすべてのパケット(メタデータ、ペイロードなどを含んでいる)を取り出し、分析のためにセッションを再構築する。
【0033】
この種のインシデント調査ワークフローを実施する代表的な市販用製品は、IBM(R) Security QRadar(R) Incident Forensics V7.2.3(以上)である。調査員は、このプラットフォームを使用して、データベースに格納されている分散された異種データ・セット全体を検索し、統一された検索結果リストを受け取る。検索結果は、ユーザが識別情報間の関係を調査することができるように、グリッドにマージされてよく、「デジタル・インプレッション」ツールで視覚化されることができる。
【0034】
通常、前述のシステムにおいて使用するためのアプライアンスは、ネットワーク接続された、ディスプレイのないデバイスとして実装される。例えば、従来のミドルウェアのサービス指向アーキテクチャ(SOA:service oriented architecture)機能を実行することを目的として構築されたアプライアンスは、特定のコンピュータ環境全体に行き渡っている。SOAミドルウェア・アプライアンスは、企業全体の既存のSOAインフラストラクチャを拡張しながら、XMLサービスまたはWebサービスのデプロイメントを簡略化するか、保護するのを支援するか、または高速化することができる。ミドルウェア用のハードウェアおよび軽量ミドルウェア・スタックの利用によって、従来のソフトウェアの解決策によって発生する性能上の負荷に対処することができる。加えて、アプライアンスのフォームファクタは、ミドルウェアSOA機能を実装するための安全な消耗パッケージングを提供する。このような種類のデバイスが提供する1つの際立った利点は、バックエンド・システムから処理をオフロードすることである。この種のネットワーク・アプライアンスは、通常、ラックマウント方式のデバイスである。このデバイスは、アプライアンスが機密情報のための安全な保管室として役立つことができるようにする物理的セキュリティを含む。通常、このアプライアンスは、製造され、事前にソフトウェアが搭載され、その後、企業またはその他のネットワーク運用環境内で、あるいは企業またはその他のネットワーク運用環境に関連してデプロイされ、代替として、ボックスがローカルに配置され、その後、例えばプライベートまたはオンプレミスのクラウド・コンピューティング環境内で、安全にデプロイして管理することができる標準の、またはカスタマイズされたミドルウェア仮想イメージが、このボックスに準備されてよい。このアプライアンスは、場合によってはハード・ディスク上のデータを暗号化するために、ハードウェア暗号化およびファームウェア暗号化のサポートを含んでよい。
【0035】
この種のアプライアンスは、セキュリティ情報イベント管理(SIEM:Security Information Event Management)を容易にすることができる。例えば、IBM(R) Security QRadar(R) SIEMは、この種のアプライアンスとして構成され得るパケット・データ・キャプチャ・アプライアンスを含むエンタープライズ・ソリューションである。そのようなデバイスは、例えば、リアルタイムのレイヤ4のネットワーク・フロー・データを捕捉するよう機能し、その後、例えばディープ・パケット・インスペクションおよびその他の技術を使用して、このデータからレイヤ7のアプリケーション・ペイロードが分析されてよい。IBM(R) Security QRadar(R) SIEMは、フローに基づくネットワーク知識、セキュリティ・イベントの相関関係、およびアセットに基づく脆弱性評価の組み合わせを使用して、状況認識を提供し、適合性をサポートする。基本的なIBM(R) Security QRadar(R) SIEMのインストールでは、図4に示されているようなシステムが、イベントおよびフローのデータを収集し、レポートを生成するように構成される。その後、ユーザ(例えば、SOCアナリスト)は、攻撃を調査して、ネットワークの問題の根本原因を決定することができる。
【0036】
一般的に言うと、セキュリティ情報イベント管理(SIEM)ツールは、ITセキュリティ・イベントおよび脆弱性に関する分析、管理、監視、および報告を行うためのさまざまなサービスを提供する。そのようなサービスは、通常、データ・ネットワーク全体の監視されたアクセスおよび予期しない出来事に関するイベントの集合を含み、相関関係においてそれらのイベントを分析して、プロファイルされたより高次のセキュリティ・イベントへの寄与を決定する。SIEMツールは、ファイアウォール構成の分析と、現在のネットワーク・トラフィック・パターンおよび可能性のあるネットワーク・トラフィック・パターン、有効な攻撃経路および高リスクのアセットを識別するために、ネットワーク構成およびトラフィックとのアセットの脆弱性の相関関係を表示するためのネットワーク・トポロジーおよび接続の視覚化ツールと、ネットワーク・トラフィック、トポロジー、および脆弱性の公開のポリシー適合性監視のサポートとを含んでもよい。一部のSIEMツールは、一般的なネットワーク情報モデルによって処理されたデバイス構成の変換分析に基づいて、ルータ、ファイアウォール、およびスイッチなどの管理されたネットワーク・デバイスのトポロジーを構築する能力を有する。その結果は、セキュリティ脅威のシミュレーション、ファイアウォール・フィルタの運用分析、およびその他の応用に使用できる、配置構造である。しかし、主なデバイスの基準は、ネットワークおよびネットワーク構成に完全に基づく。管理されたアセット/システム用の発見機能を開始するための複数の方法が存在し、ユーザ・インターフェイス内の封じ込めが半自動的に管理されるが(すなわち、半自動化された、人間による入力に基づく配置を可能にするユーザ・インターフェイスを介した手法であり、トポロジーおよびその表示とフォーマットが、基礎になるネットワーク内の初期構成および変更/削除の両方の発見に基づくデータ駆動型である)、完全に自動化された配置分析および提案を生成する配置分析に関しては何も提供されない。
【0037】
APT(Advanced Persistent Threat)の防止
【0038】
APTの軽減および防止技術がよく知られている。例えば、IBM(R) Trusteer Apex(R)は、エクスプロイトおよびマルウェアが企業のエンドポイントに不正アクセスし、情報を抽出するのを防ぐ自動化された解決策である。この種の解決策は、通常、セキュリティの複数の層、すなわち、エクスプロイトの防止、データ抽出の防止、および認証情報の保護を提供する。
【0039】
図4は、中央制御の位置からITセキュリティが(管理されたエンドポイントおよび管理されていないエンドポイントの両方の)デプロイメントを管理できるようにするWebベースのコンソール404と共に、APTの解決策が企業のエンドポイント402内で実行されるエージェント・コード400として概して設計される標準的な実施形態を示している。エージェント・コード400は、アプリケーション406が機密扱いの動作(例えば、ファイル・システムへのファイルの書き込み)を実行する時点でのアプリケーションの状態を監視することによって動作する。一般に、エージェント400は、正当なアプリケーションの状態のホワイトリストを使用して、機密扱いの動作が既知の正当な状態の下で実行されている(または実行されていない)ということを検証する。エクスプロイトは、未知の(ホワイトリストに登録されていない)状態の下で機密扱いの動作を実行しようとし、したがって、停止される。この手法は、APTエージェントが、脅威または利用される脆弱性に関して何も知ることなく、既知のエクスプロイトおよびゼロデイ・エクスプロイトの両方を正確に検出して阻止できるようにする。「エージェント」は、任意のコードベースのモジュール、プログラム、プロセス、コンポーネント、スレッドなどであってよい。
【0040】
図4は、APT攻撃が通常はどのように展開するか、およびAPTの解決策が侵入を止めるよう機能する位置を示している。例えばここで、攻撃者408は、スピア・フィッシング・メール410を使用して、ユーザに武器化された文書(すなわち、隠蔽されたエクスプロイト・コード412を含んでいる文書)を送信する。ユーザがAdobe(R) Acrobat(R)またはMicrosoft(R) Wordなどのビューアを使用してこの文書を開いたときに、エクスプロイト・コードが実行され、アプリケーションの脆弱性に結合し、マルウェアを従業員のコンピュータ402に静かにダウンロードする。ユーザは、このダウンロードを認識しない。別の選択肢は、エクスプロイト・コードを含んでいる悪意のあるWebサイト416または(例えば、水飲み場型攻撃によって)不正アクセスされた本物のWebサイトへのリンク414をユーザに送信することである。ユーザがこのリンクをクリックし、ブラウザがHTMLコンテンツを描画するときに、エクスプロイト・コードが実行され、ブラウザ(またはブラウザのプラグイン)の脆弱性にしがみつき、マルウェアをユーザのコンピュータに静かにダウンロードする。このリンクは、企業の認証情報を送信するようにユーザを説得するために、ユーザを(偽のWebアプリのログイン・ページのような)フィッシング・サイト418に向けることもできる。コンピュータ402を高度なマルウェアに感染させるか、または企業の認証情報に不正アクセスした後に、攻撃者408は、企業のネットワーク内の足場を確立しており、その後、攻撃を進めることができる。
【0041】
図に示されているように、エージェント400は、(1)悪用の試みがユーザのコンピュータに不正アクセスするのを防ぐエクスプロイト防止420、(2)マシンがマルウェアにすでに感染している場合に、マルウェアが攻撃者と通信し、情報を送信するのを防ぐデータ抽出防止422、および(3)ユーザが未承認の企業サイト(例えば、ソーシャル・ネットワークまたは電子商取引のようなフィッシング・サイトまたはパブリック・サイトを含む)で企業の認証情報を使用するのを防ぐ認証情報保護424という複数の接合部で、そのような脅威から企業を保護する。1つの既知の手法では、エージェント400は、正当なアプリケーションの状態のホワイトリストを使用してアプリケーションおよびその動作を監視することによって、これらおよび関連する動作を実行する。
【0042】
情報を盗むマルウェアは、エクスプロイトを必要とせずに、ユーザによってエンドポイントに直接インストールされることができる。通常、マルウェアは、データを抽出するために、インターネットを直接使用するか、または不正アクセスされたアプリケーションのプロセスを介して、通信しなければならない。高度なマルウェアは、少数の回避技術を使用して検出を回避する。例えば、情報を盗むマルウェアは、別の正当なアプリケーションのプロセスに不正アクセスし、(ForumsおよびGoogle(R) Docsのような)本物のWebサイトを経由して攻撃者と通信することがある。また、エージェント400は、データ抽出状態を示す信頼できないコードの実行を停止するよう機能する。この目的で、エージェント400は、信頼できるプログラムのみがデータ抽出技術を使用して外部ネットワークと通信することを許可されているということの妥当性を確認するのが好ましい。エージェント400は、複数の技術を使用して、許可されていない抽出状態および悪意のある通信チャネルを識別し、それらを遮断するのが好ましい。エージェント400は、ホスト自体での活動を監視するため、良好な可視性を有し、これらの抽出状態を正確に検出して遮断することができる。
【0043】
本明細書における手法は、(他のシステムに組み込まれる場合でも)任意のAPTの解決策または機能を使用して実装され得るため、本明細書において識別された市販用製品への参照は、制限するよう意図されていない。
【0044】
エンドポイントのプロセス間活動の抽出およびパターン照合
【0045】
上記を念頭に置いて、図5は、認知サイバーセキュリティ・インテリジェンス・センター500およびエンドポイント502を含んでいる基本的な動作環境を示している。エンドポイント502は、インテリジェンス・センター500によるエンドポイントの管理および監視を可能にするシステム管理コード(ソフトウェア)を実行する、図2に示されたデータ処理システムなどのネットワーク化されたデータ処理システムまたはデバイスである。インテリジェンス・センター500は、図4またはその他の管理の解決策に示されたようなAPTの解決策に関連して、図3に示されたようなセキュリティ管理プラットフォームとして実装されてよい。したがって、例えば、エンドポイント管理を実現する既知の市販用製品およびシステムは、リモート制御、パッチ管理、ソフトウェアの配布、オペレーティング・システムのデプロイメント、ネットワーク・アクセス保護、ならびにハードウェアおよびソフトウェア・インベントリ機能をシステム管理者に提供する、IBM(R) BigFix(R)を含む。この種の市販のシステムは、以下で説明されるサイバー検出ファジー・パターン照合メカニズムを含む、本明細書に記載された実施形態例のうちの1つまたは複数のエンドポイントのプロセス間活動抽出およびパターン照合技術を含むように拡張されてよく、またはそのような技術が、この目的のための専用の製品またはシステムにおいて実装されてよい。
【0046】
エンドポイント502は、一部の実施形態例では、Microsoft(R) Windows(R)、Mac OS X(R)、Vmware ESX(R)、Linux(R)、Unix(R)などのオペレーティング・システムを、Microsoft(R) Windows(R) Phone(R)、Symbian(R)、Apple iOS(R)、およびGoogle(R) Android(R)などのさまざまなモバイル・オペレーティング・システムとして実行する、物理的または仮想的なマシンまたはデバイスである。認知サイバーセキュリティ・インテリジェンス・センター500は、複数のマシンおよびアプリケーション・ソフトウェアを含んでいるネットワークアクセス可能なセキュリティ管理プラットフォームとして動作する。認知サイバーセキュリティ・インテリジェンス・センター500は、例えば機械学習などを使用して、サイバーセキュリティ分析をサポートする。認知サイバーセキュリティ・インテリジェンス・センター500は、複数のエンドポイントをサポートするための専用の方法で、または企業自身のエンドポイント502をそれぞれ含んでいる複数の企業の代わりに「サービスとして」動作してよい。通常、エンドポイント・マシンは、図1に示され、上で説明されたようなクライアント/サーバの枠組み内でインテリジェンス・センターと通信する。インテリジェンス・センターは、クラウドベースの動作環境内に配置され、アクセスされてよい。
【0047】
説明されるように、1つまたは複数の実施形態例によれば、プロセス間のイベントが、エンドポイント502などのエンドポイントから、そのようなイベントが分析される認知サイバーセキュリティ・インテリジェンス・センター500を実行している検出サーバに送信される。検出サーバで、攻撃または脅威の検出が発生する。理解されるであろうように、本明細書に記載された1つまたは複数の実施形態例に従う手法は、プロセス間のイベントを介してエンドポイントの活動を記録するため、抽象化(ネットワーク・グラフ)を使用して対象の悪意のある挙動または疑わしい挙動を表すため、および(記録されたイベントにおいて表されるような)具体的な活動を抽象パターンと照合するための効率的で体系的な(単にその場しのぎのメカニズムとは対照的な)メカニズムを提供する。さらに、一部の実施形態例に従って、一部の実施形態例に従う手法は、サイバー検出ファジー・パターン照合機能を含んでよい。実施形態例のパターン照合は、認知サイバーセキュリティ・インテリジェンス・センター500が、悪意のある/疑わしい挙動に対して(例えば、含まれているプロセスを停止する、警告する、進行中のネットワーク・セッションを削除する、進行中のディスク操作を停止するなどによって)動作できるようにすることに加えて、セキュリティ・アナリストが興味のある活動を特定すること(例えば、脅威ハンティング)、または疑わしい活動もしくは悪意のある活動に対処するためにワークフロー内で実施され得る次のステップを決定することを、支援できるようにする。
【0048】
本明細書における1つの技術によれば、直接的および間接的の両方のプロセス間活動がエンドポイントで抽出され、検出のために事前に定義された悪意のある挙動パターンと比較される。直接的および間接的プロセス間活動は、プロセスの生成などの制御フロー、およびファイル、ソケット、メッセージ、共有メモリなどのチャネルを介した情報交換を含んでよい。プロセス間活動は、プロセスの目的および特定の実行経路を明らかにする。本明細書における1つの手法では、プロセス間活動は、攻撃事例を検出するために、悪意のあるプロセス間の挙動と照合される。一部の実施形態例では、サイバー攻撃における主要なステップを特徴付けるために、抽象化を使用して悪意のある挙動パターンが事前に定義される。これらの悪意のある挙動パターンは、エンドポイントに格納されてよく、必要に応じて更新されることができる。
【0049】
図6は、本明細書に記載された1つまたは複数の実施形態例の技術に従って、挙動に基づく検出/推論を容易にするためにグラフが使用される方法を示している。この手法では、個人(例えば、ソフトウェア開発者、セキュリティ・アナリストなど)が、悪意のある挙動または興味のある挙動を、パターン・グラフ(PG)とも呼ばれる抽象グラフ・パターン600で表す。悪意のある挙動の図に示された例では、別のプロセス606を生成するイベント(タイプ::create thread)604を実行するプロセス602によって、DLLインジェクション攻撃がモデル化される。一般的に言うと、グラフ・パターン600は、ノード(この例では、プロセス602および606)、およびエッジ(この例では、2つのノードをリンクするイベント604)を含む。動作中に、パターン照合アルゴリズムは、グラフ・パターン600(またはPG)で定義されたパターンに一致する、ホスト・エンドポイント上の具体的な活動を返してよい。エンドポイント上の具体的な活動も、パターン照合を容易にするために、グラフによってモデル化される。エンドポイントのプロセス間活動から得られた、抽象グラフの挙動600に一致するそのような2つの例示的な活動グラフ608および610が示されている。第1の例示的な活動グラフ608では、イベントSyscall10を実行しているプロセスrundll.exeがプロセスlsass.exeを生成し、第2の例示的な活動グラフ610では、イベントSyscall11を実行しているプロセスFirefox.exeがプロセスexplorer.exeを生成する。これは、トポロジーの照合の例である。
【0050】
図7は、さらに複雑な例を示しており、プロセス間活動の監視の結果として、グラフ700が生成される。凡例702に示されているように、通常、グラフは、実体のセット、つまり、プロセス704、ファイル706、ネットワーク・リソース708、およびイベント710を含む。エンドポイント・システム内の各実体は、例えば、インストールされたFirefox(プロセスの実体)は「ブラウザ」である、インストールされたFirefoxは「64ビット」である、などの、実体のカテゴリおよびプロパティを説明するラベル(または「タグ」)に関連付けられるのが好ましい。ラベルは、手動で割り当てられるか(例えば、「ブラウザ」)、自動的に生成されるか(例えば、64ビットの実行ファイルである場合)、または機能によって計算される(例えば、プロセスが特定の要件を満たす場合に、ラベル「信頼できる」が割り当てられる)。ラベルは、プロセスのカテゴリの挙動パターンを作成するために、実体の名前を置き換えてよい。図7のグラフ700は、実体のセットを示し、含んでおり、実体の各々は、オフラインの方法で定義された関連するラベル(タグ)を含んでよい。プロセス間活動がエンドポイント上で監視され、実体間の活動が、例えばシステム・コールの監視、カーネル・フッキング、システム監視サービスなどによって、記録される。一部の実施形態例では、グラフを構築するために必要な情報を取得するために、相対的に制約されたシステム・コールまたはイベントのセットが監視される必要がある。1つの例(オペレーティング・システムとしてLinuxを前提とする)は、1つの実体を別の実体に関連付けるシステム・コールである(例えば、sys_openおよびstub_execve)。実体および監視された活動を接続することによってグラフが構築されてよく(必要に応じて、更新されてよく)、1つの例がグラフ700である。一部の実施形態例では、グラフはディスクに格納され、メモリにキャッシュされる。
【0051】
一般的に言うと、活動グラフは、エンドポイントで発生するリアルタイムのプロセス間活動の抽出を表す。図7にも示されているように、この抽出は、1つまたは複数の照合技術を使用する挙動の照合(インテリジェンス・センター内で実行されている検出サーバで発生し得る)を容易にする。これらの照合技術は、トポロジーの照合712、ラベルの照合714、および任意選択的に、具体的なシグネチャの照合716などの、1つまたは複数の照合技術を含んでよい。前述したように、グラフに示されたプロセス間活動(およびそれらに関連するラベル付け)は、1つまたは複数のプロセスの目的に加えて、それらのプロセスの特定の実行経路を明らかにする。生成されたグラフを(やはりグラフの形態で定義された)悪意のあるプロセス間の挙動と照合することにより、システムは、攻撃事例を検出して対処することが可能になる。述べたように、サイバー攻撃における主要なステップを特徴付けるために、ある程度の抽象化を使用して悪意のある挙動パターンが事前に定義される。
【0052】
より正式には、本明細書において使用されるとき、監視されたプロセス間活動の比較対象となる(図6のグラフ600などの)抽象パターン・グラフは、本明細書ではパターン・グラフ(PG)と呼ばれることがある。PGは1つまたは複数の制約を含んでよく、ある制約は、例えば、グラフの要素または要素の関係に対するブール関数であってよい。一部の実施形態例では、2種類の制約、すなわち、単一要素の制約(例えば、パターン・グラフ(PG)内の頂点/エッジのプロパティ/クラス/概念)、および1つまたは複数の要素の関係制約(すなわち、例えば直接接続、より大きい、「n」ステップで接続するなどの、1つの要素が別の要素にどのように関連するか)が存在する。ホスト(エンドポイント)の監視された活動が、グラフにおいてインスタンス化され、このグラフは、本明細書では活動グラフ(AG:activity graph)または計算グラフ(CG)と呼ばれることがある。図6では、グラフ608および610はAGまたはCGを表している。説明されるように、パターン照合の目的は、PGを満たすAGのすべてのサブグラフを検索することである。本明細書においてさらに説明されるように、データベースに問い合わせて、単一要素の制約または1つの要素の関係制約が実用的であることを検証することが仮定され、残りの課題は、複数制約グラフの解決策を提供すること、すなわち、すべての制約を効率的に満たすようにデータベース・クエリ生成を調整する方法である。実施形態例に関連する技術は、本明細書において説明されるように、この問題に対処する。
【0053】
図8は、検出システムの代表的な実施形態を示しており、この実施形態では、1つの実施形態例のエンドポイントのプロセス間活動抽出およびパターン照合技術が実践される。図に示されているように、特定の機能(例えば、セキュリティ管理プラットフォーム、APTの解決策、エンドポイント管理の解決策など)が、インテリジェンス・センター800に位置し、その一方で、特定の機能が、エンドポイント802に位置する。機能のこの配置は、1つの実施形態例に関して示されているが、本発明の実施形態の可能性のある実装に対する制限となるよう意図されていない。前述したように、インテリジェンス・センター800は、(例えば、企業内にある)エンドポイントのネットワーク専用であってよく、または企業自身のエンドポイントのセットをそれぞれ含んでいる複数の企業の代わりに、サービス・プロバイダ(またはさらに一般的には、「サービス」)として動作してよい。1つの例示的な実装では、サイバーセキュリティ・インテリジェンス・センター800は、ネットワークアクセス可能であり、クラウドベースの動作環境内でデプロイされるが、これは制限ではない。さらに、通常、図8で識別される各機能ブロックは、ソフトウェア、すなわちプロセッサ内で実行されるコンピュータ・プログラム命令のセットとして、実行される。図8で識別される機能が、単に説明の目的で提供されるということ、および必要に応じて、これらの機能のうちのいくつかが組み合わせられるか、またはその他の方法で再構成されてよいということが理解されるべきである。
【0054】
図に示されているように、インテリジェンス・センター800は、複数の機能、すなわち、ラベル生成804(ステップ1)、ならびに悪意のある挙動発見およびエンコーディング806(ステップ(4))を実行する。図に示されているように、通常、これらの活動は、インテリジェンス・センター800内で使用できる既存の攻撃情報(例えば、脅威レポート808、専門知識810、ならびに脅威のサンドボックス化および評価から得られた情報812)によって、そのような攻撃情報に基づいて知らされる。この情報のセットは、セキュリティ・アナリストによって使用可能であるか、またはその他の方法で取得される。図7に関して前述したように、ラベル生成804で、エンドポイント・システム802内の各実体が、実体のカテゴリおよびプロパティを説明する1つまたは複数のラベルに関連付けられる。ラベルは、手動で適用される、自動的に適用される、プログラムによって適用されるなどであるか、または何らかの組み合わせによって適用される。ラベル生成804は、定期的に実行されるか、または特定の出来事の発生時に実行されてよい。悪意のある挙動発見およびエンコーディング806は、既存の攻撃から悪意のある(または疑わしい)グラフ・パターンを導き出す。述べたように、一部の実施形態例では、これらのパターンは、人間のアナリスト、他のセキュリティ検出メカニズム、機械学習システム、またはこれらの組み合わせによって決定される。やはり示されているように、攻撃元の知識ベース(808、810、812)から生成された悪意のあるパターンのセットが、悪意のあるパターン・データベース814に格納される。
【0055】
エンドポイントの機能802を参照すると、機能ブロック816(ステップ2)がプロセス間活動の抽出を表し、監視818(ステップ2.1)およびラベル付け820(ステップ2.2)を含んでいる。監視機能818は、例えばシステム・コールの監視、カーネル・フッキング、システム監視サービスなどによって、実体間の活動を記録する。したがって、監視機能818は、既存のエンドポイントのサービス機能を活用してよい。述べたように、監視818がすべてのシステム・コールまたはイベントを監視する必要はなく、監視されるシステム・コールおよびイベントは、必要に応じて構成可能である。ステップ2.2で、ラベル付け機能820が、ラベル付け機能(ステップ1)によって作成された挙動シグネチャを受け取り、抽象的な/ラベル付けされた挙動シグネチャを構築する。この抽象化は、抽象的な/ラベル付けされた挙動シグネチャがより一般的な方法で攻撃ロジックを表し、したがって、特定の攻撃の1つまたは複数の攻撃の変形を対象にするため望ましく、その後の照合動作(以下で説明される)時にラベルまたは具体的な頂点/エッジの効率的な照合を可能にする。
【0056】
機能ブロック822(ステップ3)は、活動グラフを構築する。説明されるように、この処理は通常、新しい活動が発生して監視されたときにグラフを拡張する取り込み824(ステップ3.1)およびエージング826(ステップ3.2)を含み、それによって、グラフの頂点/エッジが構成可能なしきい値より古くなった場合、または新たに拡張されたグラフまでの頂点/エッジの距離が構成可能なしきい値より大きくなった場合に、それらの頂点/エッジが削除される(取り除かれる)。これらの活動グラフ構築機能822によって生成されたプロセス間活動グラフは、データベース828に格納される。プロセス間活動グラフは、好ましくは継続的に、監視機能、取り込み機能、およびエージング機能が動作するにつれて発達する。
【0057】
やはり図に示されているように、エンドポイントは、攻撃サブグラフ照合機能830(ステップ5)をサポートする。この機能を使用して、エンドポイント保護システムは、発達するプロセス間活動グラフと悪意のある挙動のグラフ・パターンの間で、グラフ・パターン照合を継続的に実行する。これらのパターンは、インテリジェンス・センター800内の悪意のあるパターン・データベース814によって提供され、悪意のあるパターンのローカル・キャッシュ832に格納される。前述したように、攻撃サブグラフ照合機能は、ローカル・キャッシュ832に格納された悪意のある挙動のグラフ・パターンに一致するグラフ下部構造を検索する。したがって、この手法では、エンドポイントの検出システムの機能が、発達する活動グラフを悪意のあるプロセス間のグラフ・パターンと比較する。この照合に基づいて、その後、軽減および回復力機能834(ステップ6)が呼び出されてよい。機能834は、レポート機能836(ステップ6.1)および反応機能838(ステップ6.2)を含んでいる。したがって、機能834は検出後の動作を提供し、これらの動作は、含まれているプロセスを停止すること、警告すること、含まれているプロセスをさらなる評価のためにサンドボックスに移動すること、進行中のネットワーク・セッションを削除すること、進行中のディスク操作を停止すること、次のステップを決定するために、一致したサブグラフをユーザに渡すこと、さらなる調査のために、一致したサブグラフをセキュリティ・アナリストに提出すること、機械学習分類器をトレーニングすることなどを含む。これらは、単に代表的な検出後の動作である。
【0058】
図8に示されているように、軽減および回復力機能834は、オンデマンドの方法でインテリジェンス・センター800と情報をやりとりし、一方、エンドポイントの機能内の情報の流れは連続的である。これは好ましい手法であるが、エンドポイント802内の1つまたは複数の機能が定期的に、発生に応じて、またはオンデマンドで実行され得るため、制限となるよう意図されていない。
【0059】
したがって、1つまたは複数の実施形態例の技術は、プロセス間のイベントを記録することと、記録されたプロセス間のイベントに基づいてプロセス間活動グラフを作成することと、(活動グラフで表された)プロセス間活動を(パターン・グラフのセットにおいて具現化された)既知の悪意のある挙動または疑わしい挙動と照合することと、プロセス間活動と既知の悪意のある挙動パターンまたは疑わしい挙動パターンの一致に応じて、検出後の動作を実行することとによって、エンドポイントを監視して保護するための堅牢な方法を提供する。照合は、活動グラフ(AG)内のサブグラフを、パターン・グラフ(PG)で表された既知の悪意のある挙動パターンまたは疑わしい挙動パターンと照合することを含むのが好ましい。この処理中に、エンドポイントで(またはエンドポイントのセット全体にわたって)、好ましくは直接的および間接的の両方のプロセス間活動が、既知の挙動パターンと比較される。以下では、前述した検出システムのさまざまな動作(機能)に関して、さらに詳細に説明する。
【0060】
図9は、1つの実施形態例に従って、ラベル付けされたサブグラフの照合が実装される方法を示している。前述し、図に示されたように、ラベル生成(ステップ1)は、通常、インテリジェンス・センターで発生し、ラベル付け機能(ステップ2.2)はエンドポイントで実行される。この手法では、具体的なシグネチャ(例えば、以前の攻撃データのおかげで、またはその他の方法で、システムで使用可能であるシグネチャ)が、(ステップ1で)(具体的な)挙動シグネチャに変換され、その後、(ステップ2.2で)抽象的な/ラベル付けされた挙動シグネチャに変換されるのが好ましい。この技術は、抽象的な/ラベル付けされた挙動シグネチャが(単なる特定の攻撃の流れとは対照的に)一般的な攻撃ロジックを表すため、ラベル付けされたサブグラフの照合を容易にする。特に、抽象的な/ラベル付けされた挙動シグネチャは、攻撃サブグラフの照合時に(例えば、ラベルによって、または具体的な頂点/エッジによって)照合される。攻撃ロジックを表すことによって、グラフに基づく挙動シグネチャは、単純で具体的なプロセス間の挙動シグネチャを使用するその場しのぎの手法よりも多くの攻撃の変形を対象にする。
【0061】
図10は、取り込み機能(ステップ3.1)をさらに詳細に示している。図に示されているように、取り込み機能は、ノイズをフィルタリングすること(ステップ3.1.1)から開始し、その後、イベントがイベント・キューに挿入され、時間によって順序付けられる(ステップ3.1.2)。次に、プロセス間活動グラフを発達させるのを容易にするために、新しい実体が、好ましくは新しいキーとして、実体-イベント・マップ(entity-event map)に挿入される(ステップ3.1.3)。追加のイベントが受信されると、それらのイベントが、実体-イベント・マップ内の関連する実体の値(リスト)に追加される(ステップ3.1.4)。
【0062】
図11および図12は、エージング機能が活動グラフを発達させるために使用される方法を図に示し、説明している。図11は、2つの異なる時間(初期およびエージング機能の適用後)での実体-イベント・マップを示している。図に示されているように、イベントが発見された(受信された)ときに、それらのイベントがイベント・キューに入れられ、実体で表される。結果として生じる実体-イベント・マップが、図面の左側に示されている。特定のイベントが古くなると、それらのイベントがイベント・キューから取り除かれ(デキューされ)、同様に、影響を受けた実体が更新される。更新された実体-イベント・マップが、図面の右側に表されている。図12は、これらの動作をプロセス・フローで示している。したがって、ステップ3.2.1で、古いイベントがデキューされる。ステップ3.1.2で、デキューされたイベントごとに、関連する実体識別子(id:identifier)が読み取られ、実体-イベント・マップ内のその実体の値からイベントが除去される。ステップ3.2.3で、実体-イベント・マップ内のゼロ個のイベントを含むすべての実体が除去される。
【0063】
図13は、一時的プロセス間活動および永続的プロセス間活動に対して、検出システムが、好ましくはディスク上のストレージを使用して、間接的なプロセス間活動をモデル化する方法を示している。図に示されているように、取り込み機能(ステップ3.1)およびエージング機能(ステップ3.2)は、プロセス間活動グラフの構築を容易にし、攻撃サブグラフのモデル化を容易にする(ステップ5)。これらの動作中に、一時的プロセス間活動グラフおよび永続的プロセス間活動グラフの両方の構築のためのディスク上のストレージは、すべての既知のプロセス間のチャネルが体系的に対象にされることを保証する。この手法は、多段階の攻撃、または遅延された動作を伴う見えない攻撃が発見を免れないことをさらに保証する。
【0064】
図14は、照合機能(図8のステップ5)ならびに軽減および回復力機能(図8のステップ6)に関する追加の詳細を示している。ステップ5.1は、通常は具体的なシグネチャおよびラベルに基づく、高い信頼性での悪意のある挙動の一致を表している。この種の悪意のある挙動の一致が発生した場合、通常は、反応機能(ステップ6.2)で識別された動作のうちの1つまたは複数が実行される。ステップ5.2は、通常はラベルおよびトポロジーを含む抽象パターンを使用することに基づく、疑わしい挙動の一致を表している。この種の疑わしい挙動の一致が発生した場合、ユーザによって支援されたラベル付け(ステップ6.1.1)が実行され、それに続いて1つまたは複数の報告動作(ステップ6.1.2)が実行されてよい。ユーザによって支援されたラベル付け動作は任意選択的である。
【0065】
挙動の発見のため、または挙動シグネチャの照合のために、いずれかの特定のアルゴリズムが実装されるという要件はない。むしろ、前述したようなシステムの手法は、直接的および間接的プロセス間活動に基づいて生じる複雑なサイバー攻撃または長期にわたるサイバー攻撃あるいはその両方を検出するための体系的手法を提供する。
【0066】
パターン・グラフ(PG)(図6のグラフ600など)は、視覚的に(すなわち、グラフを描画することによって)指定されてよいが、これは要件ではない。パターン・グラフ(またはグラフ・パターン)は、他の方法で(例えば、プログラム言語によって)指定されてもよい。
【0067】
以下では、前述した活動グラフ(AG)の構築に関して、さらに詳細に説明する。活動グラフは、通常、1つまたは複数のコンピューティング・デバイス(エンドポイントを含んでよい)上の計算を時間的グラフとして表す。そのため活動グラフは、計算の抽象化を表すため、本明細書では計算グラフ(CG)と呼ばれることもある。「活動グラフ」および「計算グラフ」という概念は、本明細書では同義的に使用される。すでに説明したように、AG/CGの基本的要素は、実体(例えば、プロセス、ファイル、ネットワーク・ソケット、レジストリ・キー、GPSセンサ、加速度計など)およびイベント(例えば、ファイルの読み取り、プロセスのフォークなど)である。実体は、情報を送信または受信することができる任意のシステム要素である。イベントは、2つ以上の実体を接続する任意の情報/制御の流れである。イベントは、特定の時間での実体の対における実体間の情報の流れである。イベントは、システム・コールなどの形態で捕捉されることができる。イベントは、一意のタイムスタンプ(イベントが発生した時間)および情報の流れの方向(方向性、双方向性、無方向性)を有する。イベントの入次数の実体は、方向に基づいて、イベントの1つまたは2つの実体であることができる。イベントの出次数の実体は、方向に基づいて、イベントの1つまたは2つの実体であることができる。タイムスタンプは、イベントの時間を記録する整数または実数であり、結合点(またはチェックポイント)は、<実体,タイムスタンプ>のタプルである。
【0068】
したがって、AG/CGは、攻撃または脅威に関連付けられた実体またはイベントを含んでいる計算の履歴を参照する。警告、セキュリティ侵害インジケータ(IOC:indicators of compromise)、および脅威分析の中間結果などの、セキュリティ関連のデータは、AG/CGの要素でラベルとして示されることができるサブグラフであり、要素は、実体またはイベントを参照する別名である。その結果、脅威の検出はグラフ計算問題になり、その解決策は、AG/CG内の脅威を引き起こすサブグラフを反復的に推論することである。
【0069】
さらに一般的には、本明細書において使用されるとき、活動グラフは、計算に関連付けられたセキュリティ知識と共に、コンピューティング・デバイス上の侵入的または非侵入的計算の両方を客観的に記録する、ラベル付けされた半有向時間的グラフである。グラフ上の特定のラベル(例えば、要素属性ラベル、要素関係ラベル、およびセキュリティ知識ラベル)は、通常、複数のカテゴリのうちの1つを示す。要素属性ラベルは、(前述したように)計算の記録から得られた目的格の情報である。要素属性ラベルは、特定の属性(例えば、イベント・タイプREAD)を有する要素のセットを識別するラベルの一種である。要素関係ラベルは、計算の記録から得られた目的格の情報である。要素関係ラベルは、要素のセットの間の何らかの関係(例えば、多数のREAD/WRITEイベントを接続するプロセスのREADイベントとWRITEイベントの間の来歴のリンク)を表すラベルの一種である。要素関係ラベルは、よりきめの細かい来歴情報をプロセス間レベルのパターン・グラフ(PG)に埋め込む。セキュリティ知識ラベルは(使用された場合)、セキュリティおよびプライバシーの目的および推論手順に関する主格の情報である。セキュリティ知識ラベルは、何らかのセキュリティ知識を含む要素のグループにマークを付けるラベルの一種である。セキュリティ知識ラベルは、例えば、脅威の推論、組織のポリシー、IOC、または外部検出システムからインポートされた異常スコアの中間結果/最終結果のいずれかとして生成されることができる(例えば、機密ファイルのセット、またはコマンド・アンド・コントロールサーバとしてマーク付けされたIPアドレス)。
【0070】
企業および組織は、脅威の発見のために、複数のレベルで計算を検査することがある。AG/CGは、ネットワーク、ホスト、またはプロセスのレベルなどの選択された監視レベルで、計算を表す。監視レベル(例えば、ネットワーク)を前提として、実体内の活動(例えば、ホスト内のプロセス通信)は、通常、監視範囲外にあり、CGでは表されない。よりきめの細かい計算情報は、より低いレベルのCG(例えば、ホスト・レベルでのCG)で表されるか、またはラベル(例えば、来歴ラベル)としてCGに埋め込まれてよい。
【0071】
図15は、代表的なホストレベルのAG/CG(例えば、プロセスおよびファイル)を示している。図15(およびそれに続く図16~17)は、計算履歴を時間的グリッドとして表しており、水平方向の線は実体を表し、垂直方向の線はイベントを表す。図15で、例えばシステム・コールの監視およびプログラムのインストルメンテーションによって、システムの活動がログに記録される。このCG内の実体(en)は、主語(例えば、プロセスおよびスレッド)および目的語(例えば、ファイル、パイプ、およびネットワーク・ソケット)で構成される。この例では、セキュリティ・データがラベルに埋め込まれる。lb1:sensitiveは、enf2が機密情報を含んでいることを示し、lb2:untrustedは、enp3が企業によって認証されていないことを示す。この例では、図15に示されているように、enp3がenf2からトラバースされることができる場合、データ漏洩が発生する。
【0072】
図16は、ネットワーク・レベルでの代表的なAG/CGを示している。この例では、小規模なネットワークのリンク層通信のメタデータが、脅威インテリジェンス・コンピューティング(threat intelligence computing)のためにログに記録される。図に示されているように、lb1は、実体enσ2、enσ3、およびenσ4の間の4つのイベントをリンクする来歴ラベルである。リンクlb1は、不可能な経路を回避してenσ3とenσ4の間の因果関係チェーンを識別するのに役立つ。ポートのスキャンおよびホスト間の横移動などの攻撃ステップが、この計算グラフ上で識別され、推論されることができる。
【0073】
図17は、プロセス・レベルでAG/CGを示しており、例えば動的プログラム分析によって、プロセスを含む活動が監視される。このグラフでは、実体は、コードおよびデータのメモリ・アドレスであり、イベントは、命令(例えば、呼び出し)またはシステム・コール(nmap)である。θ(監視または追跡されることができる実体の空間)の無限大は、再帰呼び出しの表現をサポートし、例えば、foo()のインスタンスは、enfoo、en’foo、...として表される。この計算グラフ上で、return-to-libcおよびリターン指向プログラミング(ROP:return-oriented programming)などのソフトウェア・エクスプロイトが捕捉され、検査されることができる。
【0074】
侵入的データまたは非侵入的データの両方に関して目的格の計算履歴を記録する活動/計算グラフを前提として、脅威の回復が、AG/CG内のセキュリティ関連のサブグラフのサブセットに対して近接を反復的に計算するグラフ・クエリ問題に減少し、最終的に、脅威または侵入を表すサブグラフを得る。グラフ・クエリは、侵入検出システムまたは挙動異常検出システムにプログラムされることができ、あるいはオンデマンドの迅速な推論開発によって達成されることができる。脅威ハンティングは、脅威の仮説を反復的かつ対話的に考え出し、検証し、修正し、確認するために、グラフ・クエリのシーケンスを作成する。
【0075】
グラフ・クエリを作成して活動/計算グラフ内で実行するプロセスは、グラフ計算である。この計算中に、サブグラフを参照する変数も、そのサブグラフの実体およびイベントのセットへのラベルであり、この変数は、ラベルとしてAG/CGに格納されることができる。各反復的グラフ計算ステップの結果はサブグラフまたはラベルであるため、各ステップは、グラフ計算言語でネイティブに実装されるか、またはイベントおよび実体のセットをサブグラフとして出力するブラックボックスとして、外部モジュールに実装されることができる。したがって脅威インテリジェンスは、脅威が発見されたときに、グラフ・クエリで生成される。クエリ、特にパターン・グラフ(PG)は脅威を表し、特定の脅威に関して他の活動/計算グラフを検索するために実行されることができる。
【0076】
グラフ・パターン照合は、グラフ問い合わせの中核を成す。一般にグラフ・パターンは、本質的に、照合されるサブグラフを表す一連の制約であり、グラフ要素に対する制約は、(1)単一のグラフ要素(例えば、実体のラベル/プロパティ)、または(2)要素関係(例えば、実体がイベントに接続する)を表す。パターン作成は、人間の領域知識を推論手順に埋め込むことを可能にする。ほとんどのグラフ言語によって表されることができる単純なパターンの例としては、標準的なDLLインジェクションの挙動(例えば、PROCESSのラベル付きの実体が、CREATE_THREADのラベル付きのイベントによって接続される)、信頼できない実行の挙動(例えば、FILEのラベル付きだが、TRUSTED_EXEのラベル付きでない実体が、EXECUTEのラベル付きのイベントに接続し、次に、PROCESSのラベル付きの実体に接続する)、およびデータ漏洩の挙動(例えば、SENSITIVEのラベル付きの実体が、特定のホップ数内でNETFLOWのラベル付きの実体に接続する)が挙げられる。これらは、代表的だが非限定的な例である。
【0077】
活動/計算グラフおよびパターン・グラフの計算を管理するために、前述のシステムは、ライブの脅威フォレンジック調査(forensic threat investigations)のための効率的なデータの格納および検索を提供するように設計され、実装されたグラフ・データベースを備える。一部の実施形態例では、グラフ・データベースは、データの局所性および不変性などの固有の計算グラフのプロパティを対象にする低レベルのPG操作の最適化のために、分散キー値ストアによって支援される。この種の代表的なデータベースは、“FCCE: Highly scalable distributed Feature Collection and Correlation Engine for low latency big data analytics,” to Schales,et al.(以下では、「FCCE」)において説明されている。一般に、適切なデータベースは、同時の複数ソースのストリーミング・データの取り込みと共に、データ局所性の最適化を伴うデータ格納の長期間の監視のために、分散キー値ストアを採用するデータベースである。
【0078】
前述の手法は、大きな利点を提供する。説明されたように、この手法は、体系的なプロセス間活動の抽出および挙動の照合を可能にする。この技術は、シグネチャの照合、単一のプロセス(内)検出方式、およびその場しのぎのプロセス間の挙動のモデル化に頼る従来方式における欠陥に対処する。述べたように、本明細書における手法は、直接的および間接的プロセス間活動の両方のモデル化に加えて、悪意のある挙動または疑わしい挙動を示す抽象パターンとの具体的な活動の効率的な照合も可能にする。その結果は、攻撃からのエンドポイントのより堅牢で正確な保護である。さらに、この技術は、検出される活動に合わせて注意深く調整されることができる、より効果的な検出後の動作を可能にする。
【0079】
プロセス間の挙動パターンを、説明されたような抽象的な攻撃のシグネチャとして使用することは、既存の具体的な攻撃のシグネチャの方式と比較して、大きな利益をもたらす。本明細書における技術に従って監視されたプロセス間活動は、長い攻撃ベクトルを有する攻撃、または攻撃の目的を果たすために複数のプロセスを使用する攻撃を記録する。シグネチャに基づく従来の手法は、そのような攻撃を発見しない。攻撃ロジックを表すために(より具体的なシグネチャとは対照的な)抽象的な/ラベル付けされた挙動シグネチャを使用して、検出プロセスの間に、より多くの攻撃の変形を対象にすることができる。実際に、きめの細かい攻撃の記述に対して動作することが多い従来技術は、モデル化および推論のために著しく大きい計算能力を必要とし、それによって、これらの技術を非実用的または高価にする。加えて、本明細書における抽象的な/ラベル付けされた挙動シグネチャよりきめの細かくない攻撃の記述は、多くの場合、エンドポイント自体における侵入の検出に役立つことができない。さらに、実施形態例に従うプロセス間の挙動は、エンド・ユーザが理解し、必要な場合に行動を起こすために、明確な意味論的意味を有する。
【0080】
一般に、前述の手法は、改善されたエンドポイントでの検出に基づくサイバーセキュリティを提供する。本主題は、プロセス間の悪意のある挙動パターンまたは疑わしい挙動パターンを特徴付けることにおいて使用する、プロセス間の挙動を体系的にモデル化するための新しい手法をさらに提供する。このモデル化は、高度な検出、ならびに特に、プロセス間の悪意のある/疑わしい挙動の発見およびプロセス間の挙動シグネチャの照合のための基盤を提供する。
【0081】
説明された手法は、セキュリティ・イベント・データ(例えば、サイバーセキュリティ・インシデント)に関して改良されたプロセスを提供し、システムがインシデントにより効率的に対応できるようにする。自動化されたこの手法は、非常に効率的であり、SOCアナリストのワークフローの要件を大幅に軽減にし、脅威ハンティングなどの検出後の動作を容易にする。
【0082】
サイバー・インシデントの推論のためのグラフ照合における反復的な制約の解決
【0083】
述べたように、AG/CGは、要素間の制約および接続を含む、要素のグラフである。そのようなグラフのパターン照合は、すべての要素のすべての制約およびそれらの要素の接続方法を満たすことを必要とする。しかし通常は、グラフ・データベースに対する1つのクエリは、1つの制約または接続関係しか扱うことができない。この制限に対処するために、以下で説明される実施形態例の態様は、クエリを計算して調整するため、およびクエリ結果を処理するための新しい制約解決アルゴリズムを提供し、それによって、抽象グラフ・パターン照合の正しさおよび効率を保証する。
【0084】
以下では、パターン照合、例えば、グラフ・パターンとの活動グラフ(例えば、エンドポイントによって構築された活動グラフ)の照合に利用される、制約の解決のための技術について説明する。この動作は、例えば、攻撃サブグラフ照合機能(例えば、図8の要素830、ステップ(5))において使用される。前述したように、パターン照合の評価は、パターンによって定義された制約または述語表現のセットを解決することを含む。このタスクは、あるパターンがパラメータを介して他のパターンを参照する可能性があるため、およびパターン・グラフが通常、分散された外部ストレージに格納されるため、計算的に非自明であり、各述語に関連付けられたデータをチェックすることを高価にする。
【0085】
パターンのパラメータ表現に対処するために、以下の技術が実装される。特に、制約解決プロセスは、単一パターンの参照に関して、いつパターンの適用を実行する必要があるか、およびその適用回数を効率的に決定する。例えば、パターンの参照が、特定の述語(例えば、「達する」)に関連する変数に関連する場合、参照されたパターンは、その後のトラバース・ステップにおいてディスク上のデータの要求を最小限に抑えるために、トラバース手順において繰り返し適用されてよい。
【0086】
ディスク上のデータのクエリは一度に1つの制約を解決することしかサポートしないため、実施形態例の制約解決プロセス(またはアルゴリズム)は、反復的に制約を解決し、最後に解決された制約を、すでに満たされた制約に関連付けられたすべての変数に伝搬することによって機能する。特に、例えば攻撃/脅威を定義するパターン・グラフ(PG)が構文解析され、抽象構文木(AST:abstract syntax tree)が作成されるときに、インタープリタは、制約が接続される方法を決定し、制約関係を制約グラフ(GoC)としてAST内の補助データ構造に格納する。パターンを評価するために、制約解法は、(例えば、発見的手法、ユーザの指導などによって)制約を順序付け、単一要素の制約(例えば、xが<タイプ:READ>を有する)および複数要素の制約(例えば、xがyを接続する)を含むすべての制約を反復的に満たす。各反復的制約解決ステップの後に、パターンに関連付けられた変数が、状態変更を受けてよい。1つの実施形態例によれば、この状態変更は、GoC上のグラフ・トラバースによって、変更された変数からすべての解決された変数に向かって、すべてのすでに格納された変数に伝搬される(本明細書において使用されるとき、変数とは、抽象パターン・グラフ内の要素の一致結果のセットのことを指す)。
【0087】
したがって、制約グラフ(GoC)は、制約解決アルゴリズムによって使用するために、PGから補完的データ構造として得られる。PG内の制約が満たされた後に、アルゴリズムは、すべてのすでに満たされた制約が、まだその状態を保っているかどうかチェックする。この動作は、前の、ただし必ずしも最後ではない制約を満たす、AG/CG内の一部のサブグラフ・インスタンスを除去するように設計される。この動作は、GoC内の最後の制約ノードから他のすべての既存のノード(すでに解決された制約)へのグラフ・トラバースとして実現される。
【0088】
したがって、実施形態例の態様によれば、抽象グラフ・パターン照合システムは、単一のグラフ要素の制約解決のために、単純なデータベース・クエリをシリアル化し、次に、抽象グラフ・パターン全体の照合の正しさを保証するために、反復的な制約の伝搬を実行する。基本概念は、一度に単一の要素の制約を評価し、次に、例えば、(接続されたグラフ、すなわちGoCとしての)パターン内を移動することによって、制約解決結果をすべての関連するパターンの要素に伝搬することである。説明されるように、一部の実施形態例では、1つの要素の制約解決ステップの後半は、単一要素の制約ではなく、接続性制約のみを評価する。単一要素の制約解決のステップが繰り返され、単一要素の制約が評価され、その後に伝搬が続く。このプロセスは、すべての単一要素の制約が評価され、すべての伝搬が実行されるまで続く。
【0089】
図18は、1つの実施形態例に従って、反復的制約解決プロセスをプロセス・フローとして示している。反復的制約解決プロセス(「反復的制約解法」とも呼ばれる)は、制約を反復的に解決し、最後に解決された制約を、すでに満たされた制約に関連付けられたすべての変数に伝搬することによって、計算効率および格納効率の大幅な向上をもたらす。図18を参照すると、ステップ1800で、プロセスが、PGの要素間の関係グラフを構築することから開始し、この関係グラフは前述のGoCである。ステップ1802で、GoC内のすべての要素が未解決としてマーク付けされる。ステップ1804で、GoC内のすべての要素が解決済みとしてマーク付けされたかどうかを判定するためのテストが実行される。そのようにマーク付けされていない場合、ルーチンが、ステップ1806で、1つの要素の制約を解決することに進み、その後、その要素に解決済みとしてマーク付けする。前述したように、反復的制約解法は、一度に1つの制約を解決するのが好ましい。ステップ1808で、1つの要素の制約に関して、(1つの要素の解決の)結果が、解決されているGoC内のすべての接続された要素に伝搬される。次に、プロセスが1804に戻り、GoC内のすべての要素が解決済みとしてマーク付けされるまで反復する。ステップ1804で、テストの結果が肯定的である(すなわち、GoC内のすべての要素が解決済みとしてマーク付けされた)場合、プロセスは、ステップ1810で、一致したサブグラフを出力することに進む。これによって処理を完了する。
【0090】
このようにして、この実施形態例の反復的解法は、接触済みの変数の空のセットから開始し、未接触の各変数を初期化する(ステップ1802)。次に、プロセスは、反復ごとに単一の制約を評価することによって、新しい制約の評価を実行し、関連する変数を接触済みとして設定する(ステップ1806)。同じ反復内で、次にプロセスは制約を伝搬し、具体的には、変更を反映するように関連する接触済みの変数を更新することによって制約を伝搬する(ステップ1808)。その後、プロセスは、(まだマーク付けされていない他の制約について)新しい制約の評価を繰り返し、すべての制約が評価されるまで続ける。
【0091】
単一要素の制約を評価するときに、各制約は、グラフ要素に対するフィルタのように機能する。例えば、「要素x{タイプ:event_read}」は、タイプevent_readでない「x」内の要素をフィルタリングして除去する。接続性制約を評価するときに、各制約は、2つ以上のグラフ要素に対するフィルタのように機能する。例えば、「要素xがyに接続する」は、「y」に接続していない変数「x」に格納されている要素をフィルタリングして除去し、逆に「y」についても同様である。前述のフィルタリングは、前の反復で変数が接触されている場合に、メモリ内で発生する。そうでない場合、変数は、(データベースに格納されている)活動グラフ全体への参照を維持する。その場合、活動グラフ全体をフィルタリングするためのデータベース・クエリが生成される。
【0092】
1つの実施形態では、伝搬動作(1808)は、GoCの接続性を考慮するキューを使用する独自の幅優先探索(BFS:breath first search)機能を使用する。この機能は、要素が解決されたかどうか(解決済みの要素のみがキューに追加されるため)、および制約が変更を行ったかどうかを考慮する(変更が発生しない場合、頂点がキューから削除される)。1つの実施形態例では、伝搬は、新たに解決された要素に基づいて要素関係制約を適用し、関係制約内の他の要素に影響を与える。
【0093】
図19は、パターン・グラフ1900および対応するGoC1902の代表的な例を示している。図19は、このようにして、図18のプロセス・フロー内のステップ1800に対応している。パターン・グラフにおいて一部の要素関係が明示的に記述されないことがあるため、GoCがパターン・グラフと異なることがあるということに注意するべきである。これらの例では、図20~23は、GoCを使用する、パターン・グラフに対する反復的制約解決プロセスの適用を示している。特に、図20は、プロセス・フロー内のステップ1806に対応している。ここで、プロセスであるすべての頂点を照合することによって、プロパティの値が部分文字列「firefox」を含んでいるプロパティ「cmdline」を有する第1の要素が一致する(解決される)。ステップ1806および1808に対応する図21は、その後プロセスが、この場合(GoC内の)要素2から要素1に伝搬を実行し、接続する要素2を持っていない要素1内のすべての一致した頂点を取り除く方法を示している。これは、前の、ただし必ずしも最後ではない制約を満たすサブグラフ・インスタンスを除去する概念である。やはりステップ1806および1808に対応する図22は、さらなる伝搬動作を示しており、すなわち、(GoC内の)要素3から要素2に逆向きに伝搬し、プロセスではない偽の要素3に接続するすべての一致するエッジを取り除く(プロパティ「タイプ」に対する単一要素の制約)。やはりステップ1806および1808に対応する図23は、さらなる伝搬動作を示しており、すなわち、要素4からすべての関連する要素(この場合、要素3、2、および1)に逆向きに伝搬し、要素4の単一要素の制約(タイプread)に起因して頂点およびエッジを取り除く。
【0094】
一般に、この手法によれば、GoCが抽出され、パターンの補助データ構造として格納される。反復内の制約の伝搬中に、GoCがトラバースされ、評価された述語の変数から、他のすべての接続された接触済みの変数に、フィルタリングの影響を伝搬する。反復的制約解法が機能する活動グラフがプロセス間活動グラフに制限されるという要件はない。前述の反復的制約解決技術は、任意の種類の活動グラフ、例えば、プロセス、ホスト・マシン、(例えば、各実体がホストである)マシンのネットワークなどに関連して捕捉された活動データを表す活動グラフに使用されてよい。
【0095】
加えて、この技術はグラフ・パターン照合を利用する他の使用事例にも適用可能であってよいため、反復的制約解決プロセスがサイバー・セキュリティの推論のみに使用されるという要件はない。したがって、説明された手法(すなわち、制約の補助的グラフを使用する単一のグラフ要素の制約解決およびその後の反復的な制約の伝搬実行のための単純なデータベース・クエリのシリアル化)は、任意の抽象グラフ・パターン照合システムにおいて実装されてよい。
【0096】
図24は、1つまたは複数の実施形態例に従う技術が提供され得るグラフ計算プラットフォーム2400の代表的なアーキテクチャのブロック図である。このプラットフォームは、図8に示されたインテリジェンス・センターにおいて、図3のセキュリティ・インテリジェンス・プラットフォームにおいて、図4のAPTの解決策において、スタンドアロンの機能またはアプリケーションとして、ネットワークまたはクラウドアクセス可能なサービスとして、あるいはその他の方法で実装されてよい。図に示されているように、プラットフォーム2400は、言語インタープリタ2402、グラフ・データベース2404、およびユーザ・インターフェイス・コンポーネント2406を含んでいる。ユーザ・インターフェイス・コンポーネント2406は、対話型コンソール2408および計算グラフ視覚化ツール(ブラウザ)2410を含んでいる。ユーザ・インターフェイス・コンポーネントは、脅威の推論のための対話型のプログラミングおよびデータ検査環境を提供する。グラフ・データベース2404は、グラフ・クエリ・インターフェイス2412、メモリ内のグラフ・キャッシュ2414、要素キャッシュ2416、ラベル・キャッシュ2418、1つまたは複数のグラフ構築ルーチン2420、ディスク上要素クエリ機能2422、キー値ストア変換テーブル2424、およびFCCEクライアント2426を含むのが好ましい。FCC3クライアント2426は、ネットワーク全体にわたって1つまたは複数のFCCEデータ・ノード2428とインターフェイスをとり、これらのノードは、通常、分散された方法でグラフを格納する。前述したように、グラフ・データベース2404は、データ局所性の最適化を伴うデータ格納の長期間の監視、および同時の複数ソースのストリーミング・データの取り込みのために、FCCEデータ・ノード2428すべてにわたって分散キー値ストアを採用する。
【0097】
インタープリタ2402は、制約解法2430、他の組み込みのアルゴリズム2432、およびユニバーサル・ディスク・フォーマット(UDF:Universal Disk Format)リンカー2433と共に機能するコード生成モジュール2439を含む複数の機能要素を含んでいる。インタープリタ2402は、レキサー/パーサー2434、タイプ・チェックおよび推論モジュール2436、およびASTオプティマイザ2438も含んでいる。
【0098】
ユーザ・インターフェイスは、バッチ・プロセッサ2440も含んでいる。グラフ・データベース2404は、メモリ内およびディスク上の両方のパターン・グラフの部分を格納し、グラフ・クエリAPI(2412)をインタープリタ2402に提供する。グラフ・データベースの主な機能は、パターン・グラフの意味および低レベルのデータ・ストレージを橋渡しすること、ならびに好ましくは多層キャッシュ(2414、2416、2418)およびイベントの時間的局所性などのPGのプロパティに基づくデータ管理を使用して、グラフ検索のスループットを最適化することである。前述したように、これらの機能を提供する1つのそのようなグラフ・データベースの解決策は、FCCEである。特に、FCCEは、同時の複数ソースの非同期的取り込み、分散されたデータ格納、およびデータ局所性管理をサポートする。パターン・グラフのプロパティに基づいてグラフ・クエリを最適化するために、FCCEスキーマ(FCCE schema)が使用される。このスキーマは、キーと値の対でパターン・グラフを表し、データ局所性の維持および異なる視点からの高速な検索のために、1つまたは複数のスキーマ内で特定の値が複製されるのが好ましい。したがって、例えば、イベントの1つの複製が時間的局所性を扱ってよく、イベントが時間によってインデックス付けされ、時間枠内で発生するイベントが、1つのメモリ・ページ上で管理され、連続するファイル・システムのブロックに格納される。他のイベントの複製は、ラベルおよび共有された実体を扱ってよい。
【0099】
グラフ・クエリを処理するために、グラフ・データベースは、最初に、データのいずれかの部分が、前のクエリによってすでにメモリに読み込まれているかどうかをチェックする。読み込まれていない場合、データベースはグラフ・クエリを1つまたは複数のディスク上の要素のクエリに分割し、これらのクエリの各々は、グラフ・データベース(例えば、FCCE)が処理できるキー値クエリに変換される。ラベルが、複雑な要素属性を表すために、辞書項目として表される。例示的な動作では、部分文字列「firefox」を含んでいるパスを有するファイルの実体を検索する単純な要素クエリは、2つのグラフ・データベース・クエリに変換され、1番目のグラフ・データベース・クエリは、すべての満たされたラベルを検索し、2番目のグラフ・データベース・クエリは、これらのラベルに関連付けられた要素を構築する未加工のデータを検索する。未加工のデータがディスクから取り出されるときに、グラフ・データベース・クライアント内でキーと値の対のバケットが最初にキャッシュされるのが好ましく、バケット内のデータは、緊密なデータ局所性および同じ高レベルのグラフ・クエリまたはその後のクエリにおいて問い合わせられる高い確率を有するのが好ましい。次に、要素のさまざまなコンポーネントが構築され、頻繁な参照のために一部(例えば、ユーザ名、uid、グループなどを含む複数の情報を含んでいるプロセスの主要なラベル)がキャッシュされ、これは参照としてキャッシュされる。次に、要素が構築されてキャッシュされる。最後に、要求されたグラフが組み立てられて返される。
【0100】
サイバー検出ファジー・パターン照合
【0101】
前述したように、活動グラフ(AG)は、通常、1つまたは複数のコンピューティング・デバイス(エンドポイントを含んでよい)上の計算を、時間的グラフ(本明細書では、計算の抽象化を表すため、計算グラフ(CG)とも呼ばれる)として表す。前述したように、AG/CGの基本的要素は、実体(例えば、プロセス、ファイル、ネットワーク・ソケット、レジストリ・キー、GPSセンサ、加速度計など)およびイベント(例えば、ファイルの読み取り、プロセスのフォークなど)であり、実体は、情報を送信または受信することができる任意のシステム要素であり、イベントは、2つ以上の実体を接続する任意の情報/制御の流れである。イベントは、特定の時間での実体の対における実体間の情報の流れであり、システム・コールなどの形態で捕捉されることができる。イベントは、一意のタイムスタンプ(イベントが発生した時間)および情報の流れの方向(方向性、双方向性、無方向性)を有する。実施形態例のうちの1つまたは複数に従う前述のメカニズムは、パターン・グラフ(PG)または制約グラフ(GoC)あるいはその両方に基づいて、反復的制約解法を使用してAG/CG内のパターン照合を実行し、それによって、可能性のある侵入を識別または検出し、サイバー攻撃またはサイバー脅威を識別または検出し、サイバー・フォレンジックを実行し、サイバー推論を実行する。
【0102】
グラフ・パターン照合では、活動のパターンに関するさまざまな人間の知識が、AG/CG内の対象のサブグラフのグラフである異なるパターンにエンコードされる。計算活動の完全な記録をAG/CGに含むことは有益な実践であり、パターンを使用してセキュリティの開発者およびアナリストが侵入、攻撃、脅威などに関して求めているものを正確に表すのは適切な実践であるが、AG/CGが完全な記録を表しているという仮定、およびセキュリティの開発者およびアナリストが、侵入、攻撃、または脅威の正確な知識を、それらの知識がパターン・グラフ(PG)で表され得るように有しているという仮定は、常に現実的であるとは限らない。例えば、AG/CGは、実際には、多くの現実世界の事例において不完全であることがある。さらに、開発者またはアナリストは、AG/CG表現において識別される必要がある可能性のある侵入、攻撃、または脅威の正確なパターンの代わりに、パターンのスケルトンのみを考慮することがある。さらに、特定のパターン・グラフによって定義された侵入、攻撃、または脅威の変形を検出できることは有益である。これらの事例の各々において、AG/CG内のサブグラフとのパターン・グラフの完全な照合を必要とすることは、パターン照合の効果を低下させるか、またはパターン照合をアナリスト/開発者にとって使いにくくするという制限になる。
【0103】
実施形態例のさらなる態様では、AG/CGのサブグラフとのパターン・グラフ(PG)の完全なパターン照合を必要とするのではなく、実施形態例は、時間を通じて拡大するAG/CGなどの時間的グラフを前提とし、かつ返す対象のサブグラフを一般的に定義し得るパターン・グラフ(PG)、例えば、サイバー攻撃/サイバー脅威または許可されていない侵入(サイバー・インシデントと総称されることがある)を表すパターンを前提として、ファジー・グラフ・パターン照合または部分グラフ・パターン照合を実行するためのメカニズムを提供する。実施形態例のこれらのさらなる態様に関して、トレーニング・モジュールおよび照合モジュールが提供され、トレーニング・モジュールは、(特定の期間内に)指定された時間間隔で、成長するAG/CGを継続的に検査し、ストリーミングのAG/CGを漸進的なグラフ・セクションに切断する。各グラフ・セクションは、個別のトレーニング・サンプルとして扱われる。次に、異なる位置で学習するために、トレーニング・サンプルを通ってフィルタをスライドさせながら、学習されるパラメータを含むフィルタが、畳み込み計算を使用して各トレーニング・サンプルに適用される。このようにして、フィルタはグラフ埋め込み技術を表し、この技術は、時間的グラフの特殊な性質を扱う必要がなく、node2vecまたはグラフ・ニューラル・ネットワーク(GNN)などのグラフ埋め込みアルゴリズムを活用することができる。
【0104】
フィルタは、グラフのトポロジーの特徴、および頂点(ノード)/エッジ(活動またはイベント)の属性の特徴の両方を捕捉する。この目的は、サブグラフの良好な埋め込みを構築するフィルタのパラメータを学習することである。一部の実施形態例では、フィルタは、実体上をスライドし、期間を対象にすることができる。このようにして、フィルタの対象になるサブグラフは、時間範囲内のその実体の近傍によって表されることができる。フィルタは、複雑なサブグラフの代わりに、ノード/実体の適切な埋め込みを学習する。
【0105】
照合モジュールは、例えば、ユーザ・インターフェイスを介してユーザによって、または自動化された計算コンポーネントなどのその他のソースによって、パターン・グラフ(PG)が提供されることのみに応じて実行され、特定のパターン・グラフ(PG)に一致する類似するサブグラフが、AG/CG内で識別される。照合モジュールは、適切なフィルタを選択し、選択されたフィルタをパターンに適用して埋め込みを取得し、埋め込み空間内の類似するサブグラフを検索する。次に、照合モジュールは、取り出された埋め込みをグラフ空間に逆向きにマッピングし、ファジー一致のサブグラフを出力する。
【0106】
前述したように、実施形態例のさらなる態様に従うこれらのメカニズムの出力は、パターン・グラフ(PG)に類似するが、特定のパターンと完全に同じであることも、同形であることも必要ではないサブグラフのセットである。例えば、図25は、侵入、攻撃、または脅威を表すパターンを定義するために使用されるパターン2510、ならびに実施形態例のファジー照合メカニズムによってこのパターン2510に一致し得る2つのファジー一致のサブグラフ2520および2530またはAG/CG(図示されていない)の例を示している。これらのグラフでは、水平方向の線が実体を表し、水平方向の線の間の矢印がイベントを表し、矢印の方向が、それらのイベントに対応するシステム・コールなどの方向を表しているということが理解されるべきである。実体を表すための水平方向の線は、グラフにおける便宜のためであり、イベントが、接続された実体間のイベントを示す、2つの水平方向の線を接続する矢印として示されることができるようにする。
【0107】
図25に示されているように、ファジー一致のサブグラフ2520および2530は、少なくとも特定の実体または実体間のイベントあるいはその両方に関して、元のパターン・グラフ2510に完全には一致しない。例えば、ファジー一致のサブグラフ2520は、実体「sh」の代わりに実体「python」が存在し、実体「/etc/shadow」の代わりに実体「/etc/passwd」が存在するという点において、元のパターン・グラフ2510と異なっている。同様にファジー一致のサブグラフ2530は、実体「/etc/shadow」の代わりに実体「IMG2019.jpg」が存在し、一番下の実体(パターン・グラフ2510では名前が付けられていない)の代わりに実体「IMG2019.jpg.rasome」が存在するという点において、元のパターン・グラフ2510と異なっている。
【0108】
従来のパターン照合方法では、パターン・グラフ2510とサブグラフ2520、2530の間の完全一致が存在しないため、パターンおよびサブグラフにおけるそのような差異は、サブグラフが可能性のある侵入、攻撃、または脅威として返されない結果をもたらすであろう。しかし、後でさらに詳細に説明されるように、実施形態例は、さらなる態様によれば、そのような類似するサブグラフが識別され得るように、パターン・グラフおよびAG/CGにおいてそのようなファジー照合を実行するためのメカニズムを提供する。これによって、例えば、アナリストまたは開発者が、照合のために基礎として使用される何かの知識を利用できない場合、誤った情報を含むパターン・グラフが利用される場合、またはAG/CG内の類似する攻撃サブグラフを識別するために既知の攻撃キャンペーンに関する類似するパターン・グラフが使用される場合に、完全一致が存在しないときでも、不完全なパターン・グラフを許容する。
【0109】
前述したような完全な時間的グラフ・パターン照合は、例えば、グラフ・データベース、多面局所性キャッシング(multi-aspect locality caching)、パターン照合の動的プログラミング、制約グラフ(CoG)、反復的制約解法などの、前述したツールおよびメカニズムを使用して、AG/CGおよびパターン・グラフ(PG)の元のグラフ空間内で動作するということが理解されるべきである。一方、実施形態例のさらなる態様の時間的グラフ・ファジー・パターン照合(fuzzy temporal graph pattern matching)は、時間的グラフに対して畳み込み(ある空間の形状が他の空間によってどのように変更されるかを示す空間に対する動作)を使用する元のグラフ空間からベクトル空間への照合空間の変換、トレーニング済みニューラル・ネットワークを使用するサブグラフの埋め込み、および発達するグラフに関する継続的な学習によって動作する。
【0110】
時間的グラフ・ファジー・パターン照合は、時間と共にグラフの新しい部分が追加される、動的に成長する時間的グラフ(例えば、AG/CG)に対して動作する。図26は、そのような動的に成長する時間的グラフを示す例示的な図であり、やはり水平方向の線がAG/CG内の実体を表し、垂直方向の矢印またはエッジがイベントを表している。図26に示されているように、最初の時点t0の間、時間的グラフ(例えば、AG/CG)は、要素2610に示されたようになっている。後の時間t1で、時間的グラフは、要素2620に示されたようになり、時間t0から時間t1までに実体間で追加の活動が発生するため、追加のノードおよびイベント2621~2625が存在している。図26の要素2630および2640に示されているように、同じことがさらに時点t2およびt3にも当てはまる。各時点で、破線のボックスで示された時間的グラフの部分は、時間的グラフの新しい部分を表し、この部分が、単独で、またはすでに処理されたグラフの部分と組み合わせて、侵入、攻撃、または脅威を示すパターン・グラフと一致するサブグラフを含んでいるかどうかを判定するために処理される。
【0111】
図27は、移動畳み込みフィルタを使用して時間的グラフ(例えば、AG/CG)のサブグラフから情報を抽出するためのプロセスをグラフで示す例示的な図である。図27に示されたプロセスは、既定の時点(例えば、t0、t1、t2など)で実行されてよく、このプロセスでは、このプロセスが実行された前の時点以降に発生するノードおよびイベントを評価し、時点間(例えば、図26で破線のボックスとして表された期間の間)に発生するノードおよびイベントのベクトル表現を生成する。このプロセスは、その時間枠内のベクトル表現を収集し、それらのベクトル表現が、アナリスト、開発者、または自動化された計算コンポーネントが時間的グラフ内で検索したい侵入、攻撃、または脅威、あるいは単に活動を示すパターン・グラフのベクトル表現と比較され得るようにする。
【0112】
図27に示されているように、図27では移動フィルタ時間枠(moving filter window)2710として示された畳み込みフィルタ2710が定義され、時間的グラフの実体(水平方向の線)を中心にして配置される。移動フィルタ時間枠内のサブグラフは、ベクトル(すなわち、グラフ埋め込み)として計算される。グラフ埋め込みは、例えば、グラフ構造のようなプロパティを最大限に維持しながら、ノード、エッジ、およびそれらの特徴をベクトル空間に変換するための一般的に知られた技術である。機械学習アルゴリズムは、グラフ埋め込みによって生成されたこのベクトル空間表現に対して動作してよい。そのような埋め込みは、ノード・レベル、サブグラフ・レベルなどのさまざまなレベルで実行されることができる。
【0113】
図27に示された例では、フィルタ2710が、選択された実体2712を中心にして移動しており、フィルタ時間枠のサブグラフが、その中心の実体2712の周囲で要約されている。フィルタ2710が、時間的グラフ内の選択された実体2712に沿って、埋め込みが実行された前の時点から、現在の埋め込みが実行されている2番目の時点に移動されるときに、フィルタ時間枠の時点の範囲について、フィルタ2710に対応するフィルタ時間枠のベクトル表現が生成されて格納される。すなわち、グラフ埋め込みが、時間的境界(例えば、フィルタ時間枠に含まれている時点の数)(横軸)、および到達可能性制限(例えば、フィルタ時間枠内にある選択された実体2712へ/からの直接的/間接的イベントの数)(縦軸)を有する畳み込みフィルタ2710として実施される。時間的グラフの埋め込みを実行するために、さまざまなサイズのさまざまなフィルタ、例えば、選択された中心の実体から1ホップ、2ホップ、3ホップのサイズ、より小さい/大きい時間間隔などのフィルタが定義されてよい。したがって、フィルタ時間枠2710の水平方向の境界は、実装に望ましい時点の範囲によって定義され、フィルタ時間枠2710の垂直方向の境界は、埋め込みの目的でイベントが考慮される到達可能性制限、例えば、中心の実体(例えば、図27の2712または2714)からのホップ数によって定義される。
【0114】
時間的境界および到達可能性制限を使用して問題をノードの埋め込みに制限することによって、フィルタ時間枠内への情報の埋め込みを実行するために、非時間的グラフのノード埋め込みメカニズムが使用され得る。例えば、node2vec埋め込み(距離埋め込み)、グラフ畳み込みネットワーク(GCN:graph convolution network)埋め込み(グラフが正規化グラフ・ラプラシアン行列として表される)、グラフ・ニューラル・ネットワーク((層内の)接続された頂点の要約に基づいて頂点の近傍が要約される)などが、フィルタ時間枠内に含まれている情報の実際の埋め込みを実行するために使用されてよい。
【0115】
GCNまたはグラフ・ニューラル・ネットワーク(GNN)を使用してグラフをベクトルに埋め込む実装では、最初に値がGCN/GNN内の重み行列(ニューロンのパラメータ)に割り当てられる。生成された埋め込みが類似するグラフ(CG/AG、またはPGの部分)間の類似性を維持するほど十分に値が良好になるように、これらの値をトレーニングすることが重要である。これらの良好なニューロン値パラメータまたは重みを見つけるための手順は「トレーニング」と呼ばれ、したがって、これらの重み行列を生成するようにGCN/GNNがトレーニングされる。GCN/GNNは、トレーニングされた後に、移動フィルタ時間枠2710の埋め込みを実行するために使用されることができる。このトレーニングは、例えば、トレーニング・データが以前に見られたCG/AGおよびPGである教師なしトレーニングであってよく、このトレーニングは、ユーザによって定義されてよい定義された損失関数を使用し、損失関数は、トレーニング・プロセスのエポックによって最小化される。1つの損失関数の例は、Hamilton et al., “Inductive Representation Learning on Large Graphs,” Advances in Neural Information Processing Systems, pp. 1024-1034, 2017において説明されているような、近接ノードが類似する埋め込みを有することを促進する損失関数である。これは損失関数の1つの例にすぎず、本発明に対する制限となるよう意図されていない。本発明の範囲から逸脱することなく、特定の目的の実装にとって望ましい任意の種類の損失関数が使用されてよい。
【0116】
図27に示されているように、次に、選択された中心の実体2712が、フィルタのサイズ(例えば、フィルタの「ホップ」数)に従って、時間的グラフ内の指定された実体の数だけ反復されてよい。例えば、時点(1)~(3)での移動フィルタ時間枠の描写は、1番目の時点((1)と示されている)から2番目の時点((2)と示されている)、および3番目の時点((3)と示されている)までの、選択された実体2712に関するものである。フィルタ時間枠の移動が時間的境界に達した後に、フィルタ時間枠が、選択された実体2714などの新しい選択された実体を中心にして再配置され、図27の時点(4)~(6)に関して示されているように、プロセスが繰り返される。
【0117】
このプロセスは、例えば、node2vecなどの距離埋め込み技術、あるいはGNNまたは多層CNNなどのトレーニング済みニューラル・ネットワークメカニズムによって実行される埋め込みに基づいて、時間的グラフのベクトル表現をもたらす。例えば、1つの実施形態例では、異なるサイズを有する異なる畳み込みフィルタが定義され、それぞれ1つのフィルタを含む複数のGNNが継続的にトレーニングされる。プロセスが時間的グラフの部分のベクトル表現をもたらすと仮定して、十分な一致が存在するかどうかを判定するために、特定のパターン・グラフ(PG)のベクトル表現とのCG/AG上の移動フィルタ2710のベクトル表現のファジー照合が実行され、すなわち、ベクトル空間内の近接ベクトルの検索が実行される。
【0118】
すなわち、「近接」ベクトルの検索は、現在、CG/AG内の移動フィルタ2710の下にあるグラフの部分に類似しているように見えるパターン・グラフ(PG)の部分(すなわち、「グラフ・パッチ」)(例えば、類似するトポグラフィ、類似するノード/エッジ属性など)を探す検索である。類似するグラフ・パッチは、CG/AG内の近くまたは遠くにあってよいが、ベクトル埋め込みによって表されるような属性において類似している。グラフ・パッチのベクトル表現または埋め込みの比較のための「近接ベクトル」技術は、ベクトル表現のベクトル・スロットごとに、ベクトル表現が互いにどの程度近いか、または遠いか(すなわち、ベクトル表現のベクトル・スロット内の値間の距離)を決定し、それによって、2つのベクトル表現の類似性の尺度を生成するために使用される。この類似性の尺度は、2つのベクトルが互いに特定の許容誤差内で同じであるかどうかを判定し、したがって、2つのベクトルが類似しているかどうか(すなわち、「近接」ベクトルであるかどうか)を判定するために、類似性の尺度のしきい値と比較されてよい。「近接ベクトル」手法は、グラフ空間内のグラフがどの程度類似しているか、または類似していないかを決定する相対的に計算負荷の大きい手法よりも計算負荷の少ない、ベクトル空間内で動作する手法を可能にする。したがって、近接ベクトル手法では、ファジー・グラフ・パターン照合または部分グラフ・パターン照合を使用して近接ベクトルを検索するために、グラフがベクトルに組み込まれる。高次元ベクトル空間内のベクトル間の距離を計算するための任意の現在既知であるか、または今後開発される手法が、ベクトル間の距離を実際に計算し、このようにしてどのベクトルが「近接」しているかを識別するために、使用されてよい。1つの実施形態例では、ユークリッド距離測定またはコサイン類似性測定が、距離を識別するために使用されてよく、その後、これらの距離が、類似するベクトルまたは「近接」ベクトルを識別するために、定義された距離のしきい値レベルと共に使用されることができる。
【0119】
このファジー照合プロセスまたは部分照合プロセスによって検出された近接ベクトルについて、近接ベクトルが、ベクトル空間からグラフ空間に、具体的にはサブグラフ・インスタンスに、逆向きにマッピングされる。例えば、1つの実施形態例では、埋め込みが処理されるときに、ベクトル・スロットの値またはベクトル・スロットの値の組み合わせを対応するノード/エッジにマッピングするマッピング/ルックアップ・テーブル(例えば、以下では図30のVec2Graphマッピング3120など)が維持されてよく、このようにして、このテーブル内のベクトル値が検索され、サブグラフの対応するノードおよびエッジを再作成するために使用されてよい。次に、サイバー・セキュリティ・インテリジェンス・センターのインターフェイスを介してサブグラフをアナリストまたは開発者に提示し、サブグラフ・インスタンスが実際の攻撃、脅威、または不要な侵入であるかどうかを判定することなどによって、可能性のある攻撃または脅威を識別することにおいて使用するために、グラフ空間へのこの逆向きのマッピングによって生成されたサブグラフ・インスタンスが格納される。
【0120】
前述したように、node2vec、複数の定義されたフィルタのうちの特定の1つをそれぞれ含んでいる複数のGNNなどを使用して、実際のファジー照合プロセスまたは部分照合プロセスが実装されてよい。図28は、1つの実施形態例に従って、ファジー照合を実行するための例示的な一般化された動作の概要を示す例示的なフロー図である。図28は、node2vecなどのより単純な距離に基づくニューラル・ネットワーク・モデルの埋め込みとは対照的に、トレーニング済みグラフ・ニューラル・ネットワーク・モデルを使用して埋め込みが実行されるということを仮定する。しかし、本発明の範囲から逸脱することなく、実施形態例が、トレーニング済みグラフ・ニューラル・ネットワーク・モデルに基づくメカニズムとは対照的に、距離に基づくニューラル・ネットワーク・モデルの埋め込みを使用して実装されてよいということが理解されるべきである。すなわち、一部の実施形態例では、トレーニング済みGNN手法は、相対的に単純だがトポロジーに関する情報(例えば、ノード/エッジ属性)を提供することに制限されるnode2vecの実施形態と比較して、より正確であり、より複雑な属性のセットを埋め込むことができるため好ましいが、他の実施形態例では、node2vecの実施形態が利用されてもよい。
【0121】
図28で概説された動作は、例えば、図8および14の攻撃サブグラフ照合830によって実装されてよく、例えば、攻撃サブグラフ照合830では、悪意のあるパターンが、プロセス間活動グラフ(AG)または計算グラフ(CG)に存在するパターンと照合される侵入、攻撃、または脅威の特定のパターン・グラフ(PG)に対応する。図14のステップ5.1および5.2に示されたプロセスは、例えば図28に従って、新しいファジー照合プロセス(またはアルゴリズム)に置き換えられてよい。
【0122】
図28に示されているように、プロセスが、異なるサイズのフィルタの定義から開始する(ステップ2810)。異なるグラフ・パッチ・サイズで埋め込みを実行するために、複数の異なるサイズのフィルタが使用される。実施形態例のメカニズムは、ファジー照合または部分照合のための基礎としてPGが提供されるときに、PGの大きさを識別しないことがあるため、異なるサイズのフィルタは、さまざまなサイズのPGの収容を可能にし、すなわち異なるサイズのPGは、ベクトルのエンコーディングのために、CG/AG上の異なるグラフ・パッチ・サイズに対応する異なるサイズのフィルタを必要とする。ベクトル表現として、AG/CGまたはパターン・グラフあるいはその両方の時間枠で囲まれた部分のグラフ埋め込みを実行することにおいて使用するために、例えば、1ホップ、2ホップ、3ホップ、および異なる時間範囲に基づくフィルタが定義されてよい。しかし、単一のグラフ・パッチ・サイズが必要とされ、前もって知られている一部の実施形態例では、単一のサイズのフィルタが利用されてよいということが理解されるべきである。本発明の範囲から逸脱することなく、本発明の実施形態例は、単一のサイズのフィルタまたは異なるサイズの複数のフィルタを利用してよい。
【0123】
定義されたフィルタに基づいてグラフ埋め込みを実行し、ベクトル表現を生成するために、1つまたは複数のニューラル・ネットワーク・モデルがトレーニングされる(ステップ2820)。このトレーニングは、既知のCG/AGおよびPGに基づいてよいトレーニング・データセットに基づくニューラル・ネットワークの初期トレーニングを含む。すなわち、例えば、特定の実施形態では、1つまたは複数のフィルタを使用してGCN/GNNをトレーニングすることにおいて使用するために、1つまたは複数のCG/AGの初期セットがコンピュータ・リソースの監視から取得されてよく、アナリストによって1つまたは複数の既存のPG(検索するための知識)が定義されてよい。例えば、GCN/GNNは、PGと一致するCG/AG内のサブグラフが存在するかどうかを判定し、対応する出力を生成するために、CG/AGおよびPGに対して動作してよい。その後、損失関数に基づいてGCN/GNNが正しい出力を生成したかどうかに関する判定が行われ、正しい出力を生成していない場合、GCN/GNNの損失または誤差の既定のしきい値レベルが取得されるまで、エポックまたは反復を通じて損失関数を最小化するようにGCN/GNNの動作パラメータ(例えば、重み)が調整される。トレーニング済みGCN/GNNが新たに到着したCG/AGおよびPGを埋め込み、PGに従ってCG/AGの類似するグラフの部分を返すことができるように、GCN/GNNは、トレーニングされた後に、監視されているコンピュータ・システムが実行されるのと実質的に同時に実行されてよい。
【0124】
すなわち、入力されたAG/CGを前提として、前述したように、定義されたフィルタを使用してトレーニング済みニューラル・ネットワークによってAG/CGが処理され、1つまたは複数の第1の埋め込みベクトルを生成する(ステップ2830)。例えば、1つの実施形態例では、定義されたフィルタのうちの1つをそれぞれ実装する複数のグラフ畳み込みネットワーク(GNN)がトレーニングされてよく、フィルタのサイズおよび特定のグラフ・パターンのサイズに従って、GNNのうちの選択された1つがAG/CGに適用されてよい。別の実施形態例では、異なるサイズのフィルタに対応する層、および1つのフィルタがパターン・グラフ内のパターン全体を対象にする層までAG/CGに類似するパターン・グラフに対して畳み込みを実行するファジー・パターン照合タスクと共に、単一の多層畳み込みニューラル・ネットワークが使用されてよい。
【0125】
パターン・グラフ内のパターンの埋め込みベクトルを生成するために、選択されたフィルタ・サイズが使用され、それによって、第2の埋め込みベクトルを生成する(ステップ2840)。第2の埋め込みベクトルは、対応するトレーニング済みニューラル・ネットワークの適用によって生成されたAG/CGのベクトル空間内の近接ベクトルを検索するために使用される(ステップ2850)。次に、ベクトル空間内で検出された近接ベクトルが、対応するAG/CGのサブグラフ・インスタンスに逆向きにマッピングされる(ステップ2860)。その後、反応および報告動作のために、サブグラフ・インスタンスが返される(ステップ2870)。例えば、図14にステップ6.2および6.1.2として示されているように、警告を発する、関与するプロセスを終了する、プロセスの要求を遅延させる、リソース(例えば、ディスク/ネットワーク・アクセス)を制限する、アナリストによるさらなる評価のために疑わしいサブグラフを提出するなどの、さまざまな反応および報告が実施されてよい。その後、動作が終了する。プロセスは終了を示しているが、このプロセスが、外見的には継続的方法で、追加の時点または特定の事前に定義された時間間隔で、ユーザまたは自動化された計算コンポーネントの要求に応じて、事前に定義されたイベントの発生時になどで、繰り返されてよいということが理解されるべきである。さらに、パターン照合が実行される複数の異なるパターン・グラフ(すなわち、さまざまな定義された侵入、攻撃、または脅威)の各々についてプロセスが実行されてよい。
【0126】
本明細書において説明されるように、追加のファジー照合または部分照合に基づく実施形態例は、可能性のあるサイバー攻撃、サイバー脅威など、または単にシステム・アナリスト、管理者、もしくはその他の許可された人、またはその他のコンピューティング・システムのリソース(例えば、CG/AGのパッチの類似する部分の識別に基づいて動作し得るその他のコンピューティング・アルゴリズム)にとって特に興味のあるパターン・グラフさえも表す1つまたは複数のPGと比較して、CG/AGの類似する部分またはパッチを識別する。CG/AGの類似する部分またはパッチを検出した場合、望ましい実装に応じて、PGを表すベクトルに最も近いベクトルに対応する単一のベクトル出力が返されてよく、または上位k個の最も近いベクトルが返されてもよいということが理解されるべきである。そのような場合、前述したように、最も近いベクトルまたは上位k個の最も近いベクトルが、CG/AG内の類似するサブグラフ・パッチに逆向きにマッピングされてよい。さらに、一部の実施形態例では、ユーザは、距離しきい値を指定してよく、このしきい値内のすべてのベクトル(すなわち、距離しきい値内のPGベクトルに類似しているすべてのベクトル)が結果として返され、CG/AGのサブグラフ部分またはパッチに逆向きにマッピングされてよい。
【0127】
図29は、埋め込みを実行するために複数のグラフ・ニューラル・ネットワーク(GNN)が実装される1つの実施形態例に従って、例示的なファジー照合動作の概要を示すフローチャート図である。図29に示されているように、やはりプロセスが、異なるサイズのフィルタの定義から開始する(ステップ2910)。ステップ2910(ステップ2920)で、定義されたフィルタのうちの1つを実装する各GNNを使用して、複数のGNNがトレーニングされる。コンピューティング・システムの実体に関して発生するイベントを表す活動グラフのサイバー脅威評価を実行するためのプロセスのトリガー(ステップ2930)に応じて、特定のパターン・グラフ(PG)が提供される(ステップ2940)。パターン・グラフのサイズに対応するフィルタ・サイズを有するフィルタ(例えば、パターン・グラフ内のパターンよりもホップ数または時間範囲に関して小さ過ぎず、大き過ぎることもないフィルタ)が選択される(ステップ2950)。選択されたるフィルタのサイズは、例えば、パターン・グラフのサイズを包含する最小サイズのフィルタとして選択されてよい。
【0128】
選択されたフィルタは、パターン・グラフのベクトル表現を生成するため、すなわち、パターンの埋め込みベクトルを計算するために使用され(ステップ2960)、次にこの埋め込みベクトルが、ベクトル空間内のAG/CG内の近接ベクトルを検索するために使用される(ステップ2970)。次に、識別された近接ベクトルが、AG/CG内のサブグラフ・インスタンスに逆向きにマッピングされ(ステップ2980)、さらなる反応および報告動作のためにサブグラフ・インスタンスが返される(ステップ2990)。その後、動作が終了する。
【0129】
図30は、1つの実施形態例に従って、サイバー検出ファジー・パターン照合を実行するための例示的なシステム設計およびプロセス・フローを示している。図30に示されているように、プロセス間活動の抽出(例えば、図30ではストリーミング時間的グラフ3040と呼ばれるプロセス間活動グラフ828を生成するための図8の監視818、ラベル付け820、および取り込み824)を実行するために、監視されているネットワーク3010内のエンドポイントが、SIEMシステム3030の監視プロセス3020によって監視される。この監視3020および時間的グラフの生成3040は、時間的グラフ3040が動的に成長し、サイバー検出ファジー・パターン照合が実行された前の時点と相対的な特定の時点での時間的グラフ3040の状態に基づいてサイバー検出ファジー・パターン照合を実行するために、実施形態例のプロセスが指定された間隔で実行され得るように、継続的に実行されてよい。
【0130】
フィルタ3070のパラメータを学習し、サブグラフ埋め込み3060を生成するために、前述した1つまたは複数のフィルタおよび移動フィルタ時間枠手法を使用する時間畳み込み演算3050が時間的グラフ3040に対して実行される。「時間的畳み込み」という用語は、時間上の畳み込みのことを指す。特定の瞬間の時間的グラフ(その瞬間でのグラフのスナップショット)に対して畳み込みを実行するのではなく、実施形態例は、時間的グラフを、時間として1つの軸および空間としてもう1つの軸を有する2次元グリッドとして構造化することによって、時間を通じて変化するグラフを考慮するように畳み込みを実行するためのメカニズムを提供する。したがって、動作3040~3060は、時間的グラフが動的に成長するにつれて、継続的に実行されてよい。さらに、時間的畳み込み動作3050を実装するために使用されるニューラル・ネットワークによって実行される学習は、教師なし機械学習プロセスを使用する教師なしの方法で、継続的にトレーニングされてよい。
【0131】
サブグラフ埋め込み3060は、ベクトル空間3080内のベクトルを生成するために使用され、ベクトル空間3080は、特定のパターン・グラフ3090への近接ベクトルを識別するために使用されてよい。すなわち、特定のパターン・グラフ3090のサイズに対応するフィルタ3070が、パターン・グラフに適用され、パターン・グラフ3090のサブグラフ埋め込み3100を生成し、サブグラフ埋め込み3100も、ベクトル空間3080内のベクトル表現を生成するために使用される。ベクトル空間3080内のベクトル表現に基づいて、パターン・グラフ3090のサブグラフ埋め込み3100に近接している近接ベクトル3110が識別される。近接ベクトル3110は、ベクトルからグラフへのマッピング動作3120を使用して、対応するサブグラフに逆向きにマッピングされる。その後、結果として得られたサブグラフ・インスタンス3130が、さらなる反応および報告動作のために出力される。
【0132】
本明細書に記載された手法は、一部の実施形態例では、SIEM、APTの解決策、エンドポイント管理の解決策などのセキュリティ・システム内で、またはセキュリティ・システムに関連して、自動化された方法で実施されるように設計される。前述の機能は、スタンドアロン手法(例えば、プロセッサによって実行されるソフトウェアベースの機能)として実装されてよく、または管理されたサービス(SOAP/XMLインターフェイスを介したWebサービスを含む)として利用されてもよい。本明細書に記載された特定のハードウェアおよびソフトウェアの実装の詳細は、単に例示を目的としており、記載された対象の範囲を制限するよう意図されていない。
【0133】
さらに一般的には、開示された対象との関連において、コンピューティング・デバイスはそれぞれ、ハードウェアおよびソフトウェアを備えている(例えば、図2に示されているような)データ処理システムであり、これらの実体は、ネットワーク(インターネット、イントラネット、エクストラネット、プライベート・ネットワーク、あるいは任意のその他の通信媒体またはリンクなど)を経由して互いに通信する。データ処理システム上のアプリケーションは、特にHTTP、FTP、SMTP、SOAP、XML、WSDL、UDDI、およびWSFLのサポートを含むが、これらに限定されない、Webならびにその他の既知のサービスおよびプロトコルのネイティブ・サポートを提供する。SOAP、WSDL、UDDI、およびWSFLに関する詳細は、これらの規格を開発および維持する役割を担っているワールド・ワイド・ウェブ・コンソーシアム(W3C:World Wide Web Consortium)から提供されており、HTTP、FTP、SMTP、およびXMLに関する詳細は、インターネット・エンジニアリング・タスク・フォース(IETF:Internet Engineering Task Force)から提供されている。これらの既知の規格およびプロトコルを熟知していることが仮定される。
【0134】
本明細書に記載されたメカニズムは、単純なn層アーキテクチャ、Webポータル、フェデレーテッド・システムなどを含む、さまざまなサーバサイド・アーキテクチャ内で、またはこれらと併せて、実装されてよい。本明細書における手法は、疎結合されたサーバ(「クラウド」ベースを含む)環境内で実践されてよい。
【0135】
さらに一般的には、ソフトウェア・コンポーネントが、ソフトウェア・コンポーネントに対応する動作を実行するように特に構成された専用ハードウェア・コンポーネントになるようにハードウェア・コンポーネントを特に構成するように、ソフトウェア・コンポーネントを採用する実施形態がハードウェア上で実行されるソフトウェア・コンポーネントを含むということを理解した上で、本明細書に記載された対象は、完全にハードウェアである実施形態、完全にソフトウェアである実施形態、またはハードウェアとソフトウェアの両方の要素を含んでいる実施形態の形態をとることができる。好ましい実施形態では、機能が、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアにおいて実装される。さらに、前述したように、識別情報のコンテキストに基づくアクセス制御機能は、コンピュータまたは任意の命令実行システムによって、またはこれらに接続して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスできるコンピュータ・プログラム製品の形態をとることができる。この説明の目的で、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスによって、またはこれらに接続して使用するためのプログラムを含むか、または格納することができる任意の装置であることができる。この媒体は、電子システム、磁気システム、光システム、電磁気システム、赤外線システム、または半導体システム(あるいは、装置またはデバイス)であることができる。コンピュータ可読媒体の例としては、半導体メモリまたは固体メモリ、磁気テープ、取り外し可能フロッピー(R)・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、剛体磁気ディスク、および光ディスクが挙げられる。光ディスクの現在の例としては、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disk-read only memory)、コンパクト・ディスク読み取り/書き込み(CD-R/W:compact disk-read/write)、およびDVDが挙げられる。コンピュータ可読媒体は、有形のアイテムである。
【0136】
コンピュータ・プログラム製品は、記載された機能のうちの1つまたは複数を実装するためのプログラム命令(またはプログラム・コード)を含んでいる製品であってよい。これらの命令またはコードは、ネットワークを経由してリモート・データ処理システムからダウンロードされた後に、データ処理システム内のコンピュータ可読ストレージ媒体に格納されてよい。一部の実施形態では、命令またはコードは、サーバ・データ処理システム内のコンピュータ可読ストレージ媒体に格納され、リモート・システム内のコンピュータ可読ストレージ媒体において使用するために、ネットワークを経由してリモート・データ処理システムにダウンロードされるように適合されてよい。代表的実施形態では、グラフ生成技術が、専用コンピュータ内で、好ましくは1つまたは複数のプロセッサによって実行されるソフトウェア内で、実装される。ソフトウェアは、1つまたは複数のプロセッサに関連付けられた1つまたは複数のデータ・ストアまたはメモリ内で維持され、ソフトウェアは、1つまたは複数のコンピュータ・プログラムとして実装されてよい。集合的に、この専用ハードウェアおよびソフトウェアは、前述した機能を備える。
【0137】
さらに、本明細書において必要とされる認証または許可機能は、既存のアクセス・マネージャまたはポリシー管理の解決策に対する付加または拡張として実装されてよい。上では、本発明の特定の実施形態によって実行される特定の順序の動作を説明したが、代替の実施形態が、動作を異なる順序で実行すること、特定の動作を組み合わせること、特定の動作を重ね合わせることなどを実行してよいため、そのような順序は例であると理解されるべきである。本明細書における特定の実施形態への参照は、記載された実施形態が特定の特徴、構造、または特性を含み得るが、必ずしもすべての実施形態が特定の特徴、構造、または特性を含み得るわけではないということを示している。
【0138】
最後に、システムの特定のコンポーネントが別々に説明されたが、当業者は、機能の一部が、特定の命令、プログラム・シーケンス、コード部分などにおいて、組み合わせられるか、または共有されてよいということを理解するであろう。
【0139】
本明細書における技術は、別の技術または技術分野、特に、エンドポイント管理システム、APT(Advanced Persistent Threat)の解決策、セキュリティ・インシデントおよびイベント管理(SIEM:security incident and event management)システムに対する改良に加えて、脅威ハンティングを含む、知識グラフに基づくサイバー分析に対する改良を提供する。サイバー脅威ハンティングは、セキュリティ関連の観察および領域知識に基づいて、積極的かつ反復的に脅威の仮説を作成し、その妥当性を確認するプロセスである。本明細書における手法は、脅威の発見をグラフ計算問題としてモデル化することによって、そのような活動を促進する。実際に、侵入的データまたは非侵入的データの両方に関して目的格の計算履歴を記録するプロセス・グラフを前提として、脅威の発見が、プロセス・グラフ内のセキュリティ関連のサブグラフのサブセットに対して近接を反復的に計算するグラフ・クエリ問題に減少し、最終的に、脅威または侵入を表すサブグラフを得る。グラフ・クエリは、侵入検出システムまたは挙動異常検出システムなどに事前にプログラムされることができる。脅威ハンティングは、脅威の仮説を反復的かつ対話的に考え出し、検証し、修正し、確認するために、グラフ・クエリのシーケンスを作成する。本明細書におけるグラフ構築および照合技術は、企業のエンドポイント・マシン以外におけるプロセス間活動を発見し、それに対して動作するために使用されてよい。本明細書における技術は、プロセス内に基づいて使用されてもよい。
【0140】
本発明の説明は、例示および説明の目的で提示されており、網羅的であるよう意図されておらず、開示された形態での発明に制限されない。説明された実施形態の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本発明の原理、実際的な適用を最も適切に説明するため、およびその他の当業者が、企図された特定の用途に適するようなさまざまな変更を伴う多様な実施形態に関して、本発明を理解できるようにするために、実施形態が選択されて説明された。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30