(57)【要約】  システムおよび方法が提供される。システムは、プロセッサ、およびこのプロセッサに動作可能なように連結されているメモリを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバを含んでいる。このＴＢＱＬサーバは、クエリの構築を促進するために糖衣構文に基づく文法推論技法を使用して、ＴＢＱＬクエリを構築するように構成されている。このＴＢＱＬサーバは、このＴＢＱＬ，クエリを実行してＴＢＱＬクエリの結果を生成するようにさらに構成されている。
2019505918.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバを備えているシステムであって、前記ＴＢＱＬサーバは、
クエリの構築を促進するために糖衣構文に基づく文法推論技法を使用して、ＴＢＱＬクエリを構築すること、および
前記ＴＢＱＬクエリを実行してＴＢＱＬクエリの結果を生成すること
を行うように構成されている、システム。
【請求項２】
前記ＴＢＱＬサーバは、複数イベントクエリとパスクエリとの少なくとも１つを選択的に構築することによって前記ＴＢＱＬクエリを構築する、請求項１に記載のシステム。
【請求項３】
前記複数イベントクエリは、別の複数イベントクエリのためのサブクエリとして使用される、請求項２に記載のシステム。
【請求項４】
前記複数イベントクエリは、１つまたは複数の単一イベントクエリから作られる、請求項２に記載のシステム。
【請求項５】
前記ＴＢＱＬサーバは、データ分割パフォーマンスの最適化を使用して前記ＴＢＱＬクエリを実行するように構成されている、請求項１に記載のシステム。
【請求項６】
前記データ分割パフォーマンスの最適化は、関係する時間に基づいてクエリ関連のデータを分割することを含む、請求項５に記載のシステム。
【請求項７】
前記データ分割パフォーマンスの最適化は、関係するエージェントに基づいてクエリ関連のデータを分割することを含む、請求項５に記載のシステム。
【請求項８】
前記ＴＢＱＬサーバは、監視されるシステムの組に関する前記ＴＢＱＬクエリを構築する、請求項１に記載のシステム。
【請求項９】
前記ＴＢＱＬクエリのうちの少なくともいくつかは、監視されるシステムの前記組に関する危険挙動を対象とする、請求項８に記載のシステム。
【請求項１０】
プロセッサと、前記プロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバによって、クエリの構築を促進するために糖衣構文に基づく文法推論技法を使用して、ＴＢＱＬクエリを構築することと、
前記ＴＢＱＬサーバによって前記ＴＢＱＬクエリを実行してＴＢＱＬクエリの結果を生成することと
を含む、コンピュータによって実装される方法。
【請求項１１】
前記ＴＢＱＬクエリは、複数イベントクエリとパスクエリとの少なくとも１つを選択的に構築することによって構築される、請求項１０に記載のコンピュータによって実装される方法。
【請求項１２】
前記複数イベントクエリは、別の複数イベントクエリのためのサブクエリとして使用される、請求項１１に記載のコンピュータによって実装される方法。
【請求項１３】
前記複数イベントクエリは、１つまたは複数の単一イベントクエリから作られる、請求項１１に記載のコンピュータによって実装される方法。
【請求項１４】
前記ＴＢＱＬクエリは、データ分割パフォーマンスの最適化を使用して実行される、請求項１０に記載のコンピュータによって実装される方法。
【請求項１５】
前記データ分割パフォーマンスの最適化は、関係する時間に基づいてクエリ関連のデータを分割することを含む、請求項１４に記載のコンピュータによって実装される方法。
【請求項１６】
前記データ分割パフォーマンスの最適化は、関係するエージェントに基づいてクエリ関連のデータを分割することを含む、請求項１４に記載のコンピュータによって実装される方法。
【請求項１７】
前記ＴＢＱＬクエリは、監視されるシステムの組に関するように構築される、請求項１０に記載のコンピュータによって実装される方法。
【請求項１８】
前記ＴＢＱＬクエリのうちの少なくともいくつかは、監視されるシステムの前記組に関する危険挙動を対象とする、請求項１７に記載のコンピュータによって実装される方法。
【請求項１９】
プロセッサと、前記プロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバを備えているシステムであって、前記ＴＢＱＬサーバは、
利用者の入力に基づいてＴＢＱＬクエリを構築すること、ならびに
関係する時間と関係するエージェントとの少なくとも１つに基づいてクエリ関連のデータを分割する少なくとも１つのデータ分割技法を使用して、前記ＴＢＬクエリを実行すること
を行うように構成されている、システム。
【請求項２０】
前記ＴＢＱＬサーバは、複数イベントクエリとパスクエリとの少なくとも１つを選択的に構築することによって前記ＴＢＱＬクエリを構築する、請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１６年１月２９日に出願の米国仮特許出願第６２／２８８，６７６号の優先権を主張し、同出願は全体が参照により本明細書に組み込まれる。
【０００２】
本発明は問合せ言語に関し、より詳細には、危険挙動クエリの構築および実行に関する。
【背景技術】
【０００３】
関連技術の説明
今日、システムアドミニストレータがシステム挙動を監視し、それを理解することなく、脆弱性に対処するのは困難である。監視データの大規模かつイベント駆動型の特性を考えると、利用者がセキュリティ関連の挙動についてこのデータに簡単かつ効率的に問い合わせるための効果的な問合せ言語が不足している。構造化問合せ言語（ＳＱＬ：Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）およびグラフ問合せ言語などの既存言語は、非常に冗長であるか、またはこのようなタスクにとって効率的ではない。
【０００４】
現在、セキュリティ関連の挙動について大量のシステムイベントデータに問い合わせることに具体的に合わせて作られた効果的なツールはない。最も普及している汎用問合せツールＳＱＬには、いくつかの欠点がある。第１に、ＳＱＬはイベントを表現するには冗長である。例えば、利用者が、イベント「プロセス‘ｃａｔ’がマシン上のファイル‘／ｅｔｃ／ｐａｓｓｗｄ’をオープンするかどうか」を問い合わせたい場合、ＳＱＬは、３つのテーブル名（すなわち、ファイルテーブル、プロセステーブル、ファイルイベントテーブル）を明確に指定し、テーブルの結合条件を指定する必要がある。第２に、ＳＱＬは時間ウィンドウを効果的に扱えない。例えば、利用者は、ＵＴＣのタイムスタンプを最初に計算せずに、一定時間内に結果を簡単に問い合わせ、ＳＱＬクエリに埋め込むことができない。また、クエリ実行エンジンの中で、時間ウィンドウに関連した最適化の機会を簡単に検討することができない。第３に、ＳＱＬは、複数イベントおよびそれらの時間的関係を指定するには厄介である。例えば、「プロセスｐ１がファイルｆ１をオープンし、次に１０分後、プロセスｐ１が別のファイルｆ２をオープンする」である。ＳＱＬおよびリレーショナルデータベースに加えて、グラフデータベース技術は、インデックス作成の問題に直面しており、大規模なデータセットに拡張できない。
【０００５】
したがって、前述の従来技術の問題を克服する問合せ言語が必要である。
【発明の概要】
【０００６】
本発明の態様によれば、システムが提供される。このシステムは、プロセッサと、このプロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ：Ｔｅｍｐｏｒａｌ  Ｂｅｈａｖｉｏｒ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）サーバを含んでいる。このＴＢＱＬサーバは、クエリの構築を促進するために糖衣構文に基づく文法推論技法を使用して、ＴＢＱＬクエリを構築するように構成されている。このＴＢＱＬサーバは、このＴＢＱＬクエリを実行してＴＢＱＬクエリの結果を生成するようにさらに構成されている。
【０００７】
本発明の別の態様によれば、コンピュータによって実装される方法が提供される。この方法は、プロセッサと、このプロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバによって、クエリの構築を促進するために糖衣構文に基づく文法推論技法を使用して、ＴＢＱＬクエリを構築することを含む。この方法は、このＴＢＱＬサーバによってこのＴＢＱＬクエリを実行してＴＢＱＬクエリの結果を生成することをさらに含む。
【０００８】
本発明のさらに別の態様によれば、システムが提供される。このシステムは、プロセッサと、このプロセッサに動作可能なように連結されているメモリとを有する時間的挙動問合せ言語（ＴＢＱＬ）サーバを含んでいる。このＴＢＱＬサーバは、利用者の入力に基づいてＴＢＱＬクエリを構築するように構成されている。このＴＢＱＬサーバは、関係する時間と関係するエージェントとの少なくとも１つに基づいてクエリ関連のデータを分割する少なくとも１つのデータ分割技法を使用して、このＴＢＬクエリを実行するようにさらに構成されている。
【０００９】
これらのおよびその他の特徴および利点は、添付の図面に関連して読まれることになる、その例証的な実施形態に関する以下の詳細な説明から明白になるであろう。
【図面の簡単な説明】
【００１０】
本開示は、以下の図を参照しながら、以下の好ましい実施形態の説明の中で詳細を提供する。
【図１】本発明の実施形態による、本発明が適用され得る例示的な処理システム１００のブロック図を示す図である。
【図２】本発明の実施形態による、本発明が適用される可能性がある例示的な環境２００のブロック図を示す図である。
【図３】本発明の実施形態による、危険挙動クエリを構築し、実行するための例示的なシステム／方法３００の高レベルのブロック図／流れ図を示す図である。
【発明を実施するための形態】
【００１１】
本発明は、危険挙動クエリの構築および実行を対象とする。
【００１２】
実施形態において、大量のシステムイベントデータの中の危険挙動を問い合わせるために、領域特化型の言語としてＴＢＱＬが提示される。ＴＢＱＬは、単一イベント（例えば、項目（例えば、パスワード、他）の読込み、ポート８０上でのプロセスのリスニング、ユーザ履歴の探索、他）、複数イベント（すなわち、イベント関係の制約を伴う複数の単一イベントの組合せ）、サブクエリ（複数イベントクエリの結果が、別の複数イベントクエリの属性の制約として使用される）、および因果的依存性（例えば、プロセスｐ１がファイルｆ１に書き出し、次にプロセスｐ２がファイルｆ１から読み込むといった、システムイベントの情報フロー）を問い合わせることができる。さらに、ＴＢＱＬには、多くの組込み糖衣構文があり、タイピングをさらに単純にする。
【００１３】
ＴＢＱＬは、｛主語−動作−目的語｝の構文フォーマットを採用してイベントパターンを指定し、ここで、システムエンティティは、主語および目的語として表され、複数のシステムエンティティ間の相互作用は、主語によって開始され、目的語をターゲットとする動作として表される。ＴＢＱＬを使用して表現される例示のイベントパターンは、Ｑ１：｛ｐｒｏｃ  ｐ１  ｗｒｉｔｅ  ｆｉｌｅ  ｆ１｝である。この構文は、話者数の観点から通常最も使用される文章構造である、主語−動詞−目的語（ＳＶＯ）の文章構造によって呼び起こされるので、かなり使い勝手がよい。複数のイベント間の関係を指定するタスクを簡単にするために、ＴＢＱＬは、以下の２つの主要なタイプの関係、すなわち属性関係および時間的関係を直接サポートする構文を提供する。属性関係は、利用者が、イベントの属性を使用して別のイベントの検索を制約することを可能にする。例えば、クエリＱ１において、利用者は、Ｇｏｏｇｌｅ（登録商標）Ｃｈｒｏｍｅブラウザの名前である「ｃｈｒｏｍｅ．ｅｘｅ」で終わる名前をプロセスｐ１が有するはずであることを意味する｛ｗｉｔｈ  ｐ１．ｅｘｅ＿ｎａｍｅ＝‘％ｃｈｒｏｍｅ．ｅｘｅ’｝をさらに指定してよい。時間的関係は、利用者がイベントの時間情報を使用して別のイベントの検索を制約することを可能にする。例えば、クエリＱ２：｛ｐｒｏｃ  ｐ１  ｗｒｉｔｅ  ｆｉｌｅ  ｆ１  ａｓ  ｅｖｔ１  ｐｒｏｃ  ｐ２  ｒｅａｄ  ｆｉｌｅ  ｆ１  ａｓ  ｅｖｔ２｝において、利用者は、プロセスｐ２がファイルｆ１から読み込むイベントの前に、プロセスｐ１がファイルｆ１に書き出すイベントが発生するはずであることを意味する｛ｗｉｔｈ  ｅｖｔ１  ｂｅｆｏｒｅ  ｅｖｔ２｝を指定してよい。
【００１４】
利用者が履歴上のイベント同士の因果的依存性を簡単に再構築できるように、ＴＢＱＬは、システム監視データの時間グラフ内のイベントパスを表現する、パス構文を提供する。例えば、クエリＱ３：｛ｂａｃｋｗａｒｄ：ｆｉｌｅ  ｆ１［“％ｃｈｒｏｍｅ．ｅｘｅ”］＜−［ｗｒｉｔｅ］ｐｒｏｃ  ｐ１−＞［ｅｘｅｃｕｔｅ］ｆｉｌｅ  ｆ２｝は、第１のイベントパターン｛ｆｉｌｅ  ｆ１［“％ｃｈｒｏｍｅ．ｅｘｅ”］＜−［ｗｒｉｔｅ］ｐｒｏｃ  ｐ１｝によってマッチしたイベントを最初に検索し、次に第２のイベントパターン｛ｐｒｏｃ  ｐ１−＞［ｅｘｅｃｕｔｅ］ｆｉｌｅ  ｆ２｝によってマッチしたイベントを、時間を遡って検索する。このクエリおいて、それぞれの矢印の方向は、イベントパターンの主語から目的語に向き、後方へのキーワードは、第２のイベントパターンによって発見されたイベントが、第１のイベントパターンによって発見されたイベントよりも前に発生するはずであることを示す。時間を進めてイベント同士の依存性を追跡するために、前方へのキーワードが使用されてもよい。複数のホストを跨るイベントの依存性を追跡するために、動作｛−＞［ｃｏｎｎｅｃｔ］｝が使用されるべきである。例えば、クエリ｛ｐｒｏｃ  ｐ１［‘％ａｐａｃｈｅ％’，ａｇｅｎｔｉｄ＝１］−＞［ｃｏｎｎｅｃｔ］ｐｒｏｃ  ｐ２［ａｇｅｎｔｉｄ＝２］｝は、このホストにおけるｉｄ  １のプロセスａｐａｃｈｅが、このホストにおけるｉｄ  ２のプロセスｐ２にデータを送るネットワークイベントを検索する。同じホストにおける複数のイベントの時間的順序は、配置されたエージェントによって割り当てられるシーケンス番号に基づいて厳格に強制されるが、異なるホストにおけるイベントの時間的順序は、ホスト同士でマッチしたネットワークイベントに基づいて調節される。
【００１５】
図１は、本発明の実施形態による、本発明の原理が適用され得る例示的な処理システム１００のブロック図を示す。処理システム１００は、システムバス１０２を介して、その他の構成要素に動作可能なように連結されている少なくとも１つのプロセッサ（ＣＰＵ）１０４を含んでいる。キャッシュ１０６、リードオンリメモリ（ＲＯＭ）１０８、ランダムアクセスメモリ（ＲＡＭ）１１０、入力／出力（Ｉ／Ｏ）アダプタ１２０、サウンドアダプタ１３０、ネットワークアダプタ１４０、利用者インターフェースアダプタ１５０、およびディスプレイアダプタ１６０は、システムバス１０２に動作可能なように連結されている。
【００１６】
第１の記憶デバイス１２２および第２の記憶デバイス１２４は、Ｉ／Ｏアダプタ１２０によってシステムバス１０２に動作可能なように連結されている。記憶デバイス１２２および１２４は、ディスク記憶デバイス（例えば、磁気または光ディスク記憶デバイス）、ソリッドステートの磁気デバイスなどのいずれかであってよい。記憶デバイス１２２および１２４は、同じタイプの記憶デバイスまたは異なるタイプの記憶デバイスであってよい。
【００１７】
スピーカ１３２は、サウンドアダプタ１３０によってシステムバス１０２に動作可能なように連結されている。送受信機１４２は、ネットワークアダプタ１４０によってシステムバス１０２に動作可能なように連結されている。ディスプレイデバイス１６２は、ディスプレイアダプタ１６０によってシステムバス１０２に動作可能なように連結されている。
【００１８】
第１の利用者入力デバイス１５２、第２の利用者入力デバイス１５４、および第３の利用者入力デバイス１５６は、利用者インターフェースアダプタ１５０によってシステムバス１０２に動作可能なように連結されている。利用者入力デバイス１５２、１５４、および１５６は、キーボード、マウス、キーパッド、画像キャプチャデバイス、動作検知デバイス、マイクロフォン、先述のデバイスのうちの少なくとも２つの機能性を組み込んでいるデバイスなどのいずれかであってよい。当然、本発明の趣旨を維持しながら、その他のタイプの入力デバイスが使用されてもよい。利用者入力デバイス１５２、１５４、および１５６は、同じタイプの利用者入力デバイス、または異なるタイプの利用者入力デバイスであってよい。利用者入力デバイス１５２、１５４、および１５６は、システム１００とやりとりする情報を入力および出力するために使用される。
【００１９】
当然、当業者によって容易に予想されるように、処理システム１００はその他の要素（図示せず）を含み、ある要素を省略してもよい。例えば、当業者によって容易に理解されるように、様々なその他の入力デバイスおよび／または出力デバイスが、同じデバイスの特定の実装形態に依存して、処理システム１００に含まれてよい。例えば、様々なタイプの無線および／または有線の入力および／または出力デバイスが使用されてよい。さらに、当業者によって容易に理解されるように、様々な構成の中に、追加のプロセッサ、コントローラ、メモリなどが利用されてもよい。処理システム１００のこれらのおよびその他の変形形態は、本明細書に提供される本発明の教示を与えられる当業者によって容易に予想される。
【００２０】
さらに、図２について以下に記述される環境２００は、本発明の個々の実施形態を実装するための環境であるということを理解されたい。処理システム１００の一部またはすべては、環境２００の要素の１つまたは複数の中に実装されてよい。
【００２１】
さらに、処理システム１００は、例えば図３の方法３００の少なくとも一部を含む、本明細書で説明される方法の少なくとも一部を実施してよいということを理解されたい。同様に、システム２００の一部またはすべてが、図３の方法３００の少なくとも一部を実施するために使用されてよい。
【００２２】
図２は、本発明の実施形態による、本発明が適用される可能性がある例示的な環境２００のブロック図を示す。
【００２３】
環境２００は、利用者２０１、ＴＢＱＬクエリサーバ２０２、監視されるシステム２０３の組を含む。
【００２４】
利用者２０１、ＴＢＱＬクエリサーバ２０２、および監視されるシステム２０３の組の間の通信は、１つまたは複数のネットワークを越えて発生する可能性がある。例証のために、利用者２０１とＴＢＱＬサーバ２０２との間の通信は、複数のネットワーク２８１の組を越えて発生し、ＴＢＱＬサーバ２０２と監視されるシステム２０３の組との間の通信は、複数のネットワーク２８２の組を越えて発生する。本明細書に提供される本発明の教示を与えられる当業者によって容易に理解されるように、本発明の趣旨を維持しながら、複数のネットワーク２８１のセットおよび複数のネットワーク２８２の組は、任意のタイプのネットワークを含む、および／または伴う可能性があるということを理解されたい。
【００２５】
ＴＢＱＬサーバ２０２は、利用者２０１からの入力に基づいてＴＢＱＬクエリを構築するように構成されているか、ＴＢＱＬクエリを構築する際に支援する。例えば、ＴＢＱＬクエリを作るために利用者がタイプすると、ＴＢＱＬサーバ２０２は、利用者によってスタートされたタイピングのうちのいくつかを完了させることができ、ならびに／または次の文字もしくは単語もしくは関連概念に関する有望な提案を行い、および／もしくは関心のある特定の挙動について、利用者が実行するために選択できる、クエリ自体に関する有望な提案を行う。例えば、実施形態において、ＴＢＱＬサーバ２０２は、１つまたは複数の利用者の入力に応答できるＴＢＱＬクエリの組を提案し、監視されるシステム２０３の組内で発生する危険挙動などの挙動に関連した、利用者２０１にとって関心のあるパラメータ／目的語を「ほのめかす（ｈｉｎｔｉｎｇ）」ことができる。したがって、ＴＢＱＬサーバ２０２によるクエリの構築について本明細書で使用されるように、用語「構築する（ｃｏｎｓｔｒｕｃｔ）」は、ＴＢＱＬサーバ２０２が、ＴＢＱＬクエリを構築する際に利用者２０１を支援することを指す可能性があり、またはＴＢＱＬサーバ２Ｑ２および利用者２０１がＴＢＱＬクエリを協調して構築することを指す可能性がある。
【００２６】
実施形態において、利用者２０１にＴＢＱＬクエリを提案する際に、ＴＢＱＬサーバ２０２は、確率に基づく技法を使用して、利用者にとって関心のある有望な（ありそうな）ＴＢＱＬクエリの組を決定することができる。実施形態において、利用者２０１にＴＢＱＬクエリを提案する際に、ＴＢＱＬサーバ２０２は、先のクエリおよび／または先の利用者などに関する履歴情報などの履歴情報を使用することができる。ＴＢＱＬクエリを提案するこれらのおよびその他の基準は、本発明の趣旨を維持しながら、本明細書に提供される本発明の教示を与えられる当業者によって容易に予想される。
【００２７】
実施形態において、利用者に提案されるＴＢＱＬクエリの数は、利用者の入力に基づく特定の数に制約される可能性がある。
【００２８】
および／またはそうでなければ、ＴＢＱＬクエリは、複数イベントクエリ、単一イベントクエリ、パスクエリなどを伴う可能性がある。
【００２９】
実施形態において、ＴＢＱＬサーバ２０２は、文法推論を使用して、利用者がＴＢＱＬクエリにタイプするのを、より簡単にすることができる。実施形態において、ＴＢＱＬサーバ２０２は、糖衣構文を使用して、利用者がＴＢＱＬクエリにタイプするのを、より簡単にすることができる。実施形態において、文法推論には、糖衣構文を使用することができる。
【００３０】
実施形態において、ＴＢＱＬサーバ２０２は、パフォーマンスの最適化を用いることができる。パフォーマンスの最適化は、データ分割および並列実行を含んでよいがこれらに限定されない。実施形態において、このデータ分割および並列実行は、効率的にクエリを実行し、クエリの結果を生み出す時間的なシステムイベント領域について実装されてよい。
【００３１】
データ分割に関して、同じことが伴う可能性があり、時間ごとにおよび／またはエージェントごとにクエリ関連のデータ（例えば、クエリ実行関連データ）を分割する。
【００３２】
例えば、時間ごとに分割することに関して、クエリは、クエリの一部がこのクエリの別の一部の前に完了されなければならないとき等などの、データの依存性に関する関連時間ごとに分割されてよい。時間ごとに分割することに関するさらなる例として、種々の（複数の）時間イベントに関するクエリの複数の部分が、時間イベントが個々に発生するタイミングに基づいて分割されてよい。これらのおよびその他の時間分割の基準は、本発明の趣旨を維持しながら、本明細書に提供される本発明の教示を与えられる当業者によって容易に決定される。
【００３３】
エージェントごとに分割することに関して、同じことが伴う可能性があり、例えば、可能性のあるエージェントの組からのどのエージェントが、クエリに関する情報などを収集し、および／または監視し、および／または送ったかなどに基づいて分割する。
【００３４】
並列実行に関して、同じことに関する１つの例において、（例えば、別々のイベント、アクセスされるべき別々のデータベースなど関連した）クエリの別々の部分は、このクエリによって暗示されるデータの依存性に依存して、並列に実行されてよい。
【００３５】
監視されるシステム２０３の組は、監視が望まれる任意のタイプのシステムを含んでよい。実施形態において、組内のこのシステム２０３は、危険挙動がないか監視される。当業者に明らかなように、監視されるパラメータは、例えば、しかしこれらに限定されないが、監視されるシステムのタイプ、監視されるデータのタイプなどを含む特定の実装形態に依存する。ＴＢＱＬクエリは、例えば、このような監視されるシステムに関する危険挙動を含む、このような監視されるシステム２０３を対象とする、複数イベントまたは単一イベントクエリを含んでよい。
【００３６】
実施形態において、ＴＢＱＬクエリは、セキュリティ関連の挙動を対象とする。このセキュリティ関連の挙動は、さらには、例えば、しかしこれらに限定されないが、プロセス、ファイル、ソケットなどに関する可能性がある。さらに、このセキュリティ関連の挙動は、さらには、監視されるシステム２０３の組のあるエンティティについて実施されるアクションに関する可能性がある。したがって、例えば、ＴＢＱＬクエリは、例えば、しかしこれらに限定されないが、オープン、クローズ、リード、ライト等などのアクションに関する可能性がある。先述のタイプの挙動およびその例は、例証にすぎない。当業者によって容易に理解されるように、本発明は、任意のタイプの挙動および任意の関連アクションを監視するように構成されてよい。
【００３７】
実施形態において、この監視される挙動は、どのようにシステムエンティティ（例えば、プロセス、ファイル、およびソケット）が、オペレーティングシステムのレベルで互いに相互作用するかについての痕跡の形である可能性がある。実施形態において、監視データは、一連のシステムイベントであってよく、主語および目的語は、システムエンティティであり、動作は、この主語がこの目的語に対して実施するアクションのタイプ（例えば、オープン、クローズ、リード、ライト）である。実施形態において、監視データは、ノードがシステムエンティティであり、エッジがタイムスタンプを有するそれらの相互作用である、本質的に異質の時間グラフである。
【００３８】
図３は、本発明の実施形態による、危険挙動クエリを構築し、実行するための例示的なシステム／方法３００の高レベルのブロック図／流れ図を示す。このシステム３００は、問合せシステム」と見なされてよい。
【００３９】
ブロック３０２において、ＴＢＱＬサーバを提供する。ブロック３１１および３１２は、図３に描写される動作の暗黙の階層３９９内のブロック３０２のすぐ下にある。
【００４０】
ブロック３１１において、ＴＢＱＬクエリの構築を実施する。このＴＢＱＬクエリは、危険挙動を対象とするように構築されてよい。例えば、このＴＢＱＬクエリが対象とする可能性がある危険挙動は、一定のセキュリティ対策またはプロトコルを用いないこと（例えば、確認されたおよび／またはそうでなければ未知の証明書なしに動作すること）などを含むがこれらに限定されない。ブロック３２１、３２２、および３２３は、階層３９９内のブロック３１１のすぐ下にある。
【００４１】
ブロック３２１において、複数イベントクエリを実施する。ブロック３４１は、階層３９９内のブロック３２１のすぐ下にある。
【００４２】
ブロック３２２において、パスクエリを実施する。
【００４３】
ブロック３２３において、文法推論を実施する。
【００４４】
ブロック３４１において、単一イベントクエリを実施する。
【００４５】
ブロック３１２において、ＴＢＱＬクエリの実行を実施する。ブロック３３１は、階層３９９内のブロック３１２のすぐ下にある。
【００４６】
ブロック３３１において、最適化を実施する。ブロック３５１および３５２は、階層３９９内のブロック３３１のすぐ下にある。
【００４７】
ブロック３５１において、データ分割動作を実施する。ブロック３６１および３６２は、階層３９９内のブロック３５１のすぐ下にある。
【００４８】
ブロック３５２において、並列実行を実施する。
【００４９】
ブロック３６１において、時間ごとのデータ分割動作を実施する。
【００５０】
ブロック３６２において、エージェントごとのデータ分割動作を実施する。
【００５１】
図３の階層３９９内のブロック同士の関係を説明する際、用語「すぐ下（ｄｉｒｅｃｔｌｙ  ｓｕｂｏｒｄｉｎａｔｅ）」は、動作を有し、このブロックの一部である、１つまたは複数のブロックを指し、ブロックの一部は、このブロックのすぐ下にある。したがって、例えば、時間ごとおよびエージェントごとに分割することに関連したブロック３６１および３６２は、それぞれ、２つの例示的な方式であり、この方式で（ブロック３６１および３６２がすぐ下にある）データ分割動作３５１は実施されてよい。
【００５２】
問合せシステム３００は、ＴＢＱＬクエリの構築３１１およびＴＢＱＬクエリの実行３１２を含みおよび／またはそうでなければ伴う。問合せシステム３００は、（‘ｃａｔ／ｅｔｃ／ｐａｓｓｗｄ’などの単一イベントを含む）複数イベントクエリ３２１、およびパスクエリ３２２（例えば、プロセスｐ２がプロセスｐ１をスタートさせ、次にファイルｆ１をオープンする）をサポートする。複数イベントクエリは、別の複数イベントクエリ内のサブクエリとして使用されてよい。ＴＢＱＬクエリの実行３１２において、利用者の入力に基づいて実行を最適化する、効率的かつインテリジェントなクエリプレーナ／エグゼキュータが提供される。文法推論３３１は、糖衣構文と併用され、クエリタイピングを簡潔かつ効率的にする。データ分割３５１および並列実行３５２は、効率的にクエリを実行し、結果を生み出す時間的なシステムイベント領域のために具体的に設計される。
【００５３】
次に、本発明によって提供される、競争力のあるおよび／または商業上の利点に関して説明が述べられる。例えば、以前の競争力のあるソリューションは、大量のシステムイベントデータの中の危険挙動を問い合わせるために特化されていない。ＳＱＬおよびＣｙｐｈｅｒのような一般的な問合せ言語と比較して、ＴＢＱＬは、（１）簡潔であること、（２）表現に富むこと、（３）直観的であること、および（４）効率的であること、を含むがこれらに限定されない、いくつかの競争力のある性質がある。簡潔であるという性質に関して、ＴＢＱＬは、複雑な挙動を問い合わせるのに少ないタイピングしか利用者に要求しない。表現に富むという性質に関して、ＴＢＱＬは、単一イベント、複数イベント、および異常なイベントを含むセキュリティ関連の挙動を指定する場合に強力である。直感的であるという性質に関して、ＴＢＱＬは、主語  動作−目的語の形でイベントを直接記述し、書きやすい。効率的であるという性質に関して、ＴＢＱＬは、システムイベントに直接合わせて作られ、大量のデータに拡張可能な最適化されたクエリ実行エンジンと共に装備される、領域特化型の言語である。
【００５４】
本明細書で説明される実施形態は、全面的にハードウェア、全面的にソフトウェアであるか、またはハードウェア要素とソフトウェア要素の両方を含んでよい。好ましい実施形態において、本発明は、ファームウェア、常駐ソフトウェア、マイクロコード、他を含むがこれらに限定されない、ソフトウェアに実装される。
【００５５】
実施形態は、コンピュータもしくは任意の命令実行システムによって使用するため、またはこれらと接続して使用するためのプログラムコードを提供する、コンピュータで使用可能、またはコンピュータで読取可能な媒体からアクセス可能なコンピュータプログラム製品を含んでよい。コンピュータで使用可能、またはコンピュータで読取可能な媒体は、命令実行システム、装置、もしくはデバイスによって使用するため、またはこれらと接続して使用するためのプログラムを格納、通信、伝播、または転送する任意の装置を含んでよい。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体のシステム（もしくは装置もしくはデバイス）または伝搬媒体であってよい。媒体は、半導体またはソリッドステートメモリ、磁気テープ、取外し可能コンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、固定磁気ディスク、および光ディスク、他などのコンピュータで読取可能なストレージ媒体を含んでよい。
【００５６】
それぞれのコンピュータプログラムは、ストレージ媒体またはデバイスがコンピュータによって読まれ、本明細書で説明される手順を実施するときに、コンピュータの動作を構成および制御するために、汎用または特殊用途のプログラマブルコンピュータによって読むことができる、機械で読取可能なストレージ媒体またはデバイス（例えば、プログラムメモリまたは磁気ディスク）に現実的に格納されてよい。本発明のシステムは、コンピュータプログラムで構成されているコンピュータで読取可能なストレージ媒体の中で具体化されると見なされてもよく、ここで、そのように構成されているこのストレージ媒体は、コンピュータを具体的かつ所定の手法で動作させ、本明細書で説明される機能を実施させる。
【００５７】
プログラムコードを格納および／または実行するのに適したデータ処理システムは、システムバスを通じてメモリエレメントに直接的または間接的に連結される、少なくとも１つのプロセッサを含んでよい。このメモリエレメントは、プログラムコードを実際に実行させる間に用いられるローカルメモリ、大容量ストレージ、および、少なくともいくつかのプログラムコードを一時的に格納し、実行中にコードが大容量ストレージから取り出される回数を減らす、キャッシュメモリを含んでよい。（キーボード、ディスプレイ、ポインティングデバイス、他を含むがこれらに限定されない）入力／出力すなわちＩ／Ｏデバイスは、直接、または介在するＩ／Ｏコントローラを通じて、システムに連結されてよい。
【００５８】
ネットワークアダプタは、介在するプライベートまたはパブリックネットワークを通じて、他のデータ処理システムまたはリモートのプリンタもしくはストレージデバイスに、データ処理システムが連結されるようになることを可能にするために、このシステムに連結されてもよい。モデム、ケーブルモデム、およびイーサネットカードは、現在利用可能なタイプのネットワークアダプタのほんの一部にすぎない。
【００５９】
本発明の「１つの実施形態」または「実施形態」、およびこのその他の変形物に明細書で言及することは、実施形態に関連して説明される特定の特徴、構造、特性などが、本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、明細書の全体を通じて様々な場所に現れる成句「１つの実施形態において」または「実施形態において」および任意の他の変形物が現れても、必ずしもすべてが同じ実施形態に言及するわけではない。
【００６０】
例えば、「Ａ／Ｂ」、「Ａおよび／またはＢ」、および「ＡおよびＢのうちの少なくとも１つ」のケースにおける、前述の「／」、「および／または」、および「のうちの少なくとも１つ」のうちのいずれかの使用は、第１の列挙されたオプション（Ａ）のみの選択、または第２の列挙されたオプション（Ｂ）のみの選択、または両方のオプション（ＡおよびＢ）の選択を包含することを意図するということを理解されたい。さらなる例として、「Ａ、Ｂ、および／またはＣ」、および「Ａ、Ｂ、およびＣのうちの少なくとも１つ」のケースにおいて、このような成句は、第１の列挙されたオプション（Ａ）のみの選択、または第２の列挙されたオプション（Ｂ）のみの選択、または第３の列挙されたオプション（Ｃ）のみの選択、または第１と第２の列挙されたオプション（ＡおよびＢ）のみの選択、または第１と第３の列挙されたオプション（ＡおよびＣ）のみの選択、または第２と第３の列挙されたオプション（ＢおよびＣ）のみの選択、または３つのオプションすべて（ＡおよびＢおよびＣ）の選択を包含することを意図する。これは、当業者によって容易に明白なように、列挙された同数の項目に対して拡張されてよい。
【００６１】
上記は、あらゆる点で、例証的かつ例示的であり、制限的ではないものとして理解されるべきであり、本明細書で開示された本発明の範囲は、この詳細な説明から決定されるのではなく、特許法によって許される全容にしたがって解釈されるように、むしろ特許請求の範囲から決定されるべきである。本明細書で示され、説明された実施形態は、本発明の諸原理の例証的なものにすぎないということ、および当業者は、本発明の範囲および精神から逸脱することなく、様々な修正を実装できるということを理解されたい。当業者は、本発明の範囲および精神から逸脱することなく、様々なその他の特徴の組合せを実装することができる。特許法によって特に要求される詳細と共に、このように本発明の態様を説明したが、特許請求され、特許証によって保護されることが望まれるものは、添付の特許請求の範囲に示される。
【図１】
2019505918.tif 000003
【図２】
2019505918.tif 000004
【図３】
2019505918.tif 000005
【国際調査報告】
2019505918.tif 000006
2019505918.tif 000007