(57)【要約】  本明細書では、カーネルレベル・セキュリティ・エージェントを説明する。当該カーネルレベル・セキュリティ・エージェントは、イベントを監視し、構成可能なフィルタを用いて監視されたイベントをフィルタし、当該フィルタされたイベントを１つまたは複数のイベント消費者に送信し、１つまたは複数のイベント消費者を用いてフィルタされたイベントの少なくとも１つに基づいて措置を取るように構成される。幾つかの実装形態では、当該カーネルレベル・セキュリティ・エージェントは、悪意のあるコードに関連付けられた第１の動作を検出し、当該悪意のあるコードに関するデータを収集し、当該悪意のあるコードの後続の動作（複数可）を検出したことに応じて予防動作を実施する。当該カーネルレベル・セキュリティ・エージェントはまた、悪意のあるコードに関連付けられた敵を騙すことができる。さらに、当該カーネルレベル・セキュリティ・エージェントは、一連の実行動作を表すモデルを利用してもよく、これらの一連の実行動作に基づいて措置をとってもよい。
2015522874.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサと、
イベントを監視し、構成可能なフィルタを用いて前記監視されたイベントをフィルタし、前記フィルタされたイベントを１つまたは複数のイベント消費者に送信し、前記１つまたは複数のイベント消費者を用いて、前記フィルタされたイベントのうち少なくとも１つに基づく措置を取るために前記１つまたは複数のプロセッサによって実行されるように構成されたカーネルレベル・セキュリティ・エージェント
を備えたことを特徴とするシステム。
【請求項２】
前記カーネルレベル・セキュリティ・エージェントは、カーネルレベルまたはユーザレベルのイベントを監視し、少なくとも前記監視されたイベントのサブセットを前記構成可能なフィルタに提供するように構成されたコレクタコンポーネントを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記カーネルレベル・セキュリティ・エージェントは、前記システムの１つまたは複数のオブジェクトまたはプロセスの属性または振舞いを追跡するためのモデルを備え、前記カーネルレベル・セキュリティ・エージェントはさらに、前記フィルタされたイベントに少なくとも部分的に基づいて前記モデルを更新するように構成されることを特徴とする請求項１に記載のシステム。
【請求項４】
前記構成可能なフィルタまたはイベント消費者のうち１つまたは両方は、前記モデルを問い合わせるように構成されることを特徴とする請求項３に記載のシステム。
【請求項５】
前記カーネルレベル・セキュリティ・エージェントは、前記カーネルレベルで実装され、１つまたは複数のリモートシステムと通信するように構成された通信モジュールを備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記措置は、前記フィルタされたイベントのリモート・セキュリティ・システムに通知することであることを特徴とする請求項１に記載のシステム。
【請求項７】
前記カーネルレベル・セキュリティ・エージェントは、それに応じて、動作または構成更新をさらに実施するための命令のうち少なくとも１つを受信することを特徴とする請求項６に記載のシステム。
【請求項８】
前記カーネルレベル・セキュリティ・エージェントは、１つまたは複数のイベント、構成更新、または、前記カーネルレベル・セキュリティ・エージェントからリモート・セキュリティ・システムへの通信と独立に、動作を実施するための命令をリモート・セキュリティ・システムから受信することを特徴とする請求項１に記載のシステム。
【請求項９】
前記１つまたは複数のイベント消費者は、前記フィルタされたイベントが発生した事実を記録する少なくとも１つの相関器を含み、前記フィルタされたイベントの発生と閾値、集合、シーケンス、マルコフ連鎖、または有限状態機械のうち少なくとも１つとの間の関係に少なくとも部分的に基づいて、前記措置を取ることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記１つまたは複数のイベント消費者は、前記フィルタされたイベントのうち１つまたは複数を受信したことに応答して、新規フィルタ可能イベントを生成することを特徴とする請求項１に記載のシステム。
【請求項１１】
前記１つまたは複数のイベント消費者は、
イベントに関連付けられた犯罪科学的データを収集すること、
前記犯罪科学的データをモデルに格納すること、
リモート・セキュリティ・システムに前記フィルタされたイベントを通知すること、または、
前記フィルタされたイベントの１つまたは複数に関連付けられたプロセスを停止するかまたは騙す措置を取ること、
のうち少なくとも１つを実施するように構成された少なくとも１つのアクタを含むことを特徴とする請求項１に記載のシステム。
【請求項１２】
前記カーネルレベル・セキュリティ・エージェントは、前記カーネルレベル・セキュリティ・エージェントが動作し続けている間に、前記カーネルレベル・セキュリティ・エージェントの１つまたは複数のコンポーネントを更新し、置換し、または除去することを特徴とする請求項１に記載のシステム。
【請求項１３】
置換または除去されるよう指定された前記カーネルレベル・セキュリティ・エージェントの既存のコンポーネントは、前記カーネルレベル・セキュリティ・エージェントの更新中に動作し続けることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記カーネルレベル・セキュリティ・エージェントは、前記フィルタされたイベントを送信する構成可能なルーティング・コンポーネントを備えることを特徴とする請求項１に記載のシステム。
【請求項１５】
前記カーネルレベル・セキュリティ・エージェントは、前記１つまたは複数のイベント消費者により処理するための非同期イベントをスケジュールするスケジューラを備えることを特徴とする請求項１に記載のシステム。
【請求項１６】
前記カーネルレベル・セキュリティ・エージェントは、
複数のプロセスまたはスレッドに関連付けられたイベントを並列に監視すること、
前記複数の観測されたイベントを並列にフィルタすること、
前記複数のフィルタされたイベントを並列に送信すること、または、
複数のイベント消費者を並列に利用すること、
のうち少なくとも１つを実施することを特徴とする請求項１に記載のシステム。
【請求項１７】
前記カーネルレベル・セキュリティ・エージェントは、前記１つまたは複数のイベント消費者を利用して、前記システムの悪意のあるコードに関連付けられた第２のイベントに応答して措置を取り、前記第２のイベントは、前記カーネルレベル・セキュリティ・エージェントによる第１のイベントの監視後に生ずることを特徴とする請求項１に記載のシステム。
【請求項１８】
前記カーネルレベル・セキュリティ・エージェントは、
構成更新をリモート・セキュリティ・システムから受信する構成マネージャと、
前記構成更新に基づいて新たなコンポーネントをロードまたはアンロードするコンポーネント・マネージャと、
古いコンポーネントと新たなコンポーネントの間で状態情報を維持する状態マネージャと、
前記カーネルレベル・セキュリティ・エージェントに代わって前記システムの記憶部とインタフェースする記憶マネージャと、または、
前記カーネルレベル・セキュリティ・エージェントのコア・コンポーネントおよびマネージャの更新中にイベントを監視し、フィルタし、送信するインテグリティ・マネージャと、
のうち少なくとも１つを備えることを特徴とする請求項１に記載のシステム。
【請求項１９】
前記カーネルレベル・セキュリティ・エージェントは、ハイパバイザ、ハードウェア提供型セキュリティ機能を利用する１つまたは複数のプレブートコンポーネント、または、ハードウェア提供型セキュリティ機能を利用しない１つまたは複数のプレブートコンポーネントを備えることを特徴とする請求項１に記載のシステム。
【請求項２０】
前記カーネルレベル・セキュリティ・エージェントは、前記システムのユーザモードでイベントを監視する少なくとも１つのコレクタと、前記システムの前記ユーザモードでイベントをフィルタする少なくとも１つの構成可能なフィルタとを備えることを特徴とする請求項１に記載のシステム。
【請求項２１】
前記カーネルレベル・セキュリティ・エージェントは、システム・オペレーティングシステムの前に起動されるセキュア・オペレーティングシステムであることを特徴とする請求項１に記載のシステム。
【請求項２２】
悪意のあるコードに関連付けられた第１の動作を検出するステップと、
前記第１の動作を検出することに応答して、予防動作の実施を控えながら、前記第１の動作に関連付けられたデータを収集するステップと、
前記第１の動作の後に発生した、悪意のあるコードに関連付けられた１つまたは複数の後続の動作を検出すると、前記予防動作を実施するステップと
を含むことを特徴とする方法。
【請求項２３】
前記予防動作は、前記１つまたは複数の後続の動作と前記悪意のあるプロセスによるさらなる動作を防止すること、または、前記悪意のあるコードに関連付けられた敵を騙すことであることを特徴とする請求項２２に記載の方法。
【請求項２４】
前記第１の動作を実行したシステムのプロセスが行った動作を追跡するモデルに前記収集したデータを格納するステップをさらに含むことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記収集したデータをリモート・セキュリティ・システムに提供するステップをさらに含むことを特徴とする請求項２２に記載の方法。
【請求項２６】
それに応じて、前記予防動作、または前記検出、収集、および実施を行うセキュリティエージェントを構成するための構成更新に関連付けられた命令を受信するステップをさらに含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
コンピューティング装置上のカーネルレベル・セキュリティ・エージェントを実装するように構成されたコンピュータ実行可能命令を格納する１つまたは複数の有形コンピュータ可読媒体であって、前記カーネルレベル・セキュリティ・エージェントは、
前記コンピューティング装置で実行されているプロセスに関連付けられたイベントを監視するステップと、
前記監視されたイベントに少なくとも部分的に基づいて、前記プロセスが悪意のあるコードに関連付けられていると判定するステップと、
前記判定に応答して、前記悪意のあるコードに関連付けられた敵を騙すステップと
を含む動作を実施することを特徴とする１つまたは複数の有形コンピュータ可読媒体。
【請求項２８】
前記騙すステップは、前記悪意のあるコードにより取得されたデータを改ざんするステップを含むことを特徴とする請求項２７に記載の１つまたは複数の有形コンピュータ可読媒体。
【請求項２９】
前記騙すステップは、前記敵に送信されるデータを改ざんするステップを含むことを特徴とする請求項２７に記載の１つまたは複数の有形コンピュータ可読媒体。
【請求項３０】
前記判定するステップは、前記プロセスが悪意のあるコードに関連付けられていることを、前記コンピューティング装置のプロセスを追跡するモデルに少なくとも部分的に基づいて判定するステップを含むことを特徴とする請求項２７に記載の１つまたは複数の有形コンピュータ可読媒体。
【請求項３１】
コンピューティング装置のカーネルレベル・セキュリティ・エージェントにより実施される方法であって、
前記コンピューティング装置の１つまたは複数のプロセスの実行動作を監視するステップと、
１つまたは複数の実行動作に関連付けられたデータを前記カーネルレベル・セキュリティ・エージェントのモデルに格納するステップであって、前記モデルは１つまたは複数の一連の実行動作を表す、ステップと、
前記１つまたは複数の一連の実行動作に少なくとも部分的に基づいて措置を取るステップと
を含むことを特徴とする方法。
【請求項３２】
前記一連の実行動作の少なくとも１つは、前記プロセスの１つの系図を表すことを特徴とする請求項３１に記載の方法。
【請求項３３】
前記措置を取るステップは、悪意のある動作に関連付けられたプロセスを停止するかまたは騙すステップを含むことを特徴とする請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、発明の名称を「カーネルレベル・セキュリティ・エージェント」とした２０１２年６月８日に出願された米国実用特許出願第１３／４９２、６７２号に対する優先権を主張し、その全体を引用により本明細書に組み込む。
【背景技術】
【０００２】
インターネットの利用が日常生活の非常に大きな部分を占めるにつれ、システムのリソース、データ、およびプライベート情報を盗むかまたは破壊する、しばしば「マルウェア」と呼ばれる悪意のあるソフトウェアがますます問題となっている。政府や企業は大量のリソースを投じてマルウェアの侵入を防いでいる。マルウェアは、コンピュータウィルス、ワーム、トロイの木馬、スパイウェア、キーストローク・ロガー、アドウェア、およびルートキットなどの多数の形で現れる。マルウェアがもたらす脅威の一部には、サイバー・テロまたは産業スパイとして説明される重大なものがある。
【０００３】
これらの脅威に対する今日のアプローチには、シグナチャーベースの技術およびヒューリスティックな技術を利用してマルウェアを検出する、Ｓｙｍａｎｔｅｃ（登録商標）  Ｅｎｄｐｏｉｎｔ  Ｐｒｏｔｅｃｔｉｏｎなどの伝統的なアンチウィルス・ソフトウェアがある。これらの技術では、マルウェアの定義をリモート・セキュリティ・サービスから受信し、受信した定義にマッチするファイルに対してアンチウィルス・ソフトウェアが実装されているホスト装置をスキャンする必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来のアンチウィルス・ソフトウェアには多数の問題がある。しばしば、マルウェアの拡散者はセキュリティ・ソフトウェアのベンダより迅速に反応して、検出を回避するするようにマルウェアを更新することができる。また、新たな定義が実装されるときまたはセキュリティ・ソフトウェア自体が更新されるときに脆弱性の期間が存在する。現在、これらの脆弱性期間の間に、マルウェアの侵入や拡散を防止する手段はない。さらに、アンチウィルス・ソフトウェアは、検出を回避するための時間（window）をマルウェアに与える、オペレーティングシステムの後にロードするユーザモード・アプリケーションである傾向がある。
【課題を解決するための手段】
【０００５】
添付図面を参照して詳細な説明を与える。図面では、参照番号の最も左の数字（複数可）は、当該参照番号が最初に現れる図面を示す。異なる図面での同じ参照番号の利用は、同様なまたは同一の項目または特徴を示す。
【図面の簡単な説明】
【０００６】
【図１】カーネルレベル・セキュリティ・エージェントで構成したコンピューティング装置をセキュリティ・サービス・クラウドに接続するネットワークの例の図である。
【図２】モデル、コンポーネント、およびマネージャを含む、図１のネットワークで使用するカーネルレベル・セキュリティ・エージェントのアーキテクチャの例の図である。
【図３】悪意のあるコードに関連付けられた第１の動作を検出し、データを収集する間は予防動作を控え、当該悪意のあるコードに関連付けられた後続の動作（複数可）を検出したときに、予防動作を実施するための、図１のネットワークで使用するカーネルレベル・セキュリティ・エージェントで実装されるプロセスの例の図である。
【図４】イベントを監視し、当該イベントが悪意のあるコードに関連付けられていると判定し、当該悪意のあるコードに関連付けられた敵を騙すための、図１のネットワークで使用するカーネルレベル・セキュリティ・エージェントで実装されるプロセスの例の図である。
【図５】実行動作を監視し、当該実行動作に関連付けられたデータを、一連の当該実行動作を表すモデルに格納し、当該一連の実行動作に基づいて措置を取るための、図１のネットワークで使用するカーネルレベル・セキュリティ・エージェントで実装されるプロセスの例の図である。
【発明を実施するための形態】
【０００７】
（概要）  
本明細書では、仮想マシン／シャドウ・オペレーティングシステムとしてホストコンピューティング装置で動作するカーネルレベル・セキュリティ・エージェントを部分的に説明する。当該装置には、モバイルシステムや組込みシステムが含まれる。当該ホストコンピューティング装置のオペレーティングシステムの前に、カーネルレベル・セキュリティ・エージェントがロードされる。実際、カーネルレベル・セキュリティ・エージェントは、第１の数十の命令の一部により、ホストコンピューティング装置のブート時間中のごく初期にロードされる。ブート時間の初期にロードすることによって、カーネルレベル・セキュリティ・エージェントは、マルウェアがアクティブになりホストコンピューティング装置の動作とインタフェースできる時間（window）、または、マルウェアがホストコンピューティング装置で気づかれずに動作できる時間（window）を大幅に減らす。幾つかの実施形態では、ハードウェア・ベースのセキュリティ機能を利用することによって、エージェントはその計算動作とデータの整合性を検証し、提供されるセキュリティのレベルをさらに高めることができる。
【０００８】
様々な実施形態では、カーネルレベル・セキュリティ・エージェントを、ドライバの形でホストコンピューティング装置にインストールしてもよく、セキュリティサービスから受信してもよい。かかるセキュリティサービスを、セキュリティサービス・デバイスのクラウド（本明細書では「セキュリティ・サービス・クラウド」または「リモート・セキュリティ・システム」と称する）として実装してもよい。カーネルレベル・セキュリティ・エージェントをインストールすることに加えて、セキュリティ・サービス・クラウドが、監視されたイベントの通知をカーネルレベル・セキュリティ・エージェントから受信してもよく、これらのイベントに関連付けられたデータの分析を実施してもよく、ホストコンピューティング装置の修復を実施してもよく、構成更新を生成し、これらの更新をカーネルレベル・セキュリティ・エージェントに提供してもよい。カーネルレベル・セキュリティ・エージェントとセキュリティ・サービス・クラウドの間のこれらの動作により、マルウェア開発者（本明細書では「敵対者」とも称する）のマルウェア更新ループを打ち負かす検出ループが可能となり、さらに、カーネルレベル・セキュリティ・エージェントが監視を続けつつ更新を実施することができ、セキュリティ・カバレッジにおける危険なギャップが排除される。または、本明細書で使用する際、「敵対者」という用語は、マルウェア開発者だけでなく、突破口の開発者、ビルダ、攻撃インフラのオペレータ、対象の偵察を行う者、この動作を実行する者、データ引出しを実施する者、および／またはネットワークでの持続性を維持する者等を含む。したがって、「敵対者」とは全て「敵」のグループの一部である多数の者を含みうる。また、当該検出ループは、マルウェア更新ループを打ち負かすことだけに着目しておらず、マルウェアの変更や、突破口、攻撃インフラ、持続性ツール、攻撃戦略等の変更といった攻撃の全ての態様に着目している。
【０００９】
カーネルレベル・セキュリティ・エージェントおよびセキュリティ・サービス・クラウドの検出ループは、周知のＯＯＤＡ−ループ（即ち、監視（observe）、情勢判断（orient）、意思決定（detect）、行動（act）ループ）の原理に従って設計されたエージェント・アーキテクチャによって可能となる。固定のシグナチャーを用いて迅速な決定と応答を行うのではなく、カーネルレベル・セキュリティ・エージェントは、ホストコンピューティング装置で発生する全ての意味的に関心あるイベントを監視し分析する。コレクタとして知られているカーネルレベル・セキュリティ・エージェント・コンポーネントはこれらのこれらの意味的に関心あるイベント（例えば、ファイル書込みや実行可能ファイルの実行）の通知を、ホストオペレーティングシステムのフックまたはフィルタ・ドライバから、ユーザモード・イベント・モニタから、または、ログファイルもしくはメモリ位置を監視するスレッドから受信する。次いで、これらのイベントを、カーネルレベル・セキュリティ・エージェントの構成可能なフィルタを用いてフィルタし、相関器またはアクタコンポーネントなどのカーネルレベル・セキュリティ・エージェントのイベント消費者に送信／ディスパッチしてもよい。相関器コンポーネントは当該フィルタされたイベントが発生した事実を記録する（note）。アクタコンポーネントは、例えば、イベントに関連付けられた犯罪科学的データを収集し、カーネルレベル・セキュリティ・エージェントの状況モデルを当該犯罪科学的データで更新してもよい。当該状況モデルは、一連の当該実行動作とプロセスの系図を表し、ホストコンピューティング装置で実行されているプロセスの属性、振舞い、またはパターンを追跡し、いつイベントが関心あるものであるかをカーネルレベル・セキュリティ・エージェントのイベント消費者が判定できるようにする。かかる関心あるイベントの発生を決定すると、イベント消費者は状況モデルの更新、さらなる監視の実施、関心あるイベントが発生したとの判定を表すイベントの生成、関心あるイベントのセキュリティ・サービス・クラウドへの通知、または、悪意のあるコードに関連付けられたプロセスの実行を停止するかもしくは当該悪意のあるコードに関連付けられた敵を騙すことによるホストコンピューティング装置の修復のうち何れかまたは全てを実施することができる。様々な実施形態では、イベント消費者の監視、フィルタ、送信／ディスパッチ、および／または利用の何れかまたは全てを、複数のイベントに関して並列に行ってもよい。
【００１０】
固定のシグナチャーではなくホストコンピューティング装置の重要なイベントおよび一連の当該実行動作に基づいてループすることによって、カーネルレベル・セキュリティ・エージェントは悪意のあるコードに関連付けられたプロセスをより良く検出することができる。敵対者はマルウェアを容易に変更してシグナチャーベースの検出を回避できるが、重要なイベントを監視し分析するエージェントによる検出を回避するのは非常に困難である。さらに、イベントをしばらく監視し、悪意のあるコードに関連付けられた動作を検出したことに応じて予防動作を即座に実施しないことによって、カーネルレベル・セキュリティ・エージェントは、マルウェアが動作していると敵対者に思い込ませることができ、マルウェアが後に停止するかまたは騙されたときに、敵対者は最初に自己のマルウェアをデバッグしようと考えることになろう。
【００１１】
様々な実施形態では、述べたように、カーネルレベル・セキュリティ・エージェントが、監視を続けつつ更新を実施し、セキュリティ・カバレッジにおける危険なギャップが排除される。構成更新をセキュリティ・サービス・クラウドから受信したことに応答して、カーネルレベル・セキュリティ・エージェントの構成マネージャはカーネルレベル・セキュリティ・エージェントのコンポーネント・マネージャを起動して、既存のコンポーネントを更新または置換する新たなコンポーネントをロードしてもよい。当該既存のコンポーネントは、当該新たなコンポーネントがロードされる間に脅威検出に参加し続け、割込みのない脅威検出が保証される。
【００１２】
幾つかの実施形態では、カーネルレベル・セキュリティ・エージェントはインテグリティ・マネージャを備える。インテグリティ・マネージャは、カーネルレベル・セキュリティ・エージェントのコア・コンポーネントまたはマネージャ自身が更新または置換される間に脅威検出を実施する。したがって、カーネルレベル・セキュリティ・エージェントを一度インストールすると、カーネルレベル・セキュリティ・エージェントの幾つかのコンポーネントまたはマネージャ（複数可）がホストコンピューティング装置への脅威の検出に継続的に参加する。
【００１３】
（ネットワークおよび装置の例）  
図１は、カーネルレベル・セキュリティ・エージェントで構成されたコンピューティング装置を、カーネルレベル・セキュリティ・エージェントを介してコンピューティング装置に構成、分析、修復を提供するセキュリティ・サービス・クラウドに接続するネットワークの例を示す。図１に示すように、コンピューティング装置１０２がセキュリティ・サービス・クラウド１０４とネットワーク１０６を介して対話してもよい。プロセッサ１０８などのコンポーネントに加えて、ネットワーク・インタフェース１１０、およびメモリ１１２、コンピューティング装置１０２はカーネルレベル・セキュリティ・エージェント１１４を実装してもよい。カーネルレベル・セキュリティ・エージェント１１４は、メモリ１１２に格納されプロセッサ（複数可）１０８により実行可能として示されている。カーネルレベル・セキュリティ・エージェント１１４は、イベントを監視しこれらのイベントに基づいて取るべき措置を決定するコンポーネント１１６と、コンピューティング装置１０２のプロセスの属性と振舞いを追跡する状況モデル１１８と、コンポーネント１１６を更新し更新中に継続的な検出を提供するマネージャ１２０と、セキュリティ・サービス・クラウド１０４と通信する通信モジュール１２２と、を備えてもよい。カーネルレベル・セキュリティ・エージェント１１４に加えて、コンピューティング装置１０２がオペレーティングシステム１２４、プロセス１２６、およびログファイル１２８を備えてもよい。
【００１４】
様々な実施形態では、セキュリティ・サービス・クラウド１０４の装置がプロセッサ１３０、ネットワーク・インタフェース１３２、およびメモリ１３４を備えてもよい。メモリ１３４は、コンピューティング装置１０２のカーネルレベル・セキュリティ・エージェント１１４と通信する通信モジュール１３６と、カーネルレベル・セキュリティ・エージェント１１４により特定された関心あるイベントを評価する分析モジュール１３８と、カーネルレベル・セキュリティ・エージェント１１４の構成更新を生成し提供する構成モジュール１４０と、コンピューティング装置１０２で実行されているマルウェアを停止するかまたは騙す修復モジュール１４２と、他のコンピューティング装置またはユーザにコンピューティング装置１０２で検出されたマルウェアを通知するソーシャル・モジュール１４４と、セキュリティ・サービス・クラウド１０４に関連付けられた管理者が、監視されたイベントの通知を参照しこれらのイベントに対する適切な応答に関する決定をできるようにする管理ユーザインタフェース（ＵＩ）と、を格納してもよい。
【００１５】
様々な実施形態では、コンピューティング装置１０２およびセキュリティ・サービス・クラウド１０４の装置はそれぞれサーバまたはサーバ・ファーム、複数の、分散サーバ・ファーム、メインフレーム、ワークステーション、パーソナルコンピュータ（ＰＣ）、ラップトップ・コンピュータ、タブレット・コンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、メディア・センタ、組込みシステム、または他の任意の種類の１つまたは複数の装置であってもよく、または、これらを含んでもよい。１実装形態では、セキュリティ・サービス・クラウド１０４のコンピューティング装置（複数可）が、ノードのクラウド・コンピューティング・ネットワークなどの通信で動作する複数のコンピューティング装置を表す。複数のコンピューティング装置で実装するときは、セキュリティ・サービス・クラウド１０４は、セキュリティ・サービス・クラウド１０４のモジュールとデータ１３６乃至１４６を当該複数のコンピューティング装置に分散させてもよい。幾つかの実装形態では、コンピューティング装置１０２またはセキュリティ・サービス・クラウド１０４のコンピューティング装置（複数可）のうち１つまたは複数が、１つまたは複数のコンピューティング装置で実装された１つまたは複数の仮想マシンを表す。
【００１６】
幾つかの実施形態では、ネットワーク１０６が、有線ネットワーク、無線ネットワーク、および、有線ネットワークと無線ネットワークの組合せなどの、１つまたは複数のネットワークを含んでもよい。さらに、ネットワーク１０６が、複数の様々な種類のパブリック・ネットワークまたはプライベート・ネットワーク（例えば、ケーブル・ネットワーク、インターネット、無線ネットワーク等）の任意の１つまたは組合せを含んでもよい。幾つかの事例では、コンピューティング装置１０２とセキュリティ・サービス・クラウド１０４が、セキュア・プロトコル（例えば、ｈｔｔｐｓ）、および／または、ＴＣＰ／ＩＰ（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）などの他の任意のプロトコルまたは１組のプロトコルを用いてネットワークで通信してもよい。
【００１７】
述べたように、コンピューティング装置１０２はプロセッサ（複数可）１０８とネットワーク・インタフェース（複数可）１１０を備える。プロセッサ（複数可）１０８は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）またはＧＰＵ（ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）などの任意の種類の処理ユニットであってもよく、または、これを含んでもよい。ネットワーク・インタフェース（複数可）１１０により、コンピューティング装置１０２はセキュリティ・サービス・クラウド１０４および他の装置のうち１つまたは両方と通信することができる。ネットワーク・インタフェース（複数可）１１０は、ネットワーク１０６または他のネットワークのうち１つまたは両方を介して通信を送受信してもよい。ネットワーク・インタフェース（複数可）１１０は様々なネットワークに対する有線接続と無線接続の両方をサポートしてもよい。
【００１８】
メモリ１１２（および本明細書で説明した他のメモリ）が、モジュールとデータのアレイを格納してもよく、揮発性および／または不揮発性メモリ、取外し可能および／または取外し不能媒体等を含んでもよい。これらを、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータなどの、情報を記憶するための任意の方法または技術で実装してもよい。かかる命令には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、ＲＡＩＤ記憶システム、または所望の情報を格納するために使用できコンピューティング装置によりアクセス可能な他の任意の媒体が含まれるがこれらに限られない。
【００１９】
述べたように、メモリ１１２はカーネルレベル・セキュリティ・エージェント１１４を備える。カーネルレベル・セキュリティ・エージェント１１４は仮想マシン／シャドウ・オペレーティングシステムとして動作する。カーネルレベル・セキュリティ・エージェント１１４は、コンピューティング装置１０２のオペレーティングシステム１２４の前にロードされる。実際、カーネルレベル・セキュリティ・エージェント１１４は、第１の数十の命令の一部により、コンピューティング装置１０２のブート時間のごく初期にロードされる。
【００２０】
図１に示すように、カーネルレベル・セキュリティ・エージェント１１４は、イベントを監視してこれらのイベントと状況モデル１１８に基づいて取る適切な動作（複数可）を決定するコンポーネント１１６、状況モデル１１８、構成更新をセキュリティ・サービス・クラウド１０４から受信しイベントを監視し続けつつ当該更新を実施するマネージャ１２０と、セキュリティ・サービス・クラウドと通信する通信モジュール１２２と、を備える。また、カーネルレベル・セキュリティ・エージェント１１４が、１つまたは複数のプレブートコンポーネントのハイパバイザを備えてもよい。当該プレブートコンポーネントがハードウェア提供型セキュリティ機能を利用してもしなくてもよい。カーネルレベル・セキュリティ・エージェント１１４のこれらのモジュールとデータ１１６乃至１２２を、図２のカーネルレベル・セキュリティ・エージェント・アーキテクチャ２００を参照して以下でさらに詳細に説明する。
【００２１】
さらに図１に示すように、メモリ１１２はコンピューティング装置１０２のオペレーティングシステム１２４を含む。オペレーティングシステム１２４が、カーネルレベル・セキュリティ・エージェント１１４などの他のプロセスが、ファイルの作成、読取および書込み、実行可能ファイルの起動等のようなイベントの発生または不発生の通知を受信できるようにするフックまたはフィルタ・ドライバを備えてもよい。メモリ１１２は、カーネルレベル・セキュリティ・エージェント１１４が監視するプロセス１２６およびログファイル１２８も含む。
【００２２】
述べたように、セキュリティ・サービス・クラウド１０４の装置はプロセッサ（複数可）１３０およびネットワーク・インタフェース（複数可）１３２を備える。プロセッサ（複数可）１３０は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）またはＧＰＵ（ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）などの任意の種類の処理ユニットであってもよく、または、これらを含んでもよい。ネットワーク・インタフェース（複数可）１３２により、セキュリティ・サービス・クラウド１０４の装置は、コンピューティング装置１０２および他の装置のうち１つまたは両方と通信することができる。ネットワーク・インタフェース（複数可）１３２は、ネットワーク１０６または他のネットワークのうち１つまたは両方を介して通信を送受信してもよい。ネットワーク・インタフェース（複数可）１３２はまた、様々なネットワークへの有線接続と無線接続の両方をサポートしてもよい。
【００２３】
メモリ１３４（および本明細書で説明した他のメモリ）が、モジュールとデータのアレイを格納してもよく、揮発性および／または不揮発性メモリ、取外し可能および／または取外し不能媒体等を含んでもよい。これらを、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータなどの、情報を記憶するための任意の方法または技術で実装してもよい。かかるメモリには、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、ＲＡＩＤ記憶システム、または所望の情報を格納するために使用できコンピューティング装置によりアクセス可能な他の任意の媒体が含まれるがこれらに限られない。
【００２４】
述べたように、メモリ１３４は通信モジュール１３６を備える。当該通信モジュールは、ＴＣＰ／ＩＰスタック、ネットワーク・インタフェース１３２に対するデバイス・ドライバ、およびセキュリティ・サービス・クラウド１０４の装置がネットワーク１０６上データを送受信できるようにする他の任意のモジュールまたはデータなどの任意の１つまたは複数のプロトコル・スタックを備えてもよい。
【００２５】
様々な実施形態では、分析モジュール１３８が、コンピューティング装置のカーネルレベル・セキュリティ・エージェント１１４から関心あるイベントの通知ならびにこれらの関心あるイベントに関連付けられた犯罪科学的データを受信してもよい。関心あるイベントの通知を受信すると、分析モジュール１３８は、関連する通知が他のコンピューティング装置１０２の他のカーネルレベル・セキュリティ・エージェントから受信されているかどうかを判定してもよい。さらに、またはその代わりとして、分析モジュール１３８は、１つまたは複数のルールまたはヒューリスティクスに基づいて当該関心あるイベントを評価してもよい。分析モジュール１３８は、これらの判定と評価に基づいて、関心あるイベントが悪意のあるコードと関連し得ると判定してもよく、それに応じて、イベントを生成して当該イベントをコンピューティング装置１０２に提供すること（例えば、診断または修復の目的で）、構成更新をトリガするための構成モジュール１４０を起動すること、当該関心あるイベントに関連付けられたコンピューティング装置１０２の修復もしくは当該悪意のあるコードに関連付けられた敵を騙すことを実施するための修復モジュール１４２を起動すること、または、他のコンピューティング装置１０２に関連付けられたのエンティティまたは人に、潜在的な悪意のあるコードを通知するためにソーシャル・モジュール１４４を起動すること、の何れかまたは全てを実施してもよい。分析モジュール１３８は、個々のコンピューティング装置１０２、様々なコンピューティング装置、エンティティ、または汎用装置に固有なモデルなどの１つまたは複数のモデルを維持し利用してもよい。分析モジュール１３８は、受信した通知に基づいてこれらのモデルを更新し、当該関心あるイベントを分析する際に当該モデルを利用してもよい。さらに、分析モジュール１３８は、管理者ＵＩ１４６を介してセキュリティ・サービス・クラウド１０４に関連付けられた管理者に警告してもよい。
【００２６】
様々な実施形態では、メモリ１３４に格納された構成モジュール１４０が構成更新を生成し、通信モジュール１３６を介してこれらの更新を提供してもよい。構成モジュール１４０は、装置固有の構成更新または複数の装置に適用可能な構成更新を生成してもよい。かかる構成マネージャ１４０を、オントロジー・コンパイラと称してもよく、ハードウェア、ＯＳ、および様々なコンピューティング装置１０２の言語的制約に固有なセキュリティ・ポリシを提供するように構成してもよい。当該構成更新が、関心あるイベントに応答する更新と、カーネルレベル・セキュリティ・エージェント１１４を含むモジュールおよびデータ１１６−１２２に対する更新の両方を含んでもよい。構成モジュール１４０が、コンピューティング装置１０２からの通知に応答して、または、コンピューティング装置１０２からの任意の事前通知と独立に、構成更新を生成し提供してもよい。
【００２７】
修復モジュール１４２が、悪意のあるコードに関連付けられていると判定されたイベントに対して適切な改善措置を決定してもよい。例えば、修復モジュール１４２が、適切な改善措置は悪意のあるコードに関連付けられたプロセスを停止すること、１つまたは複数の実行可能ファイル、もしくはレジストリ・キーを削除すること、または、悪意のあるコードをオペレーティングシステムファイルではなくダミー・ファイルに書き込み、悪意のあるコードに偽造ファイルを読み込ませること、もしくは悪意のあるコードに関連付けられた送信を改ざんすることによって悪意のあるコードを騙すことであると判定してもよい。修復モジュール１４２は次いで、決定した改善措置を実施するようにカーネルレベル・セキュリティ・エージェント１１４に指示してもよい。幾つかの実施形態では、修復モジュール１４２は、修復モジュール１４２により生成されカーネルレベル・セキュリティ・エージェント１１４に提供されるイベントを介して、当該命令を提供してもよい。
【００２８】
様々な実施形態では、ソーシャル・モジュール１４４が、悪意のあるコードに関連付けられていると判定されたイベントの通知を他のエンティティの個人と共有してもよい。当該悪意のあるコードは当該他のエンティティにまだ影響を及ぼしていないかもしれないが、当該他のエンティティは当該悪意のあるコードに関する学習に関心があるかもしれない。例えば、悪意のあるコードが或る防衛部門の契約者の装置に影響を及ぼす場合には、他の防衛部門の契約者は当該悪意のあるコードに関して知りたいかもしれない。なぜなら、当該悪意のあるコードが自分たちにも影響を及ぼす可能性が高いであろうからである。ソーシャル・モジュール１４４は、両方のエンティティ、即ち、影響を受けたエンティティと関心があるエンティティが悪意のあるコードの通知の共有に同意した場合には、悪意のあるコードの通知と当該悪意のあるコードに関する他の情報を共有してもよい。
【００２９】
別の実施形態では、管理ＵＩ１４６により、セキュリティ・サービス・クラウド１０４の管理者に悪意のあるコードに関連付けられていると判定されたイベントを警告し、セキュリティ・サービス・クラウド１０４の管理者は、これらのイベントに関連付けられたデータを検査し、適切な応答に関してセキュリティ・サービス・クラウド１０４に指示することができる。管理ＵＩ１４６は、最初に警告を提供することなく、管理者による当該イベントおよびデータの検査を可能としてもよい。
【００３０】
幾つかの事例では、セキュリティ・サービス・クラウド１０４のコンピューティング装置１０２または装置１０４の何れかまたは全てが、図１で示したものに加えて１つまたは複数の機能を有してもよい。例えば、セキュリティ・サービス・クラウド１０４のコンピューティング装置１０２または装置１０４の何れかまたは全てが、例えば、磁気ディスク、光ディスク、またはテープなどの、（取外し可能および／または取外し不能な）追加のデータ記憶装置を備えてもよい。当該追加のデータ記憶媒体が、コンピュータ読取可能命令、データ構造、プログラム・モジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装した不揮発性および不揮発性、取外し可能および取外し不能媒体を含んでもよい。さらに、幾つかの実装形態では、セキュリティ・サービス・クラウド１０４のコンピューティング装置１０２または装置１０４の何れかまたは全てに存在する機能の一部または全てが、当該装置（複数可）から遠隔に存在してもよい。
【００３１】
（エージェント・アーキテクチャの例）  
図２は、モデル、コンポーネント、およびマネージャを含むカーネルレベル・セキュリティ・エージェントのアーキテクチャの例を示す。図示したように、カーネルレベル・セキュリティ・エージェント１１４のセキュリティエージェント・アーキテクチャ２００が、コンピューティング装置１０２のカーネルモード２０２内のモジュールおよびデータ１１６−１２２とコンピューティング装置１０２のユーザモード２０４内のコンポーネント１１６を備える。他の実施形態では、セキュリティエージェント・アーキテクチャ２００はカーネルモード２０２内のモジュールおよびデータ１１６−１２２のみを含んでもよい。カーネルモード２０２およびユーザモード２０４は、コンピューティング装置１０２のデータと機能を、欠陥およびマルウェアから保護するリングとしても知られる保護ドメインに対応する。一般に、ユーザモード２０４などのユーザモードは、最外リングおよびメモリおよび機能にアクセスするための最低レベルの特権に関連付けられる。当該リングはしばしば、「リング３」と呼ばれ、多数のアプリケーションプロセスを含む。カーネルモード２０２などのカーネルモードは、内部リング（場合によっては、最内リング。近年のコンピューティング装置には追加の特権レベル「リング−１」があることもある）およびメモリと機能にアクセスするための高レベルの特権に関連付けられる。当該リングはしばしば「リング０」と呼ばれ、一般にオペレーティングシステム・プロセスを含む。
【００３２】
様々な実施形態では、セキュリティエージェント・アーキテクチャ２００はコレクタ２０６を備える。これらのコレクタ０６は、カーネルモード・プロセスなどの、１つまたは複数のプロセスに関連付けられたイベントを監視するカーネルレベル・セキュリティ・エージェント１１４のコンポーネント１１６である。イベントは、プロセスが実施する動作と期待される動作の不発生との両方を含んでもよい。例えば、コレクタ２０６に、オペレーティングシステム１２４が提供するフックまたはフィルタ・ドライバを登録して、ファイルの生成、読取および書込み、ならびに実行可能ファイルのロードなどの特定のイベントの発生または不発生の通知を受信してもよい。コレクタ２０６はまた、メモリ１１２またはログファイル１２８内の位置を監視し、または、監視を行うスレッドを生成して、当該ログファイルまたはメモリの位置に関連付けられたイベントを監視してもよい。コレクタ２０６は複数のタイプのイベントを監視してもよく、または、イベントの各タイプが様々なコレクタ２０６に関連付けられてもよい。コレクタ２０６が監視するイベントを、カーネルレベル・セキュリティ・エージェント１１４の構成により指定してもよい。幾つかの実施形態では、コレクタ２０６はコンピューティング装置１０２上の全てのイベントを監視し、当該構成によりこれらのイベントをフィルタしディスパッチするための、構成可能なフィルタ２１４を指定する。他の実施形態では、当該構成により、どのコレクタ２０６をロードして特定のタイプのイベントを監視すべきかを指定する。さらに他の実施形態では、当該構成が、どのコレクタ２０６をロードすべきかどうか、および、これらのコレクタ２０６が監視するイベントをフィルタしディスパッチするための構成可能なフィルタ２１４の両方を指定する。
【００３３】
さらに図２に示すように、セキュリティエージェント・アーキテクチャ２００は、カーネルモード・プロセスに見えないかもしれないイベントを監視するユーザモード・コレクタ２０８を含んでもよい。かかるイベントは、例えば、コンピューティング装置１０２のディスプレイ画面に表示するためのディスプレイ・グラフィックを表示することを含んでもよい。これらのイベントを監視するために、カーネルレベル・セキュリティ・エージェント１１４はさらに、ユーザモード・コレクタ２０８をコンピューティング装置１０２のユーザモードモジュールとしてロードするように構成される。コレクタ２０６と同様に、ユーザモード・コレクタ２０８は複数の種類のイベントを監視してもよく、または、各種のイベントを様々なユーザモード・コレクタ２０８に関連付けてもよい。ユーザモード・コレクタ２０８により監視されるイベントを、カーネルレベル・セキュリティ・エージェント１１４の構成により指定してもよい。幾つかの実施形態では、ユーザモード・コレクタ２０８はコンピューティング装置１０２上の全てのユーザモード・イベントを監視し、当該構成は当該イベントをフィルタし監視するための構成可能なフィルタ２１０を指定する。他の実施形態では、当該構成は、特定のタイプのイベントを監視するためにどのユーザモード・コレクタ２０８をロードすべきかを指定する。さらに他の実施形態では、当該構成は、どのユーザモード・コレクタ２０８をロードすべきかどうかと、これらのイベントをフィルタしディスパッチするための構成可能なフィルタ２１０との両方を指定する。
【００３４】
述べたように、当該セキュリティエージェント・アーキテクチャがさらに構成可能なフィルタ２１０を備えてもよい。構成可能なフィルタ２１０が、ユーザモード・コレクタ２０８が監視するユーザモード・イベントをカーネルレベル・セキュリティ・エージェント１１４の構成に基づいてフィルタするカーネルレベル・セキュリティ・エージェント１１４のユーザモードコンポーネント１１６であってもよい。構成可能なフィルタ２１０は、状況モード１１８の問合せを必要としないユーザモード・イベントの任意のフィルタリングを実施して、ユーザモード２０４で実施されるユーザモード・イベントのフィルタリングを最大化してもよい。ユーザモード２０４で実施されるフィルタリングを最大化することで、ユーザモード２０４からカーネルモード２０２に転送される監視されるユーザモード・イベントの数を最小化し、したがって、コンピューティング装置１０２のリソースを節約する。
【００３５】
幾つかの実施形態では、フィルタされたユーザモード・イベントをカーネルレベル・セキュリティ・エージェント１１４の入出力（Ｉ／Ｏ）機構２１２によりユーザモード２０４とカーネルモード２０２の間で送信する。Ｉ／Ｏ機構２１２は、例えば、リング・バッファ、または、保護ドメインの間でデータを送信するための他の既知の機構であってもよい。幾つかの実施形態では、Ｉ／Ｏ機構２１２は、カーネルレベル・セキュリティ・エージェント１１４のコンポーネントではなく、コンピューティング装置１０２の他のモジュールおよびデータの一部である。
【００３６】
様々な実施形態では、コレクタ２０６、ルーティング・コンポーネント２１６、相関器２１８、状況モデル１１８、アクタ２２０、および／または通信モジュール１２２のうち１つまたは複数にそれぞれ関連付けられた構成可能なフィルタ２１４を表すフィルタリング・ディスパッチ・コンポーネント２１４が、監視されたイベントをコレクタ２０６から受信し、ユーザモード・イベントをＩ／Ｏ機構２１２から受信する。図２はフィルタリング・ディスパッチ・コンポーネント２１４がルーティング・コンポーネント２１６に論理的に関連付けられているとして示しているが、フィルタリング・ディスパッチ・コンポーネント２１４がその代りとして、ルーティング・コンポーネント２１６から離れた１つまたは複数のコンポーネント（例えば、構成可能なフィルタ２１４）を備えてもよい。イベントを受信すると、フィルタリング・ディスパッチ・コンポーネント２１４は、カーネルレベル・セキュリティ・エージェント１１４の構成により指定された任意のフィルタリングを実施してもよい。例えば、当該構成が、全ての受信されたイベントまたは特定の種類の受信されたイベントのみのフィルタリングを指定してもよい。幾つかの実施形態では、かかるフィルタリングが、フィルタされているイベントに関連付けられているプロセスの属性、振舞い、パターン、または他の記述を判定するために状況モデル１１８を問い合わせることを含んでもよい。当該フィルタリングが、当該構成の１つまたは複数のルールまたはヒューリスティクスの適用を必要としてもよい。
【００３７】
イベントをフィルタすると、フィルタリング・ディスパッチ・コンポーネント２１４は、ルーティング・コンポーネント２１６を用いて当該イベントをディスパッチしてもよい。ルーティング・コンポーネント２１６は、スローフォワード・バスまたは他の種類のバスであってもよい。ルーティング・コンポーネント２１６は次いで、イベントを相関器２１８、状況モデル１１８、アクタ２２０、または通信モジュール１２２の何れかまたは全てに送信してもよい。幾つかの実施形態では、単体ではなく全体で重要なイベント、または、当該イベントに関連付けられた関連データをコピーするのにカーネルレベル・セキュリティ・エージェント１１４を必要としないイベントを、ルーティング・コンポーネント２１６を介して相関器２１８にディスパッチする。幾つかの実施形態では、これらが、カーネルレベル・セキュリティ・エージェント１１４のスケジューラを利用しない同期イベントであってもよい。別の実施形態では、単独で重要なイベントまたは当該イベントに関連付けられた関連データをコピーするのにカーネルレベル・セキュリティ・エージェント１１４を必要とするイベントを、ルーティング・コンポーネント２１６を介してカーネルレベル・セキュリティ・エージェント１１４のスケジューラにディスパッチして、アクタ２２０に対してスケジュールされた配送を行う。これらのイベントがスケジューラにディスパッチされるので、これらは非同期イベントであってもよい。
【００３８】
様々な実施形態では、相関器２１８は、特定の種類のイベントが発生した事実を記録するカーネルレベル・セキュリティ・エージェント１１４のコンポーネント１１６である。各相関器２１８は、単一の種類のイベントに固有であってもよく、または、複数の種類のイベントに関連付けられてもよい。相関器２１８が、フィルタされたイベントが発生した事実を記録し、当該フィルタされたイベントの発生と、閾値、集合、シーケンス、マルコフ連鎖、または有限状態機械のうち少なくとも１つとの関連に少なくとも部分的に基づいて、措置を取ってもよい。例えば、相関器２１８が、イベントの発生回数（例えば、ファイルＸへの１０回の書込み）のカウンタを維持してもよく、相関器２１８は、何らかの閾値で、或る種のイベントの発生回数が関心がある可能性があることを示すためのイベントを生成してもよい。かかる閾値が、カーネルレベル・セキュリティ・エージェント１１４の構成で指定された集合数であってもよく、または、或る期間内のある種のイベントの典型的な発生パターンを決定するために状況モデル１１８を問い合わせることによって決定される数であってもよい。生成されたイベントにより、監視されるイベントの種類と当該監視されるイベントの発生回数を示してもよい。イベントを生成した相関器２１８が、ルーティング・コンポーネント２１６を介して当該イベントを状況モデル１１８、アクタ２２０、または通信モジュール１２２の何れかまたは全てに送信してもよい。幾つかの実施形態では、フィルタ・ディスパッチ・コンポーネント２１４の構成可能なフィルタ２１４を使用して、相関器２１８が生成したイベントをフィルタしてもよい。
【００３９】
別の実施形態では、カーネルレベル・セキュリティ・エージェント１１４の状況モデル１１８が、任意の１つまたは複数のデータベース、ファイル、テーブル、または、オブジェクトまたはコンピューティング装置１０２のプロセスの属性、振舞い、および／またはパターンを追跡する他の構造を備えてもよい。これらの属性、振舞い、および／またはパターンがプロセスの実行動作を表してもよく、状況モデル１１８が、プロセスの系図を提供する一連の当該実行動作を表してもよい。状況モデル１１８（本明細書では「モデル」とも称する）は、イベントの属性、振舞い、および／またはパターン、特定のイベント、ならびにイベントに関連付けられた犯罪科学的データを格納する。状況モデル１１８によって格納された当該データおよび他のデータを、特定のイベントによってまたは特定の種類のイベントによって索引付けしてもよい。当該状況モデルが、ルーティング・コンポーネント２１６からイベントを受信してもよく、当該状況モデルを、状況モデル１１８に関連付けられたロジックによって、受信したイベントを含むように更新してもよい。状況モデル１１８を、イベントに関連付けられアクタ２２０により取り出される犯罪科学的データを有するアクタ２２０により更新してもよい。さらに、状況モデル１１８を、構成可能なフィルタ２１４、相関器２１８、またはアクタ２２０からのクエリに、イベントの属性、振舞い、および／またはパターンの記述または特定のイベントの記述で応答するように構成してもよい。
【００４０】
様々な実施形態では、カーネルレベル・セキュリティ・エージェント１１４のアクタ２２０は、カーネルレベル・セキュリティ・エージェント１１４のスケジューラからイベントを受信する。各アクタ２２０は、或る種のイベントに固有であるか、または、複数の種類のイベントを扱ってもよい。イベントを受信すると、アクタ２２０は、当該イベントがユーザモード・コレクタ２０８のコレクタ２０６により監視されたかどうかまたはセキュリティ・サービス・クラウド１０４の相関器２１８により生成されたかどうかを判定してもよい。アクタ２２０は、当該イベントに関する追加の犯罪科学的データを収集してもよい。かかる犯罪科学的データがイベントの追加の記述を含んでもよく、当該犯罪科学的データを、オペレーティングシステム１２４とインタフェースすることによって収集してもよい。当該犯罪科学的データを収集すると、アクタ２２０が、状況モデル１１８を当該犯罪科学的データで更新してもよい。アクタ２２０はまた、状況モデル１１８に問い合わせて、属性、振舞い、および／またはパターンまたは当該イベントに関連付けられた他の記述を決定してもよい。これらの属性、振舞い、および／またはパターン、記述、または、カーネルレベル・セキュリティ・エージェント１１４の構成により指定された他のルールまたはヒューリスティクスに基づいて、アクタ２２０は、イベントが何らかの形式で関心があるものである、および／または、イベントが悪意のあるコードに関連付けられ得ると判定してもよい。
【００４１】
イベントが関心のある、悪意のあるコードに関連付けられる可能性があると判定するか、または、相関器２１８またはセキュリティ・サービス・クラウドにより生成されたイベントを受信すると、アクタ２２０は、状況モデル１１８を更新し、当該イベントをセキュリティ・サービス・クラウド１０４に通知し、または、コンピューティング装置１０２を修復してもよい。上で述べたように、当該修復が、当該イベントに関連付けられたプロセスを停止すること、当該イベントに関連付けられたプロセス（または、当該プロセスに関連付けられた悪意のあるコード）を削除すること、または、当該イベントに関連付けられた悪意のあるコードに関連付けられた敵を騙すことを必要としてもよい。このように騙すことを、当該悪意のあるコードにより取得されたデータコードを改ざんするかまたは当該敵に送信されるデータを改ざんすることによって実現してもよい。取る措置を、カーネルレベル・セキュリティ・エージェント１１４の構成により決定してもよい。幾つかの実施形態では、アクタ２２０が、セキュリティ・サービス・クラウド１０４から修復を実施するための命令を受信したことに応答して修復を実施してもよい。上で述べたように、かかる命令を、セキュリティ・サービス・クラウド１０４により生成されたイベントを介して提供してもよい。
【００４２】
様々な実施形態では、セキュリティエージェント・アーキテクチャ２００は通信モジュール１２２を備える。通信モジュール１２２が、ネットワークプロトコルスタック（複数可）、ネットワーク・インタフェースドライバ（複数可）、ネットワーク１０６を介してセキュリティ・サービス・クラウド１０４と通信するカーネルレベル・セキュリティ・エージェント１１４が利用する他の任意のネットワーク・インタフェースコンポーネントを表してもよい。図２に示すように、通信モジュール１２２がコンピューティング装置１０２のカーネルモードコンポーネントであってもよい。さらに、通信モジュール１２２が、イベント、他の通知、およびカーネルレベル・セキュリティ・エージェント１１４からのイベントに関連付けられたデータをセキュリティ・サービス・クラウド１０４に送信してもよい。通信モジュール１２２が、セキュリティ・サービス・クラウド１０４から受信した構成更新カーネルレベル・セキュリティ・エージェント１１４の構成マネージャ２２２に送信し、セキュリティ・サービス・クラウド１０４からの修復命令および／またはイベントをアクタ２２０に送信してもよい。
【００４３】
図２に示すように、当該セキュリティエージェント・アーキテクチャは、複数のマネージャ１２０、即ち、構成マネージャ２２２、コンポーネント・マネージャ２２４、状態マネージャ２２６、記憶マネージャ２２８、およびインテグリティ・マネージャ２３０を備える。上で述べたように、構成マネージャ２２２が構成更新をセキュリティ・サービス・クラウド１０４から受信してもよい。構成マネージャ２２２が、当該更新を定期的にまたは必要に応じて受信してもよい。構成マネージャ２２は次いで、カーネルレベル・セキュリティ・エージェント１１４に対するどなどの変更が当該構成更新に含まれる構成を実装するのに必要であるかを判定する。例えば、当該構成により、Ａｂｏｂｅ  Ｒｅａｄｅｒ（登録商標）による実行可能ファイルの生成が悪意のあるコードの動作を示し、このような実行可能ファイルの任意の実行を停止するというルールを規定してもよい。かかる構成を扱うために、構成マネージャ２２２は、コンポーネント・マネージャ２２４を起動して、ＡｄｏｂｅおよびＡｄｏｂｅ  Ｒｅａｄｅｒが生成したファイルに関連付けられたイベントを監視するための新たなコレクタ２０６、かかるイベントを記録しディスパッチする構成可能なフィルタ２１４、および／またはＡｄｏｂｅ  Ｒｅａｄｅｒによる実行可能ファイルの生成に応答して犯罪科学的データを収集し、当該実行可能ファイルのロードに応答して生成された実行可能ファイルの実行を停止するアクタ２２０をロードすることができる。
【００４４】
別の例では、当該構成更新で新たな構成マネージャ２２２を指定してもよい。かかる更新に応答して、既存の構成マネージャ２２２がコンポーネント・マネージャ２２４を起動して新たな構成マネージャ２２２をロードし、インテグリティ・マネージャ２３０を起動して構成マネージャ２２２の更新中に監視が継続されることを保証してもよい。
【００４５】
様々な実施形態では、コンポーネント・マネージャ２２４は、既存のコンポーネント１１６またはマネージャ１２０を更新または置換するように設計された新たなコンポーネント１１６およびマネージャ１２０をロードする。述べたように、コンポーネント・マネージャ２２４は構成マネージャ２２２により起動される。構成マネージャ２２２は、どの新たなコンポーネント１１６またはマネージャ１２０をロードするか、どのコンポーネント１１６またはマネージャ１２０が置換または更新に指定されるかをコンポーネント・マネージャ２２４に通知してもよく、当該構成更新を実装する新たなコンポーネント１１６またはマネージャ１２０の構成を指定してもよい。コンポーネント・マネージャ２２４は次いで、既存の／古いコンポーネント１１６またはマネージャ１２０が動作し続ける間に新たなコンポーネント１１６またはマネージャ１２０をロードしてもよい。新たなコンポーネント１１６またはマネージャ１２０をロードした後、コンポーネント・マネージャ２２４またはカーネルレベル・セキュリティ・エージェント１１４の他の何らかのコンポーネント１１６もしくはマネージャ１２０が、新たなコンポーネント１１６またはマネージャ１２０により置換される既存の／古いコンポーネント１１６またはマネージャ１２０を停止してもよい。
【００４６】
様々な実施形態では、状態マネージャ２２６を、コンポーネント・マネージャ２２４により起動して、既存の／古いコンポーネント１１６の状態を新たなコンポーネント１１６と共有してもよい。例えば、コンポーネント１１６が、オペレーティングシステム１２４とのインタフェースを有するアクタ２２０である場合には、状態マネージャ２２６は、当該インタフェースの状態を保ち、古い／既存のコンポーネント１１６と新たなコンポーネント１１６の間のインタフェースを渡してもよい。
【００４７】
幾つかの実施形態では、記憶マネージャ２２８が、メモリ１１２への読書きのための、カーネルレベル・セキュリティ・エージェント１１４の他のコンポーネント１１６またはマネージャ１２０により起動できるメモリ１１２に対するインタフェースであってもよい。
【００４８】
上で述べたように、インテグリティ・マネージャ２３０は、コア・コンポーネント１１６とマネージャ１２０が更新されている間に監視の継続を維持する。コア・コンポーネント１１６とマネージャ１２０は、カーネルレベル・セキュリティ・エージェント１１４の動作の一部を常に形成するコンポーネント１１６とマネージャ１２０である。かかるコア・コンポーネント１１６およびマネージャ１２０の更新により、悪意のあるコードが検出できない脆弱性のウィンドウを開くことができるので、当該更新の最中に監視を継続する何らかの方策が必要である。インテグリティ・マネージャ２３０は、コア・コンポーネント・マネージャの更新の間にイベントとコンピューティング装置１０２のプロセスを監視することにより監視を継続するこの方策を提供する。幾つかの実施形態では、インテグリティモジュール２３０を、試行を検出して当該試行またはカーネルレベル・セキュリティ・エージェント１１４の他のコンポーネント１１６またはマネージャ１２０を削除するように構成してもよく、これらの試みが続かないようにしてもよい。
【００４９】
（プロセスの例）
図３乃至５は、プロセスの例３００、４００、および５００を示す。これらのプロセスは論理フロー・グラフとして示されている。その各動作は、ハードウェア、ソフトウェア、またはそれらの組合せで実装され得る動作のシーケンスを表す。ソフトウェアでは、当該動作は、１つまたは複数のプロセッサにより実行されたときに、記載した動作を実施する１つまたは複数のコンピュータ−読取可能記憶場合に格納されたコンピュータ−実行可能命令を表す。一般に、コンピュータ−実行可能命令は、特定の機能を実施し特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。当該動作を説明した順序は、限定として解釈されることを意図したものではなく、説明した動作のうち任意の数のものを任意の順序で組み合わせ、かつ／または、並列に当該プロセスを実施してもよい。
【００５０】
プロセス３００は、３０２で、コンピューティング装置のカーネルレベル・セキュリティ・エージェントが悪意のあるコードに関連付けられた第１の動作を検出するステップを含む。３０４で、当該第１の動作を検出したことに応答して、カーネルレベル・セキュリティ・エージェントが当該第１の動作に関連付けられたデータを収集する。３０６で、カーネルレベル・セキュリティ・エージェントが次いで、当該第１の動作を実行したシステムのプロセスが実施した動作を追跡するモデルに当該収集したデータを格納してもよい。代替または追加として、３０８で、カーネルレベル・セキュリティ・エージェントが、当該第１の動作の発生をリモート・セキュリティ・サービスに通知してもよい。３１０で、それに応じて、カーネルレベル・セキュリティ・エージェントが当該リモート・セキュリティ・システムから、当該予防動作またはカーネルレベル・セキュリティ・エージェントを構成するための構成更新に関連付けられた命令を受信する。また、当該第１の動作を検出したことに応答して、カーネルレベル・セキュリティ・エージェントは、３１２で、予防動作の実施を控える。
【００５１】
３１４で、カーネルレベル・セキュリティ・エージェントが、悪意のあるコードに関連付けられた１つまたは複数の後続の動作を検出し、３１６に応答して、予防動作を実施する。当該１つまたは複数の後続の動作は当該第１の動作の後に生じる。３１６ａで、当該予防動作が、当該１つまたは複数の後続の動作および当該悪意のあるプロセスによるさらなる動作を防止するか、または、当該悪意のあるコードに関連付けられた敵を騙す。
【００５２】
プロセス４００は、４０２で、カーネルレベル・セキュリティ・エージェントにより、当該コンピューティング装置で実行されているプロセスに関連付けられたイベントを監視する。
【００５３】
４０４で、カーネルレベル・セキュリティ・エージェントが、当該監視されたイベントに少なくとも部分的に基づいて、当該プロセスが悪意のあるコードに関連付けられていると判定する。４０４ａで、当該判定は、当該コンピューティング装置のプロセスを追跡するモデルに少なくとも部分的に基づいて、当該プロセスが悪意のあるコードに関連付けられていることを判定するステップを含む。
【００５４】
４０６で、４０４での判定に応答して、カーネルレベル・セキュリティ・エージェントが当該悪意のあるコードに関連付けられた敵を騙す。４０６ａで、当該騙すステップは、当該悪意のあるコードにより取得されたデータコードを改ざんするステップを含む。４０６ｂで、当該騙すステップは、当該敵に送信されるデータを改ざんするステップを含む。
【００５５】
プロセス５００は、５０２で、カーネルレベル・セキュリティ・エージェントにより、当該コンピューティング装置の１つまたは複数のプロセスの実行動作を監視する。
【００５６】
５０４で、カーネルレベル・セキュリティ・エージェントが、当該１つまたは複数の実行動作に関連付けられたデータをカーネルレベル・セキュリティ・エージェントのモデルに格納する。当該モデルは１つまたは複数の一連の当該実行動作を表す。幾つかの実施形態では、当該一連の実行動作少なくとも１つが当該プロセスの１つの系図を表す。
【００５７】
５０６で、カーネルレベル・セキュリティ・エージェントが、動作当該１つまたは複数の一連の当該実行動作に少なくとも部分的に基づいて措置を取る。５０６ａで、当該措置を取るステップが、悪意のある動作に関連付けられたプロセスを停止するかまたは騙すステップを含む。
【００５８】
結論
発明の要旨を構造的機能および／または方法論的動作に固有な言葉で説明したが、添付の特許請求の範囲で定義した発明の要旨は説明した具体的な機能または動作に必ずしも限定されないことは理解される。そうではなく、当該具体的な機能は添付の特許請求の範囲を実装する例示的な形態として開示されている。
【図１】
2015522874.tif 000003
【図２】
2015522874.tif 000004
【図３】
2015522874.tif 000005
【図４】
2015522874.tif 000006
【図５】
2015522874.tif 000007
【国際調査報告】
2015522874.tif 000008
2015522874.tif 000009