(57)【要約】  電子デバイスを保護する技術は、電子デバイスの安全なシステムリソースにアクセスする試みをトラップする段階と、試みに関連するモジュールを特定する段階と、試みに関連するモジュールのサブセクションであって、試みに関連するメモリ位置を有するサブセクションを特定する段階と、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスする段階と、セキュリティルールに基づいて試みを処理する段階とを含む。モジュールは複数の別個のサブセクションを有する。
2015532499.tif 000002
【特許請求の範囲】
【請求項１】
電子デバイスを保護する方法であって、
前記電子デバイスの安全なシステムリソースにアクセスする試みをトラップする段階と、  前記試みに関連するモジュールであって、複数の別個のサブセクションを有するモジュールを特定する段階と、  前記試みに関連する前記モジュールのサブセクションであって、前記試みに関連するメモリ位置を有するサブセクションを特定する段階と、  前記モジュールの前記特定及び前記サブセクションの前記特定に基づいて、前記試みのアクセスを許可するかを決定するセキュリティルールにアクセスする段階と、  前記セキュリティルールに基づいて前記試みを処理する段階と
を含む方法。
【請求項２】
トラップする前記段階は、前記電子デバイスの全てのオペレーティングシステムより下のレベルで実行され、
前記試みを処理する前記段階は、前記電子デバイスの全ての前記オペレーティングシステムより下のレベルで少なくとも部分的に実行される請求項１に記載の方法。
【請求項３】
前記メモリ位置は、前記試みの発信元を特定する請求項１または２に記載の方法。
【請求項４】
前記メモリ位置は前記試みのターゲットポイントを特定する請求項１から３の何れか１項に記載の方法。
【請求項５】
前記サブセクションは、前記試みのターゲットであり、かつ、データサブセクションである請求項１から４の何れか１項に記載の方法。
【請求項６】
前記サブセクションは、前記試みのターゲットであり、かつ、ヘッダサブセクションである請求項１から５の何れか１項に記載の方法。
【請求項７】
前記サブセクションは、前記試みのターゲットであり、かつ、コードサブセクションである請求項１から６の何れか１項に記載の方法。
【請求項８】
前記セキュリティルールは、
前記試みのターゲットをコードサブセクションとして特定し、
この特定に基づいて、前記試みを処理する前記段階が、前記コードサブセクションに対する試行済みの書き込みを拒否する段階を含むと規定する請求項１から７の何れか１項に記載の方法。
【請求項９】
前記セキュリティルールは、
前記試みのターゲットをヘッダサブセクションとして特定し、
この特定に基づいて、前記試みを処理する段階が、前記ヘッダサブセクションに対する試行済みの書き込みを拒否する段階を含むと規定する請求項１から８の何れか１項に記載の方法。
【請求項１０】
前記セキュリティルールは、
前記試みのターゲットをデータサブセクションとして特定し、
この特定に基づいて、前記試みを処理する前記段階は、前記データサブセクションに対する試行済みの書き込みを許可する段階を含むと規定する請求項１から９の何れか１項に記載の方法。
【請求項１１】
コンピュータのプロセッサに請求項１から１０の何れか１項に記載の方法を実行させるプログラム。
【請求項１２】
電子デバイスを保護するシステムであって、
メモリと、
プロセッサと、
安全なシステムリソースと、
前記メモリに常駐の、前記プロセッサによる実行のために処理可能な複数の命令を含む１または複数のセキュリティエージェントと
を備え、
前記複数のセキュリティエージェントは、請求項１から１０の何れか１項に記載の方法を実行するシステム。
【請求項１３】
電子デバイスを保護するシステムであって、
メモリと、
プロセッサと、
安全なシステムリソースと、
請求項１から１０の何れか１項に記載の方法を実行する手段と
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概してコンピュータセキュリティ及びマルウェア保護に関し、より具体的には、リアルタイムモジュールプロテクションに関する。
【背景技術】
【０００２】
ネイティブオペレーティングシステムサービスは、セキュリティソフトウェアがオペレーティングシステムのカーネル内に任意のフッキングをインストールすることを妨げることができる。  従って、セキュリティソフトウェアは、マルウェアによる、潜在的に悪意のあるアクションを含む、電子デバイスの全ての挙動をフィルタリングすることが防止される。マルウェアは、スパイウェア、複数のルートキット、複数のパスワードスティーラ、スパムの複数のソース、フィッシング攻撃の複数のソース、サービス妨害攻撃の複数のソース、複数のウイルス、複数のロガー、複数のトロイの木馬、アドウェア、または、悪意のあるアクティビティを生じる任意の他のデジタルコンテンツを含んでよいが、これに限定されない。
【０００３】
オペレーティングシステムのフィルタリング機能は限られているかもしれず、オペレーティングシステムベンダにより決定されたタイムライン上でのみ使用可能であるかもしれない。マルウェアは、セキュリティソフトウェアと同一レベル、特にオペレーティングシステムカーネル内で動作し、存在することができ、これにより、オペレーティングシステムと、セキュリティソフトウェア自体の整合性との両方を危険にさらす。
【０００４】
多くの形態のアグレッシブカーネルモードマルウェアは、ユーザモードメモリを改竄することで、複数の悪意のあるタスク、例えば悪意のあるコードの動的に注入すること、複数の実行経路を変更して悪意のあるコードへリダイレクトすべくユーザモードコードサブセクションを修正すること、を実現し、かつ、セキュリティソフトウェアを破るべく複数のユーザモードデータ構造を修正する。更に、いくつかのマルウェアは、検出ロジックをだますべく処理メモリコード及びデータサブセクションを改竄することで、カーネルからアンチマルウェアの複数のアプリケーション及び複数の処理を攻撃し得る。
【０００５】
複数のカーネルモードのルートキット及び他のマルウェアは、複数のユーザモードアプリケーション及び複数のカーネルモードデバイスドライバから自身の存在を隠すべく、様々な方法を用いる。使用される複数の技術は、どこで感染が発生するかに依存して変わり得る。例えば、マルウェアは、ルートキットまたは他のマルウェア処理をリストから削除する、またはリンク解除するべく、オペレーティングシステムのカーネルアクティブプロセスリストを攻撃することができる。他のマルウェアは、プロセスアクセス及び複数のエニュマレーションファンクション（ｅｎｕｍｅｒａｔｉｏｎ  ｆｕｎｃｔｉｏｎｓ）のコードサブセクションを改竄するかもしれない。
【図面の簡単な説明】
【０００６】
本発明の実施形態と、その利点のより完全な理解を目的として、ここで添付の複数の図面と合わせ、以下の記載に言及する。
【図１】電子デバイスをマルウェアから保護するシステムの例示的な実施形態を示す図である。
【図２】電子デバイスをマルウェアから保護する、仮想マシンモニタベース及びセキュリティルールベースの設定可能なセキュリティソリューションのためのシステムの例示的な実施形態を示す図である。
【図３】仮想マシンモニタベースの保護であって、電子デバイスのマルウェアからの保護の方法の例示的な実施形態を示す図である。
【図４】メモリ保護のために、電子デバイス上でビロウ‐オペレーティングシステムトラップを用いてソフトウェアアクセスを規制するシステムの例示的な実施形態を示す図である。
【図５】複数のメモリマップの例示的な実施形態を説明する図である。
【図６】電子デバイスの、試行済みアクセスのビロウ‐オペレーティングシステムトラップを用いてメモリ保護する方法の例示的な実施形態を示す図である。
【図７】リアルタイムモジュールプロテクションのためのシステムの例示的な動作の説明図である。
【図８】リアルタイムモジュールプロテクションの方法の例示的な実施形態を示す図である。
【発明を実施するための形態】
【０００７】
図１は、マルウェアから電子デバイスを保護するシステム１００の例示的な実施形態である。システム１００は、トリガードイベントハンドラ１０８に通信可能に結合されたビロウ‐オペレーティングシステム（「Ｏ／Ｓ」）トラップエージェント１０４を備えてよい。ビロウＯ／Ｓトラップエージェント１０４は、電子デバイス１０３のリソース１０６の様々な試行済みアクセスをトラップするように設定されてよい。ビロウＯ／Ｓトラップエージェント１０４は、トラップされた試行済みアクセスに関連するトリガードイベントを生成し、トリガードイベントをトリガードイベントハンドラ１０８に送信するように設定されてよい。トリガードイベントハンドラ１０８は、１または複数のセキュリティルール１１４またはプロテクションサーバ１０２を調べて、どのようにトリガードイベントを処理するかを決定するように設定されてよい。トリガードイベントハンドラ１０８は、トリガードイベントの傾向が電子デバイス１０３のリソースまたは動作を破壊するマルウェアの兆候または悪意ある試みであると評価するようにも構成され得る。さらに、トリガードイベントハンドラ１０８は、ビロウＯ／Ｓトラップエージェント１０４に対し、トリガードイベントが許可されるべきか拒否されるべきかの決定を提供するように設定されてよく、或いは、他の修正アクションを生じるように設定されてよい。
【０００８】
ビロウＯ／Ｓトラップエージェント１０４は、電子デバイス１０３の複数のオペレーティングシステムよりも低い機能レベルで実装されてよい。例えば、ビロウＯ／Ｓトラップエージェント１０４は、オペレーティングシステム１１２、ドライバ１１１、またはアプリケーション１１０によってリソース１０６の複数の試行済みアクセスをインターセプトしてよい。ビロウＯ／Ｓトラップエージェント１０４は、オペレーティングシステムを使用することなく、電子デバイス１０３のプロセッサ上で動作していてよい。一実施形態では、ビロウＯ／Ｓトラップエージェント１０４は、ベアメタル環境または実行レベル上で動作していてよい。加えて、ビロウＯ／Ｓトラップエージェント１０４は、電子デバイス１０３のプロセッサによって定義されるように、電子デバイス１０３の全てのオペレーティングシステムよりも高い実行優先度で動作していてよい。例えば、少ない数ほど高い優先度を表す複数の保護リングを用いる階層的保護ドメインモデルとの関連で、オペレーティングシステム１１２が「リング０」で動作し、一方、ビロウＯ／Ｓトラップエージェント１０４が「リング−１」で動作していてよい。複数のドライバ１１１及び複数のアプリケーション１１０は、「リング０」または「リング３」で動作していてよい。複数のプロセッサのいくつかの実施形態では、「リング−１」の概念は、「リング０特権モード」として知られ、「リング０」の概念は「リング０非特権モード」として知られ得る。「リング−１」すなわち「リング０特権モード」での動作は、「リング０」すなわち「リング０非特権モード」よりも追加のオーバヘッド及びエクスペンスを必要とし得る。電子デバイス１０３の複数のオペレーティングシステムはリング０で動作する。インテル製プロセッサのような複数のプロセッサ上で、「ＶＭＸ  Ｒｏｏｔ」のモードは「リング０特権モード」に相当し、「ＶＭＸ  Ｎｏｎ−Ｒｏｏｔ」のモードは「リング０」に相当し得る。
【０００９】
ビロウＯ／Ｓトラップエージェント１０４は、リング０またはより高いレベルで動作する複数のエンティティに対してトランスペアレントに動作し得る。従って、リソース１０６の試行済みアクセスは、ビロウＯ／Ｓトラップエージェント１０４が存在するか否かに関わらず、オペレーティングシステム１１２または他のエンティティによって同様に要求され得る。ビロウＯ／Ｓトラップエージェント１０４は、受信されたアクションを実行するとき、要求を生じさせてよいし、要求を拒否してよいし、或いは他の修正アクションを取ってよい。要求を拒否するべく、ビロウＯ／Ｓトラップエージェント１０４は、単純に要求をリソース１０６またはプロセッサにパスしないかもしれず、或いは、なりすまされた、またはダミーの返信を要求に提供することで、オペレーティングシステム１１２にアクションが起こったと確信させるかもしれない。
【００１０】
電子デバイス１０３の、複数の関連するオペレーティングシステムよりも高い優先度の、或いは、電子デバイス１０３の、複数の関連するオペレーティングシステムよりも低い優先度の「リング−１」で動作することにより、ビロウＯ／Ｓトラップエージェント１０４は、オペレーティングシステム１１２のような複数のオペレーティングシステムを悩ませるマルウェアの大部分を防ぎ得る。マルウェアもまた「リング０」の優先度で動作し得るので、マルウェアは、オペレーティングシステム１１２を欺くか、或いは、「リング０」で動作するアンチマルウェアソフトウェアでさえも欺くかもしれない。しかしながら、電子デバイス１０３上のマルウェアは、もしそれが複数の悪意のあるアクティビティを実行することになっていれば、依然としてリソース１０６の要求を行うに違いない。従って、複数の敏感なリソースにリンクされた複数の動作のトラップは、電子デバイス１０３における複数のオペレーティングシステムより低いレベルで動作するトラップエージェントによって、より良好に達成され得る。
【００１１】
ビロウＯ／Ｓトラップエージェント１０４は、任意の適切な方法で実装され得る。一実施形態では、ビロウＯ／Ｓトラップエージェント１０４は、仮想マシンモニタのかたちで実装され得る。そのような実施形態は、ビロウＯ／Ｓトラップエージェント１０４について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。そのような実施形態の一例の記載は、例えば、以下の図２のセキュリティ仮想マシンモニタ２１６の説明中に見つかり得る。別の実施形態において、ビロウＯ／Ｓトラップエージェント１０４は、ファームウェアのかたちで実装され得る。さらに別の実施形態では、ビロウＯ／Ｓトラップエージェント１０４は、マイクロコードのかたちで実装され得る。ビロウＯ／Ｓトラップエージェント１０４は、これらの実施形態の任意の適切な組み合わせのかたちで実装され得る。
【００１２】
トリガードイベントハンドラ１０８は、互いに通信可能に結合された１または複数のイベントハンドラまたはセキュリティエージェントによって具体化され得る。トリガードイベントハンドラ１０８及びビロウＯ／Ｓトラップエージェント１０４は、同一のセキュリティエージェントのかたちで実装され得る。一実施形態では、トリガードイベントハンドラ１０８は、ビロウＯ／Ｓトラップエージェントと同一のプライオリティリングで動作していてよい。別の実施形態において、トリガードイベントハンドラ１０８は、オペレーティングシステム１１２、ドライバ１１１またはアプリケーション１１０と同一の優先度で動作していてよい。さらに別の実施形態では、トリガードイベントハンドラ１０８は２またはそれ以上のトリガードイベントハンドラによって実施されても良く、少なくとも１つのトリガードイベントハンドラは、ビロウＯ／Ｓトラップエージェントと同一のプライオリティリングで動作し、少なくとも１つのトリガードイベントハンドラはオペレーティングシステム１１２、ドライバ１１１またはアプリケーション１１０のレベルで動作する。ビロウＯ／Ｓトラップエージェント１０４のレベルで動作することにより、トリガードイベントハンドラ１０８は、エージェント自体を感染させる「リング０」または「リング３」マルウェアの問題を同様に防ぎ得る。しかしながら、オペレーティングシステム１１２と共に「リング０」または「リング３」で動作しているトリガードイベントハンドラ１０８、ドライバ１１１、またはアプリケーション１１０は、複数の「リング−１」エージェントの視点から利用可能でないリソース１０６の試行済みアクセスに関するコンテキスト情報を提供することができてよい。
【００１３】
トリガードイベントハンドラ１０８は、任意の適切な方法で実装されてよい。一実施形態では、トリガードイベントハンドラ１０８は、仮想マシンモニタまたは仮想マシンモニタセキュリティエージェントのかたちで実装されてよい。そのような実施形態は、複数のオペレーティングシステムより下のレベルで動作してよい。そのような実施形態の一例の記載は、例えば以下の図２のセキュリティ仮想マシンモニタ２１６またはセキュリティ仮想マシンモニタセキュリティエージェント２１７の説明中に見つかり得る。別の実施形態において、トリガードイベントハンドラ１０８は、ファームウェアに完全にまたは一部、実装され得る。そのような実施形態は、トリガードイベントハンドラ１０８について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。さらに別の実施形態では、トリガードイベントハンドラ１０８は、マイクロコードのかたちで実装され得る。そのような実施は、トリガードイベントハンドラ１０８について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。トリガードイベントハンドラ１０８は、これらの実施形態の組み合わせのかたちで実装され得る。
【００１４】
一実施形態では、トリガードイベントハンドラ１０８は複数のモジュールのかたちで実装されることができ、少なくとも１つのそのようなモジュールは複数のオペレーティングシステムより下のレベルで動作し、少なくとも１つのそのようなモジュールは複数のオペレーティングシステム内のレベルで動作する。そのようなモジュールそれぞれは、互いに通信するように設定されてよい。
【００１５】
一実施形態では、ビロウ‐オペレーティングシステムトラップエージェント１０４及び／またはトリガードイベントハンドラ１０８は、電子デバイス１０３のベアメタルレイヤ内で動作してよい。ビロウ‐オペレーティングシステムトラップエージェント１０４及び／またはトリガードイベントハンドラ１０８は、それらの間のオペレーティングシステムと、それらが保護するよう構成されたリソース１０６とを使用することなく動作してよい。リソース１０６は、プロセッサ、プロセッサの複数の特徴、メモリ、メモリ内に常駐するデータ構造のような複数のエンティティ、または、プロセッサによる実行のためにメモリ内に常駐する、複数の関数、複数のプロセスまたは複数のアプリケーションのような複数のエンティティを含んでよい。リソース１０６は、電子デバイス１０３のリソースを含むシステムリソースを含んでよい。さらに、リソース１０６は、例えば、ビロウ‐オペレーティングシステムトラップエージェント１０４、トリガードイベントハンドラ１０８、または、任意の適切なアンチマルウェアメカニズム若しくはモジュールの動作によって保護されるよう、安全なものとして指定されてよい。従って、リソース１０６は、安全なシステムリソースを含んでよい。ビロウ‐オペレーティングシステムトラップエージェント１０４及び／またはトリガードイベントハンドラ１０８は、電子デバイス１０３のハードウェア上で直接動作してよい。ビロウ‐オペレーティングシステムトラップエージェント１０４及び／またはトリガードイベントハンドラ１０８は、リソース１０６へのフルアクセスを実行または得るオペレーティングシステム１１２のようなオペレーティングシステムの使用を要求しないかもしれない。
【００１６】
複数の他のオペレーティングシステムは、そのレベルのオペレーティングシステム１１２の複数のエンティティと、ビロウ‐オペレーティングシステムトラップエージェント１０４及びトリガードイベントハンドラ１０８と、リソース１０６との間の関係に参加しない電子デバイス１０３上に存在してよい。例えば、プレブートオペレーティングシステムは、電子デバイスの複数の部分をセキュアに起動し得るが、リソース１０６のモードのアプリケーション１１０、ドライバ１１１、及びオペレーティングシステム１１２からの複数の要求の処理に関して、電子デバイスの通常の処理に参加しない。他の例において、電子デバイス１０３は、複数のマザーボードコンポーネント、複数のプラグインカード、複数の周辺機器または、複数の他のコンポーネントを含んでよい。これらは、それら自身の複数のオペレーティングシステムの複数のセットと、複数のプロセッサを含むことで、そのレベルのオペレーティングシステム１１２の複数のエンティティ、ビロウ‐オペレーティングシステムトラップエージェント１０４及びトリガードイベントハンドラ１０８と、リソース１０６との間の関係の範囲外で複数の機能を実現する。これらのオペレーティングシステムは、複数のオペレーティングシステムに埋め込まれてよい。これらのオペレーティングシステムのいずれも、ビロウ‐オペレーティングシステムトラップエージェント１０４及びトリガードイベントハンドラ１０８の実行のために使用されないかもしれない。さらに、これらのオペレーティングシステムのいずれも、トラップエージェント１０４及びトリガードイベントハンドラ１０８によって保護されたリソース１０６にアクセスしないかもしれない。
【００１７】
オペレーティングシステム１１２、ドライバ１１１またはアプリケーション１１０のそれぞれは、任意の適切なモジュール、実行ファイル、スクリプト、ロジック、複数の命令、ハードウェア、ソフトウェア、ファームウェア、または、システム１００上で動作する、それらの組み合わせによって実装されてよい。
【００１８】
システム１００は、１または複数のビロウ‐オペレーティングシステムトラップエージェント１０４、及び、１または複数のトリガードイベントハンドラ１０８の任意の組み合わせを含んでよい。ビロウ‐オペレーティングシステムトラップエージェント１０４及びトリガードイベントハンドラ１０８の記載は、後述の複数の図面におけるトラップエージェント、イベントハンドラ、セキュリティエージェントの記載中に見つかり得る。
【００１９】
リソース１０６は、電子デバイスの任意の適切なリソースを含んでよい。例えば、リソース１０６は、複数のレジスタ、メモリ、複数のコントローラまたは複数のＩ／Ｏデバイスを含んでよい。リソース１０６の例示的な実施形態の記載は、例えば、図２のシステムリソース２１４、または図４の仮想メモリ４０４または物理メモリ４０３の記載中に見つかり得る。
【００２０】
セキュリティルール１１４は、任意の適切な複数のルール、ロジック、複数のコマンド、複数の命令、複数のフラグ、または、複数の他のメカニズムを含んでも良く、これにより、何のアクションをトラップするかをビロウＯ／Ｓトラップエージェント１０４に通知するか、或いは、トラップされたアクションに基づくイベントを処理するようトリガードイベントハンドラ１０８に通知する。トリガードイベントハンドラ１０８は、ビロウＯ／Ｓトラップエージェントに１つまたは複数のセキュリティルール１１４を提供するように設定されてよい。複数のセキュリティルール１１４の幾つか又は全ての例示的な実施形態の記載は、例えば、図２のセキュリティルール２２２、または、セキュリティルール４２１若しくはセキュリティルール４０８の記載中に見つかり得る。
【００２１】
システム１００のアプリケーション１１０、ドライバ１１１及びオペレーティングシステム１１２のようなカーネルモード及びユーザモードの複数のエンティティは、任意の適切な方法で実装され得る。システム１００のアプリケーション１１０、ドライバ１１１及びオペレーティングシステム１１２の例示的な実施形態の記載は、例えば、図２のアプリケーション２１０、ドライバ２１１及びオペレーティングシステム２１２の記載中、または、後述の図４のアプリケーション４１０、ドライバ４１１及びオペレーティングシステム４１３の記載中に見つかり得る。
【００２２】
電子デバイス１０３は、任意の適切な方法で、例えばコンピュータ、パーソナルデータアシスタント、電話、モバイルデバイス、システムオンチップ、サーバ、または、複数のプログラム命令及び／またはプロセスデータを解釈及び／または実行する、設定可能な任意の他のデバイス内に実装され得る。電子デバイス１０３の例示的な実施形態の記載は、例えば、図２の電子デバイス２０４の説明中、または後述の図４の電子デバイス４０１の説明中に見つかり得る。
【００２３】
システム１００は、電子デバイス１０３のオペレーティングシステムの下方のレベルでリソースの試行済みアクセスをトラップする任意の適切なシステムのかたちで実施され得る。システム１００はまた、試行済みアクセスが悪意のあるものであるか否かを特定するべく複数のセキュリティルールを調べることで試行済みアクセスを処理する任意の適切な手段のかたちで実施され得る。例えば、システム１００は、後述の図２から図８で説明されるようにシステム及び方法２００、３００、４００、５００、６００、７００および８００によって実施されてよい。
【００２４】
図２は、マルウェアから電子デバイスを保護する、仮想マシンモニタベース、かつ、セキュリティルールベースの設定可能なセキュリティソリューションのためのシステム２００の例示的な実施形態である。システム２００は、仮想マシンモニタにおけるシステム１００の特定の要素を実装するシステム１００の例示的な実施形態であってよい。システム２００は、設定可能なセキュリティソリューションによってマルウェアから保護されるべき電子デバイス２０４を含んでよい。システム２００の設定可能なセキュリティソリューションは、全てのオペレーティングシステム、セキュリティ仮想マシンモニタ、クラウドベースのセキュリティエージェント及びインＯ／Ｓ行動性セキュリティエージェントより下で動作するセキュリティエージェントを含んでよい。ビロウＯ／Ｓセキュリティエージェント及びセキュリティ仮想マシンモニタは、インＯ／Ｓ行動性セキュリティエージェントによって使用される複数のリソースを含む電子デバイス２０４のシステムリソースへのアクセスを防ぐように設定されてよい。ビロウＯ／Ｓセキュリティエージェントは、セキュリティ仮想マシンモニタ内で動作していてよい。クラウドベースのセキュリティエージェントは、マルウェア検出情報をビロウＯ／Ｓセキュリティエージェント及びインＯ／Ｓ行動性セキュリティエージェントに提供すると共に、セキュリティ仮想マシンモニタ及びインＯ／Ｓ行動性セキュリティエージェントから、おそらくマルウェアに関連する、不審な挙動に関する情報を受信するように設定されてよい。インＯ／Ｓ行動性セキュリティエージェントは、電子デバイス上で動作するマルウェアの証拠を得るために電子デバイス２０４をスキャンするように設定されてよい。システム２００は、電子デバイス２０４の複数のリソースへのアクセスを使用する試みをトラップし、この試みに対応するトリガードイベントを生成し、トリガードイベントに関する複数のセキュリティルールを調べ、かつ、必要であれば、その試みに関する修正アクションをとるよう構成された１または複数のビロウＯ／Ｓセキュリティエージェントを含んでよい。
【００２５】
一実施形態では、システム２００は、１または複数のインＯ／Ｓセキュリティエージェント２１８及びセキュリティ仮想マシンモニタ（「ＳＶＭＭ」）セキュリティエージェント２１７に対して通信可能に結合されたプロテクションサーバ２０２を含んでよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６内に存在してよい。ＳＶＭＭ２１６は、電子デバイス２０４上に存在して動作してよい。インＯ／Ｓセキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７は、通信可能に結合されてよい。プロテクションサーバ２０２、インＯ／Ｓセキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭ２１６は、マルウェアの感染から電子デバイス２０４を保護するように設定されてよい。
【００２６】
ＳＶＭＭセキュリティエージェント２１７は、図１のトリガードイベントハンドラ１０８の例示的な実施形態であってよい。ＳＶＭＭ２１６は、図１のビロウＯ／Ｓトラップエージェント１０４の例示的な実施形態であってよい。
【００２７】
電子デバイス２０４は、プロセッサ２０８に結合されたメモリ２０６を含んでよい。電子デバイス２０４は、任意の適切な目的のために電子デバイス上で実行する１または複数のアプリケーション２１０またはドライバ２１１を含んでよい。電子デバイス２０４は、オペレーティングシステム２１２を含んでよい。オペレーティングシステム２１２は、電子デバイス２０４の複数のシステムリソース２１４へのアクセスを、複数のアプリケーション２１０または複数のドライバ２１１に提供するように設定されてよい。ＳＶＭＭ２１６は、複数のシステムリソース２１４のオペレーティングシステム２１２のそのような複数の呼び出しをインターセプトするように設定されてよい。ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２より下のレベルで動作してよい。例えば、ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、「リング−１」のような特権モードにおいてプロセッサ２０８上で直接動作してよい。
【００２８】
プロセッサ２０８は例えば、複数のプログラム命令及び／またはプロセスデータを解釈及び／または実行するよう構成されたマイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、または、任意の他のデジタル若しくはアナログの回路を含んでよい。いくつかの実施形態では、プロセッサ２０８は、メモリ２０６に格納されている複数のプログラム命令及び／またはプロセスデータを解釈及び／または実行してよい。メモリ２０６は、一部または全体において、アプリケーションメモリ、システムメモリまたは両方として設定されてよい。メモリ２０６は、１または複数のメモリモジュールを保持及び／または収容するよう構成された任意のシステム、デバイスまたは装置を含んでよい。メモリモジュールのそれぞれは、複数のプログラム命令及び／またはデータを期間内、保持するよう構成された任意のシステム、デバイスまたは装置を含んでよい（例えばコンピュータ可読記憶媒体）。ＳＶＭＭ２１６、ＳＶＭＭセキュリティエージェント２１７及びインＯ／Ｓセキュリティエージェント２１８などの複数のコンポーネントの複数のコンフィグレーションのような、システム２００の動作を設定する複数の命令、ロジックまたはデータは、プロセッサ２０８による実行のためにメモリ２０６内に存在してよい。
【００２９】
プロセッサ２０８は、プロセッサの１または複数のコアによって実行される１または複数のコード命令を実行してよい。複数のプロセッサコアは、複数のコード命令によって示される複数の命令のプログラムシーケンスをフォローしてよい。コード命令のそれぞれは、プロセッサの１または複数のデコーダによって処理されてよい。デコーダは、事前に定義されたフォーマットにおける固定幅のマイクロオペレーションのようなマイクロオペレーションを、その出力として生成してよい。或いは、デコーダは、元のコード命令を反映する他の複数の命令、複数のマイクロ命令、または複数の制御信号を生成してよい。プロセッサ２０８はまた、概して複数のリソース及びキューに対し、実行のための変換命令に対応する動作を割り当てるレジスタリネーミングロジック及びスケジューリングロジックを含んでよい。複数のコード命令により規定される複数の動作の実行完了後に、プロセッサ２０８内のバックエンドロジックは命令をリタイアしてよい。一実施形態では、プロセッサ２０８は、アウトオブオーダーの実行を許可してよいが、複数の命令のインオーダーリタイアを要求する。プロセッサ２０８内のリタイアロジックは、当業者に知られるように、様々な形態を取り得る（例えば複数のリオーダバッファなど）。プロセッサ２０８の複数のプロセッサコアは、従って、少なくとも、レジスタリネーミングロジックにより使用されるデコーダ、複数のハードウェアレジスタ及び複数のテーブル、並びに、実行ロジックによって変更される複数の任意のレジスタにより生成される出力に関して、コードの実行中に変換される。
【００３０】
プロテクションサーバ２０２は、ネットワーク２４４上で動作していてよい。ネットワーク２４４上で動作するプロテクションサーバ２０２は、クラウドコンピューティングスキームを実装してよい。プロテクションサーバ２０２は、複数のマルウェア検出ルール及び情報を更新するべく電子デバイス２０４の複数の要素と通信するように設定されてよい。プロテクションサーバ２０２は、電子デバイス２０４に由来する、複数の不審なアクティビティに関する情報を受信すると共に、そのような不審なアクティビティがマルウェア感染の兆候であるか否かを特定するように設定されてよい。オペレーティングシステム２１２は、１または複数のインＯ／Ｓセキュリティエージェント２１８を含んでよい。インＯ／Ｓセキュリティエージェント２１８は、複数のインＯ／Ｓセキュリティルール２２０のような複数の監視及び検出ルールをプロテクションサーバ２０２から受信するように設定されてよい。インＯ／Ｓセキュリティエージェント２１８は、プロテクションサーバ２０２によって受信された複数のインＯ／Ｓセキュリティルール２２０を使用することで、電子デバイス２０４上の不審なアクティビティを監視して妨げるように設定されてよい。インＯ／Ｓセキュリティエージェント２１８は、検知された不審なアクティビティをプロテクションサーバ２０２に報告し返すように設定されてよい。インＯ／Ｓセキュリティエージェント２１８は、複数のマルウェア動作を妨げ、そのような防止をプロテクションサーバ２０２に報告するように設定されてよい。１より多くのインＯ／Ｓセキュリティエージェント２１８がシステム２００に存在する場合には、インＯ／Ｓセキュリティエージェント２１８のそれぞれは、トラップ、検証、或いは、インＯ／Ｓセキュリティエージェント２１８に関連する他の複数のタスクの指定部分を実行するように設定されてよい。そのような複数の部分は、複数のビロウ‐オペレーティングシステムセキュリティエージェントによって定義され得る。例えば、１つのインＯ／Ｓセキュリティエージェント２１８は複数のＭＯＶ命令を検証または調査しても良く、一方、他のインＯ／Ｓセキュリティエージェント２１８は複数のＪＭＰ命令を検証または調査してよい。インＯ／Ｓセキュリティエージェント２１８は、メモリ内の特定のページのライフサイクルを決定するように設定されてよい。例えば、インＯ／Ｓセキュリティエージェント２１８は、メモリのページを割り当てるオペレーティングシステム２１２によって一般的に使用される複数の処理及び複数のステップを知っていてよい。同様に、インＯ／Ｓセキュリティエージェント２１８は、オペレーティングシステム２１２のローダ内にアプリケーションのイメージを読み込むオペレーティングシステム２１２によって一般的に使用される複数の処理及び複数のステップを知っていてよい。そのような複数の処理は、動作の静的パターンをフォローしてよい。従って、インＯ／Ｓセキュリティエージェント２１８は、所定アクションに対してスタンダードプロシージャがフォローされていたかを特定するべく、オペレーティングシステム２１２の動作を追跡するように設定されてよい。インＯ／Ｓセキュリティエージェント２１８によって観察された、対応する予期された複数のアクションを、ＳＶＭＭセキュリティエージェント２１７によってトラップされた動作が生成したか否かを特定するべく、インＯ／Ｓセキュリティエージェント２１８はＳＶＭＭセキュリティエージェント２１７と通信してよい。不一致は、マルウェアがオペレーティングシステム２１２の通常の処理の範囲外でシステムの機能を実現することを試みたことを示し得る。従って、例えば、インＯ／Ｓセキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７は、対象のページがマルウェアによって直接メモリに読み込まれたか、或いはオペレーティングシステムのローダによって読み込まれたかを特定してよい。そのような挙動は、インＯ／Ｓセキュリティエージェント２１８またはＳＶＭＭセキュリティエージェント２１７に、プロテクションサーバ２０２へ情報を報告させるか、より積極的なトラップ及びチェックを採用させるか、或いは、他の任意の複数の修正措置を行わせてよい。
【００３１】
一実施形態では、インＯ／Ｓセキュリティエージェント２１９は、コンテキストの情報をオペレーティングシステム２１２内に埋め込むことで、コンテキストの情報を提供するように設定されてよい。例えば、インＯ／Ｓセキュリティエージェント２１９は、それ自体またはサブコンポーネントをドライバフィルタとして登録し、それ自体をメインドライバに接続することで、ドライバが見るもの、または見ないものを決定するように設定されてよい。ＮＴＦＳ.ＳＹＳにフィルタとして接続されることにより、例えば、インＯ／Ｓセキュリティエージェント２１９は、オペレーティングシステム２１２の複数のドライバから見た複数のファイル入出力動作を報告するように設定されてよい。
【００３２】
別の実施形態において、インＯ／Ｓセキュリティエージェント２１９は、オペレーティングシステム２１９内から観察されるそのような情報を、オペレーティングシステムより下で観察される情報と比較するべく、ＳＶＭＭセキュリティエージェント２１６または複数の他のビロウＯ／Ｓセキュリティエージェントに提供するように設定されてよい。２つのセットの情報の間の不一致は、自身を隠そうとするマルウェアの試みの存在を示し得る。例えば、インＯ／Ｓセキュリティエージェント２１９は、ＮＤＩＳ.ＳＹＳをフックまたはフィルタリングし、特定ファイルに対する複数のファイル書き込みを監視してよい。ＳＶＭＭセキュリティエージェント２１６は、複数の入力及び出力コマンドを監視してよい。関数呼び出しのリストに基づいて、観察されたはずの書き込みよりも多くの書き込みがインＯ／Ｓセキュリティエージェント２１９によって観察されたとＳＶＭＭセキュリティエージェント２１６が特定した場合には、そのときマルウェアは、オペレーティングシステム２１２によって提供される複数の機能の範囲外で、ディスクに対し秘密に書き込んでいるかもしれない。
【００３３】
ネットワーク２４４は、インターネット、イントラネット、複数のワイドエリアネットワーク、複数のローカルエリアネットワーク、複数のバックホールネットワーク、複数のピアツーピアネットワーク、またはそれらの任意の組み合わせのような、通信のための任意の適切なネットワークのかたちで実現され得る。プロテクションサーバ２０２は、様々な電子デバイス２０４上で動作している様々なセキュリティエージェント２１８から提出される報告を使用し、流行（ｐｒｅｖａｌｅｎｃｅ）及び評判の解析ロジックを適用することでさらにマルウェアを検知してよい。例えば、電子デバイス２０４上で特定された不審な挙動は、プロテクションサーバ２０２が率先して他の複数の電子デバイス２０４を保護するためのルールに統合されてよい。そのようなルールは、例えば、不審なドライバが報告された回数に基づいて決定され得る。例えば、狭い又は遅い配布パターンを有する未知のドライバは、マルウェアに関連付けられ得る。一方で、広く早い配布の未知のドライバは、ポピュラーで広く入手可能なアプリケーションのパッチに関連付けられ得る。他の例において、そのような検知されたドライバは、他の電子デバイス上で動作しているセキュリティソフトウェアによって、ホストマルウェアに知られたウェブサイトにアクセスしていると特定されるかもしれない。そのようなドライバは、マルウェアに関連すると判断されるかもしれない。
【００３４】
ＳＶＭＭ２１６は、システム２００のセキュリティ仮想マシンモニタリング機能の幾つか又は全てを実装してよい。ＳＶＭＭ２１６は、複数のレジスタ、メモリまたは複数のＩ／Ｏデバイスのような複数のシステムリソースへのアクセス、電子デバイス上で動作する１または複数のオペレーティングシステムへのアクセスをインターセプトするように設定されてよい。システム２００の複数のセキュリティ仮想マシンモニタリング機能は、ＳＶＭＭ２１６、または、本開示の教示に従って電子デバイス２０４を保護するよう構成された任意の他の仮想マシンモニタを用いて実装されてよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２によって行われた複数のアクションを制御及びフィルタリングするように設定されてよい。一方、オペレーティングシステム２１２は、自身のために、または、オペレーティングシステム２１２を介して動作する複数のアプリケーション２１０のために、複数のシステムリソース２１４にアクセスすることを試みる。ＳＶＭＭ２１６は、電子デバイス２０４上のオペレーティングシステム２１２の下方で動作しても良く、オペレーティングシステム２１２、及び、アプリケーション２１０またはドライバ２１１にとって使用可能にされた幾つか又は全てのプロセッサリソースに対する制御を有してよい。アプリケーション２１０及びドライバ２１１のそれぞれは、例えば、図１のアプリケーション１１０及びドライバ１１１によって実施されてよい。アプリケーション２１０は、電子デバイス２０４上で動作するのに適切な任意のアプリケーションを備えてよい。ドライバ２１１は、電子デバイス２０４上で動作するのに適切な任意のドライバを備えてよい。ＳＶＭＭ２１６による制御に利用可能とされた複数のプロセッサリソースは、仮想化のために指定されたこれらのリソースを含んでよい。一実施形態では、ＳＶＭＭ２１６は、オペレーティングシステム２１２、アプリケーション２１０またはドライバ２１１によるアクセスのために複数のシステムリソース２１４を仮想化するように設定されてよい。単なる例として、そのような複数のシステムリソース２１４は、複数の入出力デバイス２２６、システムメモリ２２８または複数のプロセッサリソース２３０を含んでよい。単なる例として、複数のプロセッサリソース２３０は、複数の従来のレジスタ２３２、複数のデバッグレジスタ２３４、メモリセグメンテーション２３６、メモリページング２３８、複数のインタラプト２４０または複数のフラグ２４２を含んでよい。複数のＩＯデバイス２２６は、そのようなデバイス、例えばキーボード、ディスプレイ、マウスまたはネットワークカードなどへのアクセスを含んでよい。さらに、システムリソース２１４は、システムメモリ２２８内の特定のメモリアドレス、またはシステムメモリ２２８内の特定のメモリページを含んでよい。システムメモリ２２８は、物理メモリまたは仮想メモリを含んでよい。複数の従来のレジスタ２３２及び複数のデバッグレジスタ２３２は、複数のデータレジスタまたは複数の制御レジスタを含んでよい。複数のプロセッサリソース２３０はまた、複数のキャッシュ、複数の処理コア、複数のエクセプションまたは複数の特定のオペコード、または、複数のオペコードの組み合わせを含んでよい。
【００３５】
ＳＶＭＭ２１６は、オペレーティングシステム２１２に由来する複数の動作の実行をトラップして、複数のシステムリソース２１４にアクセスするように設定されてよい。ＳＶＭＭ２１６は、複数のシステムリソース２１４の特定の試行済みアクセスをトラップするよう構成された制御構造を含んでよい。任意の適切な制御構造が使用されてよい。一実施形態では、そのような制御構造は、仮想マシン制御構造（「ＶＭＣＳ」）２２１を含んでよい。ＳＶＭＭ２１６は、ＶＭＣＳ２２１内の複数のフラグを処理することで、そのような実行をトラップするように設定されてよい。ＳＶＭＭ２１６は、複数のシステムリソース２１４のアクセスを伴う、オペレーティングシステム２１２、アプリケーション２１０またはドライバ２１１の任意の適切な動作をトラップするように設定されてよい。そのような複数のトラップされた動作は、例えば、システムメモリ２２８の特定メモリページの読み取り、書き込み及び実行、プロセッサレジスタ２３０へのまたはプロセッサレジスタ２３０からの値の読み込み及び格納、または、複数のＩ／Ｏデバイス２２６へのまたは複数のＩ／Ｏデバイス２２６からの読み取り及び書き込みを含んでよい。複数のそのような任意の動作は、ＳＶＭＭ２１６によってトラップされ得る仮想マシンエグジット（「ＶＭ  Ｅｘｉｔ」）を引き起こしてよい。ＳＶＭＭ２１６は、プロセッサ２０８により生成され得る複数のインタラプト２４０、またはオペレーティングシステム２１２の複数の要素によって開始され得る複数のインタラプト２４０の生成をトラップするように設定されてよい。ＳＶＭＭ２１６は、複数のイン及びアウト命令をトラップすることで、Ｉ／Ｏデバイス２２６への、または、Ｉ／Ｏデバイス２２６からの読み取り及び書き込みの試みをトラップするように設定されてよい。ＳＶＭＭは、例えば「ＶＴｄ」（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｄｉｒｅｃｔｅｄ）Ｉ／Ｏの複数のメカニズムへのアクセスをトラップすることで、そのような複数の命令をトラップするように設定されてよい。ＶＴｄは、プロセッサ２０８に従ってＩＯデバイス仮想化を許可してよい。複数のＶＴｄ機能にアクセスすることで、ＳＶＭＭセキュリティエージェント２１７は、ＶＴｄにより接続された複数のデバイスを特定し、オペレーティングシステム２１２、Ｉ／Ｏデバイス上の複数のポートからのメタ情報、または他の適した情報を特定するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、そのような仮想化されたデバイスアクセスの動作を制御またはトラップするように設定されてよい。例えば、ＳＶＭＭセキュリティエージェント２１７は、複数のプログラマブルＩ／Ｏポートに与えられる複数のＩ／Ｏアサインメントを含む複数のＩ／Ｏアクセス許可マップを決定するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、そのような複数のアクセス許可マップへの、マルウェアによってされ得るアクセスをトラップするか、または、オペレーティングシステム２１２上の複数のエンティティと、ＩＯデバイスの要求との関係を特定すべく、そのような複数のアクセス許可マップを使用するように設定されてよい。
【００３６】
一実施形態では、ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６内で動作してよい。別の実施形態において、ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６の範囲外で動作してよいが、ＳＶＭＭ２１６に通信可能に結合され得る。そのような実施形態において、ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２のような、電子デバイス２０４のオペレーティングシステムのレベルより下で動作していてよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６の同一レベル及び／または同一優先度で動作していてよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６によって引き起こされた複数のイベントまたはＳＶＭＭ２１６によってトラップされた複数のイベントを処理するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、カーネルレベルルートキットの干渉がない複数のコンテンツを検査するべく、オペレーティングシステム２１２より下のレベルでメモリ２２８またはディスクの複数のコンテンツにアクセスするように設定されてよい。さらに、ＳＶＭＭセキュリティエージェント２１７のいくつかの動作は、ＳＶＭＭ２１６によって実装されて良く、ＳＶＭＭ２１６のいくつかの動作は、ＳＶＭＭセキュリティエージェント２１７によって実装されてよい。
【００３７】
ＳＶＭＭセキュリティエージェント２１７は、何のアクションがトラップまたはトリガの原因となるかに関してＳＶＭＭ２１６の動作を設定するように設定されてよい。一実施形態では、ＳＶＭＭ２１６は、トラップされたアクションの検出をＳＶＭＭセキュリティエージェント２１７に通信するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、トラップされたアクションがマルウェア、または悪意のあるアクティビティを示すかを決定するべく複数のセキュリティルール２２２を調べるように設定されてよい。また、ＳＶＭＭセキュリティエージェント２１７は、複数のセキュリティルール２２２に基づいて、次に何のアクションを行うかに関する複数の指示をＳＶＭＭ２１６に提供するように設定されてよい。そのような次のアクションは、試行済みアクションを許可すること、試行済みアクションを拒否すること、または複数の他の修正ステップをとることを含んでよい。
【００３８】
試行済みアクセスのトラップ動作と、ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７による複数のシステムリソース２１４の実行とは、インＯ／Ｓセキュリティエージェント２１８により収集された情報を介して調整されてよい。インＯ／Ｓセキュリティエージェント２１８は、ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７のトラップ及び処理の動作に対しコンテキストを提供するように設定されてよい。例えば、特定のオペレーティングシステムデータ構造は、通常、特定のアプリケーションまたはサービスによって書き込みされるだけかもしれない。インＯ／Ｓセキュリティエージェント２１８は、何のアプリケーションまたは処理がオペレーティングシステム２１２上で現在、見かけ上、動作しているかを特定し、情報をＳＶＭＭセキュリティエージェント２１７に通信してよい。特定のアプリケーションまたはサービスが見かけ上、動作しているとしてリスト化されていない場合には、このときデータ構造に対する試行済みの書き込みは、権限のないアプリケーションまたは処理から来ているかもしれない。
【００３９】
インＯ／Ｓセキュリティエージェント２１８は、複数のハイパーコールを介してＳＶＭＭ２１６及び／またはＳＶＭＭセキュリティエージェント２１７と通信するように設定されてよい。複数のハイパーコールは、関連した複数の入力及び出力パラメータだけでなく、使用され得る複数の入手可能な要求を定義する記述子テーブルと共に実装されてよい。そのような記述子テーブルは、インＯ／Ｓセキュリティエージェント２１８がＳＶＭＭ２１６及び／またはＳＶＭＭセキュリティエージェント２１７に通信することが可能な１または複数の要求を定義してよい。そのような記述子テーブルはまた、そのような要求についての複数の入力及び出力パラメータがメモリ内でどこに配置されるかを定義してよい。
【００４０】
インＯ／Ｓセキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２は、互いに認証するように設定されてよい。セキュリティエージェント２１２、ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２のそれぞれは、複数のエンティティのそれぞれが認証されない限り、互いに通信を継続しないように設定されてよい。ＳＶＭＭ２１６は、インＯ／Ｓセキュリティエージェント２１８のイメージをメモリ２０６に位置付けると共に、暗号サインアルゴリズムを使用することでメモリ２０６内のインＯ／Ｓセキュリティエージェント２１８のイメージを検証するように設定されてよい。プロテクションサーバ２０２、インＯ／Ｓセキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７の間の認証は、暗号ハッシング及び／または複数のサインアルゴリズムを含む任意の適切な方法を使用してよい。一実施形態では、そのような認証は、プライベートシークレットキーの交換を伴ってよい。インＯ／Ｓセキュリティエージェント２１８は、ＳＶＭＭセキュリティエージェント２１７のインスタンスを検証するべく、プロテクションサーバ２０２から秘密鍵を受信するように設定されてよい。
【００４１】
インＯ／Ｓセキュリティエージェント２１８は、オペレーティングシステム２１２の動作に関するコンテキストの情報を有してよい。インＯ／Ｓセキュリティエージェント２１８は、そのようなコンテキストの情報を提供するべく、ＳＶＭＭセキュリティエージェント２１７と通信するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、例えばどのようにメモリの複数の特定のページを定義するか、または、どのレジスタをトラップするかについてＳＶＭＭ２１６に指示してよい。
【００４２】
ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７により定義された、複数のシステムリソース２１４への複数のアクセス試行をトラップするように設定されてよい。例えば、メモリアクセスの複数のトラップについて、ＳＶＭＭ２１６は、読み取り、書き込みまたは実行のような複数の動作をトラップするように設定されてよい。複数のプロセッサレジスタ２３０へのアクセスをトラップするべく、ＳＶＭＭ２１６は、複数のレジスタ値の読み込み、格納または読み取りを含む複数の動作をトラップするよう命令されてよい。複数のＩ／Ｏデバイス２２６の複数のＩ／Ｏ動作をトラップするべく、ＳＶＭＭ２１６は、キーボード、マウスまたは複数の他の周辺機器に対する入力または出力のような複数の動作をトラップするよう命令されてよい。以下の図面におけるＳＶＭＭセキュリティエージェント２１７及び／または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、Ｉ／Ｏ動作に関して、ターゲットＩ／Ｏデバイス２２６のＩＤ、Ｉ／Ｏデバイス２２６上で実行されるターゲット動作及び転送されるデータを特定するように設定されてよい。
【００４３】
ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２の何れのエンティティが電子デバイス２０４のリソースにアクセスすることを試みたか、または、オペレーティングシステム２１２の何れのエンティティにリソースが属し得るかのようなコンテキストの情報を特定するように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、任意の適切な方法を介してそのような特定を行うように設定されてよい。一実施形態では、ＳＶＭＭセキュリティエージェント２１７は、そのような特定を行うべく、インオペレーティングシステムセキュリティエージェント２１８からのコンテキストの情報にアクセスするように設定されてよい。別の実施形態において、ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２の異なるプロセスまたはアプリケーションによって生成された複数の呼び出しの順序を特定すべく、オペレーティングシステム２１２のコールスタック及び／またはプロセッサ２０８の実行スタックに直接または非直接にアクセスするように設定されてよい。実行命令ポインタは、トリガの原因となる命令を指してよく、一方、実行スタックポインタ及び実行ベースポインタは複数のスタックフレームを指してよい。スタックを通って実行ベースポインタに行くことにより、以前の複数の関数呼び出しが特定され、間近な動作のコンテキストを提供してよい。そのような複数のスタックは、ソースメモリ位置だけでなく、試みられた動作を示してよい。さらに別の実施形態では、ＳＶＭＭセキュリティエージェント２１７は、試みが悪意のあるものであるか、またはマルウェアを示すかを特定するべく、メモリマップを複数のセキュリティルール２２２と合わせて使用するように設定されてよい。そのようなメモリマップは、例えば、試行済みアクセスのメモリ位置が与えられると、複数のリソースの試行済みアクセスを生成したエンティティを示してよい。そのようなメモリマップは、例えば複数の仮想メモリページ識別子及び／または複数の物理的なメモリアドレス内で定義されてよい。そのようなメモリマップは、他の例において、試みのターゲットのメモリ位置に対応するエンティティを示してよい。メモリマップを使用して、ＳＶＭＭセキュリティエージェント２１７は、試行済みアクセスの、ソース及び複数のターゲットのＩＤ、または、それらの複数のエンティティ所有者を特定するように設定されてよい。メモリマップは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、ＳＶＭＭセキュリティエージェント２１７または複数の他のビロウＯ／Ｓセキュリティエージェントにより、システムの実行の監視を介して部分的に生成されてよい。ＳＶＭＭセキュリティエージェント２１７及び／または他の複数のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、所定のメモリページまたは物理アドレスに対し、そのような位置が特定のコードサブセクションまたはデータサブセクションに属するかを特定してよく、どのモジュール、処理、アプリケーション、イメージ、または他のエンティティにそのような位置が属するかを特定してよく、或いは、そのような位置がユーザモードまたはカーネルモードのエントリに関連するかを特定してよい。ＳＶＭＭセキュリティエージェント２１７及び／または他の複数のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、電子デバイス２０４上で動作している様々な複数のエンティティのＩＤ，位置及び複数のアクセス許可を示す、仮想メモリ及び物理メモリのマッピングのためのメタデータを特定してよい。同様に、ＳＶＭＭセキュリティエージェント２１７及び／または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、大容量ストレージデバイスにおけるそのような複数のエンティティの複数のイメージの位置を特定すべく、大容量ストレージデバイスにおける複数のセクタのマッピングを使用してよい。ＳＶＭＭセキュリティエージェント２１７及び／または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、所定のエンティティに対し、それらが存在する複数のセクタ、複数のファイル、複数のディレクトリ、及び複数のボリュームを特定してよい。
【００４４】
ＳＶＭＭセキュリティエージェント２１７は、インＯ／Ｓセキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭ２１６の動作に対し、要求に従ってシステムメモリ２２８のようなメモリを割り当てるように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、そのような割り当てメモリを、権限のない読み取り及び書き込み動作からＳＶＭＭ２１６が保護することを要求するように設定されてよい。インＯ／Ｓセキュリティエージェント２１８によってメモリが割り当てられたときと、ＳＶＭＭ２１６により保護が確立されたときとの間でマルウェアによって悪意のあるコードが追加される機会を排除するべく、ＳＶＭＭ２１６は、メモリ保護が確立された後に、割り当てメモリを初期化するように設定されてよい。
【００４５】
ＳＶＭＭセキュリティエージェント２１７は、複数のＳＶＭＭセキュリティルール２２２をセキュアに受信するべく、プロテクションサーバ２０２と通信するように設定されてよい。複数のＳＶＭＭセキュリティルール２２２は、どのセキュリティポリシーを用いるかに関しＳＶＭＭ２１６に命令する、複数の命令、ロジック、複数のルール、複数の共用ライブラリ、複数の関数、複数のモジュールまたは任意の他の適したメカニズムを含んで良い。ＳＶＭＭセキュリティエージェント２１７は、複数の不審なアクティビティ及び検出されたマルウェアに関して、情報を電子デバイス２０４からプロテクションサーバ２０２に伝達するように設定されてよい。
【００４６】
インＯ／Ｓセキュリティエージェント２１８は、複数のインＯ／Ｓセキュリティルール２２０を受信するべく、プロテクションサーバ２０２と通信するように設定されてよい。複数のインＯ／Ｓセキュリティルール２２０は、インＯ／Ｓセキュリティエージェント２１８が電子デバイス２０４上でマルウェアを検知するための複数の命令、ロジック、複数のルール、複数の共用ライブラリ、複数の関数、複数のモジュールまたは任意の他の適したメカニズムを含んでよい。インＯ／Ｓセキュリティエージェント２１８は、電子デバイス２０４上の複数の不審なアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ２０２に伝送するように設定されてよい。
【００４７】
複数のインＯ／Ｓセキュリティルール２２０及び複数のＳＶＭＭセキュリティルール２２２はそれぞれ、複数のマルウェア感染から電子デバイス２０４を保護し、かつ、マルウェアを含み得る複数の不審なアクティビティを検出する複数の保護ルールを含んでよい。インＯ／Ｓセキュリティエージェントの複数のセキュリティルールは、インＯ／Ｓセキュリティエージェント２１８によって、インＯ／Ｓセキュリティエージェント２１８内で実行される複数のルールを含んでよい。複数のＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６及び／またはＳＶＭＭセキュリティエージェント２１７によって、ＳＶＭＭ２１６及び／またはＳＶＭＭセキュリティエージェント２１７内で実行される複数のルールを含んでよい。
【００４８】
複数のＳＶＭＭセキュリティルール２２２は、電子デバイス２０４の複数のマルウェア感染を観察及び検知する方法の複数の定義を含む情報を、ＳＶＭＭセキュリティエージェント２１７に提供するように設定されてよい。例えば、複数のＳＶＭＭセキュリティルール２２２は、アプリケーション２１０またはドライバ２１１のような複数のエンティティからの複数の関数呼び出しまたは複数の挙動のどのようなタイプを、ＳＶＭＭセキュリティエージェント２１７がマルウェアの兆候を得るために監視し得るかの分類を含んでよい。他の例として、複数のＳＶＭＭセキュリティルール２２２は、何のパラメータを使用するかをはじめとして、ＳＶＭＭセキュリティエージェント２１７がそのように引き起こされた複数の関数呼び出しをどのように処理し得るか、そのような複数の呼び出しからどのように値を抽出するか、または、そのような複数の呼び出しの動作をどのように検証するか、の定義を含んでよい。さらに、複数のＳＶＭＭセキュリティルール２２２は、そのような挙動の検知ルールに対する複数の例外だけでなく、電子デバイス内の、アプリケーション２１０またはドライバ２１１のような複数のエンティティの挙動を監視する方法についての情報であって、ＳＶＭＭセキュリティエージェント２１７内に対する情報を含んでよい。さらに他の例として、複数のＳＶＭＭセキュリティルール２２２は、そのような挙動の検知ルールにより検知された悪意のある複数の挙動を妨いで修復する方法についての、ＳＶＭＭセキュリティエージェント２１７に対する情報を含んでよい。複数のＳＶＭＭセキュリティルール２２２は、どのようなデータをＳＶＭＭセキュリティエージェント２１７が監視し、収集し、かつ、プロテクションサーバ２０２に送るべきかの詳細を含んでよい。
【００４９】
同様に、複数のインＯ／Ｓセキュリティルール２２０は、電子デバイス２０４のマルウェア感染を観察及び検知する方法と、そのような複数のアクティビティをＳＶＭＭセキュリティエージェント２１７と調整する方法との定義を含む情報をインＯ／Ｓセキュリティエージェント２１８に提供するように設定されてよい。複数のＳＶＭＭセキュリティルール２２２はまた、どのようなアクションをＳＶＭＭ２１６がトラップするかに関する複数のルールを含んでよい。ＳＶＭＭセキュリティエージェント２１７は、そのような複数のルールをＳＶＭＭ２１６に適用するように設定されてよい。例えば、ＳＶＭＭセキュリティエージェント２１７は、トラップされる機能のアドレスを、識別可能な仮想のまたは物理的なメモリのページに変換し、そのようなページの実行をＳＶＭＭ２１６にトラップさせる要求を生成し、かつ、その次に、実行のトラップ後にセキュリティエージェント２１７を呼び出すように設定されてよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６との自身のインターフェースを介して複数のＳＶＭＭセキュリティルール２２２を受信するように設定されてよい。そのようなインターフェースは、ハイパーコールベースのインターフェースを含んでよい。ＳＶＭＭセキュリティエージェント２１７は、同一のハイパーコールベースのインターフェースを介して、結果として生じる任意の複数の検出または複数の報告をＳＶＭＭ２１６にプッシュするように設定されてよい。
【００５０】
一実施形態では、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７に相談することなく、複数のトリガードアクションを処理するように設定されてよい。そのような実施形態において、ＳＶＭＭ２１６は、ＳＶＭＭ２１６内で処理される複数の追加トリガをインストールするように設定されてよく、追加トリガはＳＶＭＭセキュリティエージェント２１７には送信されないかもしれない。そのような複数の追加トリガは、複数のＳＶＭＭセキュリティルール２２２によって定義されてよい。一実施形態では、複数のＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６のために複数のメモリページをスキャンする複数のルールを定義してよい。そのような複数のルールは、悪意のある複数のエンティティまたは複数の変形のリストを含んでよく、メモリ内に存在することを許可されるべきではない。そのような複数のルールはまた、システムメモリ２２８内に存在することを特に許可された複数のページのリストを含むよう構成されたホワイトリストを含んでよい。別の実施形態において、複数のＳＶＭＭセキュリティルール２２２は、複数のメモリページアクセスルールをＳＶＭＭ２１６に対して定義してよい。そのような複数のルールは、どのようなコードページが所定のコードまたはデータページへのアクセスを許可され、または逆に禁止されるかの定義を含んでよい。結果として、複数のＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６にメモリスキャナとして動作することを命令する、及び／または、複数のメモリページへのアクセスを制御するように設定されてよい。
【００５１】
ＳＶＭＭ２１６は、複数のシステムリソース２１４における、それぞれのコード及び複数のデータページへの権限のない読み取り及び書き込みアクセスを妨げることで、ＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６及びインＯ／Ｓセキュリティエージェント２１８を保護するように設定されてよい。例えば、アプリケーション２１０またはドライバ２１１がシステムメモリ２２８、複数のプロセッサレジスタ２３０または複数のＩ／Ｏデバイス２２６の一部分に対する要求であって、ＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６およびインＯ／Ｓセキュリティエージェント２１８の整合性または動作に影響を及ぼす結果となる要求を生成する場合には、このときＳＶＭＭ２１６は、そのような試行済み要求をインターセプトし、その次に、要求を再ルーティングするか、要求を拒否するか、または他の適切なアクションをとるように設定されてよい。他の例において、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７それ自体または他の対応する若しくは提携された複数のプログラムのような複数のメモリセキュリティソフトウェアアプリケーションに対し、ＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６及びインＯ／Ｓセキュリティエージェント２１８に影響を及ぼすシステムメモリ２２８、複数のプロセッサレジスタ２３０または複数のＩ／Ｏデバイス２２６の複数の部分への読み取りアクセスを許可するように設定されてよい。そのような許可は、システムメモリ２２８のような複数のシステムリソース２１４へのアクセスを処理する方法をＳＶＭＭ２１６に対して定義し得る複数のＳＶＭＭセキュリティルール２２２内で定義されてよい。一実施形態では、複数のＳＶＭＭセキュリティルール２２２は、ＳＶＭＭセキュリティエージェント２１７を含み得る、信頼された複数のセキュリティプログラムのホワイトリストを含んでよい。
【００５２】
プロテクションサーバ２０２と通信すべく、ＳＶＭＭ２１６は、安全なネットワークインターフェース２２４を含んでよい。安全なネットワークインターフェース２２４は、プロテクションサーバ２０２のようなネットワークサーバと、ＳＶＭＭ２１６またはＳＶＭＭセキュリティエージェント２１７のような、電子デバイス２０４の要素との間のセキュアアクセスを提供するように設定されてよい。ＳＶＭＭ２１６は、安全なネットワークインターフェース２２４を実装し得る、論理ＴＣＰ／ＩＰドライバまたは他の通信インターフェースを含んでよい。プロテクションサーバ２０２は、安全なネットワークインターフェース２２４を介して通信することで、複数のＳＶＭＭセキュリティルール２２２または複数のインＯ／Ｓセキュリティルール２２０のような複数の保護ルールを提供するだけでなく、ＳＶＭＭ２１６またはＳＶＭＭセキュリティエージェント２１７に自身の更新を命令するように設定されてよい。プロテクションサーバ２０２は、特定の電子デバイス２０４または特定のＳＶＭＭ２１６に対し、カスタマイズされた複数のルールを配信するように設定されてよい。そのようなカスタマイズは、アンチウイルスプログラム、ファイアウォールまたは他の保護メカニズムのような、電子デバイス２０４内の複数の他の保護メカニズムと共に、電子デバイス２０４上で報告されている複数の悪意のあるアクティビティのタイプを含んでよい。一実施形態では、プロテクションサーバ２０２は、例えばローカルネットワーク上の電子デバイス２０４の管理者によって操作される。そのような場合、管理者は、不審な挙動を処理するためのグローバルなまたは個別化された複数のポリシーを設定してよく、これはプロテクションサーバ２０２から受信される複数のルールによって実装されうる。ＳＶＭＭ２１６は、ＳＶＭＭ２１６またはＳＶＭＭセキュリティエージェント２１７に対し、プロテクションサーバ２０２を介してセキュアに配信された新たなイメージを用いて自身を更新する方法を知らせる更新エンジンを含んでよい。
【００５３】
複数のインＯ／Ｓセキュリティルール２２０及び複数のＳＶＭＭセキュリティルール２２２はそれぞれ、電子デバイス２０４上の特定のまたは複数クラスの、観察された複数のアクションまたは複数の動作がプロテクションサーバ２０２に送信されることを要求するよう構成されてよい。そこで、プロテクションサーバは、電子デバイス２０４上でアクションが進行することを許可される前にその観察を検査及び検証してよい。プロテクションサーバ２０２は、そのようなアクションが同期して、または非同期的に検査されることを認めるように設定されてよい。一実施形態では、インＯ／Ｓセキュリティエージェント２１８は、プロテクションサーバ２０２によって検証するべく、不審な複数のアクティビティ、コード若しくはデータの複数のセグメント、または複数のアクションをＳＶＭＭ２１６にパスするように設定されてよい。例えば、インＯ／Ｓセキュリティエージェント２１８は、メモリ内に読み込まれた無署名のドライバを検出することで、マルウェアの不審なインスタンスを検知してよい。ＳＶＭＭ２１６は、不審なソフトウェアについての情報をインＯ／Ｓセキュリティエージェント２１８から受信してよく、それをプロテクションサーバ２０２に提供してよい。
【００５４】
複数のＳＶＭＭセキュリティルール２２２は、電子デバイスの任意の適切なシステムリソースに対するアクセスを許可または拒否するように設定されてよい。監視に使用可能な、そのような複数のリソースは、プロセッサ２０８により露出される複数のリソースに依存してよい。例えば、一実施形態では、複数のＳＶＭＭセキュリティルール２２２は、システムメモリ２２８、複数のＩＯデバイス２２６及び複数のインタラプト１４０に対するアクセスをＳＶＭＭ２１６が制限するのを許可するように設定されてよい。制限されたシステムメモリ２２８へのアクセスは、例えば、ＥＰＴまたはオペレーティングシステムの複数のページテーブルを用いて達成されてよい。そのような制限は、キーボード、複数のディスプレイまたは複数のリムーバブルディスクのような複数のＩ／Ｏデバイスに対する不正アクセスを妨げてよい。別の実施形態において、複数のＳＶＭＭセキュリティルール２２２は、インタラプト２４０のような複数のプロセッサレジスタにおける複数のエントリを含む、インタラプト記述子テーブルの複数のエントリへのアクセスを、ＳＶＭＭ２１６が制限するのを許可するように設定されてよい。さらに別の実施形態では、複数のＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６が拡張ページテーブル（「ＥＰＴ」）、または、ホスト物理メモリに対する仮想メモリ（ゲストオペレーティングシステムのパースペクティブからの実メモリ）のマッピングを処理する任意の他のメカニズムを監視することを許可するように設定されてよい。ＥＰＴにおける複数のアクセス許可の変更または他のアクセスは、ＶＭＣＳにおけるイベントをトリガしてよい。
【００５５】
仮想化をサポートするプロセッサ２０８に加えて１または複数のプロセッサを電子デバイス２０４が含む場合には、ＳＶＭＭ２１６、または、ＳＶＭＭ２１６の他のインスタンスは、そのような他の複数のプロセッサの仮想化された複数のリソースにアクセスする複数の試みをインターセプトするように設定されてよい。電子デバイス２０４が例えばプロセッサ２０８を含んだクアッドプロセッサを含む場合には、クアッドプロセッサの複数のリソースは、ＳＶＭＭ２１６によって保護されてよい。１または複数の他のプロセッサが仮想化をサポートしない場合には、ＳＶＭＭ２１６は、それらの複数のリソースに対してセキュアアクセスが可能ではないかもしれない。１または複数の他のプロセッサがプロセッサ２０８とは異なる仮想化技術をサポートする場合には、たとえプロセッサ２０８とは異なる態様ではあるが、ＳＶＭＭ２１６が保護されているとしても、複数のリソースが仮想化された態様が異なり得るため、ＳＶＭＭ２１６は、それらの複数のリソースに対してセキュアアクセスするように設定されてよい。
【００５６】
動作において、プロテクションサーバは、ネットワーク２４４上で動作していてよい。インＯ／Ｓセキュリティエージェント２１８は、マルウェアを求めて電子デバイス２０４をスキャンし、不審な挙動を求めて電子デバイス２０４上のアプリケーション２１０及びドライバ２１１のような複数のエンティティの挙動を観察し、見つけられたそのような任意の感染を修復することで電子デバイス２０４をマルウェア感染から保護すべく、電子デバイス２０４上で動作していてよい。インＯ／Ｓセキュリティエージェント２１８は、オペレーティングシステム２１２と同一の優先度またはレベルで動作していてよく、オペレーティングシステム２１２内で動作していてよい。ＳＶＭＭ２１６は、電子デバイス２０４の複数のシステムリソースの試行済みアクセスをトラップすることで電子デバイス２０４をマルウェア感染から保護するべく、電子デバイス２０４上で動作していてよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６のトラップ動作を設定し、複数のシステムリソースのトラップされた試行済みアクセスの幾つか又は全てを処理すべく、電子デバイス２０４または他の適切な電子デバイス上で動作していてよい。ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、「リング−１」の優先度を有するオペレーティングシステム２１２より下で動作していてよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６上で動作していてよい。
【００５７】
プロテクションサーバ２０２は、複数のＳＶＭＭセキュリティルール２２２及び複数のインＯ／Ｓセキュリティルール２２０のような複数のセキュリティルールを電子デバイス２０４に送ってよい。そのような複数のルールは、複数のインＯ／Ｓセキュリティルール２２０をＳＶＭＭ２１６に提供し得るＳＶＭＭセキュリティエージェント２１７によって受信されてよい。そのような複数のルールは、インＯ／Ｓセキュリティエージェント２１８によって受信されてよい。
【００５８】
プロテクションサーバ２０２、セキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７はそれぞれ、互いに認証してよい。ＳＶＭＭセキュリティエージェント２１７は、セキュリティエージェント２１８のイメージをメモリ内に位置付け、暗号サインアルゴリズムを使用して、メモリ内に常駐のセキュリティエージェント２１８のイメージを検証してよい。プロテクションサーバ２０２及びＳＶＭＭセキュリティエージェント２１７は、暗号ハッシング及び複数のサインアルゴリズムを用いて互いに認証し、互いを正しく特定してよい。ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２はまた、互いのＩＤを認証すべく、プライベートシークレットキーを交換してよい。セキュリティエージェント２１８は、ＳＶＭＭセキュリティエージェント２１７のインスタンスを検証すべく、プロテクションサーバ２０２から秘密鍵を受信してよい。セキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７および２０２の間の通信は、複数のエージェントのそれぞれが互いに認証されない限り、完全には確立されないかもしれない。同様に、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭ２１６は、それらが別個のエンティティとして動作している場合には、互いに検証及び認証してよい。
【００５９】
ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２と、電子デバイス２０４のすべてのオペレーティングシステムの下方で動作していてよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２、セキュリティエージェント２１８、アプリケーション２１０及びドライバ２１１によって、複数のＩ／Ｏデバイス２２６、システムメモリ２２８、及び複数のプロセッサレジスタ２３０を含む複数のシステムリソース２１４に対するアクセスを監視してよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２、セキュリティエージェント２１８、アプリケーション２１０、ドライバ２１１または電子デバイス２０４の他の任意のエンティティにより要求された複数のキー動作の実行をトラップしてよい。ＳＶＭＭ２１６は、ＶＭＣＳ２２１内の複数のフラグを操作することで、そのような実行をトラップしてよい。ＶＭＣＳ２２１が保護リソースの要求をインターセプトするとき、動作は、さらなる動作、診断及び修復を目的としてＳＶＭＭ２１６にハンドオフされてよい。一実施形態では、動作は、その次にＳＶＭＭセキュリティエージェント２１７によって処理されてよい。別の実施形態において、トラップされた動作の処理は、ＳＶＭＭ２１６自体によって実行されてよい。ＳＶＭＭ２１６は、マルウェアからの保護を提供するべく、電子デバイス２０４の任意の必要な動作をトラップしてよい。そのような複数の動作は、限定されるものではないが、システムメモリ２２８における特定のコードまたは複数のデータページの読み取り、書き込み及び実行か、システムレジスタ及び複数のプロセッサレジスタ２３０からの値の読み込み及び格納か、或いは、複数のＩ／Ｏデバイス２２６へのまたは複数のＩ／Ｏデバイス２２６からの読み取りを含んでよい。ＳＶＭＭ２１６によりトラップされる特定の複数の動作は、ＳＶＭＭセキュリティルール２２２により定義されてよい。
【００６０】
プロテクションサーバ２０２は、ＳＶＭＭセキュリティエージェント２１７またはインＯ／Ｓセキュリティエージェント２１８と通信することで、それぞれに複数のセキュリティルールを提供してよい。一実施形態では、プロテクションサーバ２０２は、ＳＶＭＭセキュリティエージェント２１７に複数のＳＶＭＭセキュリティルール２２２を配信してよい。別の実施形態において、プロテクションサーバ２０２は、インＯ／Ｓセキュリティエージェント２１８に複数のインＯ／Ｓセキュリティルール２２０を配信してよい。さらに別の実施形態では、プロテクションサーバ２０２は、ＳＶＭＭセキュリティエージェント２１７に複数のインＯ／Ｓセキュリティルール２２０を配信してよく、ＳＶＭＭセキュリティエージェント２１７は次に複数のルールをインＯ／Ｓセキュリティエージェント２１８に提供してよい。
【００６１】
電子デバイス２０４上で動作しているアプリケーション２１０、ドライバ２１１または他の複数のエンティティはインＯ／Ｓセキュリティエージェント２１８によって観察されてよい。インＯ／Ｓセキュリティエージェント２１８は、複数のインＯ／Ｓセキュリティルール２２０を使用して、そのような処理中の複数のエンティティの挙動を観察することで、マルウェア感染の可能性を示す不審な挙動をそれらの挙動が構成するか特定してよい。複数の不審なアクティビティがそのように検出されると、インＯ／Ｓセキュリティエージェント２１８は、さらなる解析及び命令のためにプロテクションサーバ２０２に不審情報を提供してよい。複数のインＯ／Ｓセキュリティルール２２０は、そのような複数の挙動が不審であることと、修正アクションとをインＯ／Ｓセキュリティエージェント２１８に示してよい。例えば、アプリケーション２１０は、ホストマルウェアに知られているネットワークデスティネーションと通信してよい。インＯ／Ｓセキュリティエージェント２１８は、アプリケーション２１０のアクティビティに気が付き、その次にネットワークデスティネーションへのアプリケーション２１０のネットワークアクセスをブロックしてよい。インＯ／Ｓセキュリティエージェント２１８はまた、マルウェアを求めて電子デバイス２０４をスキャンしてよい。例えば、インＯ／Ｓセキュリティエージェント２１８は、マルウェアのシグネチャに対応する複数のパターンを求めてメモリ２０６のコンテンツまたはシステムメモリ２２８を検査してよい。そのような検査は、例えば、マルウェアの既知のセグメントに対応するコードのブロックをアプリケーション２１０が含むことを明らかにしてよい。次に、インＯ／Ｓセキュリティエージェント２１８は、アプリケーション２１０を修復するか、アプリケーション２１０取り除くか、または、任意の他の適したアクションを取ることで、電子デバイス２０４をクリーニングしてマルウェアの感染を除いてよい。インＯ／Ｓセキュリティエージェント２１８は、検出された任意の不審な挙動、またはマルウェアの他の複数の兆候に関してプロテクションサーバ２０２と通信してよく、そのようなマルウェアを扱う方法についてプロテクションサーバ２０２から複数の命令を受信してよい。
【００６２】
一実施形態では、ＳＶＭＭセキュリティエージェント２１７は、試行済み動作を生成したエンティティのオリジンに基づいて、トラップされた動作を評価するように設定されてよい。例えば、ドライバが未知のドメインからダウンロードされた場合、またはドライバが未知の保証人からの証明書を有している場合には、そのときは、引き続いて動作するためのドライバの能力は限られてよい。例えば、ステータスが未知のドライバは、自身を他のドライバに接続する能力が拒否されてよい。ホストマルウェアにとって既知のドメインからドライバがダウンロードされた場合、またはドライバが不正な認証を含む場合には、そのときは、ドライバは、読み込みさえ許可されないかもしれない。同様に、ドライバが特定のドメインからのものであるか、または特定の作成者により生成されていると知られている場合は、そのときは、ＳＶＭＭセキュリティエージェント２１７は、電子デバイス２０４内の複数のサービスがドライバ更新を認証されていると認識してよく、これらのサービスに対し、書き込みまたはドライバへのアクセスの能力を制限するように設定されてよい。例えば、Ｘ会社からのカーネルドライバは、電子デバイス２０４上に常駐の、Ｘ会社の更新サービスソフトウェアだけから書き込まれてよい。ＳＶＭＭセキュリティエージェント２１７は、更新サービスの動作及び整合性を検証するように設定されてよい。別の実施形態において、ＳＶＭＭセキュリティエージェント２１７は、試みのターゲットに基づいて、トラップされた動作を評価するように設定されてよい。例えば、サービスからのソフトウェア更新の試みは、アプリケーションソフトウェア用ではなくカーネルドライバ用に、トラップされてよい。
【００６３】
一旦、エンティティが不審であると特定されるか、或いは試みがマルウェアを示すと特定されると、試みの原因となった処理と、処理を収容するメモリとがリンクされてよい。メモリの同一部分にアクセスする他の処理は、マルウェアであると同様に特定されてよい。リソースにアクセスしようとする、トラップされた試みは格納されてよく、保護リソースにアクセスしようとする次の試みは、元のイベントを考慮して評価されてよい。例えば、悪意のある動作は、コードがデータセグメントに書き込まれ、次に実行されることを要求してよい。従って、ＳＶＭＭセキュリティエージェント２１７は、データセグメントへの元の書き込みアクセスをトラップし、書き込みを許可し、但し書き込みアクセスのソースを記録してよい。その次に、ＳＶＭＭセキュリティエージェント２１７は、データセグメントを実行しようとする次の試みをトラップし、前にトラップされた動作、それを試みたエンティティ、または他の適した犯罪科学捜査の（ｆｏｒｅｎｓｉｃ）情報を考慮して、試みの悪意のステータスを評価してよい。
【００６４】
ＳＶＭＭセキュリティエージェント２１７は、ＶＭＣＳ２２１のような制御構造を介して、またはＥＰＴを介して、複数のシステムリソース２１４の何れをＳＶＭＭ２１６がトラップするかに関してＳＶＭＭ２１６に命令してよい。次に、ＳＶＭＭ２１６は、オペレーティングシステム２１２、アプリケーション２１０またはドライバ２１１のような、電子デバイス２０４の複数のエンティティに由来する複数のシステムリソース２１４に対するアクセス要求をトラップしてよい。例えば、システムメモリ２２８の複数の部分の読み取り、書き込みまたは実行の要求が生成された場合には、ＳＶＭＭ２１６は、ＶＭＣＳ２２１内のシステムメモリの指定部分に対するフラグセットを介して、または、ＥＰＴにより検知された変更をインターセプトすることで、そのような要求をインターセプトしてよい。他の例において、入力または出力の複数の動作のような、複数のＩ／Ｏデバイス２２６の、生成されたアクセス要求は、ＶＭＣＳ２２１によってインターセプトされてよい。さらに他の例において、複数のコマンドの読み込みまたは格納のような、プロセスレジスタ２３０の複数の要求は、ＶＭＣＳ２２１によりトラップされてよい。そのような任意のトラップは、ＳＶＭＭ２１６に試行済みアクセスの通知をもたらしてよい。一旦、ＳＶＭＭ２１６がシステムリソース２１４上で試行済み動作をトラップすると、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７に対し、そのようなトラップされた実行を通信してよい。
【００６５】
インＯ／Ｓセキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２内で実行される複数の動作のコンテキストを特定すべく通信してよい。例えば、オペレーティングシステム２１２から電子デバイス２０４の特定のリソースへの、トラップされたシステムコールは、メモリの特定の部分を起源としたかもしれない。ＳＶＭＭセキュリティエージェント２１７は、どのようなアプリケーション、処理または他のエンティティがメモリの特定の部分内に存在するかを特定すべくインＯ／Ｓセキュリティエージェント２１８と通信してよい。
【００６６】
複数のＳＶＭＭセキュリティルール２２２、及び、トラップされた動作及び／またはインＯ／Ｓセキュリティエージェント２１８からのコンテキストの情報に基づき、次にＳＶＭＭセキュリティエージェント２１７は、マルウェア感染を示すような不審なアクションを、そのようなアクセスが構成するか特定してよい。例えば、権限のないアプリケーションによる保護メモリスペースのシステムメモリ２２８の試行済みの変更は、不審なアクティビティであってよい。従って、ＳＶＭＭ２１６により検知された、そのような試行済みの変更は、ＳＶＭＭセキュリティエージェント２１７により解釈されて、マルウェアの動作となってよい。そのようなアクティビティはさらなる命令を目的としてプロテクションサーバ２０２に報告されてよく、或いは、アクションは複数のインＯ／Ｓセキュリティルール２２０により導かれてよい。そのような検出の結果は、システムメモリ２２８における試行済みの変更をブロックすべきであってよく、或いは、試行済みの変更を生成した電子デバイス２０４のエンティティ上で追加のクリーニング動作を引き起こすべきであってよい。
【００６７】
ＳＶＭＭ２１６は、ＳＶＭＭ２１６、ＳＶＭＭセキュリティエージェント２１７及び／またはインＯ／Ｓセキュリティエージェント２１８の整合性を保護すべく、システムリソース２１４への追加の複数の呼び出しを監視してよい。ＳＶＭＭ２１６は、複数のＳＶＭＭセキュリティルール２２２により定義されるスキャン動作を行って、システムメモリ２２８の複数の部分をスキャンすることで、そのようなメモリの複数の部分がマルウェアによって変更されているか特定してよい。ＳＶＭＭ２１６は、メモリの所定パターンが安全でない、または安全であるとして知られることを示す、複数のシグネチャ、複数のハッシュまたは他の複数のルールを利用してよい。
【００６８】
例えば、ＳＶＭＭ２１６は、システムメモリ２２８のインＯ／Ｓセキュリティエージェント２１８に対応するコード及び複数のデータページに対する、権限のない読み取り及び書き込みアクセスを妨げることにより、インＯ／Ｓセキュリティエージェント２１８を保護してよい。いくつかのマルウェアは、複数のメモリ修正、または、システムメモリ２２８に関連する複数のシステムリソース２１４に対する他の複数の変形を生成することで、インＯ／Ｓセキュリティエージェント２１８を攻撃するよう試みるかもしれない。ＳＶＭＭ２１６は、インＯ／Ｓセキュリティエージェント２１８に対応するコードまたはデータまたは他の複数のシステムリソース２１４を変更することが許可され得る、認証された複数のアプリケーションと、電子デバイス２０４の他の複数のエンティティとの複数のＳＶＭＭセキュリティルール２２２に含まれるホワイトリストを読み取ってよい。ホワイトリスト内に含まれないエンティティに変形が由来する場合には、このときＳＶＭＭ２１６は、そのような変形がマルウェアに関連すると特定してよい。インＯ／Ｓセキュリティエージェント２１８に対応する複数のシステムリソース２１４への不正アクセスは、アクセスのブロック、ハニーポットプロセスの作成、プロテクションサーバ２０２への違反報告、または任意の他の適した対策を含む任意の適切な方法で、ＳＶＭＭにより処理されてよい。
【００６９】
ＳＶＭＭ２１６はまた、電子デバイス２０４の他の複数のエンティティに属する複数のシステムリソース２１４へのアクセスをトラップしてよい。例えば、システムメモリ２２８内のターゲットメモリページは、オペレーティングシステム２１２のカーネル動作の一部に属するサンプルのコードまたはデータを含んでよい。ＳＶＭＭ２１６及び複数のＳＶＭＭセキュリティルール２２２は、認証された複数のコードサブセクションだけを目的とする、そのようなターゲットページへのアクセスを限定してよい。結果として、システムメモリ２２８のコードページが、ターゲットメモリページの読み取りまたは変更を試み、かつ、コードページが電子デバイス２０４の非認証エンティティに属する場合には、そのようなアクセスは、ＳＶＭＭ２１６によりブロックされてよい。従って、ＳＶＭＭ２１６は、システムメモリ２２８内のメモリページへのアクセスを制御するよう動作してよい。
【００７０】
ＳＶＭＭセキュリティエージェント２１７は、複数の更新されたルールを目的としてプロテクションサーバ２０２にコンタクトすることで、複数のＳＶＭＭセキュリティルール２２２または複数のインＯ／Ｓセキュリティルール２２０を更新することが可能であってよい。プロテクションサーバ２０２は、観察された特定のマルウェア、複数のアドミニストレータセッティング、または電子デバイス２０４の他の特性に基づいて、複数のルールがＳＶＭＭセキュリティエージェント２１７に配信されるよう設定してよい。ＳＶＭＭセキュリティエージェント２１７は、ユーザからの要求があったときに、定期的に、または、マルウェアにリンクされ得る新たな不審なアクティビティへの遭遇のような重要なイベントが発生したときに、電子デバイス２０４の複数のルールを更新してよい。
【００７１】
ＳＶＭＭセキュリティエージェント２１７は、複数の複合条件に対応するＶＭＣＳ内の複数のフラグをセットしてよい。そのような複数のフラグは、トラップされる複数の異なるタイプのリソースに及んでよい。例えば、ＶＭＣＳは、メモリ内のページに対する特定の値の書き込みと、その後のＩ／Ｏデバイスのバッファへのページ移動との組み合わせをトラップするように設定されてよい。
【００７２】
システム２００は、アンチマルウェアシステム及びソフトウェアの他の実施に比べて、１または複数の利点を有してよい。例えば、いくつかのアンチマルウェアソリューションは、アプリケーションの低レベルの複数の動作をトラップ及び評価するべく、オペレーティングシステムの様々な部分をフックしてよい。しかしながら、これらのソリューション自体は、オペレーティングシステム内で、または、２つのゲストオペレーティングシステムの場合には他のオペレーティングシステム内で動作しうる。オペレーティングシステムの範囲内で動作することにより、カーネルレベルの優先度でさえ、アンチマルウェアソリューションは、また同一のオペレーティングシステム上で動作しており、おそらく同一の優先度で動作しているマルウェアから、マルウェア攻撃を受けやすいかもしれない。特定の複数のイベントのトラップまたはトリガがオペレーティングシステムのレベルで実行される場合には、そのようなトラップまたはトリガは、フィッシングされるか、フックされるか、リバースエンジニアリングされるか、不正アクセスされるか、さもなくば、オペレーティングシステムと同一またはオペレーティングシステムより低い優先度で動作しているマルウェアにより破られる。例えば、オペレーティングシステム内で悪意のあるフックを検知及び除去する、オペレーティングシステム上で動作しているアンチマルウェアソリューションは、同一の優先度で動作しているマルウェアにより観察されてよい。
【００７３】
他の例において、特定のルーチンの動作を検知するフィルタドライバとして登録しているアンチマルウェアソリューションは、悪意のあるフィルタドライバをアンチマルウェアソリューションより低くドライバスタックに登録するマルウェアによって破られ得る。同様に、トラップまたはトリガされた複数の特定のイベントの処理がオペレーティングシステムのレベルで生じる場合には、マルウェアは、そのような処理に影響を与えることができ得る。例えば、マルウェアは、アンチマルウェアソリューションの複数の補正をアンドゥしてよいし、アンチマルウェアソリューションの動作を無効化さえしてよい。他の例において、複数のハイパーバイザは、システムメモリ２２８のような複数のシステムリソースに対するアクセスを仮想化するよう働いてよいが、複数のシステムリソースへのアクセスを条件的にガードしないかもしれず、従って、セキュリティハイパーバイザとして動作しないかもしれない。そのような複数のハイパーバイザは、複数のシステムリソースの複数の悪意のあるアクティビティ、複数のエンティティまたは悪意のある試行済みアクセスを特定する、複数のセキュリティルール２２２における複数の行動ルールのような複数のアンチマルウェアルールにアクセスを有さないかもしれない。そのような複数のハイパーバイザはオペレーティングシステム自体の中で動作していてよく、オペレーティングシステムは、オペレーティングシステムと同一の優先レベルで動作しているマルウェアに屈従し得る。そのような複数のハイパーバイザは、リング０特権モードで動作していないかもしれない。そのようなモードは、ハイパーバイザが複数のシステムリソースの非常に多くの試行済みアクセスをインターセプトするよう要求し得るためである。ハイパーバイザは、ゲストオペレーティングシステムの全ての態様を仮想化することを課されてよい。そのような仮想化の要求は、とても費用がかかるため、悪意のある挙動を調べるべく複数のセキュリティルールに同時にアクセスすることができないかもしれない。
【００７４】
複数のモジュールは、例えばロジック、複数の命令、コード、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の適切な組み合わせを含んでよい。
【００７５】
図３は、仮想マシンモニタベースの保護であって、電子デバイスのマルウェアからの保護の方法３００の例示的な実施形態を示す図である。ステップ３０５において、ビロウＯ／Ｓセキュリティエージェント、インＯ／Ｓセキュリティエージェント、プロテクションサーバ及び仮想マシンモニタのＩＤ及びセキュリティが認証されてよい。そのような認証は、それぞれメモリに配置された複数のイメージ、暗号ハッシング、または複数の秘密鍵の位置付け及び認証によることを含む、任意の適切な方法を介して行われてよい。ステップ３０５が完了するまで、他の複数のステップは保留されてよい。
【００７６】
ステップ３１０において、プロテクションサーバは、複数のセキュリティルールを決定するべくアクセスされる。そのような複数のセキュリティルールは、ステップ３１５から３８０の判断を行うために使用されてよい。ステップ３１５において、仮想マシンモニタは、複数のシステムリソースへのアクセスをトラップするよう命令されてよい。そのようなアクセスは、電子デバイス上で動作している複数のアプリケーション、複数のドライバまたは複数のオペレーティングシステムから生じてよい。仮想マシンモニタは、電子デバイスのどのようなシステムリソースが監視されるべきかに関して命令されてよい。仮想マシンモニタはまた、監視された複数のシステムリソース上のどのような動作がトラップされるべきかに関して命令されてよい。例えば、システムメモリ上の読み取り、書き込みまたは実行動作がトラップされてよい。他の例において、複数のレジスタ上の読み込みまたは格納の複数の動作がトラップされてよい。さらに他の例において、複数のＩ／Ｏデバイス上の入力または出力の複数のアクションがトラップされてよい。
【００７７】
ステップ３２０において、トラップされるそのような複数の動作に対応する複数のフラグは、仮想マシン制御構造のような制御構造内で設定されてよい。そのようなトラップされた動作はＶＭ  Ｅｘｉｔを生成してよく、トリガードイベントはフラグを付けられたリソースのアクセスがあると生成される。ステップ３２５において、仮想マシンモニタ、インＯ／Ｓセキュリティエージェント及びビロウＯ／Ｓセキュリティエージェントに対してシステムメモリが割り当てられるに従い、そのようなメモリは、権限のない読み取り及び書き込みの複数の動作から保護されてよい。
【００７８】
電子デバイスは、ステップ３３０−３４０において複数のシステムリソースのアクセスをトラップすること、ステップ３４５−３５５においてマルウェアの存在を求めてメモリをスキャンすること、及び、ステップ３６０−３６５において複数の試行済みのメモリ修正を求めてメモリをスキャンすること、の１つまたは複数を行い、これによって保護されてよい。複数のシステムリソースのアクセスをトラップすること、マルウェアの存在を求めてメモリをスキャンすること、及び、複数の試行済みのメモリ修正を求めてメモリをスキャンすることのそれぞれは、パラレルに実行されてよい。さらに、これらのそれぞれは、電子デバイスの動作を保護すべく、必要に応じて繰り返されてよい。
【００７９】
ステップ３３０において、システムメモリ、複数のレジスタまたは複数のＩ／Ｏデバイスのようなシステムリソースのアクセスは、トラップされてよい。アクセスは、ＶＭ  Ｅｘｉｔを生成するＶＭＣＳフラグを用いてトラップされてよい。そのようなトラップは、電子デバイス上で動作している複数のオペレーティングシステムより下のレベルで実行されてよい。ステップ３３５において、要求リソースへのアクセスの許可を要求エンティティが有しているかを特定するべく、アクセスが解析されてよい。試行済みアクセスに関連するコンテキストの情報は、そのような特定をするべくアクセスされてよい。複数のセキュリティルールは、そのような特定をするべくアクセスされてよい。不正アクセスは、不審なものであると特定されてよい。そのような処理及び複数の特定は、電子デバイス上で動作しているオペレーティングシステムより下のレベルでなされる。アクセスが不審な場合には、次にステップ３４０において、複数のシステムリソースの不審な試行済みアクセスはブロックされてよい。そのような試みは、プロテクションサーバに報告されてよい。アクセスが不審でない場合には、次にステップ３７０においてアクセスは許可されてよい。
【００８０】
ステップ３４５において、電子デバイスの複数のメモリページは、マルウェアの存在を求めてスキャンされてよい。電子デバイスのメモリのスキャンの間に、ホワイトリストは、電子デバイス上に常駐する複数のエンティティを反映する、メモリの複数のパターンが安全であると知られているかを特定するために使用されてよい。安全であると知られているメモリのパターンに遭遇すると、次にステップ３７０において、メモリは、電子デバイスへのアクセスを持ち続けることを許可されてよく、持ち続けてよい。電子デバイスのメモリのスキャンの間に、ブラックリストは、メモリの複数のパターンがマルウェアを含む、或いは、マルウェアに関連するとして知られているかを特定するために使用されてよい。ホワイトリスト及びブラックリストは、複数のセキュリティルールにアクセスすることでアクセスされてよい。ステップ３５０において、マルウェアに関連するとして知られるメモリのパターンが見つかった場合には、次にステップ３７５にいて、メモリのパターンは、修復、取り除き、または無効化されることで、電子デバイスへのアクセスが拒否されてよい。
【００８１】
ステップ３５５において、メモリは、メモリへの変形が試みられた、または試みられているかを特定すべく、スキャンされてよい。そのようなスキャンは、電子デバイスにおけるオペレーティングシステムのレベルより下で実行されてよい。そのようなメモリは、マルウェアにより変更されうるカーネルメモリ、複数のシステムデータ構造、または電子デバイスのメモリの任意の他の部分を含んでよい。例えば、電子デバイス上で動作している複数のアクティブスレッドのリストは、悪意のある処理の存在を隠すべく変更され得る。変形が検知された場合には、次にステップ３６５において、そのような複数の変形が許容可能であるかが特定されてよい。そのような複数の変形が許容可能であるかは、複数のセキュリティルールによって定義されてよい。例えば、アンチマルウェア処理のコードまたはデータページは、任意の他の処理によって、変形またはアクセスから保護されてよい。メモリ修正が認証されていると判断されると、次にステップ３７０において、変形が許可されてよい。メモリ修正が認証されておらず、かつ許可されていないと判断された場合には、次にステップ３７５において、変形が拒否されてよい。
【００８２】
ステップ３７０において、アクセスまたは変形が許可された場合には、次にアクセスまたは変形は、後の参照のために格納されてよい。マルウェアのいくつかの検出は、複数の過去のアクセスまたは複数の変形に関する情報を利用することで、そのような過去のアクセス及び現在検知されたアクセスが全体としてリソースの、悪意のあるアクセスを含むかを特定してよい。
【００８３】
ステップ３７５において、変形、アクセスまたは他の動作が拒否された場合には、次に、ステップ３８０において、そのようなイベントがプロテクションサーバに報告されてよい。そのような報告は、全ての関連するマルウェアまたは不審な挙動に関する情報を含んでよい。
【００８４】
方法３００の複数のステップは、必要に応じて繰り返されて、電子デバイスを継続して、定期的に、またはオンデマンドで保護してよい。
【００８５】
図４は、メモリ保護のために、電子デバイス４０１上でビロウ‐オペレーティングシステムトラップを用いてソフトウェアアクセスを規制するシステム４００の例示的な実施形態を示す図であるシステム４００は、オペレーティングシステム４１３のような、電子デバイス４０１の複数のオペレーティングシステム内で動作しているソフトウェアベースの複数のエンティティからメモリにアクセスする悪意ある試みを検知すべく電子デバイス４０１上で動作するよう構成されたビロウＯ／Ｓセキュリティエージェント４２０を含んでよい。さらに、ビロウＯ／Ｓセキュリティエージェント４２０は、１または複数のセキュリティルール４０８及びメモリマップ４０６を使用することで、どのようなメモリの試行済みアクセスをトラップするか、及び、トラップされた動作に対応して生成されたトリガードイベントをどのように処理するかを決定するように設定されてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、トリガードイベントに対して許可、拒否、または他の修正アクションを行うように設定されてよい。
【００８６】
電子デバイス４０１は、図１の電子デバイス１０３、または図２の電子デバイス２０４及び／またはそれらの任意の組み合わせによって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。電子デバイス４０１は、物理メモリ４０３のようなメモリに結合された１または複数のプロセッサ４０２を含んでよい。プロセッサ４０２は、図２のプロセッサ２０８によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。物理メモリ４０３は、図２のメモリ２０６によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。電子デバイス４０１はオペレーティングシステム４１３を含んでよく、オペレーティングシステム４１３は、１または複数のセキュリティルール４２１に結合されたインＯ／Ｓセキュリティエージェント４１９を含んでよい。オペレーティングシステム４１３は、図１のオペレーティングシステム１１２または図２のオペレーティングシステム２１２によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。インＯ／Ｓセキュリティエージェント４１９は、図１のインＯ／Ｓセキュリティエージェント２１８または図２のＳＶＭＭセキュリティエージェント２１７及び／またはそれらの任意の組み合わせによって部分的に実装されるか、或いは、その機能を部分的に実施するよう構成されてよい。
【００８７】
ビロウＯ／Ｓセキュリティエージェント４２０は、図１のビロウＯ／Ｓトラップエージェント１０４またはトリガードイベントハンドラ１０８、図２のＳＶＭＭ２１６またはＳＶＭＭセキュリティエージェント２１７、及び／またはそれらの任意の組み合わせによって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。
【００８８】
複数のセキュリティルール４０８は、図１の複数のセキュリティルール１１４、図２の複数のセキュリティルール２２２、及び／またはそれらの任意の組み合わせによって実装されるか、或いは、その機能を実施するよう構成されてよい。複数のセキュリティルール４２１は、図２の複数のセキュリティルール２２０によって実装されるか、或いは、その機能を実施するよう構成されてよい。
【００８９】
ビロウＯ／Ｓセキュリティ４２０は、電子デバイス４０１のメモリへのアクセスをインターセプトするように設定されてよい。そのようなメモリは、例えば、物理メモリ４０３の複数のアドレスの試行済みアクセス、または、仮想メモリ４０４の複数のページの試行済みアクセスを含んでよい。そのような試行済みアクセスは、オペレーティングシステム４１３、または、アプリケーション４１０またはドライバ４１１のような、オペレーティングシステム４１３を利用して電子デバイス４０１上で動作する複数のエンティティに由来してよい。
【００９０】
一実施形態では、ビロウＯ／Ｓセキュリティ４２０によって保護されたメモリは、仮想メモリ４０４を含んでよい。仮想メモリ４０４は、オペレーティングシステム４１３、アプリケーション４１０またはドライバ４１１のような、物理メモリ及び／またはストレージから抽象化されている複数のエンティティにとって使用可能なメモリを含んでよい。使用される複数の実空間は、物理メモリ４０３のような実際の物理メモリ内に、及び／または、ディスク上のようなストレージ内に、共通点の無い状態で拡がってよいが、仮想メモリ４０４は、オペレーティングシステム４１３、アプリケーション４１０またはドライバ４１１のような複数のエンティティに対し、メモリの隣接ブロックとして現れてよい。仮想メモリ４０４は、プロセッサ４０２の拡張に従って仮想化されてよい。仮想メモリ４０４のアドレス空間は、複数のメモリページに分割されてよい。複数のメモリページのそれぞれは、４キロバイトのような、均等のサイズであってよい。電子デバイス４０１は、仮想メモリ４０４の複数の仮想アドレスを、物理メモリ４０３のようなメモリの複数の物理アドレス、またはストレージの複数のアドレスに変換する複数のページテーブルを使用するように設定されてよい。電子デバイス４０１は、仮想メモリ４０４の複数の仮想アドレスを物理メモリ４０３のようなメモリの複数の物理アドレス、及び／または、ストレージの複数のアドレスに変換するよう構成されたメモリ管理ユニット４１４（「ＭＭＵ」）を含んでよい。仮想メモリ４０４の複数のページは、インデックスが付けられてよい。仮想メモリ４０４の複数のページの試行済みアクセスはページの試行済みの読み出し、書き込み、または実行を含んでよく、ビロウＯ／Ｓセキュリティエージェント４２０は試みをトラップするように設定されてよい。一実施形態では、仮想メモリ４０４のページは、物理的なメモリアドレスまたはストレージのアドレスに対応してよい。別の実施形態において、仮想メモリ４０４のページのそれぞれは、物理的なメモリアドレスに対応してよい。さらに別の実施形態では、オペレーティングシステム４１３の特定の部分のような特定の複数のコンテンツを含む複数のページはピニングされてよく、電子デバイス４０１の動作の間に変化しないかもしれない。
【００９１】
別の実施形態において、ビロウＯ／Ｓセキュリティエージェント４２０により保護されたメモリは、物理メモリ４０３を含んでよい。物理メモリ４０３は、所定の要素を含むメモリ範囲のベースアドレスであり得る物理メモリ４０３における特定の複数のアドレスを示す（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）、（Ｅ）、（Ｆ）、（Ｇ）、（Ｈ）、（Ｉ）、（Ｊ）及び（Ｋ）のような複数のマーカで示されるような、物理メモリの複数のアドレスを介してアクセスされてよい。物理メモリ４０３は特定のメモリアドレスの試行済みの読み出し、書き込みまたは実行を介してアクセスされてよく、ビロウＯ／Ｓセキュリティエージェント４２０は、試みをトラップするように設定されてよい。例えば、試行済みの書き込みは、変数「Ｖａｌｕｅ」で表される値が「Ａｄｄｒｌ」で表される特定のメモリアドレスに書き込まれる命令「ＭＯＶ  Ａｄｄｒｌ、Ｖａｌｕｅ」の形態を取り得る。物理メモリ４０３のアドレスに書き込む任意の命令が使用されてよい。試行済みの読み出しは、変数「Ｖａｌｕｅ」で表される値が「Ａｄｄｒｌ」で表される特定のメモリアドレスから読み取られる「ＭＯＶ  Ｖａｌｕｅ、Ａｄｄｒｌ」のような命令の形態を取り得る。物理メモリ４０３のアドレスから読み取る任意の命令が使用されてよい。試行済みの実行は、「Ａｄｄｒｌ」のような所定アドレスでの命令の形態を取り得る。メモリのアドレスを実行する任意の命令が使用されてよい。
【００９２】
ビロウＯ／Ｓセキュリティエージェント４２０は、仮想メモリ４０４に対する試行済みアクセスをインターセプトするように設定されてよい。さらに、ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３に対する試行済みアクセスをインターセプトするように設定されてよい。一実施形態では、仮想メモリ４０４への要求は、インターセプトされないかもしれないが、ＭＭＵが仮想メモリ４０４のページを物理メモリ４０３のアドレスに変換した後に、その後の対応する、物理メモリ４０３の試行済みアクセスはインターセプトされてよく、ビロウＯ／Ｓセキュリティエージェント４２０は物理メモリに対する試行済みアクセスをインターセプトするように設定されてよい。別の実施形態において、試行済みアクセスは、仮想メモリ４０４を介して変換されることなく、直接的な物理メモリ４０３のアクセスとされてよく、ビロウＯ／Ｓセキュリティエージェント４２０は、試行済みアクセスをインターセプトするように設定されてよい。さらに他の実施形態において、仮想メモリ４０４に対して生成された試行済みアクセスはインターセプトされてよいが、ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３のアドレスのその後のアクセスをインターセプトするよう構成されないかもしれない。
【００９３】
ビロウＯ／Ｓセキュリティエージェント４２０は、インＯ／Ｓセキュリティエージェント４１９と通信可能に結合されてよい。ビロウＯ／Ｓセキュリティエージェント４２０、電子デバイス４０１のメモリの試行済みアクセスに関するコンテキストの情報をインＯ／Ｓセキュリティエージェント４１９から受信するように設定されてよい。インＯ／Ｓセキュリティエージェント４１９によって提供されたコンテキストの情報は、電子デバイス４０１のメモリの特定のアクセスを試みた複数のエンティティのＩＤを含んでよい。
【００９４】
ビロウＯ／Ｓセキュリティエージェント４２０は、メモリマップ４０６に通信可能に結合されるか、メモリマップ４０６を含んでよい。メモリマップ４０６は、ファイル、レコード、データ構造、または他の適したエンティティのかたちで実装されてよい。メモリマップ４０６は、電子デバイス４０１の様々なエンティティの位置に関する情報をメモリ内に含んでよい。例えば、実行のために電子デバイス４０１のメモリ内に処理が読み込まれた場合には、メモリマップ４０６は、仮想メモリ４０４における複数のメモリページまたは物理メモリ４０３における複数のアドレスレンジの何れが処理を含むかに関する情報を含んでよい。電子デバイス４０１のメモリ仮想化の実施に依存して、いくつかのコンテンツはディスクのようなストレージに読み込まれ得るので、処理の全てのコンテンツは物理メモリ４０３に読み込まれてもよいし、読み込まれなくてもよい。そのような複数のコンテンツがアクセスされるべく、それらは物理メモリ４０３に読み込まれてよい。そのような場合には、物理メモリ４０３内であるか、ディスクのようなストレージ内であるかに関わらず、メモリマップ４０６は、複数のコンテンツが格納されている複数のアドレスについての情報を含んでよい。ビロウＯ／Ｓセキュリティエージェント４２０は、仮想メモリ４０４のページまたは物理メモリ４０３のアドレスにおける任意の所定コンテンツのＩＤまたは所有者を特定するべく、メモリマップ４０６を使用するように設定されてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、例えば、オペレーティングシステム４１３の動作をプロファイリングし、次にさまざまな敏感な複数のコンポーネントがメモリのどこに配置されているかを特定することで、メモリマップ４０６を構築してよい。オペレーティングシステム４１３のカーネルの読み込みまたはカーネルモードの複数の命令の実行のような、メモリへのアクセスの試みが形成されるときに、ビロウＯ／Ｓセキュリティエージェント４２０は、オペレーティングシステム４１３のどの部分が読み込まれるか、または実行されているかを特定するべく、インＯ／Ｓセキュリティエージェント４１９と通信するように設定されてよい。他の例において、ビロウＯ／Ｓセキュリティエージェント４２０は、そのような仮想メモリ４０４のページのメモリ範囲の複数のコンテンツのハッシュまたはデジタル署名を特定するように設定されてよい。ハッシュまたはデジタル署名は、複数のセキュリティルール４０８に含まれ得る既知の複数の値か、プロテクションサーバ２０２から得ることができる既知の複数の値と比較され得る。既知の複数の値は以前のキャラクタライゼーションの結果であってよく、キャラクタライゼーションでは、例えば、オペレーティングシステム４１３の複数の部分が特定される。マッピングされる複数の要素は、複数のセキュリティルール４０８により決定されてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、複数の要素が電子デバイス４０１のメモリ内で１つの位置から他の位置へコピーされるときに、メモリマップ４０６内で複数の要素の動きを追跡するように設定されてよい。
【００９５】
図５は、複数のメモリマップの例示的な実施形態を説明する図である。一実施形態では、仮想メモリマップ５０２は、追跡される複数の要素の仮想メモリ内での位置を用いた、複数の要素のマッピングを含んでよい。別の実施形態において、物理メモリマップ５０４は、追跡される複数の要素の物理メモリ内での位置を介した複数の要素のマッピングを含んでよい。様々な実施形態において、仮想メモリマップ５０２及び物理メモリマップ５０４は、共にマッピングされてよく、これにより要素が両方のマッピング内で追跡され得る。
【００９６】
仮想メモリマップ５０２は、１０個の異なる仮想メモリページを反映してよい。仮想メモリマップ５０２は、例えば、ページディレクトリのようなカーネルオペレーティングシステムデータ構造がメモリページ１及びメモリページ２内に見つかり得ることを示してよい。他の例において、「Ｆｎｌ」と呼ばれる特定の処理、関数またはルーチンの複数の要素は、メモリページ４から６内に見つかり得る。さらに他の例において、システムサービスディスパッチテーブル「ＳＳＤＴ」に対するアクセス許可のための複数のデータ構造は、ページ８に見つかり得る。さらに他の例において、「Ｆｎ２」と呼ばれる特定の処理、関数またはルーチンの複数の要素は、メモリページ８及びメモリページ９に見つかり得る。
【００９７】
物理メモリマップ５０４は、物理メモリを用いて複数の要素の位置を反映してよい。物理メモリ内の複数の要素の複数の部分は、複数の非隣接のセグメントまたはブロックにおけるメモリ内に分散してよい。さらに、物理メモリ内の複数の要素の複数の部分は、任意の順序でメモリ内に分散してよい。セグメントそれぞれのサイズは変化してよい。セグメントは、ベースアドレスからオフセットされたアドレスから開始してよい。図５に示されたベースアドレスの例は００ｘ０００であり、アドレスＦＦｘＦＦＦで終了する。物理メモリの様々なセグメントのスタートを示す複数のアドレスは（Ａ）から（Ｏ）で示される。物理メモリの多数のセグメント内に含まれる複数の要素について、要素の順序が示されてよい。物理メモリにおいて、要素の多数のセグメントは、複数のポインタにより一緒にリンクされてよく、ここで、要素の１つのセグメントの最後は、要素の次のセグメントを指し示してよい。
【００９８】
例えば、Ｆｎｌは（Ａ）及び（Ｂ）、（Ｊ）及び（Ｋ）、並びに（Ｍ）及び（Ｎ）の間の複数のセグメントにマッピングされてよい。他の例において、ＳＳＤＴの複数のアクセス許可は、（Ｇ）及び（Ｈ）の間のセグメントにマッピングされてよい。さらに他の例において、ページディレクトリデータ構造は、（Ｏ）及びＦＦｘＦＦＦ、（Ｆ）及び（Ｇ）、並びに、（Ｉ）及び（Ｊ）の間の複数のセグメントにマッピングされてよい。さらに他の例において、Ｆｎ２は、（Ｈ）及び（Ｉ）、並びに、（Ｂ）及び（Ｃ）の間の複数のセグメントにマッピングされてよい。
【００９９】
図４に戻り、ビロウＯ／Ｓセキュリティエージェント４２０は、メモリのどの部分を保護するか、及び、それらをどのように保護するかを決定すべく、複数のセキュリティルール４０８を調べるように設定されてよい。例えば、複数のセキュリティルール４０８は、ページディレクトリデータ構造が電子デバイス４０１の複数の特定の特権エンティティにより書き込まれ得るだけであることを示すように設定されてよい。従って、ページディレクトリデータ構造への書き込みの試みはトラップされてよく、書き込みを試みている複数の要素は、それらが安全か、未知であるか、または安全でないことが知られているかを特定するべく検査されてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、ページディレクトリデータ構造がメモリ内のどこに配置されているかを特定するべく、メモリマップ４０６を調べるように設定されてよい。ビロウＯ／Ｓセキュリティエージェント４２０が例えば、仮想マシンモニタ内に完全にまたは一部実装されている場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、仮想メモリ４０４のメモリページ１及び／または２に対する任意の試行済みの書き込みをトラップする制御構造にフラグをセットするように設定されてよい。他の例において、ビロウＯ／Ｓセキュリティエージェント４２０がマイクロコード内に完全にまたは一部実装されている場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３のアドレス（Ｏ）及びＦＦｘＦＦＦ、（Ｆ）及び（Ｇ）、並びに、（Ｉ）及び（Ｊ）の間の複数のアドレスレンジ内のメモリアドレスに対する任意の試行済みの書き込みをトラップする制御構造にフラグをセットするように設定されてよい。
【０１００】
他の例において、複数のセキュリティルール４０８は、Ｆｎｌが電子デバイスの複数の特定の特権エンティティによって呼び出され得るだけであることを示すように設定されてよい。従って、Ｆｎｌを実行する複数の試みはトラップされてよく、Ｆｎｌを呼び出している複数の要素は、それらが安全か、未知であるか、または安全でないことが知られているかを特定するべく検査されてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、Ｆｎｌがメモリ内のどこに存在するかを特定するべく、メモリマップ４０６を調べるように設定されてよい。ビロウＯ／Ｓセキュリティエージェント４２０が例えば仮想マシンモニタ内に完全にまたは一部実装されている場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、仮想メモリ４０４のメモリページ４、５及び／または６の試行済みの実行をトラップする制御構造にフラグをセットするように設定されてよい。他の例において、ビロウＯ／Ｓセキュリティエージェント４２０がマイクロコード内に完全にまたは一部実装されている場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３のメモリアドレス（Ａ）の任意の試行済みの実行をトラップする制御構造内にフラグをセットするように設定されてよい。Ｆｎｌの複数の異なる部分が別々に実行され得るいくつかの場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３の（Ａ）及び（Ｂ）、（Ｍ）及び（Ｎ）の間の複数の範囲内の任意のメモリアドレス、複数のアドレス（Ｏ）及びＦＦｘＦＦＦ、（Ｆ）及び（Ｇ）、（Ｊ）及び（Ｋ）、または、（Ｉ）及び（Ｊ）の試行済みの実行をトラップするように設定されてよい。
【０１０１】
一実施形態では、ビロウＯ／Ｓセキュリティエージェント４２０は、どのエンティティがメモリへの書き込みを行う呼び出しを生成したかを特定するべくインＯ／Ｓセキュリティエージェント４１９に相談するように設定されてよく、このことは、次に、エンティティが書き込みを認証されているか否かを特定するために使用される。別の実施形態において、ビロウＯ／Ｓセキュリティエージェント４２０は、要求が出された仮想メモリ４０４のメモリページを特定し、メモリマップ４０６を調べることで、メモリマップ４０６にマッピングされた何らかの要素にそのようなメモリページが関連づけられているかを特定するように設定されてよい。さらに別の実施形態では、ビロウＯ／Ｓセキュリティエージェント４２０は、要求エレメントのメモリページのハッシュまたはシグネチャを特定し、それを既知の複数のエンティティの複数のハッシュ及び複数のシグネチャと比較するように設定されてよい。
【０１０２】
ビロウＯ／Ｓセキュリティエージェント４２０がマイクロコードによって完全にまたは一部実装されている場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、書き込みを試みた命令のアドレスを特定するように設定されてよい。一実施形態では、ビロウＯ／Ｓセキュリティエージェント４２０は、命令が物理メモリ４０３内のどこで生成されたかを判断する命令ポインタを検査することで、そのような特定を行うように設定されてよい。別の実施形態において、ビロウＯ／Ｓセキュリティエージェント４２０は、メモリマップ４０６にアクセスすることで、アドレスに関連付けられたメモリマップ４０６から要素を特定するように設定されてよい。さらに別の実施形態では、ビロウＯ／Ｓセキュリティエージェント４２０は、要求エレメントのハッシュまたはシグネチャを特定し、それを既知の複数のエンティティの複数のハッシュ及び複数のシグネチャと比較するように設定されてよい。
【０１０３】
いったんメモリの試行済みアクセスがトラップされると、ビロウＯ／Ｓセキュリティエージェント４２０は、特定された要求エンティティに基づいて、トラップされた試みをどのように処理するかを決定すべく、複数のセキュリティルール４０８にアクセスするように設定されてよい。複数のセキュリティルール４０８は、例えば、オペレーティングシステム４１３の或る特定の複数のカーネル部分だけがＦｎｌを呼び出して実行し得るか、或いは、安全であると知られ、かつホワイトリストに載っている複数のエンティティだけがＳＳＤＴの複数のアクセス許可に対して書き込み得る、ということを定義してよい。ビロウＯ／Ｓセキュリティエージェント４２０は、その結果、要求が進行することを許可する、要求を拒否する、応答または書き込み値のなりすましを行う、または、修正プロセスを実行するなどの任意の適切なアクションを行うよう構成されてよい。
【０１０４】
動作において、ビロウＯ／Ｓセキュリティエージェント４２０は、オペレーティングシステム４１３のような、電子デバイス４０１のオペレーティングシステムより下のレベルで動作していてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、電子デバイス４０１のどのメモリリソースを保護するかを決定するべく複数のセキュリティルール４０８にアクセスしてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、メモリマップ４０６のコンテンツを特定し、展開させ、及び／または、ポピュレートしてよい。そのようにするべく、ビロウＯ／Ｓセキュリティエージェント４２０は、複数のセキュリティルール４０８、プロテクションサーバ２０２、または、任意の他の適した情報のソースにアクセスすることで、メモリマップ４０６内に情報をポピュレートしてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、オペレーティングシステム４１３、アプリケーション４１０またはドライバ４１１のような、オペレーティングシステムのレベルの複数のエンティティからの、物理メモリ４０３または仮想メモリ４０４の複数の要求をインターセプトすることで、メモリの所有権及び複数のコンテンツをメモリマップ４０６にマッピングしてよい。ビロウＯ／Ｓセキュリティエージェント４２０は、メモリマップ４０６がポピュレートされ得るよう、インＯ／Ｓセキュリティエージェント４１９にアクセスすることで、どのエンティティがメモリに読み込まれているかを特定してよい。メモリマップ４０６は、物理メモリ４０３、仮想メモリ４０４、及び／または、その２つの間のメモリマッピングを含んでよい。
【０１０５】
ビロウＯ／Ｓセキュリティエージェント４２０は、仮想メモリ４０４及び／または物理メモリ４０３のどの部分を保護するかを決定するべく、複数のセキュリティルール４０８を調べてよい。複数のセキュリティルール４０８はメモリのいくつかの部分が動的ベースで保護されるべきであることを規定してよく、ここで、メモリの保護は、様々な考慮事項に依存してビロウＯ／Ｓセキュリティエージェント４２０によりイネーブルまたはディセーブルされてよい。そのような複数の考慮事項は、例えば、複数のアドミニストレータセッティング、悪意のあるまたは不審な挙動の検出、時間、以前に検出されたメモリの複数のアクセス、または任意の他の適した基準を含んでよい。電子デバイス４０１のメモリ保護が計算資源に関して費用がかかる場合には、そのような動的イネーブル及びディセーブルは、他の複数のタスクを実行するための電子デバイス４０１の機能についての複数の副次的影響を低減しつつ、ビロウＯ／Ｓセキュリティエージェント４２０が電子デバイス４０１のメモリの重大な複数の部分をより良好に保護することを可能にしてよい。例えば、オペレーティングシステム４１３のカーネルコードの複数のコンテンツを含むメモリは、ビロウＯ／Ｓセキュリティエージェント４２０によって常に保護されてよい。一方、サードパーティアプリケーション４１０のコードの複数のコンテンツを含むメモリは、マルウェアが存在することの兆候に際してのみ保護されるか、またはサードパーティアプリケーション４１０を感染させるかもしれない。
【０１０６】
ビロウＯ／Ｓセキュリティエージェント４２０は、物理メモリ４０３及び／または仮想メモリ４０４の試行済みアクセスをトラップするべく制御構造内にフラグをセットしてよい。一実施形態では、トラップされるよう指定された、仮想メモリ４０４内のメモリページに対する要求がオペレーティングシステム４１３内のエンティティから生成されるときに、ビロウＯ／Ｓセキュリティエージェント４２０は、試行済み要求をインターセプトしてよい。別の実施形態において、仮想メモリ４０４内のメモリページに対する要求が生成されるときに、ビロウＯ／Ｓセキュリティエージェントは、その要求がＭＭＵ４１４によって物理メモリ４０３内のアドレスに対する要求に変換されるよう許可してよく、そのときビロウＯ／Ｓセキュリティエージェントは試行済み要求をインターセプトしてよい。さらに別の実施形態では、オペレーティングシステム４１３内のエンティティからの要求が直接、物理メモリ４０３内のアドレスに対して生成され得るときに、ビロウＯ／Ｓセキュリティエージェント４２０は試行済み要求をインターセプトしてよい。
【０１０７】
いったん要求がインターセプトされると、ビロウＯ／Ｓセキュリティエージェント４２０は、インターセプトされた、メモリの要求を評価すべく、任意の適切なメカニズムを使用してよい。複数のセキュリティルール４０８は、試みが不審であり、電子デバイス４０１の複数のリソースを使用するマルウェアによる悪意ある試みを示しているかを特定するために用いられてよい。複数のセキュリティルール４０８は、例えば、読み取り、書き込みまたは実行が試みられていたか、どのエンティティが試みを生成したか、アクセスされたメモリアドレスまたはページ、同一の要求元による以前の複数の試みまたは複数のアクション、電子デバイス４０１のユーザに基づいて、事実上制限的である複数のルールのような、電子デバイス４０１の管理者による複数のセキュリティ設定、または、メモリ位置、及び／または、デジタル署名またはハッシュによって特定されるような、或いは、関係する複数のページまたは複数のメモリアドレス上で特定されるような要求元のＩＤなどの複数の考慮事項を含んでよい。
【０１０８】
例えば、仮想メモリ４０４のページ２の、または、物理メモリ４０３のアドレス（Ｊ）のページディレクトリデータ構造の試行済みの書き込みは、ビロウＯ／Ｓセキュリティエージェント４２０によってインターセプトされてよい。未知の処理のメモリの一部分から書き込みが送られてきた場合には、書き込みはビロウＯ／Ｓセキュリティエージェント４２０によって不審であると特定されてよい。しかしながら、オペレーティングシステム４１３のカーネルの、既知の検証された部分から試行済みの書き込みが送られてきた場合には、そのときは、試みは不審でないと特定されてよい。同様に、仮想メモリ４０４のページ８の、または物理メモリ４０３のアドレス（Ｈ）のＦｎ２の試行済みの実行は、インターセプトされてよい。試行済みの実行がユーザ入力から生成された場合には、そのときは、実行は不審でないと特定されてよい。試行済みの実行が他のプログラムのメモリから生成され、かつ、許可されたリストにプログラムが載っていない場合には、そのときは、試みは、悪意のあるものと特定されてよい。
【０１０９】
他の例において、インターオペラビリティを目的として通常、他の複数のアプリケーションにキャッシュを曝すウェブブラウザがＦｎｌである場合には、ビロウＯ／Ｓセキュリティエージェント４２０は、Ｆｎｌの複数のメモリページまたは複数のメモリアドレスの特定の部分が他の複数のアプリケーションによって読み取られることを許可してよい。しかしながら、非公開であるべきメタデータ、または他の情報をＦｎｌが含む場合には、そのときは、ビロウＯ／Ｓセキュリティエージェント４２０は、Ｆｎｌの複数のメモリページまたは複数のメモリアドレスのこれらの部分を、Ｆｎｌ自身とは異なる全ての処理によって読み取られることから保護してよい。
【０１１０】
いったんプログラムが不審なものであるか、悪意のあるものであるか、さもなければマルウェアを示すものであると特定されると、次にビロウＯ／Ｓセキュリティエージェント４２０は、任意の適切な修正アクションを取り得る。ビロウＯ／Ｓセキュリティエージェント４２０は、例えば、仮想メモリ４０４のメモリページ２、または物理メモリ４０３のアドレス（Ｊ）への書き込み要求を拒否してよく、さらに、値が書き込まれたことを示す結果を戻してよい。要求を生成する処理は、電子デバイス４０１の複数のリソースにアクセスする追加の複数の試みのために監視されてよく、ストップされてよく、或いは、電子デバイス４０１から除かれてよい。他の例において、仮想メモリ４０４のページ８の、または物理メモリ４０３のアドレス（Ｈ）の試行済みの実行は、代わりに、ハニーポットプロセスまたはクリーンアッププロセスの実行を対象としてよい。
【０１１１】
ビロウＯ／Ｓセキュリティエージェント４２０によって保護されたメモリの複数のコンテンツは、マルウェアによって攻撃され得るデータ、コード、または任意の他の有用な複数のシステムリソースを含んでよい。ビロウＯ／Ｓセキュリティエージェント４２０は、例えば、読み取り、書き込みを試みるマルウェア、または、電子デバイス４０１上で動作している複数の処理を示す複数のフックメカニズムからメモリの複数のコンテンツを保護してよく、これらはメモリに読み込まれた複数のアプリケーションの複数の部分に自身のコードを注入し、または、仮想メモリ４０４に対する複数のマッピングテーブルのアクセス許可及びアクセスフラグを変化させる。オペレーティングシステム４１３より下のレベルで動作することで、ビロウＯ／Ｓセキュリティエージェント４２０は、マルウェアがオペレーティングシステム４１３内のカーネルモードレベルで動作することを防いでよい。ビロウＯ／Ｓセキュリティエージェント４２０はゼロデイ検出を実現してよく、いくつかのケースで見られるように、要求エンティティのＩＤが以前に、悪意があるとして特定されているという知識を必要としないかもしれず、エンティティが未知であるという事実は、電子デバイス４０１のメモリのいくつかの部分へのアクセスを拒否するために使用されるかもしれない。オペレーティングシステム４１３または、オペレーティングシステム４１３内で動作しているアンチウィルス若しくはアンチマルウェアの手段が完全に不正アクセスされている場合には、オペレーティングシステムのレベルで動作している複数のエンティティからメモリが完全にロックされてよい。
【０１１２】
ビロウＯ／Ｓセキュリティエージェント４２０の１つのアプリケーションは、特定のメモリページの複数のアクセス許可への変更を検出することによって、特定の複数のコンテンツの読み取り、書き込みまたは実行が試みられる前であっても、仮想メモリ４０４の複数のコンテンツの試行済みアクセスを検知すべきであってよい。ＭＭＵ４１４によって使用される複数のメモリテーブルは、メモリに、仮想メモリ４０４自体のページに、及び／または、物理メモリ４０３のアドレスに常駐であってよい。例えば、処理のコードサブセクションの複数のアクセス許可を「読み取り」から「書き込み」へ変更すべくメモリテーブルの複数の値を変更する試みは、それ自体がビロウＯ／Ｓセキュリティエージェント４２０によってトラップされてよい。仮想メモリ４０４のメモリページまたは物理メモリ４０３のアドレスはビロウＯ／Ｓセキュリティエージェント４２０によって保護されてよく、そのような位置における複数のアクセス許可に対して新しい値を書き込むためのトラップされた試みに際して、ビロウＯ／Ｓセキュリティエージェント４２０は、試みの要求元がそのような変更を行うことを許可されているかを特定してよい。例えば、処理のコードサブセクションのアクセス許可を変更する要求が異なるプロセスから生じた場合には、アクセス許可の試行済みの変更は拒否されてよい。
【０１１３】
図６は電子デバイスの、試行済みアクセスのビロウ‐オペレーティングシステムトラップを用いてメモリ保護する方法６００の例示的な実施形態を示す図である。ステップ６０５において、電子デバイスの仮想または物理メモリは、メモリの複数のコンテンツのＩＤまたは所有者を特定するべく、マッピングされてよい。メモリをマッピングする目的で、例えば、プロテクションサーバはアクセスされてよく、メモリの読み取り、書き込み及び実行が追跡されてよく、及び／または、メモリの複数のコンテンツがスキャンされ、複数のコンテンツに対する複数のシグネチャが生成されてよい。
【０１１４】
ステップ６１０において複数のセキュリティルールがアクセスされてよく、これにより、ステップ６１５において保護される物理メモリの複数のアドレスまたは仮想メモリの複数のページが特定される。保護されるメモリは、例えば、複数のセキュリティルール、電子デバイスのユーザ、マルウェアの兆候のような、電子デバイスにおける他の観察される挙動、安全なメモリにアクセスする以前の複数の試み、またはアドミニストレータセッティングに依存してよい。電子デバイスの動作条件が変化し得るので、保護されるメモリは動的に変化してよい。複数のセキュリティルールは、保護される電子デバイスの複数のエンティティを規定してよく、複数のエンティティの物理または仮想メモリ内の位置は、メモリマップにアクセスすることで特定されてよい。
【０１１５】
ステップ６２０において、複数のセキュリティルールの複数の要件に従ってメモリの試行済みアクセスをトラップすべく、制御構造に複数のフラグが設定されてよい。そのような複数のフラグは、仮想メモリの複数のページ、及び／または、物理メモリの複数のアドレスに対して設定されてよい。複数のフラグは、フラグを付けるべきアクセス方法の種類（例えば、読み取り、書き込みまたは実行）だけでなく、保護されるべきメモリの指示を含んでよい。ステップ６２５において、安全なメモリへのアクセスは、指定タイプの試行済みアクセスが指定アドレスまたはページに対して生成されたかを見るべく、監視されてよい。ステップ６３０において、メモリにアクセスする試みがトラップされたかが特定されてよい。そうでない場合には、次にステップ６３５において、保護されるメモリの複数のフラグが変更を要求するかが特定されてよい。そうである場合には、次に方法６００はステップ６１０に戻り、複数のセキュリティルールにアクセスすることで、メモリへのアクセスをガードする複数のフラグを更新する。そうでない場合には、次に方法６００はステップ６２５に戻り、安全なメモリの試行済みアクセスを監視する。
【０１１６】
メモリへのアクセスの試みがトラップされると、そのときは最初に、ステップ６４０においてトラップされた試みが評価されてよい。試みを評価すべく、メモリマップが調べられることで、どこで要求が生成されたか特定され、要求元が特定されてよい。書き込まれるデータの複数の値は、それらのコンテンツに対して特定され評価されてよい。試みの性質‐読み取り、書き込みまたは実行‐が考慮に入れられてよい。これらの例の考慮は、複数のセキュリティルールと合わせて使用されてよく、これにより、ステップ６４５において試行済みアクセスがマルウェアを示すか否かを特定する。試行済みアクセスがマルウェアを示す場合には、次にステップ６５０において修正アクションがとられてよい。そのような修正アクションは、要求されたアクセスを拒否すること、なりすまされた値を戻すこと、またはハニーポットまたは修正プロセスを開始することを含んでよい。試行済みアクセスがマルウェアを示さない場合には、次にステップ６５５において要求が許可されてよい。電子デバイスのメモリの保護を継続する要求に従って、方法６００はステップ６２５に戻ってよい。
【０１１７】
図７は、リアルタイムモジュールプロテクションのためのシステム４００の例示的な動作の説明図である。保護は、メモリ内の複数のモジュールを保護すべくソフトウェアアクセスを規制することを含んでよい。そのような規制及び保護は、電子デバイス４０１上でビロウ‐オペレーティングシステムトラップを使用して実行されてよい。メモリ内の複数のモジュールは、特定されたエンティティのどの部分が安全なリソースの試行済みアクセスを生成したかを評価することで保護されてよい。そのような部分は、特定されたエンティティのサブセクションを含んでよい。そのようなサブセクションは、特定されたエンティティの、他の特定されたサブセクションとは種類が異なるとして特定されてよい。一実施形態では、試みがそのようなエンティティのヘッダ、データまたはコードサブセクションを起源とするかが評価されてよい。他の実施形態では、エンティティの任意の適切なサブセクションに基づいて、試みを生成するエンティティの選択的評価が生成されてよい。さらに、特定されたモジュールの特定の部分を選択的に保護することで、メモリ内の複数のモジュールが保護されてよい。一実施形態では、モジュールのヘッダ、データまたはコードサブセクション上で試みが生成されているかが評価されてよい。他の実施形態では、モジュールの任意の適切なサブセクションの選択的評価が生成されてよい。
【０１１８】
システム４００の保護リソースの試行済みアクセスは、ビロウＯ／Ｓセキュリティエージェント４１９によってインターセプトされてよい。アクセスは、仮想メモリ４０４または物理メモリ４０３の、保護された複数の部分を含む、システム４００の任意の適切な複数の部分のアクセスであってよい。さらに、アクセスは、アプリケーション４１０またはドライバ４１１を含む、システム４００のいずれの部分からのアクセスであってよい。
【０１１９】
試行済みアクセスを生成しているエンティティのマルウェア状態を特定するいくつかの方法、例えば、ディスク上に存在するときのエンティティのシグネチャを評価することによる方法、または、既知の安全な複数のエンティティからなるホワイトリストにエンティティが載っているかを特定することによる方法などは、不十分であるかもしれない。さもなければ、ホワイトリスト上のエンティティは、システム１００の安全な複数の部分に対してアクセスするエンティティによる複数の試みを、ビロウＯ／Ｓセキュリティエージェント４２０及びインＯ／Ｓセキュリティエージェント４１９のような複数のセキュリティエージェントに無視させる。しかしながら、マルウェアは、要求を生成するエンティティを変形し、その結果、知覚されずに動作するかもしれない。そのような変形は、エンティティのシグネチャまたは他のＩＤが不変であり得るようなものであるかもしれない。加えて、包括的で正確なメモリマップ４０６の生成は、難しく、非現実的で、リソースインテンシブであるかもしれない。特定のアドレスからの試みが与えられたとしても、試みを生み出しているオーバーオールエンティティをトレースすることは実現可能ではないかもしれない。オーバーオールエンティティのトレースは、アンチマルウェアシグネチャを適用するのに必要であるかもしれない。さらに、そのようなエンティティは、システムメモリに常駐であってよく、アンチマルウェアシグネチャを適用するストレージに存在するときのエンティティの追加トレースを必要とする。この追加トレースの特定は実現可能ではないかもしれない。システム４００は、試みを生成しているエンティティの特定の部分を特定することで、保護リソースを保護し、試みを生成している特定の部分のＩＤに基づいて試行済みアクセスを評価してよい。
【０１２０】
さらに、システム４００のモジュールまたは他のリソースを保護するかを決定するいくつかの方法は、不十分であるかもしれない。モジュールは、システム４００上で悪意のある動作を実現すべくマルウェアによりモジュールが操作され、変更され、さもなければアクセスされ得るという点で、マルウェアに屈従するかもしれない。従って、モジュールは、モジュールへのアクセスを制限することで保護されてよい。しかしながら、モジュールは、オープンであり、拡張可能であり、かつ、システム４００上の他の複数のエンティティに対してアクセス可能であってよく、編集されるよう構成されてよい。結果として、モジュールへの全てのアクセスを拒否することはできない。さらに、モジュールは、単なる既知のまたは信頼されたエンティティではなく、システム４００の全種類のエンティティによってアクセス可能であるように設定されてよい。例えば、モジュールは、システム４００上の任意の適切なエンティティによって書き込まれるよう構成されたデータサブセクションを有するドライバを含んでよい。システム４００は、モジュールの異なるサブセクションに対し異なる保護を選択的に適用することでモジュールを保護してよい。システム４００は、アクセスされているモジュールの特定のサブセクションを特定し、アクセスされている特定の部分のＩＤに基づいて試行済みアクセスを評価してよい。
【０１２１】
システム４００における複数のエンティティ及び複数のモジュールは、アプリケーション４１０、ドライバ４１１のような、複数のドライバ、複数の実行ファイル及び他の複数のアプリケーションを含んでよいし、仮想メモリ４０４または物理メモリ４０３の複数の部分内に常駐であってよい。そのような複数のエンティティ及び複数のモジュールが実行を目的としてストレージからシステムメモリに読み込まれるときに、複数のエンティティ及び複数のモジュールは、複数の異なるサブセクションに分割されてよい。
【０１２２】
一実施形態では、システム４００内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐しているときには、それらはヘッダサブセクションを含んでよい。そのようなヘッダサブセクションは、例えば、エンティティまたはモジュールの他のサブセクションへの複数のリンク、複数の入力及び複数の出力の複数の定義、複数のアプリケーションプログラミングインタフェース及び複数の機能の複数の定義、並びに、ストレージ内に常駐であるときのエンティティまたはモジュールへの複数のリンクを含んでよい。ヘッダサブセクション自体は、複数のメモリページまたは複数のメモリ範囲にまたがって分割されてよい。
【０１２３】
別の実施形態において、システム４００内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐であるときには、それらはコードサブセクションを含んでよい。そのようなコードサブセクションは、エンティティまたはモジュールの複数の機能を目的としたロジック、コードまたは複数の命令を含んでよく、これらはエンティティまたはモジュールの複数の動作を実現するべく実行される。コードサブセクションは、固定サイズであってよく、または、固定の複数のコンテンツを含んでよい。コードサブセクション自体は、複数のメモリページまたは複数のメモリ範囲にまたがって分割されてよい。
【０１２４】
さらに別の実施形態では、システム４００内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐であるときには、それらはデータサブセクションを含んでよい。そのようなデータサブセクションは、エンティティまたはモジュールの複数の機能及び実行において使用される複数のデータ構造及び他の複数の情報コンテンツを含んでよい。エンティティまたはモジュールの動作が進行し、要求されるサイズが増大または収縮するときには、データは可変サイズであってよい。さらに、他の複数のエンティティまたは複数のモジュールは、データサブセクションに対して書き込み可能であってよい。
【０１２５】
複数の安全なリソースにアクセスする複数の試みは、ソースメモリ７５０で生成されてよい。複数の要素がシステムメモリ内に常駐であるときには、ソースメモリ７５０は、仮想メモリ４０４または物理メモリ４０３のようなシステムメモリの任意の組み合わせのビューを含んでよい。そのような複数の要素は、複数のモジュール、複数のドライバ、複数のアプリケーションまたは任意の他の適したエンティティを含んでよい。ソースメモリ７５０は、所定エンティティのサブセクションに対する全てのメモリページまたはメモリアドレス範囲が一緒に表示されるような、メモリマップ４０６の修正ビューを含んでよい。従って、ソースメモリ７５０内の複数の部分（Ａ）、（Ｂ）、（Ｃ）及び（Ｄ）の出現は、複数の部分（Ａ）、（Ｂ）、（Ｃ）及び（Ｄ）がそのような順序で実際に存在していることを示さないかもしれない。さらに、複数の部分（Ａ）、（Ｂ）、（Ｃ）及び（Ｄ）のそれぞれは、仮想化された実際のメモリ４０４または物理メモリ４０３内で隣接して存在していない複数の要素を含むかもしれない。これらの複数の部分は、例示の目的で、全体の部分が隣接しているように示されている。
【０１２６】
図７の例において、ソースメモリ７５０は、システム４００のシステムメモリ内にドライバ１が常駐であることを示してよい。ドライバ１は例示の目的でソースメモリ７５０の複数の部分（Ａ）、（Ｂ）及び（Ｃ）にわたって隣接するように示されているが、ドライバ１は、１または複数の不連続なメモリページまたはアドレスレンジ内に常駐であってよい。ドライバ１は実行を目的としてストレージからシステムメモリに読み込まれていてよい。ドライバ１は、１または複数のサブセクションを含んでよい。ドライバ１は、任意の適した数及びタイプのサブセクションを含んでよい。一実施形態では、ドライバ１は部分（Ａ）内にヘッダサブセクションを含んでよい。別の実施形態において、ドライバ１は部分（Ｂ）にコードサブセクションを含んでよい。さらに別の実施形態では、ドライバ１は部分（Ｃ）にデータサブセクションを含んでよい。さらに、ソースメモリ７５０は部分（Ｄ）に示されるように、任意の数の他のエンティティまたはその複数の部分を含んでよい。
【０１２７】
安全なリソースシステム４００は、アクセスされたメモリ７５４内に表された複数のリソースを含んでよい。そのような複数のリソースは、複数のモジュール、複数のドライバ、または他の適した複数の敏感なリソースを含んでよい。アクセスされたメモリ７５４は、仮想メモリ４０４または物理メモリ４０３のようなシステムメモリの任意の組み合わせのビューを含んでよい。アクセスされたメモリ７５４は、所定のリソースの複数のサブセクションに対する全てのメモリページまたはメモリアドレス範囲が一緒に表示されるような、メモリマップ４０６の修正ビューを含んでよい。従って、アクセスされたメモリ７５４内の複数の部分（Ｅ）、（Ｆ）、（Ｇ）及び（Ｈ）の出現は、複数の部分（Ｅ）、（Ｆ）、（Ｇ）及び（Ｈ）がそのような順序で実際に存在していることを示さないかもしれない。さらに、複数の部分（Ｅ）、（Ｆ）、（Ｇ）及び（Ｈ）のそれぞれは、仮想化された実際のメモリ４０４または物理メモリ４０３内で隣接して存在していない複数の要素を含むかもしれない。これらの複数の部分は、例示の目的で、全体の部分が隣接しているように示されている。
【０１２８】
図７の例において、アクセスされたメモリ７５４は、システム４００のシステムメモリ内にドライバ２が常駐であることを示してよい。ドライバ２は例示の目的で、アクセスされたメモリ７５４の複数の部分（Ｅ）、（Ｆ）及び（Ｇ）にわたって隣接するように示されているが、ドライバ２は、１または複数の不連続なメモリページまたはアドレスレンジ内に常駐であってよい。ドライバ２は実行を目的としてストレージからシステムメモリに読み込まれていてよい。ドライバ２は、１または複数のサブセクションを含んでよい。ドライバ２は、任意の適した数及びタイプのサブセクションを含んでよい。一実施形態では、ドライバ２は部分（Ｅ）内にヘッダサブセクションを含んでよい。別の実施形態において、ドライバ２は部分（Ｆ）にコードサブセクションを含んでよい。さらに別の実施形態では、ドライバ２は部分（Ｇ）にデータサブセクションを含んでよい。さらに、アクセスされたメモリ７５４は部分（Ｈ）に示されるように、任意の数の他のリソースまたはその複数の部分を含んでよい。
【０１２９】
一実施形態では、複数の安全なリソースへのアクセスを試みている、システム４００の複数のエンティティは、そのような複数の試みをソースメモリ７５０内に表された複数のメモリ位置から発生させてよい。別の実施形態において、複数の安全なリソースへのアクセスを試みている、システム４００の複数のエンティティは、アクセスされたメモリ７５４内に表されているような複数のメモリ位置にそれらのエンティティが常駐であるときには、そのような複数の安全なリソースへのアクセスを試みてもよい。ビロウＯ／Ｓセキュリティエージェント４２０及びインＯ／Ｓセキュリティエージェント４１９を含むシステム４００は、アクセスされたメモリ７５４内に表されている複数のリソースを保護するよう動作してよい。そのような動作は、上で詳述したように、図１から図６と合わせて一部、説明され得る。
【０１３０】
ビロウＯ／Ｓセキュリティエージェント４２０は、アクセスされたメモリ７５４内に示される複数の安全なリソースの試行済みアクセスをトラップしてよい。アクセスされたメモリ７５４内の、アクセスされた所定のリソースについて、ビロウＯ／Ｓセキュリティエージェント４２０は、リソースのどのサブセクションを試みが対象としたかを特定してよい。例えば、ビロウＯ／Ｓセキュリティエージェント４２０は、単にドライバ２のモジュールの一部分にアクセスすべく試みが生成されたことではなく、部分（Ｄ）のドライバヘッダサブセクション、部分（Ｅ）のドライバコードサブセクション、または、部分（Ｆ）のドライバデータサブセクションにアクセスすべく試みが生成されたことを具体的に特定してよい。ビロウＯ／Ｓセキュリティエージェント４２０は、そのような特定を行うべく、メモリマップ４０６を利用してよい。
【０１３１】
安全なリソースのどのサブセクションがアクセスされたかの判断と、安全なリソースのＩＤに基づき、ビロウＯ／Ｓセキュリティエージェント４２０はどのようなアクションを行うかを決定してよい。与えられた試みに基づいて、任意の適切なアクションが行われてよい。一実施形態では、安全なリソースの特定のサブセクションにアクセスする試みは、概して予期することができ、その結果、試みは許可され得る。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを許可してよい。追加のチェック、スキャン、または、インＯ／Ｓセキュリティエージェント４１９若しくはプロテクションサーバ２０２への情報送信のような他の複数のアクションの実行に関するオーバヘッドまたは処理の犠牲は禁制的であってよく、ここでビロウＯ／Ｓセキュリティエージェント４２０は多くの試みをトラップして評価する。例えば、部分（Ｇ）のドライバ２のデータサブセクションに対する書き込みの試みは、概して予期することができ、マルウェアの兆候ではないかもしれない。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、さらなる評価を目的としてインＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に試みについての情報をパスすることなく、部分（Ｇ）に対する書き込みまたは読み取りの試みを許可してよい。
【０１３２】
別の実施形態において、サブセクションに対する読み取りまたは書き込みの複数の試みは、システム４００上で通常の挙動をするエンティティには予想されないかもしれないので、安全なリソースの特定のサブセクションへのアクセスの試みは概して不審とみなされ得る。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを拒否してよい。追加のチェック、スキャンまたは他の複数のアクションの同期的な実行のオーバヘッドまたは処理の犠牲は、不経済であるかもしれない。例えば、ドライバ２のコードサブセクションへの書き込みの試みは、概して不審とみなされ、マルウェアの兆候であり得る。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、インＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に試みについての情報を同期的にパスすることなく、部分（Ｆ）への書き込みの試みを拒否してよい。しかしながら、ビロウＯ／Ｓセキュリティエージェント４２０は、さらなる評価を目的として、インＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に、試みについての情報を非同期的にパスしてよい。ここで、ビロウＯ／Ｓセキュリティエージェント４２０は、修正アクションを実行する前に返信を待たない。
【０１３３】
さらに別の実施形態では、安全なリソースの特定のサブセクションへのアクセスの試みが悪意のあるものであるか、安全なものであるかは知られていないかもしれない。そのような実施形態では、試みは、デフォルトで許可されるか、デフォルトで拒否されるか、または、デフォルトで追加プロセスを要求してよい。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、デフォルトの拒否または許可を実行してよい。デフォルトの追加処理を実行すべく、ビロウＯ／Ｓセキュリティエージェント４２０は、試みに関する追加情報またはスキャンを目的として、システム４００の複数の部分にクエリを行ってよい。クエリは、シグネチャの比較またはエンティティのスキャンを含んでよく、これは、全体として、試みを生成すること、試みの複数のコンテンツを解析すること、試みについてヒューリスティック解析を行うこと、または、任意の他の適したアンチマルウェア技術である。クエリは、プロテクションサーバ２０２のエンティティ、インＯ／Ｓセキュリティエージェント４１９またはビロウＯ／Ｓセキュリティエージェント４２０自身のエンティティのような、任意の適切なエンティティに対して生成されてよい。ビロウＯ／Ｓセキュリティエージェント４２０による追加の解析は、複数のセキュリティルール４０８内の複数の追加ルールにアクセスすることで生成されてよい。インＯ／Ｓセキュリティエージェント４１９による追加の解析は、複数のセキュリティルール４２１内の複数のルールにアクセスすることで生成されてよい。複数のセキュリティルール、複数のアンチマルウェアリサーチャにより生成された複数のセッティングにアクセスすることで、または、試みを報告する、他の複数のシステムからの複数の報告を比較することで、保護サーバ２０２による追加の解析が行われてよい。例えば、ドライバ２のヘッダサブセクションへのアクセスの試みは、試みを生成しているエンティティのような他の複数の要因に依存して、安全なものであるか、悪意のあるものであってよい。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、部分（Ｇ）にアクセスする複数の試みに対して複数の追加的クエリを行ってよい。そのような複数のクエリは、同期的にまたは非同期的に行われてよい。
【０１３４】
さらに、行うアクションの決定には、試みを生成しているエンティティの考慮事項、または、試みのタイプが含まれてよい。例えば、試みを生成しているエンティティは、悪意のあるものとして既知であるかもしれない。このように、デフォルトのアクセスを許可する他のルールは、既知の悪意のあるエンティティからの試みが拒否されることを規定してよい。他の例において、試行済みの読み出しである複数の試みは、複数の試行済みの書き込みとは異なるように扱われてよい。読み取りは、マルウェアに関連する可能性が低いか、または、少なくともそれ自体が悪意のあるものである可能性が低いかもしれず、その結果、デフォルトで許可されるかもしれない。ここで、同一サブセクションの書き込みは拒否されるかもしれない。たとえ悪意のあるエンティティによるものであっても、そのような読み取りの許可は、システム４００による検出を加速し得る。
【０１３５】
複数のセキュリティルール４０８は、さまざまな特定された、安全なリソースの様々なサブセクションの試行済みアクセスをどのように処理するかをビロウＯ／Ｓセキュリティエージェント４２０に示す複数のルールを含んでよい。複数のセキュリティルール４０８は、所定の安全なリソースまたは複数のリソースのクラスに対するルールのセットを含んでよい。結果として、複数の異なる安全なリソースの同等のサブセクションの試行済みアクセスに対し、異なる複数のルールが適用されてよい。例えば、第１ドライバのデータサブセクションの複数の試行済みの書き込みは許可されてよいが、第２ドライバのデータサブセクションの複数の試行済みの書き込みは、試みを生成しているエンティティが安全なリソースに関連するかを見るべく追加のチェックを要求してよい。図７の例において、複数のセキュリティルール４０８は、追加的クエリを生成することでドライバ２のヘッダサブセクション（部分（Ｅ））のアクセスが処理され得ることを定義するルールを含んでよい。他の例において、複数のセキュリティルール４０８は、ドライバ２のコードサブセクション（部分（Ｆ））に対する読み取りの複数の試みが許可されてよいことを定義するルールを含んでよい。そのような複数の試みは、ドライバ２の複数の機能を実行する、システム４００の他の複数のエンティティによる通常の処理を反映してよい。さらに他の例において、複数のセキュリティルール４０８は、ドライバ２のコードサブセクション（部分（Ｆ））に対する書き込みが拒否されてよいことを定義するルールを含んでよい。さらに他の例において、複数のセキュリティルール４０８は、悪意のあるものと知られていないソースに由来する、ドライバ２のデータサブセクション（部分（Ｇ））の試行済みアクセスが許可されてよいことを定義するルールを含んでよい。複数のセキュリティルール４０８は、部分（Ｈ）における複数のエンティティのような他の複数のエンティティの試行済みアクセスが不図示の複数のセキュリティルールによって処理されてよい、或いは、追加プロセスに対するクエリを引き起こすことによって処理されてよいことを定義するルールを含んでよい。
【０１３６】
ビロウＯ／Ｓセキュリティエージェント４２０は、複数の安全なリソースの試行済みアクセスを、ソースメモリ７５０内に示されたエンティティによってトラップしてよい。試みを生成しているソースメモリ７５０内のエンティティに対し、ビロウＯ／Ｓセキュリティエージェント４２０は、エンティティのいずれのサブセクションから試みが発生しているかを特定してよい。例えば、ビロウＯ／Ｓセキュリティエージェント４２０は、単に、安全なリソースにアクセスすべくドライバ１によって試みが生成されたことではなく、部分（Ａ）のドライバ１のヘッダサブセクション、部分（Ｂ）のドライバ１のコードサブセクション、または部分（Ｃ）のドライバ１のデータサブセクションから試みが生成されたことを具体的に特定してよい。ビロウＯ／Ｓセキュリティエージェント４２０は、そのような特定を行うべく、メモリマップ４０６を利用してよい。
【０１３７】
エンティティのどのサブセクションがそのような試みを生成したかの判断と、エンティティのＩＤに基づき、ビロウＯ／Ｓセキュリティエージェント４２０はどのようなアクションを行うかを決定してよい。与えられた試みに基づいて、任意の適切なアクションが行われてよい。一実施形態では、エンティティの特定のサブセクションから安全なリソースにアクセスする試みは、概して予期することができ、その結果、試みは許可され得る。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを許可してよい。追加のチェック、スキャン、または、インＯ／Ｓセキュリティエージェント４１９若しくはプロテクションサーバ２０２への情報送信のような他の複数のアクションの実行に関するオーバヘッドまたは処理の犠牲は禁制的であってよく、ここでビロウＯ／Ｓセキュリティエージェント４２０は多くの試みをトラップして評価する。例えば、部分（Ｂ）のドライバ１のコードサブセクションからの試みは、概して予期することができ、マルウェアの兆候ではないかもしれない。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、さらなる評価を目的としてインＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に試みについての情報をパスすることなく、ドライバ１のコードサブセクション（部分（Ｂ））からの試みを許可してよい。
【０１３８】
別の実施形態において、エンティティの特定のサブセクションから複数の安全なリソースにアクセスする試みは概して不審とみなされ得る。これは、そのような試みは、システム４００上で通常の挙動をするエンティティには予想されないかもしれないためである。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを拒否してよい。追加のチェック、スキャンまたは他の複数のアクションの同期的な実行のオーバヘッドまたは処理の犠牲は、不経済であるかもしれない。例えば、ドライバ１のデータサブセクションから安全なリソースにアクセスする試みは、概して不審とみなされ、マルウェアの兆候であり得る。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、インＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に試みについての情報を同期的にパスすることなく、ドライバ１のコードサブセクション（部分（Ｃ））から安全なリソースにアクセスする試みを拒否してよい。しかしながら、ビロウＯ／Ｓセキュリティエージェント４２０は、さらなる評価を目的として、インＯ／Ｓセキュリティエージェント４１９またはプロテクションサーバ２０２に、試みについての情報を非同期的にパスしてよい。ここで、ビロウＯ／Ｓセキュリティエージェント４２０は、修正アクションを実行する前に返信を待たない。
【０１３９】
さらに別の実施形態では、安全なリソースの特定のサブセクションから複数の安全なリソースへのアクセスの試みが悪意のあるものであるか、安全なものであるかは知られていないかもしれない。そのような実施形態では、試みは、デフォルトで許可されるか、デフォルトで拒否されるか、または、デフォルトで追加プロセスを要求してよい。ビロウＯ／Ｓセキュリティエージェント４２０は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、デフォルトの拒否または許可を実行してよい。デフォルトの追加処理を実行すべく、ビロウＯ／Ｓセキュリティエージェント４２０は、試みに関する追加情報またはスキャンを目的として、システム４００の複数の部分にクエリを行ってよい。例えば、ドライバ１のヘッダサブセクションから安全なリソースにアクセスする試みは、安全なリソースまたはエンティティの予期される挙動のような他の複数の要素に依存して、安全なものであるかもしれないし、悪意のあるものであるかもしれない。従って、ビロウＯ／Ｓセキュリティエージェント４２０は、ドライバ１のヘッダサブセクション（部分（Ａ））に由来する複数の試みに対して複数の追加的クエリを行ってよい。そのような複数のクエリは、同期的にまたは非同期的に行われてよい。
【０１４０】
さらに、行うアクションの決定には、他の考慮事項が含まれてよい。例えば、試みを生成しているエンティティは、悪意のあるものとして既知であり、かつ、ブラックリストに載っているかもしれない。そのような例において、エンティティが全体として悪意のあるものであるという特定は、サブセクション特有の複数のルールを無効にしてよい。他の例において、試みを生成するエンティティは、安全であると知られており、複数のセキュリティルール４０８内でのドライバ１の出現のような、ホワイトリストに載っていてよい。そのような例において、複数のセキュリティルール４０８は、部分（Ａ）及び（Ｂ）に示されるドライバ１のヘッダ及びコードサブセクションからのデフォルトのアクセスを許可する複数のルールを含んでよい。それにもかかわらず、たとえドライバ１が複数のセキュリティルール４０８のホワイトリスト内に含まれ得るとしても、部分（Ｃ）に示されるドライバ１のデータサブセクションに由来する試みは、不審なもの、または、悪意のあるものであり得る。ホワイトリストと、観察された複数のアクションとの間のそのような不一致は、不正確なホワイトリストから生じるかもしれないし、また、追加の検証または報告を要求するかもしれない。このように、たとえドライバ１が複数のセキュリティルール４０８のホワイトリスト内に含まれ得るとしても、セキュリティルール４０８は、ホワイトリストを無効にし、かつ、部分（Ｃ）に示されるドライバ１のデータサブセクションに由来する試みがデフォルトで拒否されるべきであること、或いはクエリの生成を引き起こすべきであることを示すルールを含んでよい。
【０１４１】
複数のセキュリティルール４０８は、所定エンティティのさまざまなサブセクションによって安全なリソースの試行済みアクセスをどのように処理するかをビロウＯ／Ｓセキュリティエージェント４２０に示す複数のルールを含んでよい。例えば、複数のセキュリティルール４０８は、ドライバ１のヘッダサブセクション（部分（Ａ））に由来するアクセスが追加的クエリを行うことで処理されてよいことを定義するルールを含んでよい。他の例において、複数のセキュリティルール４０８は、ドライバ１のコードサブセクション（部分（Ｂ））に由来するアクセスがデフォルトで許可されてよいことを定義するルールを含んでよい。そのような複数の試みは、ドライバ１の通常の処理を反映することで、その複数の機能を実行してよい。そのようなルールは、所定の複数の安全なリソースのアクセスを定義する他の複数のルール、例えば特定の複数のエンティティだけがそのようなアクセスの生成を許可されることの要件を前提にしてよい。さらに他の例において、複数のセキュリティルール４０８は、ドライバ１のデータサブセクション（部分（Ｃ））に由来する試行済みアクセスが拒否されてよいことを定義するルールを含んでよい。複数のセキュリティルール４０８は、部分（Ｄ）内のエンティティのような他の複数のエンティティによる試行済みアクセスが複数の不図示のセキュリティルールによって処理されてよいか、或いは追加プロセスに対するクエリを引き起こすことで処理されてよいことを定義するルールを含んでよい。
【０１４２】
安全なリソースの試行済みアクセスを生成しているエンティティの正確なサブセクションの特定は、難しいかもしれない。包括的な、または完全に正確なメモリマップ４０６は、利用可能でないか、現実的でない。安全なリソースの試行済みアクセスの特定のサブセクションを特定すべく、ビロウＯ／Ｓセキュリティエージェント４１６は、安全なリソースの試行済みアクセスを引き起こした、命令ポインタアドレスを含む範囲の対応バイト列を特定するように設定されてよい。さらなる実施形態において、そのようなバイト列は、少なくとも特定のバイト数、２＊Ｎを含んでよい。他のさらなる実施形態において、そのようなバイト列は、試みを引き起こした命令ポインタの周辺のバイト、プラスＮバイトまたはマイナスＮバイトを含んでよい。そのようなバイト列は、試みを生成した同一処理内の、隣接のコードの複数のバイトを代表してよい。バイト列は、セグメント７５２内に示され得る。セグメント７５２は、ソースメモリ７５０からの複数の命令、複数のオペコード、または、他の情報の隣接ブロックを示してよい。そのような隣接ブロックは、メモリページ内またはメモリアドレス範囲内の情報の隣接ブロックを含んでよい。セグメント７５２は、ソースメモリ７５０の任意の適切な部分を代表してよい。
【０１４３】
ビロウＯ／Ｓセキュリティエージェント４１６は、試みの原因であるオーバーオールエンティティのシグネチャまたはハッシュを特定することを試みることなく、バイト列を、既知の安全なバイト列または既知の悪意のあるバイト列と比較してよい。さらに、ビロウＯ／Ｓセキュリティエージェント４１６は、そのようなバイト列をそのルールのインデックスとして使用し得る複数のセキュリティルール４０８のコンテキスト内で、そのようなバイト列を使用してよい。例えば、複数の安全なリソースにアクセスする複数の試みを起こすことで知られる、ドライバ１のコードサブセクションを表す部分（Ｂ）のさまざまな部分は、複数のセキュリティルール４０８内に記録されたバイト列を含んでよい。従って、バイト列に一致する試行済みアクセスは、部分（Ｂ）におけるドライバ１のコードサブセクションに関連すると特定されてよい。複数のセキュリティルール４０８は、次に、行うべき適切なアクションを定義してよい。一実施形態では、バイト列のハッシュが使用されてよい。
【０１４４】
図８は、リアルタイムモジュールプロテクションの方法の例示的な実施形態を示す図である。保護は、メモリ内の複数のモジュールを保護すべく、ソフトウェアアクセスを規制することを含んでよい。
【０１４５】
８０５において、複数の安全なリソースの試行済みアクセスはトラップされてよい。トラップは、ビロウ‐オペレーティングシステムトラップエージェントにより実行されてよい。トラップされた試みの次の処理は、少なくとも部分的にビロウ‐オペレーティングシステムハンドリングエージェントによって行われてよい。複数のリソースは、安全なシステムメモリと、そこに常駐する複数のモジュール、複数のドライバ、複数のアプリケーション、または他の複数のエンティティとの一部を含んでよい。そのようなメモリは、物理または仮想メモリに従って定義されてよい。メモリ内に常駐の複数の安全なリソースは、所定のエンティティのさまざまなサブセクションの位置に従ってメモリマップにマッピングされてよい。
【０１４６】
８１０において、エンティティの、特定されたサブセクションとして知られたメモリ位置によって試みが生成されたかが特定されてよい。そのような複数のサブセクションは、例えば、ヘッダ、データ及びコードサブセクションを含んでよい。一実施形態では、エンティティのサブセクションが既知であるかの解析は、メモリマップに基づいてよい。別の実施形態において、エンティティのサブセクションが既知であるかの解析は、試みを生み出した命令ポインタを含むバイト列に基づいてよい。エンティティのサブセクションが既知である場合には、方法８００は８１５に進んでよい。違う場合には、方法８００は８４５に進んでよい。
【０１４７】
８１５において、エンティティの所定のサブセクションからの試行済みアクセスをどのように処理するかを決定するべく、複数のセキュリティルールがアクセスされてよい。そのような決定は、８２０のコンテキスト内で使用されてよい。８２０において、安全なリソースの何れのサブセクションが試みを生成したかが特定されてよい。そのような試みの特定のサブセクションによる処理は、試みを生成している特定のエンティティのＩＤに従って変化してよい。例えば、複数のオペレーティングシステムカーネル、アクセスされているモジュールに関連した複数のエンティティ、または、署名された複数のドライバからのコードサブセクションは、アクセスを許可されてよい。ここで、未署名の複数のドライバ、未知の複数のドライバ、またはアクセスされているモジュールに無関係の複数のエンティティからのコードサブセクションは拒否されてよい。一実施形態では、試みがヘッダサブセクションによるものであった場合には、方法８００は８３０に進んでよい。さまざまな他の実施形態において、試みがヘッダサブセクションによるものであった場合には、方法８００が８３５または８２５に進んでよい。別の実施形態において、試みがデータサブセクションによるものであった場合には、方法８００は８３５に進んでよい。さまざまな他の実施形態において、試みがデータサブセクションによるものであった場合には、方法８００は８３０または８２５に進んでよい。さらに別の実施形態では、試みがコードサブセクションによるものであった場合には、方法８００は８２５に進んでよい。さまざまな他の実施形態において、試みがコードサブセクションによるものであった場合には、方法８００は８３０または８３５に進んでよい。試みがそのような複数のサブセクションによらないもの、他の特定されたサブセクションによるもの、または未確認のサブセクションによるものであった場合には、方法８００はデフォルトで８３０に進んでよい。
【０１４８】
８２５において、試みは許可されてよい。一実施形態では、試みの許可を無効にし得る他の複数のアンチマルウェアルールのアプリケーションの結果がでるまで、試みは許可されてよい。例えば、試みを生成しているオーバーオールエンティティが或いは悪意のあるものであると特定された場合には、試みは代わりに拒否されてよい。別の実施形態において、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが許可されてよい。方法８００は、８４５に進んでよい。
【０１４９】
８３０において、試みについての追加の解析に対するクエリが行われてよい。そのような解析は、同期のものであってもよいし、非同期のものであってもよい。解析は、例えば、スキャン、シグネチャマッチングまたはヒューリスティック解析を含んでよい。解析は、例えば、試みを生成しているエンティティの複数のコンテンツまたはＩＤ、安全なリソースの複数のコンテンツまたはＩＤ、または、試行済みの変更の複数のコンテンツを利用してよい。
【０１５０】
８３５において、試みは拒否されてよい。一実施形態では、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが拒否されてよい。方法８００は、８９０に進んでよい。
【０１５１】
８４５において、安全なリソースの、特定されたサブセクション上で試みが生成されたかが特定されてよい。そのような複数のサブセクションは、例えば、ヘッダ、データ及びコードサブセクションを含んでよい。一実施形態では、サブセクションが既知であるかの解析は、メモリマップに基づいてよい。サブセクションが既知である場合には、方法８００は８５０に進んでよい。違う場合には、方法８００は８９０に進んでよい。
【０１５２】
８５０において、安全なリソースの所定のサブセクションに対する試行済みアクセスをどのように処理するかを決定すべく、複数のセキュリティルールがアクセスされてよい。そのような決定は、８５５のコンテキスト内で使用されてよい。モジュールの特定のサブセクションの試みの処理は、モジュールのＩＤに従って変化してよい。例えば、複数のオペレーティングシステムカーネル、複数の重要なデバイスドライバ、または他の複数の重要なコンポーネントの試行済みアクセスは、ドライバに関連した複数のエンティティによるドライバの試行済みアクセスよりも厳格な複数のアクセス要件を発動させてよい。８５５において、安全なリソースの何れのサブセクションが対象であったかが特定されてよい。一実施形態では、試みがヘッダサブセクションに対するものであった場合には、方法８００は８８０に進んでよい。さまざまな実施形態において、試みがヘッダサブセクションに対するものであった場合には、方法８００は、条件付きのまたは絶対的な許可または拒否を行うべく、８６０、８６５、８７０、８７５に進んでよい。別の実施形態において、試みがデータサブセクションに対するものであった場合には、方法８００は８６０に進んでよい。さまざまな他の実施形態において、試みがデータサブセクションに対するものであった場合には、方法８００は、クエリ、条件付きの若しくは絶対的な許可、または、条件付きの若しくは絶対的な拒否を行うべく、８６５、８７０、８７５または８８０に進んでよい。さらに別の実施形態では、試みがコードサブセクションに対するものであった場合には、方法８００は８６５に進んでよい。さまざまな他の実施形態において、試みがコードサブセクションに対するものであった場合には、方法８００は、クエリ、条件付きの若しくは絶対的な許可、または、条件付きの若しくは絶対的な拒否を行うべく、８６０、８７０、８７５または８８０に進んでよい。試みがそのようなサブセクションに対するもの、他の特定されたサブセクションに対するもの、または未確認のサブセクションに対するものであった場合には、方法８００はデフォルトで８８０に進んでよい。そのような試みは、特定のサブセクションを考慮することなく、対象のモジュールのＩＤに従って処理されてよい。
【０１５３】
８６０において、或いは悪意のあるものと知られているエンティティからの試みであったかが特定されてよい。そのような特定は、エンティティが安全なもの、または悪意のあるものであることの最終的な特定を要求しないかもしれない。エンティティのマルウェア状態が未知であるか、安全であると知られている場合には、次に、エンティティが悪意のあるものと知られていなかったことが特定されてよい。エンティティが悪意のあるものと知られている場合には、方法８００は８７５に進んでよい。エンティティが悪意のあるものと知られていない場合には、方法８００は８７０に進んでよい。
【０１５４】
８６５において、試みが試行済みの読み出しまたは試行済みの書き込みであったかが特定されてよい。試みが読み取りであった場合には、方法８００は８７０に進んでよい。試みが書き込みであった場合には、方法８００は８７５に進んでよい。
【０１５５】
８７０において、試みは許可されてよい。一実施形態では、試みの許可を無効にし得る他の複数のアンチマルウェアルールのアプリケーションの結果がでるまで、試みは許可されてよい。例えば、試みを生成しているエンティティが或いは悪意のあるものであると特定された場合には、試みは代わりに拒否されてよい。別の実施形態において、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが許可されてよい。方法８００は、８９０に進んでよい。
【０１５６】
８７５において、試みは拒否されてよい。一実施形態では、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが拒否されてよい。
【０１５７】
方法８００は、８９０に進んでよい。８８０において、試みについての追加の解析に対するクエリが行われてよい。そのような解析は、同期のものであってもよいし、非同期のものであってもよい。解析は、例えば、スキャン、シグネチャマッチングまたはヒューリスティック解析を含んでよい。解析は、例えば、試みを生成しているエンティティの複数のコンテンツまたはＩＤ、安全なリソースの複数のコンテンツまたはＩＤ、または、試行済みの変更の複数のコンテンツを利用してよい。
【０１５８】
８９０において、方法８００は繰り返され、８０５のような任意の前の要素に戻って良い。または、方法８００は終了してよい。
【０１５９】
図３、図６及び図８は例示の方法３００、６００および８００に関して行われる特定数のステップを示しているが、方法３００、６００および８００は、図３、図６及び図８で示されるよりも多いまたは少ないステップで実行されてよい。加えて、図３、図６及び図８は方法３００、６００および８００に関して行われるステップの特定の順序を示しているが、これらの方法を含む複数のステップは、任意の適切な順序で完了してよい。さらに、方法３００、６００および８００の幾つか又は全てのステップは、方法３００、６００および８００の他の方法からの複数のステップと組み合わされてよい。
【０１６０】
方法３００、６００および８００は、図１、図２、図４、図５、図７または図８の複数のシステムを用いて実装されてよい。特定の実施形態において、方法３００、６００および８００は、コンピュータ可読記憶媒体に実装されたソフトウェア内に部分的にまたは完全に具体化されてよい。
【０１６１】
複数のプログラム命令は、複数の命令でプログラムされる汎用または専用のプロセッシングシステムに上述の複数の動作を実現させるために使用されてよい。複数の動作は、複数の動作を実行するハードウェアロジックを含む複数の特定のハードウェアコンポーネントによって、または、プログラムされた複数のコンピュータコンポーネントと、複数のカスタムハードウェアコンポーネントとの任意の組み合わせによって実行されてよい。ここで説明された複数の方法は、１または複数の機械可読媒体を含み得るコンピュータプログラム製品として提供されてよい。機械可読媒体は、複数の方法を実現するべくプロセッシングシステムまたは他の電子デバイスをプログラムするために使用され得る複数の命令を格納する。本明細書で用いられた「機械可読媒体」または「コンピュータ可読媒体」の用語は、機械による実行のための一連の命令であって、ここで説明された複数の方法の何れか１つを機械に実現させる命令を格納またはエンコーディングすることが可能な任意の媒体を含む。従って、「機械可読媒体」の用語は、限定はされないが、複数のソリッドステートメモリ、光及び磁気ディスクのような複数のメモリを含む。さらに、どのような形にしても（例えばプログラム、プロシージャ、処理、アプリケーション、モジュール、ロジックなど）、動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、当技術分野においてよくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させるプロセッシングシステムによるソフトウェアの実行を述べることの簡潔な表現の方法にすぎない。
【０１６２】
システム１００、２００、４００、５００および７００の１つまたは複数は、システム１００、２００、４００、５００および７００の複数の他の部分と組み合わされてよい。
【０１６３】
以下の例はさらなる実施形態に関する。電子デバイスを保護する方法は、電子デバイスの安全なシステムリソースにアクセスする試みをトラップする段階を含んでよい。方法は、試みに関連するモジュールを特定する段階をさらに含んでよい。モジュールは、複数の別個のサブセクションを有してよい。また、方法は、試みに関連するモジュールのサブセクションを特定する段階を含んでよい。サブセクションは、試みに関連するメモリ位置を有してよい。方法は、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスする段階を更に含んでよい。さらに、方法は、セキュリティルールに基づいて試みを処理する段階を含んでよい。トラップする段階は、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みを処理する段階は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みを拒否する段階を含んでよい。さらに、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みを許可する段階を含んでよい。また、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みを拒否する段階を含んでよい。さらに、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しを許可する段階を含んでよい。さらに、試みを処理する段階は、試みのマルウェア状態を特定すべく追加的クエリを行う段階を含んでよい。少なくとも１つの機械可読ストレージ媒体は、コンピュータ可読媒体に担持される、コンピュータ実行可能な複数の命令を含んでよい。複数の命令はプロセッサにより可読でよい。複数の命令は、読み取られて実行されるときに、電子デバイスの安全なシステムリソースにアクセスする試みをプロセッサにトラップさせてよい。プロセッサはさらに、試みに関連するモジュールを特定させられてよい。モジュールは複数の別個のサブセクションを含んでよい。また、プロセッサは、試みに関連するモジュールのサブセクションを特定させられてよい。サブセクションは、試みに関連するメモリ位置を有してよい。また、プロセッサは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスさせられてよい。さらに、プロセッサは、セキュリティルールに基づいて試みを処理させられてよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
【０１６４】
電子デバイスを保護するシステムは、メモリ、プロセッサ、安全なシステムリソース、及び、１または複数のセキュリティエージェントを含んでよい。複数のセキュリティエージェントは、メモリに常駐してプロセッサによる実行のために処理可能な複数の命令を含んでよい。複数のセキュリティエージェントは、電子デバイスの安全なシステムリソースにアクセスする試みをトラップするように設定されてよい。複数のセキュリティエージェントは、試みに関連するモジュールを特定するようさらに構成されてよい。モジュールは、複数の別個のサブセクションを含んでよい。また、複数のセキュリティエージェントは、試みに関連するモジュールのサブセクションを特定するように設定されてよい。サブセクションは、試みに関連するメモリ位置を有してよい。また、複数のセキュリティエージェントは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスするように設定されてよい。さらに、複数のセキュリティエージェントは、セキュリティルールに基づいて試みを処理するように設定されてよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
【０１６５】
電子デバイスを保護するシステムは、電子デバイスを保護する手段を含んでよく、また、電子デバイスの安全なシステムリソースにアクセスする試みをトラップすることを含んでよい。システムは、試みに関連するモジュールを特定する手段をさらに含んでよい。モジュールは、複数の別個のサブセクションを有してよい。また、システムは、試みに関連するモジュールのサブセクションを特定する手段を含んでよい。サブセクションは、試みに関連するメモリ位置を有してよい。システムは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスする手段を更に含んでよい。さらに、システムは、セキュリティルールに基づいて試みを処理する手段を含んでよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
【０１６６】
本開示は詳述されたが、理解するべきことは、添付の特許請求の範囲で定義されるような開示の概念及び範囲を逸脱することなく、様々な修正形態、代替及び変更が行われてよいことである。
【図１】
2015532499.tif 000003
【図２】
2015532499.tif 000004
【図３】
2015532499.tif 000005
【図４】
2015532499.tif 000006
【図５】
2015532499.tif 000007
【図６】
2015532499.tif 000008
【図７】
2015532499.tif 000009
【図８】
2015532499.tif 000010
【国際調査報告】
2015532499.tif 000011
2015532499.tif 000012
2015532499.tif 000013