図1は、マルウェアから電子デバイスを保護するシステム100の例示的な実施形態である。システム100は、トリガードイベントハンドラ108に通信可能に結合されたビロウ‐オペレーティングシステム(「O/S」)トラップエージェント104を備えてよい。ビロウO/Sトラップエージェント104は、電子デバイス103のリソース106の様々な試行済みアクセスをトラップするように設定されてよい。ビロウO/Sトラップエージェント104は、トラップされた試行済みアクセスに関連するトリガードイベントを生成し、トリガードイベントをトリガードイベントハンドラ108に送信するように設定されてよい。トリガードイベントハンドラ108は、1または複数のセキュリティルール114またはプロテクションサーバ102を調べて、どのようにトリガードイベントを処理するかを決定するように設定されてよい。トリガードイベントハンドラ108は、トリガードイベントの傾向が電子デバイス103のリソースまたは動作を破壊するマルウェアの兆候または悪意ある試みであると評価するようにも構成され得る。さらに、トリガードイベントハンドラ108は、ビロウO/Sトラップエージェント104に対し、トリガードイベントが許可されるべきか拒否されるべきかの決定を提供するように設定されてよく、或いは、他の修正アクションを生じるように設定されてよい。
ビロウO/Sトラップエージェント104は、電子デバイス103の複数のオペレーティングシステムよりも低い機能レベルで実装されてよい。例えば、ビロウO/Sトラップエージェント104は、オペレーティングシステム112、ドライバ111、またはアプリケーション110によってリソース106の複数の試行済みアクセスをインターセプトしてよい。ビロウO/Sトラップエージェント104は、オペレーティングシステムを使用することなく、電子デバイス103のプロセッサ上で動作していてよい。一実施形態では、ビロウO/Sトラップエージェント104は、ベアメタル環境または実行レベル上で動作していてよい。加えて、ビロウO/Sトラップエージェント104は、電子デバイス103のプロセッサによって定義されるように、電子デバイス103の全てのオペレーティングシステムよりも高い実行優先度で動作していてよい。例えば、少ない数ほど高い優先度を表す複数の保護リングを用いる階層的保護ドメインモデルとの関連で、オペレーティングシステム112が「リング0」で動作し、一方、ビロウO/Sトラップエージェント104が「リング−1」で動作していてよい。複数のドライバ111及び複数のアプリケーション110は、「リング0」または「リング3」で動作していてよい。複数のプロセッサのいくつかの実施形態では、「リング−1」の概念は、「リング0特権モード」として知られ、「リング0」の概念は「リング0非特権モード」として知られ得る。「リング−1」すなわち「リング0特権モード」での動作は、「リング0」すなわち「リング0非特権モード」よりも追加のオーバヘッド及びエクスペンスを必要とし得る。電子デバイス103の複数のオペレーティングシステムはリング0で動作する。インテル製プロセッサのような複数のプロセッサ上で、「VMX Root」のモードは「リング0特権モード」に相当し、「VMX Non−Root」のモードは「リング0」に相当し得る。
ビロウO/Sトラップエージェント104は、リング0またはより高いレベルで動作する複数のエンティティに対してトランスペアレントに動作し得る。従って、リソース106の試行済みアクセスは、ビロウO/Sトラップエージェント104が存在するか否かに関わらず、オペレーティングシステム112または他のエンティティによって同様に要求され得る。ビロウO/Sトラップエージェント104は、受信されたアクションを実行するとき、要求を生じさせてよいし、要求を拒否してよいし、或いは他の修正アクションを取ってよい。要求を拒否するべく、ビロウO/Sトラップエージェント104は、単純に要求をリソース106またはプロセッサにパスしないかもしれず、或いは、なりすまされた、またはダミーの返信を要求に提供することで、オペレーティングシステム112にアクションが起こったと確信させるかもしれない。
電子デバイス103の、複数の関連するオペレーティングシステムよりも高い優先度の、或いは、電子デバイス103の、複数の関連するオペレーティングシステムよりも低い優先度の「リング−1」で動作することにより、ビロウO/Sトラップエージェント104は、オペレーティングシステム112のような複数のオペレーティングシステムを悩ませるマルウェアの大部分を防ぎ得る。マルウェアもまた「リング0」の優先度で動作し得るので、マルウェアは、オペレーティングシステム112を欺くか、或いは、「リング0」で動作するアンチマルウェアソフトウェアでさえも欺くかもしれない。しかしながら、電子デバイス103上のマルウェアは、もしそれが複数の悪意のあるアクティビティを実行することになっていれば、依然としてリソース106の要求を行うに違いない。従って、複数の敏感なリソースにリンクされた複数の動作のトラップは、電子デバイス103における複数のオペレーティングシステムより低いレベルで動作するトラップエージェントによって、より良好に達成され得る。
ビロウO/Sトラップエージェント104は、任意の適切な方法で実装され得る。一実施形態では、ビロウO/Sトラップエージェント104は、仮想マシンモニタのかたちで実装され得る。そのような実施形態は、ビロウO/Sトラップエージェント104について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。そのような実施形態の一例の記載は、例えば、以下の図2のセキュリティ仮想マシンモニタ216の説明中に見つかり得る。別の実施形態において、ビロウO/Sトラップエージェント104は、ファームウェアのかたちで実装され得る。さらに別の実施形態では、ビロウO/Sトラップエージェント104は、マイクロコードのかたちで実装され得る。ビロウO/Sトラップエージェント104は、これらの実施形態の任意の適切な組み合わせのかたちで実装され得る。
トリガードイベントハンドラ108は、互いに通信可能に結合された1または複数のイベントハンドラまたはセキュリティエージェントによって具体化され得る。トリガードイベントハンドラ108及びビロウO/Sトラップエージェント104は、同一のセキュリティエージェントのかたちで実装され得る。一実施形態では、トリガードイベントハンドラ108は、ビロウO/Sトラップエージェントと同一のプライオリティリングで動作していてよい。別の実施形態において、トリガードイベントハンドラ108は、オペレーティングシステム112、ドライバ111またはアプリケーション110と同一の優先度で動作していてよい。さらに別の実施形態では、トリガードイベントハンドラ108は2またはそれ以上のトリガードイベントハンドラによって実施されても良く、少なくとも1つのトリガードイベントハンドラは、ビロウO/Sトラップエージェントと同一のプライオリティリングで動作し、少なくとも1つのトリガードイベントハンドラはオペレーティングシステム112、ドライバ111またはアプリケーション110のレベルで動作する。ビロウO/Sトラップエージェント104のレベルで動作することにより、トリガードイベントハンドラ108は、エージェント自体を感染させる「リング0」または「リング3」マルウェアの問題を同様に防ぎ得る。しかしながら、オペレーティングシステム112と共に「リング0」または「リング3」で動作しているトリガードイベントハンドラ108、ドライバ111、またはアプリケーション110は、複数の「リング−1」エージェントの視点から利用可能でないリソース106の試行済みアクセスに関するコンテキスト情報を提供することができてよい。
トリガードイベントハンドラ108は、任意の適切な方法で実装されてよい。一実施形態では、トリガードイベントハンドラ108は、仮想マシンモニタまたは仮想マシンモニタセキュリティエージェントのかたちで実装されてよい。そのような実施形態は、複数のオペレーティングシステムより下のレベルで動作してよい。そのような実施形態の一例の記載は、例えば以下の図2のセキュリティ仮想マシンモニタ216またはセキュリティ仮想マシンモニタセキュリティエージェント217の説明中に見つかり得る。別の実施形態において、トリガードイベントハンドラ108は、ファームウェアに完全にまたは一部、実装され得る。そのような実施形態は、トリガードイベントハンドラ108について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。さらに別の実施形態では、トリガードイベントハンドラ108は、マイクロコードのかたちで実装され得る。そのような実施は、トリガードイベントハンドラ108について説明したように、複数のオペレーティングシステムより下のレベルで動作し得る。トリガードイベントハンドラ108は、これらの実施形態の組み合わせのかたちで実装され得る。
一実施形態では、トリガードイベントハンドラ108は複数のモジュールのかたちで実装されることができ、少なくとも1つのそのようなモジュールは複数のオペレーティングシステムより下のレベルで動作し、少なくとも1つのそのようなモジュールは複数のオペレーティングシステム内のレベルで動作する。そのようなモジュールそれぞれは、互いに通信するように設定されてよい。
一実施形態では、ビロウ‐オペレーティングシステムトラップエージェント104及び/またはトリガードイベントハンドラ108は、電子デバイス103のベアメタルレイヤ内で動作してよい。ビロウ‐オペレーティングシステムトラップエージェント104及び/またはトリガードイベントハンドラ108は、それらの間のオペレーティングシステムと、それらが保護するよう構成されたリソース106とを使用することなく動作してよい。リソース106は、プロセッサ、プロセッサの複数の特徴、メモリ、メモリ内に常駐するデータ構造のような複数のエンティティ、または、プロセッサによる実行のためにメモリ内に常駐する、複数の関数、複数のプロセスまたは複数のアプリケーションのような複数のエンティティを含んでよい。リソース106は、電子デバイス103のリソースを含むシステムリソースを含んでよい。さらに、リソース106は、例えば、ビロウ‐オペレーティングシステムトラップエージェント104、トリガードイベントハンドラ108、または、任意の適切なアンチマルウェアメカニズム若しくはモジュールの動作によって保護されるよう、安全なものとして指定されてよい。従って、リソース106は、安全なシステムリソースを含んでよい。ビロウ‐オペレーティングシステムトラップエージェント104及び/またはトリガードイベントハンドラ108は、電子デバイス103のハードウェア上で直接動作してよい。ビロウ‐オペレーティングシステムトラップエージェント104及び/またはトリガードイベントハンドラ108は、リソース106へのフルアクセスを実行または得るオペレーティングシステム112のようなオペレーティングシステムの使用を要求しないかもしれない。
複数の他のオペレーティングシステムは、そのレベルのオペレーティングシステム112の複数のエンティティと、ビロウ‐オペレーティングシステムトラップエージェント104及びトリガードイベントハンドラ108と、リソース106との間の関係に参加しない電子デバイス103上に存在してよい。例えば、プレブートオペレーティングシステムは、電子デバイスの複数の部分をセキュアに起動し得るが、リソース106のモードのアプリケーション110、ドライバ111、及びオペレーティングシステム112からの複数の要求の処理に関して、電子デバイスの通常の処理に参加しない。他の例において、電子デバイス103は、複数のマザーボードコンポーネント、複数のプラグインカード、複数の周辺機器または、複数の他のコンポーネントを含んでよい。これらは、それら自身の複数のオペレーティングシステムの複数のセットと、複数のプロセッサを含むことで、そのレベルのオペレーティングシステム112の複数のエンティティ、ビロウ‐オペレーティングシステムトラップエージェント104及びトリガードイベントハンドラ108と、リソース106との間の関係の範囲外で複数の機能を実現する。これらのオペレーティングシステムは、複数のオペレーティングシステムに埋め込まれてよい。これらのオペレーティングシステムのいずれも、ビロウ‐オペレーティングシステムトラップエージェント104及びトリガードイベントハンドラ108の実行のために使用されないかもしれない。さらに、これらのオペレーティングシステムのいずれも、トラップエージェント104及びトリガードイベントハンドラ108によって保護されたリソース106にアクセスしないかもしれない。
オペレーティングシステム112、ドライバ111またはアプリケーション110のそれぞれは、任意の適切なモジュール、実行ファイル、スクリプト、ロジック、複数の命令、ハードウェア、ソフトウェア、ファームウェア、または、システム100上で動作する、それらの組み合わせによって実装されてよい。
システム100は、1または複数のビロウ‐オペレーティングシステムトラップエージェント104、及び、1または複数のトリガードイベントハンドラ108の任意の組み合わせを含んでよい。ビロウ‐オペレーティングシステムトラップエージェント104及びトリガードイベントハンドラ108の記載は、後述の複数の図面におけるトラップエージェント、イベントハンドラ、セキュリティエージェントの記載中に見つかり得る。
リソース106は、電子デバイスの任意の適切なリソースを含んでよい。例えば、リソース106は、複数のレジスタ、メモリ、複数のコントローラまたは複数のI/Oデバイスを含んでよい。リソース106の例示的な実施形態の記載は、例えば、図2のシステムリソース214、または図4の仮想メモリ404または物理メモリ403の記載中に見つかり得る。
セキュリティルール114は、任意の適切な複数のルール、ロジック、複数のコマンド、複数の命令、複数のフラグ、または、複数の他のメカニズムを含んでも良く、これにより、何のアクションをトラップするかをビロウO/Sトラップエージェント104に通知するか、或いは、トラップされたアクションに基づくイベントを処理するようトリガードイベントハンドラ108に通知する。トリガードイベントハンドラ108は、ビロウO/Sトラップエージェントに1つまたは複数のセキュリティルール114を提供するように設定されてよい。複数のセキュリティルール114の幾つか又は全ての例示的な実施形態の記載は、例えば、図2のセキュリティルール222、または、セキュリティルール421若しくはセキュリティルール408の記載中に見つかり得る。
システム100のアプリケーション110、ドライバ111及びオペレーティングシステム112のようなカーネルモード及びユーザモードの複数のエンティティは、任意の適切な方法で実装され得る。システム100のアプリケーション110、ドライバ111及びオペレーティングシステム112の例示的な実施形態の記載は、例えば、図2のアプリケーション210、ドライバ211及びオペレーティングシステム212の記載中、または、後述の図4のアプリケーション410、ドライバ411及びオペレーティングシステム413の記載中に見つかり得る。
電子デバイス103は、任意の適切な方法で、例えばコンピュータ、パーソナルデータアシスタント、電話、モバイルデバイス、システムオンチップ、サーバ、または、複数のプログラム命令及び/またはプロセスデータを解釈及び/または実行する、設定可能な任意の他のデバイス内に実装され得る。電子デバイス103の例示的な実施形態の記載は、例えば、図2の電子デバイス204の説明中、または後述の図4の電子デバイス401の説明中に見つかり得る。
システム100は、電子デバイス103のオペレーティングシステムの下方のレベルでリソースの試行済みアクセスをトラップする任意の適切なシステムのかたちで実施され得る。システム100はまた、試行済みアクセスが悪意のあるものであるか否かを特定するべく複数のセキュリティルールを調べることで試行済みアクセスを処理する任意の適切な手段のかたちで実施され得る。例えば、システム100は、後述の図2から図8で説明されるようにシステム及び方法200、300、400、500、600、700および800によって実施されてよい。
図2は、マルウェアから電子デバイスを保護する、仮想マシンモニタベース、かつ、セキュリティルールベースの設定可能なセキュリティソリューションのためのシステム200の例示的な実施形態である。システム200は、仮想マシンモニタにおけるシステム100の特定の要素を実装するシステム100の例示的な実施形態であってよい。システム200は、設定可能なセキュリティソリューションによってマルウェアから保護されるべき電子デバイス204を含んでよい。システム200の設定可能なセキュリティソリューションは、全てのオペレーティングシステム、セキュリティ仮想マシンモニタ、クラウドベースのセキュリティエージェント及びインO/S行動性セキュリティエージェントより下で動作するセキュリティエージェントを含んでよい。ビロウO/Sセキュリティエージェント及びセキュリティ仮想マシンモニタは、インO/S行動性セキュリティエージェントによって使用される複数のリソースを含む電子デバイス204のシステムリソースへのアクセスを防ぐように設定されてよい。ビロウO/Sセキュリティエージェントは、セキュリティ仮想マシンモニタ内で動作していてよい。クラウドベースのセキュリティエージェントは、マルウェア検出情報をビロウO/Sセキュリティエージェント及びインO/S行動性セキュリティエージェントに提供すると共に、セキュリティ仮想マシンモニタ及びインO/S行動性セキュリティエージェントから、おそらくマルウェアに関連する、不審な挙動に関する情報を受信するように設定されてよい。インO/S行動性セキュリティエージェントは、電子デバイス上で動作するマルウェアの証拠を得るために電子デバイス204をスキャンするように設定されてよい。システム200は、電子デバイス204の複数のリソースへのアクセスを使用する試みをトラップし、この試みに対応するトリガードイベントを生成し、トリガードイベントに関する複数のセキュリティルールを調べ、かつ、必要であれば、その試みに関する修正アクションをとるよう構成された1または複数のビロウO/Sセキュリティエージェントを含んでよい。
一実施形態では、システム200は、1または複数のインO/Sセキュリティエージェント218及びセキュリティ仮想マシンモニタ(「SVMM」)セキュリティエージェント217に対して通信可能に結合されたプロテクションサーバ202を含んでよい。SVMMセキュリティエージェント217は、SVMM216内に存在してよい。SVMM216は、電子デバイス204上に存在して動作してよい。インO/Sセキュリティエージェント218及びSVMMセキュリティエージェント217は、通信可能に結合されてよい。プロテクションサーバ202、インO/Sセキュリティエージェント218、SVMMセキュリティエージェント217及びSVMM216は、マルウェアの感染から電子デバイス204を保護するように設定されてよい。
SVMMセキュリティエージェント217は、図1のトリガードイベントハンドラ108の例示的な実施形態であってよい。SVMM216は、図1のビロウO/Sトラップエージェント104の例示的な実施形態であってよい。
電子デバイス204は、プロセッサ208に結合されたメモリ206を含んでよい。電子デバイス204は、任意の適切な目的のために電子デバイス上で実行する1または複数のアプリケーション210またはドライバ211を含んでよい。電子デバイス204は、オペレーティングシステム212を含んでよい。オペレーティングシステム212は、電子デバイス204の複数のシステムリソース214へのアクセスを、複数のアプリケーション210または複数のドライバ211に提供するように設定されてよい。SVMM216は、複数のシステムリソース214のオペレーティングシステム212のそのような複数の呼び出しをインターセプトするように設定されてよい。SVMM216及びSVMMセキュリティエージェント217は、オペレーティングシステム212より下のレベルで動作してよい。例えば、SVMM216及びSVMMセキュリティエージェント217は、「リング−1」のような特権モードにおいてプロセッサ208上で直接動作してよい。
プロセッサ208は例えば、複数のプログラム命令及び/またはプロセスデータを解釈及び/または実行するよう構成されたマイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、または、任意の他のデジタル若しくはアナログの回路を含んでよい。いくつかの実施形態では、プロセッサ208は、メモリ206に格納されている複数のプログラム命令及び/またはプロセスデータを解釈及び/または実行してよい。メモリ206は、一部または全体において、アプリケーションメモリ、システムメモリまたは両方として設定されてよい。メモリ206は、1または複数のメモリモジュールを保持及び/または収容するよう構成された任意のシステム、デバイスまたは装置を含んでよい。メモリモジュールのそれぞれは、複数のプログラム命令及び/またはデータを期間内、保持するよう構成された任意のシステム、デバイスまたは装置を含んでよい(例えばコンピュータ可読記憶媒体)。SVMM216、SVMMセキュリティエージェント217及びインO/Sセキュリティエージェント218などの複数のコンポーネントの複数のコンフィグレーションのような、システム200の動作を設定する複数の命令、ロジックまたはデータは、プロセッサ208による実行のためにメモリ206内に存在してよい。
プロセッサ208は、プロセッサの1または複数のコアによって実行される1または複数のコード命令を実行してよい。複数のプロセッサコアは、複数のコード命令によって示される複数の命令のプログラムシーケンスをフォローしてよい。コード命令のそれぞれは、プロセッサの1または複数のデコーダによって処理されてよい。デコーダは、事前に定義されたフォーマットにおける固定幅のマイクロオペレーションのようなマイクロオペレーションを、その出力として生成してよい。或いは、デコーダは、元のコード命令を反映する他の複数の命令、複数のマイクロ命令、または複数の制御信号を生成してよい。プロセッサ208はまた、概して複数のリソース及びキューに対し、実行のための変換命令に対応する動作を割り当てるレジスタリネーミングロジック及びスケジューリングロジックを含んでよい。複数のコード命令により規定される複数の動作の実行完了後に、プロセッサ208内のバックエンドロジックは命令をリタイアしてよい。一実施形態では、プロセッサ208は、アウトオブオーダーの実行を許可してよいが、複数の命令のインオーダーリタイアを要求する。プロセッサ208内のリタイアロジックは、当業者に知られるように、様々な形態を取り得る(例えば複数のリオーダバッファなど)。プロセッサ208の複数のプロセッサコアは、従って、少なくとも、レジスタリネーミングロジックにより使用されるデコーダ、複数のハードウェアレジスタ及び複数のテーブル、並びに、実行ロジックによって変更される複数の任意のレジスタにより生成される出力に関して、コードの実行中に変換される。
プロテクションサーバ202は、ネットワーク244上で動作していてよい。ネットワーク244上で動作するプロテクションサーバ202は、クラウドコンピューティングスキームを実装してよい。プロテクションサーバ202は、複数のマルウェア検出ルール及び情報を更新するべく電子デバイス204の複数の要素と通信するように設定されてよい。プロテクションサーバ202は、電子デバイス204に由来する、複数の不審なアクティビティに関する情報を受信すると共に、そのような不審なアクティビティがマルウェア感染の兆候であるか否かを特定するように設定されてよい。オペレーティングシステム212は、1または複数のインO/Sセキュリティエージェント218を含んでよい。インO/Sセキュリティエージェント218は、複数のインO/Sセキュリティルール220のような複数の監視及び検出ルールをプロテクションサーバ202から受信するように設定されてよい。インO/Sセキュリティエージェント218は、プロテクションサーバ202によって受信された複数のインO/Sセキュリティルール220を使用することで、電子デバイス204上の不審なアクティビティを監視して妨げるように設定されてよい。インO/Sセキュリティエージェント218は、検知された不審なアクティビティをプロテクションサーバ202に報告し返すように設定されてよい。インO/Sセキュリティエージェント218は、複数のマルウェア動作を妨げ、そのような防止をプロテクションサーバ202に報告するように設定されてよい。1より多くのインO/Sセキュリティエージェント218がシステム200に存在する場合には、インO/Sセキュリティエージェント218のそれぞれは、トラップ、検証、或いは、インO/Sセキュリティエージェント218に関連する他の複数のタスクの指定部分を実行するように設定されてよい。そのような複数の部分は、複数のビロウ‐オペレーティングシステムセキュリティエージェントによって定義され得る。例えば、1つのインO/Sセキュリティエージェント218は複数のMOV命令を検証または調査しても良く、一方、他のインO/Sセキュリティエージェント218は複数のJMP命令を検証または調査してよい。インO/Sセキュリティエージェント218は、メモリ内の特定のページのライフサイクルを決定するように設定されてよい。例えば、インO/Sセキュリティエージェント218は、メモリのページを割り当てるオペレーティングシステム212によって一般的に使用される複数の処理及び複数のステップを知っていてよい。同様に、インO/Sセキュリティエージェント218は、オペレーティングシステム212のローダ内にアプリケーションのイメージを読み込むオペレーティングシステム212によって一般的に使用される複数の処理及び複数のステップを知っていてよい。そのような複数の処理は、動作の静的パターンをフォローしてよい。従って、インO/Sセキュリティエージェント218は、所定アクションに対してスタンダードプロシージャがフォローされていたかを特定するべく、オペレーティングシステム212の動作を追跡するように設定されてよい。インO/Sセキュリティエージェント218によって観察された、対応する予期された複数のアクションを、SVMMセキュリティエージェント217によってトラップされた動作が生成したか否かを特定するべく、インO/Sセキュリティエージェント218はSVMMセキュリティエージェント217と通信してよい。不一致は、マルウェアがオペレーティングシステム212の通常の処理の範囲外でシステムの機能を実現することを試みたことを示し得る。従って、例えば、インO/Sセキュリティエージェント218及びSVMMセキュリティエージェント217は、対象のページがマルウェアによって直接メモリに読み込まれたか、或いはオペレーティングシステムのローダによって読み込まれたかを特定してよい。そのような挙動は、インO/Sセキュリティエージェント218またはSVMMセキュリティエージェント217に、プロテクションサーバ202へ情報を報告させるか、より積極的なトラップ及びチェックを採用させるか、或いは、他の任意の複数の修正措置を行わせてよい。
一実施形態では、インO/Sセキュリティエージェント219は、コンテキストの情報をオペレーティングシステム212内に埋め込むことで、コンテキストの情報を提供するように設定されてよい。例えば、インO/Sセキュリティエージェント219は、それ自体またはサブコンポーネントをドライバフィルタとして登録し、それ自体をメインドライバに接続することで、ドライバが見るもの、または見ないものを決定するように設定されてよい。NTFS.SYSにフィルタとして接続されることにより、例えば、インO/Sセキュリティエージェント219は、オペレーティングシステム212の複数のドライバから見た複数のファイル入出力動作を報告するように設定されてよい。
別の実施形態において、インO/Sセキュリティエージェント219は、オペレーティングシステム219内から観察されるそのような情報を、オペレーティングシステムより下で観察される情報と比較するべく、SVMMセキュリティエージェント216または複数の他のビロウO/Sセキュリティエージェントに提供するように設定されてよい。2つのセットの情報の間の不一致は、自身を隠そうとするマルウェアの試みの存在を示し得る。例えば、インO/Sセキュリティエージェント219は、NDIS.SYSをフックまたはフィルタリングし、特定ファイルに対する複数のファイル書き込みを監視してよい。SVMMセキュリティエージェント216は、複数の入力及び出力コマンドを監視してよい。関数呼び出しのリストに基づいて、観察されたはずの書き込みよりも多くの書き込みがインO/Sセキュリティエージェント219によって観察されたとSVMMセキュリティエージェント216が特定した場合には、そのときマルウェアは、オペレーティングシステム212によって提供される複数の機能の範囲外で、ディスクに対し秘密に書き込んでいるかもしれない。
ネットワーク244は、インターネット、イントラネット、複数のワイドエリアネットワーク、複数のローカルエリアネットワーク、複数のバックホールネットワーク、複数のピアツーピアネットワーク、またはそれらの任意の組み合わせのような、通信のための任意の適切なネットワークのかたちで実現され得る。プロテクションサーバ202は、様々な電子デバイス204上で動作している様々なセキュリティエージェント218から提出される報告を使用し、流行(prevalence)及び評判の解析ロジックを適用することでさらにマルウェアを検知してよい。例えば、電子デバイス204上で特定された不審な挙動は、プロテクションサーバ202が率先して他の複数の電子デバイス204を保護するためのルールに統合されてよい。そのようなルールは、例えば、不審なドライバが報告された回数に基づいて決定され得る。例えば、狭い又は遅い配布パターンを有する未知のドライバは、マルウェアに関連付けられ得る。一方で、広く早い配布の未知のドライバは、ポピュラーで広く入手可能なアプリケーションのパッチに関連付けられ得る。他の例において、そのような検知されたドライバは、他の電子デバイス上で動作しているセキュリティソフトウェアによって、ホストマルウェアに知られたウェブサイトにアクセスしていると特定されるかもしれない。そのようなドライバは、マルウェアに関連すると判断されるかもしれない。
SVMM216は、システム200のセキュリティ仮想マシンモニタリング機能の幾つか又は全てを実装してよい。SVMM216は、複数のレジスタ、メモリまたは複数のI/Oデバイスのような複数のシステムリソースへのアクセス、電子デバイス上で動作する1または複数のオペレーティングシステムへのアクセスをインターセプトするように設定されてよい。システム200の複数のセキュリティ仮想マシンモニタリング機能は、SVMM216、または、本開示の教示に従って電子デバイス204を保護するよう構成された任意の他の仮想マシンモニタを用いて実装されてよい。SVMM216は、オペレーティングシステム212によって行われた複数のアクションを制御及びフィルタリングするように設定されてよい。一方、オペレーティングシステム212は、自身のために、または、オペレーティングシステム212を介して動作する複数のアプリケーション210のために、複数のシステムリソース214にアクセスすることを試みる。SVMM216は、電子デバイス204上のオペレーティングシステム212の下方で動作しても良く、オペレーティングシステム212、及び、アプリケーション210またはドライバ211にとって使用可能にされた幾つか又は全てのプロセッサリソースに対する制御を有してよい。アプリケーション210及びドライバ211のそれぞれは、例えば、図1のアプリケーション110及びドライバ111によって実施されてよい。アプリケーション210は、電子デバイス204上で動作するのに適切な任意のアプリケーションを備えてよい。ドライバ211は、電子デバイス204上で動作するのに適切な任意のドライバを備えてよい。SVMM216による制御に利用可能とされた複数のプロセッサリソースは、仮想化のために指定されたこれらのリソースを含んでよい。一実施形態では、SVMM216は、オペレーティングシステム212、アプリケーション210またはドライバ211によるアクセスのために複数のシステムリソース214を仮想化するように設定されてよい。単なる例として、そのような複数のシステムリソース214は、複数の入出力デバイス226、システムメモリ228または複数のプロセッサリソース230を含んでよい。単なる例として、複数のプロセッサリソース230は、複数の従来のレジスタ232、複数のデバッグレジスタ234、メモリセグメンテーション236、メモリページング238、複数のインタラプト240または複数のフラグ242を含んでよい。複数のIOデバイス226は、そのようなデバイス、例えばキーボード、ディスプレイ、マウスまたはネットワークカードなどへのアクセスを含んでよい。さらに、システムリソース214は、システムメモリ228内の特定のメモリアドレス、またはシステムメモリ228内の特定のメモリページを含んでよい。システムメモリ228は、物理メモリまたは仮想メモリを含んでよい。複数の従来のレジスタ232及び複数のデバッグレジスタ232は、複数のデータレジスタまたは複数の制御レジスタを含んでよい。複数のプロセッサリソース230はまた、複数のキャッシュ、複数の処理コア、複数のエクセプションまたは複数の特定のオペコード、または、複数のオペコードの組み合わせを含んでよい。
SVMM216は、オペレーティングシステム212に由来する複数の動作の実行をトラップして、複数のシステムリソース214にアクセスするように設定されてよい。SVMM216は、複数のシステムリソース214の特定の試行済みアクセスをトラップするよう構成された制御構造を含んでよい。任意の適切な制御構造が使用されてよい。一実施形態では、そのような制御構造は、仮想マシン制御構造(「VMCS」)221を含んでよい。SVMM216は、VMCS221内の複数のフラグを処理することで、そのような実行をトラップするように設定されてよい。SVMM216は、複数のシステムリソース214のアクセスを伴う、オペレーティングシステム212、アプリケーション210またはドライバ211の任意の適切な動作をトラップするように設定されてよい。そのような複数のトラップされた動作は、例えば、システムメモリ228の特定メモリページの読み取り、書き込み及び実行、プロセッサレジスタ230へのまたはプロセッサレジスタ230からの値の読み込み及び格納、または、複数のI/Oデバイス226へのまたは複数のI/Oデバイス226からの読み取り及び書き込みを含んでよい。複数のそのような任意の動作は、SVMM216によってトラップされ得る仮想マシンエグジット(「VM Exit」)を引き起こしてよい。SVMM216は、プロセッサ208により生成され得る複数のインタラプト240、またはオペレーティングシステム212の複数の要素によって開始され得る複数のインタラプト240の生成をトラップするように設定されてよい。SVMM216は、複数のイン及びアウト命令をトラップすることで、I/Oデバイス226への、または、I/Oデバイス226からの読み取り及び書き込みの試みをトラップするように設定されてよい。SVMMは、例えば「VTd」(Virtualization Technology Directed)I/Oの複数のメカニズムへのアクセスをトラップすることで、そのような複数の命令をトラップするように設定されてよい。VTdは、プロセッサ208に従ってIOデバイス仮想化を許可してよい。複数のVTd機能にアクセスすることで、SVMMセキュリティエージェント217は、VTdにより接続された複数のデバイスを特定し、オペレーティングシステム212、I/Oデバイス上の複数のポートからのメタ情報、または他の適した情報を特定するように設定されてよい。SVMMセキュリティエージェント217は、そのような仮想化されたデバイスアクセスの動作を制御またはトラップするように設定されてよい。例えば、SVMMセキュリティエージェント217は、複数のプログラマブルI/Oポートに与えられる複数のI/Oアサインメントを含む複数のI/Oアクセス許可マップを決定するように設定されてよい。SVMMセキュリティエージェント217は、そのような複数のアクセス許可マップへの、マルウェアによってされ得るアクセスをトラップするか、または、オペレーティングシステム212上の複数のエンティティと、IOデバイスの要求との関係を特定すべく、そのような複数のアクセス許可マップを使用するように設定されてよい。
一実施形態では、SVMMセキュリティエージェント217は、SVMM216内で動作してよい。別の実施形態において、SVMMセキュリティエージェント217は、SVMM216の範囲外で動作してよいが、SVMM216に通信可能に結合され得る。そのような実施形態において、SVMMセキュリティエージェント217は、オペレーティングシステム212のような、電子デバイス204のオペレーティングシステムのレベルより下で動作していてよい。SVMMセキュリティエージェント217は、SVMM216の同一レベル及び/または同一優先度で動作していてよい。SVMMセキュリティエージェント217は、SVMM216によって引き起こされた複数のイベントまたはSVMM216によってトラップされた複数のイベントを処理するように設定されてよい。SVMMセキュリティエージェント217は、カーネルレベルルートキットの干渉がない複数のコンテンツを検査するべく、オペレーティングシステム212より下のレベルでメモリ228またはディスクの複数のコンテンツにアクセスするように設定されてよい。さらに、SVMMセキュリティエージェント217のいくつかの動作は、SVMM216によって実装されて良く、SVMM216のいくつかの動作は、SVMMセキュリティエージェント217によって実装されてよい。
SVMMセキュリティエージェント217は、何のアクションがトラップまたはトリガの原因となるかに関してSVMM216の動作を設定するように設定されてよい。一実施形態では、SVMM216は、トラップされたアクションの検出をSVMMセキュリティエージェント217に通信するように設定されてよい。SVMMセキュリティエージェント217は、トラップされたアクションがマルウェア、または悪意のあるアクティビティを示すかを決定するべく複数のセキュリティルール222を調べるように設定されてよい。また、SVMMセキュリティエージェント217は、複数のセキュリティルール222に基づいて、次に何のアクションを行うかに関する複数の指示をSVMM216に提供するように設定されてよい。そのような次のアクションは、試行済みアクションを許可すること、試行済みアクションを拒否すること、または複数の他の修正ステップをとることを含んでよい。
試行済みアクセスのトラップ動作と、SVMM216及びSVMMセキュリティエージェント217による複数のシステムリソース214の実行とは、インO/Sセキュリティエージェント218により収集された情報を介して調整されてよい。インO/Sセキュリティエージェント218は、SVMM216及びSVMMセキュリティエージェント217のトラップ及び処理の動作に対しコンテキストを提供するように設定されてよい。例えば、特定のオペレーティングシステムデータ構造は、通常、特定のアプリケーションまたはサービスによって書き込みされるだけかもしれない。インO/Sセキュリティエージェント218は、何のアプリケーションまたは処理がオペレーティングシステム212上で現在、見かけ上、動作しているかを特定し、情報をSVMMセキュリティエージェント217に通信してよい。特定のアプリケーションまたはサービスが見かけ上、動作しているとしてリスト化されていない場合には、このときデータ構造に対する試行済みの書き込みは、権限のないアプリケーションまたは処理から来ているかもしれない。
インO/Sセキュリティエージェント218は、複数のハイパーコールを介してSVMM216及び/またはSVMMセキュリティエージェント217と通信するように設定されてよい。複数のハイパーコールは、関連した複数の入力及び出力パラメータだけでなく、使用され得る複数の入手可能な要求を定義する記述子テーブルと共に実装されてよい。そのような記述子テーブルは、インO/Sセキュリティエージェント218がSVMM216及び/またはSVMMセキュリティエージェント217に通信することが可能な1または複数の要求を定義してよい。そのような記述子テーブルはまた、そのような要求についての複数の入力及び出力パラメータがメモリ内でどこに配置されるかを定義してよい。
インO/Sセキュリティエージェント218、SVMMセキュリティエージェント217及びプロテクションサーバ202は、互いに認証するように設定されてよい。セキュリティエージェント212、SVMMセキュリティエージェント217及びプロテクションサーバ202のそれぞれは、複数のエンティティのそれぞれが認証されない限り、互いに通信を継続しないように設定されてよい。SVMM216は、インO/Sセキュリティエージェント218のイメージをメモリ206に位置付けると共に、暗号サインアルゴリズムを使用することでメモリ206内のインO/Sセキュリティエージェント218のイメージを検証するように設定されてよい。プロテクションサーバ202、インO/Sセキュリティエージェント218及びSVMMセキュリティエージェント217の間の認証は、暗号ハッシング及び/または複数のサインアルゴリズムを含む任意の適切な方法を使用してよい。一実施形態では、そのような認証は、プライベートシークレットキーの交換を伴ってよい。インO/Sセキュリティエージェント218は、SVMMセキュリティエージェント217のインスタンスを検証するべく、プロテクションサーバ202から秘密鍵を受信するように設定されてよい。
インO/Sセキュリティエージェント218は、オペレーティングシステム212の動作に関するコンテキストの情報を有してよい。インO/Sセキュリティエージェント218は、そのようなコンテキストの情報を提供するべく、SVMMセキュリティエージェント217と通信するように設定されてよい。SVMMセキュリティエージェント217は、例えばどのようにメモリの複数の特定のページを定義するか、または、どのレジスタをトラップするかについてSVMM216に指示してよい。
SVMM216は、SVMMセキュリティエージェント217により定義された、複数のシステムリソース214への複数のアクセス試行をトラップするように設定されてよい。例えば、メモリアクセスの複数のトラップについて、SVMM216は、読み取り、書き込みまたは実行のような複数の動作をトラップするように設定されてよい。複数のプロセッサレジスタ230へのアクセスをトラップするべく、SVMM216は、複数のレジスタ値の読み込み、格納または読み取りを含む複数の動作をトラップするよう命令されてよい。複数のI/Oデバイス226の複数のI/O動作をトラップするべく、SVMM216は、キーボード、マウスまたは複数の他の周辺機器に対する入力または出力のような複数の動作をトラップするよう命令されてよい。以下の図面におけるSVMMセキュリティエージェント217及び/または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、I/O動作に関して、ターゲットI/Oデバイス226のID、I/Oデバイス226上で実行されるターゲット動作及び転送されるデータを特定するように設定されてよい。
SVMMセキュリティエージェント217は、オペレーティングシステム212の何れのエンティティが電子デバイス204のリソースにアクセスすることを試みたか、または、オペレーティングシステム212の何れのエンティティにリソースが属し得るかのようなコンテキストの情報を特定するように設定されてよい。SVMMセキュリティエージェント217は、任意の適切な方法を介してそのような特定を行うように設定されてよい。一実施形態では、SVMMセキュリティエージェント217は、そのような特定を行うべく、インオペレーティングシステムセキュリティエージェント218からのコンテキストの情報にアクセスするように設定されてよい。別の実施形態において、SVMMセキュリティエージェント217は、オペレーティングシステム212の異なるプロセスまたはアプリケーションによって生成された複数の呼び出しの順序を特定すべく、オペレーティングシステム212のコールスタック及び/またはプロセッサ208の実行スタックに直接または非直接にアクセスするように設定されてよい。実行命令ポインタは、トリガの原因となる命令を指してよく、一方、実行スタックポインタ及び実行ベースポインタは複数のスタックフレームを指してよい。スタックを通って実行ベースポインタに行くことにより、以前の複数の関数呼び出しが特定され、間近な動作のコンテキストを提供してよい。そのような複数のスタックは、ソースメモリ位置だけでなく、試みられた動作を示してよい。さらに別の実施形態では、SVMMセキュリティエージェント217は、試みが悪意のあるものであるか、またはマルウェアを示すかを特定するべく、メモリマップを複数のセキュリティルール222と合わせて使用するように設定されてよい。そのようなメモリマップは、例えば、試行済みアクセスのメモリ位置が与えられると、複数のリソースの試行済みアクセスを生成したエンティティを示してよい。そのようなメモリマップは、例えば複数の仮想メモリページ識別子及び/または複数の物理的なメモリアドレス内で定義されてよい。そのようなメモリマップは、他の例において、試みのターゲットのメモリ位置に対応するエンティティを示してよい。メモリマップを使用して、SVMMセキュリティエージェント217は、試行済みアクセスの、ソース及び複数のターゲットのID、または、それらの複数のエンティティ所有者を特定するように設定されてよい。メモリマップは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、SVMMセキュリティエージェント217または複数の他のビロウO/Sセキュリティエージェントにより、システムの実行の監視を介して部分的に生成されてよい。SVMMセキュリティエージェント217及び/または他の複数のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、所定のメモリページまたは物理アドレスに対し、そのような位置が特定のコードサブセクションまたはデータサブセクションに属するかを特定してよく、どのモジュール、処理、アプリケーション、イメージ、または他のエンティティにそのような位置が属するかを特定してよく、或いは、そのような位置がユーザモードまたはカーネルモードのエントリに関連するかを特定してよい。SVMMセキュリティエージェント217及び/または他の複数のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、電子デバイス204上で動作している様々な複数のエンティティのID,位置及び複数のアクセス許可を示す、仮想メモリ及び物理メモリのマッピングのためのメタデータを特定してよい。同様に、SVMMセキュリティエージェント217及び/または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、大容量ストレージデバイスにおけるそのような複数のエンティティの複数のイメージの位置を特定すべく、大容量ストレージデバイスにおける複数のセクタのマッピングを使用してよい。SVMMセキュリティエージェント217及び/または複数の他のビロウ‐オペレーティングシステムセキュリティエージェントは、複数のインオペレーティングシステムセキュリティエージェントと合わせて、所定のエンティティに対し、それらが存在する複数のセクタ、複数のファイル、複数のディレクトリ、及び複数のボリュームを特定してよい。
SVMMセキュリティエージェント217は、インO/Sセキュリティエージェント218、SVMMセキュリティエージェント217及びSVMM216の動作に対し、要求に従ってシステムメモリ228のようなメモリを割り当てるように設定されてよい。SVMMセキュリティエージェント217は、そのような割り当てメモリを、権限のない読み取り及び書き込み動作からSVMM216が保護することを要求するように設定されてよい。インO/Sセキュリティエージェント218によってメモリが割り当てられたときと、SVMM216により保護が確立されたときとの間でマルウェアによって悪意のあるコードが追加される機会を排除するべく、SVMM216は、メモリ保護が確立された後に、割り当てメモリを初期化するように設定されてよい。
SVMMセキュリティエージェント217は、複数のSVMMセキュリティルール222をセキュアに受信するべく、プロテクションサーバ202と通信するように設定されてよい。複数のSVMMセキュリティルール222は、どのセキュリティポリシーを用いるかに関しSVMM216に命令する、複数の命令、ロジック、複数のルール、複数の共用ライブラリ、複数の関数、複数のモジュールまたは任意の他の適したメカニズムを含んで良い。SVMMセキュリティエージェント217は、複数の不審なアクティビティ及び検出されたマルウェアに関して、情報を電子デバイス204からプロテクションサーバ202に伝達するように設定されてよい。
インO/Sセキュリティエージェント218は、複数のインO/Sセキュリティルール220を受信するべく、プロテクションサーバ202と通信するように設定されてよい。複数のインO/Sセキュリティルール220は、インO/Sセキュリティエージェント218が電子デバイス204上でマルウェアを検知するための複数の命令、ロジック、複数のルール、複数の共用ライブラリ、複数の関数、複数のモジュールまたは任意の他の適したメカニズムを含んでよい。インO/Sセキュリティエージェント218は、電子デバイス204上の複数の不審なアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ202に伝送するように設定されてよい。
複数のインO/Sセキュリティルール220及び複数のSVMMセキュリティルール222はそれぞれ、複数のマルウェア感染から電子デバイス204を保護し、かつ、マルウェアを含み得る複数の不審なアクティビティを検出する複数の保護ルールを含んでよい。インO/Sセキュリティエージェントの複数のセキュリティルールは、インO/Sセキュリティエージェント218によって、インO/Sセキュリティエージェント218内で実行される複数のルールを含んでよい。複数のSVMMセキュリティルール222は、SVMM216及び/またはSVMMセキュリティエージェント217によって、SVMM216及び/またはSVMMセキュリティエージェント217内で実行される複数のルールを含んでよい。
複数のSVMMセキュリティルール222は、電子デバイス204の複数のマルウェア感染を観察及び検知する方法の複数の定義を含む情報を、SVMMセキュリティエージェント217に提供するように設定されてよい。例えば、複数のSVMMセキュリティルール222は、アプリケーション210またはドライバ211のような複数のエンティティからの複数の関数呼び出しまたは複数の挙動のどのようなタイプを、SVMMセキュリティエージェント217がマルウェアの兆候を得るために監視し得るかの分類を含んでよい。他の例として、複数のSVMMセキュリティルール222は、何のパラメータを使用するかをはじめとして、SVMMセキュリティエージェント217がそのように引き起こされた複数の関数呼び出しをどのように処理し得るか、そのような複数の呼び出しからどのように値を抽出するか、または、そのような複数の呼び出しの動作をどのように検証するか、の定義を含んでよい。さらに、複数のSVMMセキュリティルール222は、そのような挙動の検知ルールに対する複数の例外だけでなく、電子デバイス内の、アプリケーション210またはドライバ211のような複数のエンティティの挙動を監視する方法についての情報であって、SVMMセキュリティエージェント217内に対する情報を含んでよい。さらに他の例として、複数のSVMMセキュリティルール222は、そのような挙動の検知ルールにより検知された悪意のある複数の挙動を妨いで修復する方法についての、SVMMセキュリティエージェント217に対する情報を含んでよい。複数のSVMMセキュリティルール222は、どのようなデータをSVMMセキュリティエージェント217が監視し、収集し、かつ、プロテクションサーバ202に送るべきかの詳細を含んでよい。
同様に、複数のインO/Sセキュリティルール220は、電子デバイス204のマルウェア感染を観察及び検知する方法と、そのような複数のアクティビティをSVMMセキュリティエージェント217と調整する方法との定義を含む情報をインO/Sセキュリティエージェント218に提供するように設定されてよい。複数のSVMMセキュリティルール222はまた、どのようなアクションをSVMM216がトラップするかに関する複数のルールを含んでよい。SVMMセキュリティエージェント217は、そのような複数のルールをSVMM216に適用するように設定されてよい。例えば、SVMMセキュリティエージェント217は、トラップされる機能のアドレスを、識別可能な仮想のまたは物理的なメモリのページに変換し、そのようなページの実行をSVMM216にトラップさせる要求を生成し、かつ、その次に、実行のトラップ後にセキュリティエージェント217を呼び出すように設定されてよい。SVMMセキュリティエージェント217は、SVMM216との自身のインターフェースを介して複数のSVMMセキュリティルール222を受信するように設定されてよい。そのようなインターフェースは、ハイパーコールベースのインターフェースを含んでよい。SVMMセキュリティエージェント217は、同一のハイパーコールベースのインターフェースを介して、結果として生じる任意の複数の検出または複数の報告をSVMM216にプッシュするように設定されてよい。
一実施形態では、SVMM216は、SVMMセキュリティエージェント217に相談することなく、複数のトリガードアクションを処理するように設定されてよい。そのような実施形態において、SVMM216は、SVMM216内で処理される複数の追加トリガをインストールするように設定されてよく、追加トリガはSVMMセキュリティエージェント217には送信されないかもしれない。そのような複数の追加トリガは、複数のSVMMセキュリティルール222によって定義されてよい。一実施形態では、複数のSVMMセキュリティルール222は、SVMM216のために複数のメモリページをスキャンする複数のルールを定義してよい。そのような複数のルールは、悪意のある複数のエンティティまたは複数の変形のリストを含んでよく、メモリ内に存在することを許可されるべきではない。そのような複数のルールはまた、システムメモリ228内に存在することを特に許可された複数のページのリストを含むよう構成されたホワイトリストを含んでよい。別の実施形態において、複数のSVMMセキュリティルール222は、複数のメモリページアクセスルールをSVMM216に対して定義してよい。そのような複数のルールは、どのようなコードページが所定のコードまたはデータページへのアクセスを許可され、または逆に禁止されるかの定義を含んでよい。結果として、複数のSVMMセキュリティルール222は、SVMM216にメモリスキャナとして動作することを命令する、及び/または、複数のメモリページへのアクセスを制御するように設定されてよい。
SVMM216は、複数のシステムリソース214における、それぞれのコード及び複数のデータページへの権限のない読み取り及び書き込みアクセスを妨げることで、SVMMセキュリティエージェント217、SVMM216及びインO/Sセキュリティエージェント218を保護するように設定されてよい。例えば、アプリケーション210またはドライバ211がシステムメモリ228、複数のプロセッサレジスタ230または複数のI/Oデバイス226の一部分に対する要求であって、SVMMセキュリティエージェント217、SVMM216およびインO/Sセキュリティエージェント218の整合性または動作に影響を及ぼす結果となる要求を生成する場合には、このときSVMM216は、そのような試行済み要求をインターセプトし、その次に、要求を再ルーティングするか、要求を拒否するか、または他の適切なアクションをとるように設定されてよい。他の例において、SVMM216は、SVMMセキュリティエージェント217それ自体または他の対応する若しくは提携された複数のプログラムのような複数のメモリセキュリティソフトウェアアプリケーションに対し、SVMMセキュリティエージェント217、SVMM216及びインO/Sセキュリティエージェント218に影響を及ぼすシステムメモリ228、複数のプロセッサレジスタ230または複数のI/Oデバイス226の複数の部分への読み取りアクセスを許可するように設定されてよい。そのような許可は、システムメモリ228のような複数のシステムリソース214へのアクセスを処理する方法をSVMM216に対して定義し得る複数のSVMMセキュリティルール222内で定義されてよい。一実施形態では、複数のSVMMセキュリティルール222は、SVMMセキュリティエージェント217を含み得る、信頼された複数のセキュリティプログラムのホワイトリストを含んでよい。
プロテクションサーバ202と通信すべく、SVMM216は、安全なネットワークインターフェース224を含んでよい。安全なネットワークインターフェース224は、プロテクションサーバ202のようなネットワークサーバと、SVMM216またはSVMMセキュリティエージェント217のような、電子デバイス204の要素との間のセキュアアクセスを提供するように設定されてよい。SVMM216は、安全なネットワークインターフェース224を実装し得る、論理TCP/IPドライバまたは他の通信インターフェースを含んでよい。プロテクションサーバ202は、安全なネットワークインターフェース224を介して通信することで、複数のSVMMセキュリティルール222または複数のインO/Sセキュリティルール220のような複数の保護ルールを提供するだけでなく、SVMM216またはSVMMセキュリティエージェント217に自身の更新を命令するように設定されてよい。プロテクションサーバ202は、特定の電子デバイス204または特定のSVMM216に対し、カスタマイズされた複数のルールを配信するように設定されてよい。そのようなカスタマイズは、アンチウイルスプログラム、ファイアウォールまたは他の保護メカニズムのような、電子デバイス204内の複数の他の保護メカニズムと共に、電子デバイス204上で報告されている複数の悪意のあるアクティビティのタイプを含んでよい。一実施形態では、プロテクションサーバ202は、例えばローカルネットワーク上の電子デバイス204の管理者によって操作される。そのような場合、管理者は、不審な挙動を処理するためのグローバルなまたは個別化された複数のポリシーを設定してよく、これはプロテクションサーバ202から受信される複数のルールによって実装されうる。SVMM216は、SVMM216またはSVMMセキュリティエージェント217に対し、プロテクションサーバ202を介してセキュアに配信された新たなイメージを用いて自身を更新する方法を知らせる更新エンジンを含んでよい。
複数のインO/Sセキュリティルール220及び複数のSVMMセキュリティルール222はそれぞれ、電子デバイス204上の特定のまたは複数クラスの、観察された複数のアクションまたは複数の動作がプロテクションサーバ202に送信されることを要求するよう構成されてよい。そこで、プロテクションサーバは、電子デバイス204上でアクションが進行することを許可される前にその観察を検査及び検証してよい。プロテクションサーバ202は、そのようなアクションが同期して、または非同期的に検査されることを認めるように設定されてよい。一実施形態では、インO/Sセキュリティエージェント218は、プロテクションサーバ202によって検証するべく、不審な複数のアクティビティ、コード若しくはデータの複数のセグメント、または複数のアクションをSVMM216にパスするように設定されてよい。例えば、インO/Sセキュリティエージェント218は、メモリ内に読み込まれた無署名のドライバを検出することで、マルウェアの不審なインスタンスを検知してよい。SVMM216は、不審なソフトウェアについての情報をインO/Sセキュリティエージェント218から受信してよく、それをプロテクションサーバ202に提供してよい。
複数のSVMMセキュリティルール222は、電子デバイスの任意の適切なシステムリソースに対するアクセスを許可または拒否するように設定されてよい。監視に使用可能な、そのような複数のリソースは、プロセッサ208により露出される複数のリソースに依存してよい。例えば、一実施形態では、複数のSVMMセキュリティルール222は、システムメモリ228、複数のIOデバイス226及び複数のインタラプト140に対するアクセスをSVMM216が制限するのを許可するように設定されてよい。制限されたシステムメモリ228へのアクセスは、例えば、EPTまたはオペレーティングシステムの複数のページテーブルを用いて達成されてよい。そのような制限は、キーボード、複数のディスプレイまたは複数のリムーバブルディスクのような複数のI/Oデバイスに対する不正アクセスを妨げてよい。別の実施形態において、複数のSVMMセキュリティルール222は、インタラプト240のような複数のプロセッサレジスタにおける複数のエントリを含む、インタラプト記述子テーブルの複数のエントリへのアクセスを、SVMM216が制限するのを許可するように設定されてよい。さらに別の実施形態では、複数のSVMMセキュリティルール222は、SVMM216が拡張ページテーブル(「EPT」)、または、ホスト物理メモリに対する仮想メモリ(ゲストオペレーティングシステムのパースペクティブからの実メモリ)のマッピングを処理する任意の他のメカニズムを監視することを許可するように設定されてよい。EPTにおける複数のアクセス許可の変更または他のアクセスは、VMCSにおけるイベントをトリガしてよい。
仮想化をサポートするプロセッサ208に加えて1または複数のプロセッサを電子デバイス204が含む場合には、SVMM216、または、SVMM216の他のインスタンスは、そのような他の複数のプロセッサの仮想化された複数のリソースにアクセスする複数の試みをインターセプトするように設定されてよい。電子デバイス204が例えばプロセッサ208を含んだクアッドプロセッサを含む場合には、クアッドプロセッサの複数のリソースは、SVMM216によって保護されてよい。1または複数の他のプロセッサが仮想化をサポートしない場合には、SVMM216は、それらの複数のリソースに対してセキュアアクセスが可能ではないかもしれない。1または複数の他のプロセッサがプロセッサ208とは異なる仮想化技術をサポートする場合には、たとえプロセッサ208とは異なる態様ではあるが、SVMM216が保護されているとしても、複数のリソースが仮想化された態様が異なり得るため、SVMM216は、それらの複数のリソースに対してセキュアアクセスするように設定されてよい。
動作において、プロテクションサーバは、ネットワーク244上で動作していてよい。インO/Sセキュリティエージェント218は、マルウェアを求めて電子デバイス204をスキャンし、不審な挙動を求めて電子デバイス204上のアプリケーション210及びドライバ211のような複数のエンティティの挙動を観察し、見つけられたそのような任意の感染を修復することで電子デバイス204をマルウェア感染から保護すべく、電子デバイス204上で動作していてよい。インO/Sセキュリティエージェント218は、オペレーティングシステム212と同一の優先度またはレベルで動作していてよく、オペレーティングシステム212内で動作していてよい。SVMM216は、電子デバイス204の複数のシステムリソースの試行済みアクセスをトラップすることで電子デバイス204をマルウェア感染から保護するべく、電子デバイス204上で動作していてよい。SVMMセキュリティエージェント217は、SVMM216のトラップ動作を設定し、複数のシステムリソースのトラップされた試行済みアクセスの幾つか又は全てを処理すべく、電子デバイス204または他の適切な電子デバイス上で動作していてよい。SVMM216及びSVMMセキュリティエージェント217は、「リング−1」の優先度を有するオペレーティングシステム212より下で動作していてよい。SVMMセキュリティエージェント217は、SVMM216上で動作していてよい。
プロテクションサーバ202は、複数のSVMMセキュリティルール222及び複数のインO/Sセキュリティルール220のような複数のセキュリティルールを電子デバイス204に送ってよい。そのような複数のルールは、複数のインO/Sセキュリティルール220をSVMM216に提供し得るSVMMセキュリティエージェント217によって受信されてよい。そのような複数のルールは、インO/Sセキュリティエージェント218によって受信されてよい。
プロテクションサーバ202、セキュリティエージェント218及びSVMMセキュリティエージェント217はそれぞれ、互いに認証してよい。SVMMセキュリティエージェント217は、セキュリティエージェント218のイメージをメモリ内に位置付け、暗号サインアルゴリズムを使用して、メモリ内に常駐のセキュリティエージェント218のイメージを検証してよい。プロテクションサーバ202及びSVMMセキュリティエージェント217は、暗号ハッシング及び複数のサインアルゴリズムを用いて互いに認証し、互いを正しく特定してよい。SVMMセキュリティエージェント217及びプロテクションサーバ202はまた、互いのIDを認証すべく、プライベートシークレットキーを交換してよい。セキュリティエージェント218は、SVMMセキュリティエージェント217のインスタンスを検証すべく、プロテクションサーバ202から秘密鍵を受信してよい。セキュリティエージェント218、SVMMセキュリティエージェント217および202の間の通信は、複数のエージェントのそれぞれが互いに認証されない限り、完全には確立されないかもしれない。同様に、SVMMセキュリティエージェント217及びSVMM216は、それらが別個のエンティティとして動作している場合には、互いに検証及び認証してよい。
SVMM216及びSVMMセキュリティエージェント217は、オペレーティングシステム212と、電子デバイス204のすべてのオペレーティングシステムの下方で動作していてよい。SVMM216は、オペレーティングシステム212、セキュリティエージェント218、アプリケーション210及びドライバ211によって、複数のI/Oデバイス226、システムメモリ228、及び複数のプロセッサレジスタ230を含む複数のシステムリソース214に対するアクセスを監視してよい。SVMM216は、オペレーティングシステム212、セキュリティエージェント218、アプリケーション210、ドライバ211または電子デバイス204の他の任意のエンティティにより要求された複数のキー動作の実行をトラップしてよい。SVMM216は、VMCS221内の複数のフラグを操作することで、そのような実行をトラップしてよい。VMCS221が保護リソースの要求をインターセプトするとき、動作は、さらなる動作、診断及び修復を目的としてSVMM216にハンドオフされてよい。一実施形態では、動作は、その次にSVMMセキュリティエージェント217によって処理されてよい。別の実施形態において、トラップされた動作の処理は、SVMM216自体によって実行されてよい。SVMM216は、マルウェアからの保護を提供するべく、電子デバイス204の任意の必要な動作をトラップしてよい。そのような複数の動作は、限定されるものではないが、システムメモリ228における特定のコードまたは複数のデータページの読み取り、書き込み及び実行か、システムレジスタ及び複数のプロセッサレジスタ230からの値の読み込み及び格納か、或いは、複数のI/Oデバイス226へのまたは複数のI/Oデバイス226からの読み取りを含んでよい。SVMM216によりトラップされる特定の複数の動作は、SVMMセキュリティルール222により定義されてよい。
プロテクションサーバ202は、SVMMセキュリティエージェント217またはインO/Sセキュリティエージェント218と通信することで、それぞれに複数のセキュリティルールを提供してよい。一実施形態では、プロテクションサーバ202は、SVMMセキュリティエージェント217に複数のSVMMセキュリティルール222を配信してよい。別の実施形態において、プロテクションサーバ202は、インO/Sセキュリティエージェント218に複数のインO/Sセキュリティルール220を配信してよい。さらに別の実施形態では、プロテクションサーバ202は、SVMMセキュリティエージェント217に複数のインO/Sセキュリティルール220を配信してよく、SVMMセキュリティエージェント217は次に複数のルールをインO/Sセキュリティエージェント218に提供してよい。
電子デバイス204上で動作しているアプリケーション210、ドライバ211または他の複数のエンティティはインO/Sセキュリティエージェント218によって観察されてよい。インO/Sセキュリティエージェント218は、複数のインO/Sセキュリティルール220を使用して、そのような処理中の複数のエンティティの挙動を観察することで、マルウェア感染の可能性を示す不審な挙動をそれらの挙動が構成するか特定してよい。複数の不審なアクティビティがそのように検出されると、インO/Sセキュリティエージェント218は、さらなる解析及び命令のためにプロテクションサーバ202に不審情報を提供してよい。複数のインO/Sセキュリティルール220は、そのような複数の挙動が不審であることと、修正アクションとをインO/Sセキュリティエージェント218に示してよい。例えば、アプリケーション210は、ホストマルウェアに知られているネットワークデスティネーションと通信してよい。インO/Sセキュリティエージェント218は、アプリケーション210のアクティビティに気が付き、その次にネットワークデスティネーションへのアプリケーション210のネットワークアクセスをブロックしてよい。インO/Sセキュリティエージェント218はまた、マルウェアを求めて電子デバイス204をスキャンしてよい。例えば、インO/Sセキュリティエージェント218は、マルウェアのシグネチャに対応する複数のパターンを求めてメモリ206のコンテンツまたはシステムメモリ228を検査してよい。そのような検査は、例えば、マルウェアの既知のセグメントに対応するコードのブロックをアプリケーション210が含むことを明らかにしてよい。次に、インO/Sセキュリティエージェント218は、アプリケーション210を修復するか、アプリケーション210取り除くか、または、任意の他の適したアクションを取ることで、電子デバイス204をクリーニングしてマルウェアの感染を除いてよい。インO/Sセキュリティエージェント218は、検出された任意の不審な挙動、またはマルウェアの他の複数の兆候に関してプロテクションサーバ202と通信してよく、そのようなマルウェアを扱う方法についてプロテクションサーバ202から複数の命令を受信してよい。
一実施形態では、SVMMセキュリティエージェント217は、試行済み動作を生成したエンティティのオリジンに基づいて、トラップされた動作を評価するように設定されてよい。例えば、ドライバが未知のドメインからダウンロードされた場合、またはドライバが未知の保証人からの証明書を有している場合には、そのときは、引き続いて動作するためのドライバの能力は限られてよい。例えば、ステータスが未知のドライバは、自身を他のドライバに接続する能力が拒否されてよい。ホストマルウェアにとって既知のドメインからドライバがダウンロードされた場合、またはドライバが不正な認証を含む場合には、そのときは、ドライバは、読み込みさえ許可されないかもしれない。同様に、ドライバが特定のドメインからのものであるか、または特定の作成者により生成されていると知られている場合は、そのときは、SVMMセキュリティエージェント217は、電子デバイス204内の複数のサービスがドライバ更新を認証されていると認識してよく、これらのサービスに対し、書き込みまたはドライバへのアクセスの能力を制限するように設定されてよい。例えば、X会社からのカーネルドライバは、電子デバイス204上に常駐の、X会社の更新サービスソフトウェアだけから書き込まれてよい。SVMMセキュリティエージェント217は、更新サービスの動作及び整合性を検証するように設定されてよい。別の実施形態において、SVMMセキュリティエージェント217は、試みのターゲットに基づいて、トラップされた動作を評価するように設定されてよい。例えば、サービスからのソフトウェア更新の試みは、アプリケーションソフトウェア用ではなくカーネルドライバ用に、トラップされてよい。
一旦、エンティティが不審であると特定されるか、或いは試みがマルウェアを示すと特定されると、試みの原因となった処理と、処理を収容するメモリとがリンクされてよい。メモリの同一部分にアクセスする他の処理は、マルウェアであると同様に特定されてよい。リソースにアクセスしようとする、トラップされた試みは格納されてよく、保護リソースにアクセスしようとする次の試みは、元のイベントを考慮して評価されてよい。例えば、悪意のある動作は、コードがデータセグメントに書き込まれ、次に実行されることを要求してよい。従って、SVMMセキュリティエージェント217は、データセグメントへの元の書き込みアクセスをトラップし、書き込みを許可し、但し書き込みアクセスのソースを記録してよい。その次に、SVMMセキュリティエージェント217は、データセグメントを実行しようとする次の試みをトラップし、前にトラップされた動作、それを試みたエンティティ、または他の適した犯罪科学捜査の(forensic)情報を考慮して、試みの悪意のステータスを評価してよい。
SVMMセキュリティエージェント217は、VMCS221のような制御構造を介して、またはEPTを介して、複数のシステムリソース214の何れをSVMM216がトラップするかに関してSVMM216に命令してよい。次に、SVMM216は、オペレーティングシステム212、アプリケーション210またはドライバ211のような、電子デバイス204の複数のエンティティに由来する複数のシステムリソース214に対するアクセス要求をトラップしてよい。例えば、システムメモリ228の複数の部分の読み取り、書き込みまたは実行の要求が生成された場合には、SVMM216は、VMCS221内のシステムメモリの指定部分に対するフラグセットを介して、または、EPTにより検知された変更をインターセプトすることで、そのような要求をインターセプトしてよい。他の例において、入力または出力の複数の動作のような、複数のI/Oデバイス226の、生成されたアクセス要求は、VMCS221によってインターセプトされてよい。さらに他の例において、複数のコマンドの読み込みまたは格納のような、プロセスレジスタ230の複数の要求は、VMCS221によりトラップされてよい。そのような任意のトラップは、SVMM216に試行済みアクセスの通知をもたらしてよい。一旦、SVMM216がシステムリソース214上で試行済み動作をトラップすると、SVMM216は、SVMMセキュリティエージェント217に対し、そのようなトラップされた実行を通信してよい。
インO/Sセキュリティエージェント218及びSVMMセキュリティエージェント217は、オペレーティングシステム212内で実行される複数の動作のコンテキストを特定すべく通信してよい。例えば、オペレーティングシステム212から電子デバイス204の特定のリソースへの、トラップされたシステムコールは、メモリの特定の部分を起源としたかもしれない。SVMMセキュリティエージェント217は、どのようなアプリケーション、処理または他のエンティティがメモリの特定の部分内に存在するかを特定すべくインO/Sセキュリティエージェント218と通信してよい。
複数のSVMMセキュリティルール222、及び、トラップされた動作及び/またはインO/Sセキュリティエージェント218からのコンテキストの情報に基づき、次にSVMMセキュリティエージェント217は、マルウェア感染を示すような不審なアクションを、そのようなアクセスが構成するか特定してよい。例えば、権限のないアプリケーションによる保護メモリスペースのシステムメモリ228の試行済みの変更は、不審なアクティビティであってよい。従って、SVMM216により検知された、そのような試行済みの変更は、SVMMセキュリティエージェント217により解釈されて、マルウェアの動作となってよい。そのようなアクティビティはさらなる命令を目的としてプロテクションサーバ202に報告されてよく、或いは、アクションは複数のインO/Sセキュリティルール220により導かれてよい。そのような検出の結果は、システムメモリ228における試行済みの変更をブロックすべきであってよく、或いは、試行済みの変更を生成した電子デバイス204のエンティティ上で追加のクリーニング動作を引き起こすべきであってよい。
SVMM216は、SVMM216、SVMMセキュリティエージェント217及び/またはインO/Sセキュリティエージェント218の整合性を保護すべく、システムリソース214への追加の複数の呼び出しを監視してよい。SVMM216は、複数のSVMMセキュリティルール222により定義されるスキャン動作を行って、システムメモリ228の複数の部分をスキャンすることで、そのようなメモリの複数の部分がマルウェアによって変更されているか特定してよい。SVMM216は、メモリの所定パターンが安全でない、または安全であるとして知られることを示す、複数のシグネチャ、複数のハッシュまたは他の複数のルールを利用してよい。
例えば、SVMM216は、システムメモリ228のインO/Sセキュリティエージェント218に対応するコード及び複数のデータページに対する、権限のない読み取り及び書き込みアクセスを妨げることにより、インO/Sセキュリティエージェント218を保護してよい。いくつかのマルウェアは、複数のメモリ修正、または、システムメモリ228に関連する複数のシステムリソース214に対する他の複数の変形を生成することで、インO/Sセキュリティエージェント218を攻撃するよう試みるかもしれない。SVMM216は、インO/Sセキュリティエージェント218に対応するコードまたはデータまたは他の複数のシステムリソース214を変更することが許可され得る、認証された複数のアプリケーションと、電子デバイス204の他の複数のエンティティとの複数のSVMMセキュリティルール222に含まれるホワイトリストを読み取ってよい。ホワイトリスト内に含まれないエンティティに変形が由来する場合には、このときSVMM216は、そのような変形がマルウェアに関連すると特定してよい。インO/Sセキュリティエージェント218に対応する複数のシステムリソース214への不正アクセスは、アクセスのブロック、ハニーポットプロセスの作成、プロテクションサーバ202への違反報告、または任意の他の適した対策を含む任意の適切な方法で、SVMMにより処理されてよい。
SVMM216はまた、電子デバイス204の他の複数のエンティティに属する複数のシステムリソース214へのアクセスをトラップしてよい。例えば、システムメモリ228内のターゲットメモリページは、オペレーティングシステム212のカーネル動作の一部に属するサンプルのコードまたはデータを含んでよい。SVMM216及び複数のSVMMセキュリティルール222は、認証された複数のコードサブセクションだけを目的とする、そのようなターゲットページへのアクセスを限定してよい。結果として、システムメモリ228のコードページが、ターゲットメモリページの読み取りまたは変更を試み、かつ、コードページが電子デバイス204の非認証エンティティに属する場合には、そのようなアクセスは、SVMM216によりブロックされてよい。従って、SVMM216は、システムメモリ228内のメモリページへのアクセスを制御するよう動作してよい。
SVMMセキュリティエージェント217は、複数の更新されたルールを目的としてプロテクションサーバ202にコンタクトすることで、複数のSVMMセキュリティルール222または複数のインO/Sセキュリティルール220を更新することが可能であってよい。プロテクションサーバ202は、観察された特定のマルウェア、複数のアドミニストレータセッティング、または電子デバイス204の他の特性に基づいて、複数のルールがSVMMセキュリティエージェント217に配信されるよう設定してよい。SVMMセキュリティエージェント217は、ユーザからの要求があったときに、定期的に、または、マルウェアにリンクされ得る新たな不審なアクティビティへの遭遇のような重要なイベントが発生したときに、電子デバイス204の複数のルールを更新してよい。
SVMMセキュリティエージェント217は、複数の複合条件に対応するVMCS内の複数のフラグをセットしてよい。そのような複数のフラグは、トラップされる複数の異なるタイプのリソースに及んでよい。例えば、VMCSは、メモリ内のページに対する特定の値の書き込みと、その後のI/Oデバイスのバッファへのページ移動との組み合わせをトラップするように設定されてよい。
システム200は、アンチマルウェアシステム及びソフトウェアの他の実施に比べて、1または複数の利点を有してよい。例えば、いくつかのアンチマルウェアソリューションは、アプリケーションの低レベルの複数の動作をトラップ及び評価するべく、オペレーティングシステムの様々な部分をフックしてよい。しかしながら、これらのソリューション自体は、オペレーティングシステム内で、または、2つのゲストオペレーティングシステムの場合には他のオペレーティングシステム内で動作しうる。オペレーティングシステムの範囲内で動作することにより、カーネルレベルの優先度でさえ、アンチマルウェアソリューションは、また同一のオペレーティングシステム上で動作しており、おそらく同一の優先度で動作しているマルウェアから、マルウェア攻撃を受けやすいかもしれない。特定の複数のイベントのトラップまたはトリガがオペレーティングシステムのレベルで実行される場合には、そのようなトラップまたはトリガは、フィッシングされるか、フックされるか、リバースエンジニアリングされるか、不正アクセスされるか、さもなくば、オペレーティングシステムと同一またはオペレーティングシステムより低い優先度で動作しているマルウェアにより破られる。例えば、オペレーティングシステム内で悪意のあるフックを検知及び除去する、オペレーティングシステム上で動作しているアンチマルウェアソリューションは、同一の優先度で動作しているマルウェアにより観察されてよい。
他の例において、特定のルーチンの動作を検知するフィルタドライバとして登録しているアンチマルウェアソリューションは、悪意のあるフィルタドライバをアンチマルウェアソリューションより低くドライバスタックに登録するマルウェアによって破られ得る。同様に、トラップまたはトリガされた複数の特定のイベントの処理がオペレーティングシステムのレベルで生じる場合には、マルウェアは、そのような処理に影響を与えることができ得る。例えば、マルウェアは、アンチマルウェアソリューションの複数の補正をアンドゥしてよいし、アンチマルウェアソリューションの動作を無効化さえしてよい。他の例において、複数のハイパーバイザは、システムメモリ228のような複数のシステムリソースに対するアクセスを仮想化するよう働いてよいが、複数のシステムリソースへのアクセスを条件的にガードしないかもしれず、従って、セキュリティハイパーバイザとして動作しないかもしれない。そのような複数のハイパーバイザは、複数のシステムリソースの複数の悪意のあるアクティビティ、複数のエンティティまたは悪意のある試行済みアクセスを特定する、複数のセキュリティルール222における複数の行動ルールのような複数のアンチマルウェアルールにアクセスを有さないかもしれない。そのような複数のハイパーバイザはオペレーティングシステム自体の中で動作していてよく、オペレーティングシステムは、オペレーティングシステムと同一の優先レベルで動作しているマルウェアに屈従し得る。そのような複数のハイパーバイザは、リング0特権モードで動作していないかもしれない。そのようなモードは、ハイパーバイザが複数のシステムリソースの非常に多くの試行済みアクセスをインターセプトするよう要求し得るためである。ハイパーバイザは、ゲストオペレーティングシステムの全ての態様を仮想化することを課されてよい。そのような仮想化の要求は、とても費用がかかるため、悪意のある挙動を調べるべく複数のセキュリティルールに同時にアクセスすることができないかもしれない。
複数のモジュールは、例えばロジック、複数の命令、コード、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の適切な組み合わせを含んでよい。
図3は、仮想マシンモニタベースの保護であって、電子デバイスのマルウェアからの保護の方法300の例示的な実施形態を示す図である。ステップ305において、ビロウO/Sセキュリティエージェント、インO/Sセキュリティエージェント、プロテクションサーバ及び仮想マシンモニタのID及びセキュリティが認証されてよい。そのような認証は、それぞれメモリに配置された複数のイメージ、暗号ハッシング、または複数の秘密鍵の位置付け及び認証によることを含む、任意の適切な方法を介して行われてよい。ステップ305が完了するまで、他の複数のステップは保留されてよい。
ステップ310において、プロテクションサーバは、複数のセキュリティルールを決定するべくアクセスされる。そのような複数のセキュリティルールは、ステップ315から380の判断を行うために使用されてよい。ステップ315において、仮想マシンモニタは、複数のシステムリソースへのアクセスをトラップするよう命令されてよい。そのようなアクセスは、電子デバイス上で動作している複数のアプリケーション、複数のドライバまたは複数のオペレーティングシステムから生じてよい。仮想マシンモニタは、電子デバイスのどのようなシステムリソースが監視されるべきかに関して命令されてよい。仮想マシンモニタはまた、監視された複数のシステムリソース上のどのような動作がトラップされるべきかに関して命令されてよい。例えば、システムメモリ上の読み取り、書き込みまたは実行動作がトラップされてよい。他の例において、複数のレジスタ上の読み込みまたは格納の複数の動作がトラップされてよい。さらに他の例において、複数のI/Oデバイス上の入力または出力の複数のアクションがトラップされてよい。
ステップ320において、トラップされるそのような複数の動作に対応する複数のフラグは、仮想マシン制御構造のような制御構造内で設定されてよい。そのようなトラップされた動作はVM Exitを生成してよく、トリガードイベントはフラグを付けられたリソースのアクセスがあると生成される。ステップ325において、仮想マシンモニタ、インO/Sセキュリティエージェント及びビロウO/Sセキュリティエージェントに対してシステムメモリが割り当てられるに従い、そのようなメモリは、権限のない読み取り及び書き込みの複数の動作から保護されてよい。
電子デバイスは、ステップ330−340において複数のシステムリソースのアクセスをトラップすること、ステップ345−355においてマルウェアの存在を求めてメモリをスキャンすること、及び、ステップ360−365において複数の試行済みのメモリ修正を求めてメモリをスキャンすること、の1つまたは複数を行い、これによって保護されてよい。複数のシステムリソースのアクセスをトラップすること、マルウェアの存在を求めてメモリをスキャンすること、及び、複数の試行済みのメモリ修正を求めてメモリをスキャンすることのそれぞれは、パラレルに実行されてよい。さらに、これらのそれぞれは、電子デバイスの動作を保護すべく、必要に応じて繰り返されてよい。
ステップ330において、システムメモリ、複数のレジスタまたは複数のI/Oデバイスのようなシステムリソースのアクセスは、トラップされてよい。アクセスは、VM Exitを生成するVMCSフラグを用いてトラップされてよい。そのようなトラップは、電子デバイス上で動作している複数のオペレーティングシステムより下のレベルで実行されてよい。ステップ335において、要求リソースへのアクセスの許可を要求エンティティが有しているかを特定するべく、アクセスが解析されてよい。試行済みアクセスに関連するコンテキストの情報は、そのような特定をするべくアクセスされてよい。複数のセキュリティルールは、そのような特定をするべくアクセスされてよい。不正アクセスは、不審なものであると特定されてよい。そのような処理及び複数の特定は、電子デバイス上で動作しているオペレーティングシステムより下のレベルでなされる。アクセスが不審な場合には、次にステップ340において、複数のシステムリソースの不審な試行済みアクセスはブロックされてよい。そのような試みは、プロテクションサーバに報告されてよい。アクセスが不審でない場合には、次にステップ370においてアクセスは許可されてよい。
ステップ345において、電子デバイスの複数のメモリページは、マルウェアの存在を求めてスキャンされてよい。電子デバイスのメモリのスキャンの間に、ホワイトリストは、電子デバイス上に常駐する複数のエンティティを反映する、メモリの複数のパターンが安全であると知られているかを特定するために使用されてよい。安全であると知られているメモリのパターンに遭遇すると、次にステップ370において、メモリは、電子デバイスへのアクセスを持ち続けることを許可されてよく、持ち続けてよい。電子デバイスのメモリのスキャンの間に、ブラックリストは、メモリの複数のパターンがマルウェアを含む、或いは、マルウェアに関連するとして知られているかを特定するために使用されてよい。ホワイトリスト及びブラックリストは、複数のセキュリティルールにアクセスすることでアクセスされてよい。ステップ350において、マルウェアに関連するとして知られるメモリのパターンが見つかった場合には、次にステップ375にいて、メモリのパターンは、修復、取り除き、または無効化されることで、電子デバイスへのアクセスが拒否されてよい。
ステップ355において、メモリは、メモリへの変形が試みられた、または試みられているかを特定すべく、スキャンされてよい。そのようなスキャンは、電子デバイスにおけるオペレーティングシステムのレベルより下で実行されてよい。そのようなメモリは、マルウェアにより変更されうるカーネルメモリ、複数のシステムデータ構造、または電子デバイスのメモリの任意の他の部分を含んでよい。例えば、電子デバイス上で動作している複数のアクティブスレッドのリストは、悪意のある処理の存在を隠すべく変更され得る。変形が検知された場合には、次にステップ365において、そのような複数の変形が許容可能であるかが特定されてよい。そのような複数の変形が許容可能であるかは、複数のセキュリティルールによって定義されてよい。例えば、アンチマルウェア処理のコードまたはデータページは、任意の他の処理によって、変形またはアクセスから保護されてよい。メモリ修正が認証されていると判断されると、次にステップ370において、変形が許可されてよい。メモリ修正が認証されておらず、かつ許可されていないと判断された場合には、次にステップ375において、変形が拒否されてよい。
ステップ370において、アクセスまたは変形が許可された場合には、次にアクセスまたは変形は、後の参照のために格納されてよい。マルウェアのいくつかの検出は、複数の過去のアクセスまたは複数の変形に関する情報を利用することで、そのような過去のアクセス及び現在検知されたアクセスが全体としてリソースの、悪意のあるアクセスを含むかを特定してよい。
ステップ375において、変形、アクセスまたは他の動作が拒否された場合には、次に、ステップ380において、そのようなイベントがプロテクションサーバに報告されてよい。そのような報告は、全ての関連するマルウェアまたは不審な挙動に関する情報を含んでよい。
方法300の複数のステップは、必要に応じて繰り返されて、電子デバイスを継続して、定期的に、またはオンデマンドで保護してよい。
図4は、メモリ保護のために、電子デバイス401上でビロウ‐オペレーティングシステムトラップを用いてソフトウェアアクセスを規制するシステム400の例示的な実施形態を示す図であるシステム400は、オペレーティングシステム413のような、電子デバイス401の複数のオペレーティングシステム内で動作しているソフトウェアベースの複数のエンティティからメモリにアクセスする悪意ある試みを検知すべく電子デバイス401上で動作するよう構成されたビロウO/Sセキュリティエージェント420を含んでよい。さらに、ビロウO/Sセキュリティエージェント420は、1または複数のセキュリティルール408及びメモリマップ406を使用することで、どのようなメモリの試行済みアクセスをトラップするか、及び、トラップされた動作に対応して生成されたトリガードイベントをどのように処理するかを決定するように設定されてよい。ビロウO/Sセキュリティエージェント420は、トリガードイベントに対して許可、拒否、または他の修正アクションを行うように設定されてよい。
電子デバイス401は、図1の電子デバイス103、または図2の電子デバイス204及び/またはそれらの任意の組み合わせによって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。電子デバイス401は、物理メモリ403のようなメモリに結合された1または複数のプロセッサ402を含んでよい。プロセッサ402は、図2のプロセッサ208によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。物理メモリ403は、図2のメモリ206によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。電子デバイス401はオペレーティングシステム413を含んでよく、オペレーティングシステム413は、1または複数のセキュリティルール421に結合されたインO/Sセキュリティエージェント419を含んでよい。オペレーティングシステム413は、図1のオペレーティングシステム112または図2のオペレーティングシステム212によって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。インO/Sセキュリティエージェント419は、図1のインO/Sセキュリティエージェント218または図2のSVMMセキュリティエージェント217及び/またはそれらの任意の組み合わせによって部分的に実装されるか、或いは、その機能を部分的に実施するよう構成されてよい。
ビロウO/Sセキュリティエージェント420は、図1のビロウO/Sトラップエージェント104またはトリガードイベントハンドラ108、図2のSVMM216またはSVMMセキュリティエージェント217、及び/またはそれらの任意の組み合わせによって全体的にまたは部分的に実装されるか、或いは、その機能を実施するよう構成されてよい。
複数のセキュリティルール408は、図1の複数のセキュリティルール114、図2の複数のセキュリティルール222、及び/またはそれらの任意の組み合わせによって実装されるか、或いは、その機能を実施するよう構成されてよい。複数のセキュリティルール421は、図2の複数のセキュリティルール220によって実装されるか、或いは、その機能を実施するよう構成されてよい。
ビロウO/Sセキュリティ420は、電子デバイス401のメモリへのアクセスをインターセプトするように設定されてよい。そのようなメモリは、例えば、物理メモリ403の複数のアドレスの試行済みアクセス、または、仮想メモリ404の複数のページの試行済みアクセスを含んでよい。そのような試行済みアクセスは、オペレーティングシステム413、または、アプリケーション410またはドライバ411のような、オペレーティングシステム413を利用して電子デバイス401上で動作する複数のエンティティに由来してよい。
一実施形態では、ビロウO/Sセキュリティ420によって保護されたメモリは、仮想メモリ404を含んでよい。仮想メモリ404は、オペレーティングシステム413、アプリケーション410またはドライバ411のような、物理メモリ及び/またはストレージから抽象化されている複数のエンティティにとって使用可能なメモリを含んでよい。使用される複数の実空間は、物理メモリ403のような実際の物理メモリ内に、及び/または、ディスク上のようなストレージ内に、共通点の無い状態で拡がってよいが、仮想メモリ404は、オペレーティングシステム413、アプリケーション410またはドライバ411のような複数のエンティティに対し、メモリの隣接ブロックとして現れてよい。仮想メモリ404は、プロセッサ402の拡張に従って仮想化されてよい。仮想メモリ404のアドレス空間は、複数のメモリページに分割されてよい。複数のメモリページのそれぞれは、4キロバイトのような、均等のサイズであってよい。電子デバイス401は、仮想メモリ404の複数の仮想アドレスを、物理メモリ403のようなメモリの複数の物理アドレス、またはストレージの複数のアドレスに変換する複数のページテーブルを使用するように設定されてよい。電子デバイス401は、仮想メモリ404の複数の仮想アドレスを物理メモリ403のようなメモリの複数の物理アドレス、及び/または、ストレージの複数のアドレスに変換するよう構成されたメモリ管理ユニット414(「MMU」)を含んでよい。仮想メモリ404の複数のページは、インデックスが付けられてよい。仮想メモリ404の複数のページの試行済みアクセスはページの試行済みの読み出し、書き込み、または実行を含んでよく、ビロウO/Sセキュリティエージェント420は試みをトラップするように設定されてよい。一実施形態では、仮想メモリ404のページは、物理的なメモリアドレスまたはストレージのアドレスに対応してよい。別の実施形態において、仮想メモリ404のページのそれぞれは、物理的なメモリアドレスに対応してよい。さらに別の実施形態では、オペレーティングシステム413の特定の部分のような特定の複数のコンテンツを含む複数のページはピニングされてよく、電子デバイス401の動作の間に変化しないかもしれない。
別の実施形態において、ビロウO/Sセキュリティエージェント420により保護されたメモリは、物理メモリ403を含んでよい。物理メモリ403は、所定の要素を含むメモリ範囲のベースアドレスであり得る物理メモリ403における特定の複数のアドレスを示す(A)、(B)、(C)、(D)、(E)、(F)、(G)、(H)、(I)、(J)及び(K)のような複数のマーカで示されるような、物理メモリの複数のアドレスを介してアクセスされてよい。物理メモリ403は特定のメモリアドレスの試行済みの読み出し、書き込みまたは実行を介してアクセスされてよく、ビロウO/Sセキュリティエージェント420は、試みをトラップするように設定されてよい。例えば、試行済みの書き込みは、変数「Value」で表される値が「Addrl」で表される特定のメモリアドレスに書き込まれる命令「MOV Addrl、Value」の形態を取り得る。物理メモリ403のアドレスに書き込む任意の命令が使用されてよい。試行済みの読み出しは、変数「Value」で表される値が「Addrl」で表される特定のメモリアドレスから読み取られる「MOV Value、Addrl」のような命令の形態を取り得る。物理メモリ403のアドレスから読み取る任意の命令が使用されてよい。試行済みの実行は、「Addrl」のような所定アドレスでの命令の形態を取り得る。メモリのアドレスを実行する任意の命令が使用されてよい。
ビロウO/Sセキュリティエージェント420は、仮想メモリ404に対する試行済みアクセスをインターセプトするように設定されてよい。さらに、ビロウO/Sセキュリティエージェント420は、物理メモリ403に対する試行済みアクセスをインターセプトするように設定されてよい。一実施形態では、仮想メモリ404への要求は、インターセプトされないかもしれないが、MMUが仮想メモリ404のページを物理メモリ403のアドレスに変換した後に、その後の対応する、物理メモリ403の試行済みアクセスはインターセプトされてよく、ビロウO/Sセキュリティエージェント420は物理メモリに対する試行済みアクセスをインターセプトするように設定されてよい。別の実施形態において、試行済みアクセスは、仮想メモリ404を介して変換されることなく、直接的な物理メモリ403のアクセスとされてよく、ビロウO/Sセキュリティエージェント420は、試行済みアクセスをインターセプトするように設定されてよい。さらに他の実施形態において、仮想メモリ404に対して生成された試行済みアクセスはインターセプトされてよいが、ビロウO/Sセキュリティエージェント420は、物理メモリ403のアドレスのその後のアクセスをインターセプトするよう構成されないかもしれない。
ビロウO/Sセキュリティエージェント420は、インO/Sセキュリティエージェント419と通信可能に結合されてよい。ビロウO/Sセキュリティエージェント420、電子デバイス401のメモリの試行済みアクセスに関するコンテキストの情報をインO/Sセキュリティエージェント419から受信するように設定されてよい。インO/Sセキュリティエージェント419によって提供されたコンテキストの情報は、電子デバイス401のメモリの特定のアクセスを試みた複数のエンティティのIDを含んでよい。
ビロウO/Sセキュリティエージェント420は、メモリマップ406に通信可能に結合されるか、メモリマップ406を含んでよい。メモリマップ406は、ファイル、レコード、データ構造、または他の適したエンティティのかたちで実装されてよい。メモリマップ406は、電子デバイス401の様々なエンティティの位置に関する情報をメモリ内に含んでよい。例えば、実行のために電子デバイス401のメモリ内に処理が読み込まれた場合には、メモリマップ406は、仮想メモリ404における複数のメモリページまたは物理メモリ403における複数のアドレスレンジの何れが処理を含むかに関する情報を含んでよい。電子デバイス401のメモリ仮想化の実施に依存して、いくつかのコンテンツはディスクのようなストレージに読み込まれ得るので、処理の全てのコンテンツは物理メモリ403に読み込まれてもよいし、読み込まれなくてもよい。そのような複数のコンテンツがアクセスされるべく、それらは物理メモリ403に読み込まれてよい。そのような場合には、物理メモリ403内であるか、ディスクのようなストレージ内であるかに関わらず、メモリマップ406は、複数のコンテンツが格納されている複数のアドレスについての情報を含んでよい。ビロウO/Sセキュリティエージェント420は、仮想メモリ404のページまたは物理メモリ403のアドレスにおける任意の所定コンテンツのIDまたは所有者を特定するべく、メモリマップ406を使用するように設定されてよい。ビロウO/Sセキュリティエージェント420は、例えば、オペレーティングシステム413の動作をプロファイリングし、次にさまざまな敏感な複数のコンポーネントがメモリのどこに配置されているかを特定することで、メモリマップ406を構築してよい。オペレーティングシステム413のカーネルの読み込みまたはカーネルモードの複数の命令の実行のような、メモリへのアクセスの試みが形成されるときに、ビロウO/Sセキュリティエージェント420は、オペレーティングシステム413のどの部分が読み込まれるか、または実行されているかを特定するべく、インO/Sセキュリティエージェント419と通信するように設定されてよい。他の例において、ビロウO/Sセキュリティエージェント420は、そのような仮想メモリ404のページのメモリ範囲の複数のコンテンツのハッシュまたはデジタル署名を特定するように設定されてよい。ハッシュまたはデジタル署名は、複数のセキュリティルール408に含まれ得る既知の複数の値か、プロテクションサーバ202から得ることができる既知の複数の値と比較され得る。既知の複数の値は以前のキャラクタライゼーションの結果であってよく、キャラクタライゼーションでは、例えば、オペレーティングシステム413の複数の部分が特定される。マッピングされる複数の要素は、複数のセキュリティルール408により決定されてよい。ビロウO/Sセキュリティエージェント420は、複数の要素が電子デバイス401のメモリ内で1つの位置から他の位置へコピーされるときに、メモリマップ406内で複数の要素の動きを追跡するように設定されてよい。
図5は、複数のメモリマップの例示的な実施形態を説明する図である。一実施形態では、仮想メモリマップ502は、追跡される複数の要素の仮想メモリ内での位置を用いた、複数の要素のマッピングを含んでよい。別の実施形態において、物理メモリマップ504は、追跡される複数の要素の物理メモリ内での位置を介した複数の要素のマッピングを含んでよい。様々な実施形態において、仮想メモリマップ502及び物理メモリマップ504は、共にマッピングされてよく、これにより要素が両方のマッピング内で追跡され得る。
仮想メモリマップ502は、10個の異なる仮想メモリページを反映してよい。仮想メモリマップ502は、例えば、ページディレクトリのようなカーネルオペレーティングシステムデータ構造がメモリページ1及びメモリページ2内に見つかり得ることを示してよい。他の例において、「Fnl」と呼ばれる特定の処理、関数またはルーチンの複数の要素は、メモリページ4から6内に見つかり得る。さらに他の例において、システムサービスディスパッチテーブル「SSDT」に対するアクセス許可のための複数のデータ構造は、ページ8に見つかり得る。さらに他の例において、「Fn2」と呼ばれる特定の処理、関数またはルーチンの複数の要素は、メモリページ8及びメモリページ9に見つかり得る。
物理メモリマップ504は、物理メモリを用いて複数の要素の位置を反映してよい。物理メモリ内の複数の要素の複数の部分は、複数の非隣接のセグメントまたはブロックにおけるメモリ内に分散してよい。さらに、物理メモリ内の複数の要素の複数の部分は、任意の順序でメモリ内に分散してよい。セグメントそれぞれのサイズは変化してよい。セグメントは、ベースアドレスからオフセットされたアドレスから開始してよい。図5に示されたベースアドレスの例は00x000であり、アドレスFFxFFFで終了する。物理メモリの様々なセグメントのスタートを示す複数のアドレスは(A)から(O)で示される。物理メモリの多数のセグメント内に含まれる複数の要素について、要素の順序が示されてよい。物理メモリにおいて、要素の多数のセグメントは、複数のポインタにより一緒にリンクされてよく、ここで、要素の1つのセグメントの最後は、要素の次のセグメントを指し示してよい。
例えば、Fnlは(A)及び(B)、(J)及び(K)、並びに(M)及び(N)の間の複数のセグメントにマッピングされてよい。他の例において、SSDTの複数のアクセス許可は、(G)及び(H)の間のセグメントにマッピングされてよい。さらに他の例において、ページディレクトリデータ構造は、(O)及びFFxFFF、(F)及び(G)、並びに、(I)及び(J)の間の複数のセグメントにマッピングされてよい。さらに他の例において、Fn2は、(H)及び(I)、並びに、(B)及び(C)の間の複数のセグメントにマッピングされてよい。
図4に戻り、ビロウO/Sセキュリティエージェント420は、メモリのどの部分を保護するか、及び、それらをどのように保護するかを決定すべく、複数のセキュリティルール408を調べるように設定されてよい。例えば、複数のセキュリティルール408は、ページディレクトリデータ構造が電子デバイス401の複数の特定の特権エンティティにより書き込まれ得るだけであることを示すように設定されてよい。従って、ページディレクトリデータ構造への書き込みの試みはトラップされてよく、書き込みを試みている複数の要素は、それらが安全か、未知であるか、または安全でないことが知られているかを特定するべく検査されてよい。ビロウO/Sセキュリティエージェント420は、ページディレクトリデータ構造がメモリ内のどこに配置されているかを特定するべく、メモリマップ406を調べるように設定されてよい。ビロウO/Sセキュリティエージェント420が例えば、仮想マシンモニタ内に完全にまたは一部実装されている場合には、ビロウO/Sセキュリティエージェント420は、仮想メモリ404のメモリページ1及び/または2に対する任意の試行済みの書き込みをトラップする制御構造にフラグをセットするように設定されてよい。他の例において、ビロウO/Sセキュリティエージェント420がマイクロコード内に完全にまたは一部実装されている場合には、ビロウO/Sセキュリティエージェント420は、物理メモリ403のアドレス(O)及びFFxFFF、(F)及び(G)、並びに、(I)及び(J)の間の複数のアドレスレンジ内のメモリアドレスに対する任意の試行済みの書き込みをトラップする制御構造にフラグをセットするように設定されてよい。
他の例において、複数のセキュリティルール408は、Fnlが電子デバイスの複数の特定の特権エンティティによって呼び出され得るだけであることを示すように設定されてよい。従って、Fnlを実行する複数の試みはトラップされてよく、Fnlを呼び出している複数の要素は、それらが安全か、未知であるか、または安全でないことが知られているかを特定するべく検査されてよい。ビロウO/Sセキュリティエージェント420は、Fnlがメモリ内のどこに存在するかを特定するべく、メモリマップ406を調べるように設定されてよい。ビロウO/Sセキュリティエージェント420が例えば仮想マシンモニタ内に完全にまたは一部実装されている場合には、ビロウO/Sセキュリティエージェント420は、仮想メモリ404のメモリページ4、5及び/または6の試行済みの実行をトラップする制御構造にフラグをセットするように設定されてよい。他の例において、ビロウO/Sセキュリティエージェント420がマイクロコード内に完全にまたは一部実装されている場合には、ビロウO/Sセキュリティエージェント420は、物理メモリ403のメモリアドレス(A)の任意の試行済みの実行をトラップする制御構造内にフラグをセットするように設定されてよい。Fnlの複数の異なる部分が別々に実行され得るいくつかの場合には、ビロウO/Sセキュリティエージェント420は、物理メモリ403の(A)及び(B)、(M)及び(N)の間の複数の範囲内の任意のメモリアドレス、複数のアドレス(O)及びFFxFFF、(F)及び(G)、(J)及び(K)、または、(I)及び(J)の試行済みの実行をトラップするように設定されてよい。
一実施形態では、ビロウO/Sセキュリティエージェント420は、どのエンティティがメモリへの書き込みを行う呼び出しを生成したかを特定するべくインO/Sセキュリティエージェント419に相談するように設定されてよく、このことは、次に、エンティティが書き込みを認証されているか否かを特定するために使用される。別の実施形態において、ビロウO/Sセキュリティエージェント420は、要求が出された仮想メモリ404のメモリページを特定し、メモリマップ406を調べることで、メモリマップ406にマッピングされた何らかの要素にそのようなメモリページが関連づけられているかを特定するように設定されてよい。さらに別の実施形態では、ビロウO/Sセキュリティエージェント420は、要求エレメントのメモリページのハッシュまたはシグネチャを特定し、それを既知の複数のエンティティの複数のハッシュ及び複数のシグネチャと比較するように設定されてよい。
ビロウO/Sセキュリティエージェント420がマイクロコードによって完全にまたは一部実装されている場合には、ビロウO/Sセキュリティエージェント420は、書き込みを試みた命令のアドレスを特定するように設定されてよい。一実施形態では、ビロウO/Sセキュリティエージェント420は、命令が物理メモリ403内のどこで生成されたかを判断する命令ポインタを検査することで、そのような特定を行うように設定されてよい。別の実施形態において、ビロウO/Sセキュリティエージェント420は、メモリマップ406にアクセスすることで、アドレスに関連付けられたメモリマップ406から要素を特定するように設定されてよい。さらに別の実施形態では、ビロウO/Sセキュリティエージェント420は、要求エレメントのハッシュまたはシグネチャを特定し、それを既知の複数のエンティティの複数のハッシュ及び複数のシグネチャと比較するように設定されてよい。
いったんメモリの試行済みアクセスがトラップされると、ビロウO/Sセキュリティエージェント420は、特定された要求エンティティに基づいて、トラップされた試みをどのように処理するかを決定すべく、複数のセキュリティルール408にアクセスするように設定されてよい。複数のセキュリティルール408は、例えば、オペレーティングシステム413の或る特定の複数のカーネル部分だけがFnlを呼び出して実行し得るか、或いは、安全であると知られ、かつホワイトリストに載っている複数のエンティティだけがSSDTの複数のアクセス許可に対して書き込み得る、ということを定義してよい。ビロウO/Sセキュリティエージェント420は、その結果、要求が進行することを許可する、要求を拒否する、応答または書き込み値のなりすましを行う、または、修正プロセスを実行するなどの任意の適切なアクションを行うよう構成されてよい。
動作において、ビロウO/Sセキュリティエージェント420は、オペレーティングシステム413のような、電子デバイス401のオペレーティングシステムより下のレベルで動作していてよい。ビロウO/Sセキュリティエージェント420は、電子デバイス401のどのメモリリソースを保護するかを決定するべく複数のセキュリティルール408にアクセスしてよい。ビロウO/Sセキュリティエージェント420は、メモリマップ406のコンテンツを特定し、展開させ、及び/または、ポピュレートしてよい。そのようにするべく、ビロウO/Sセキュリティエージェント420は、複数のセキュリティルール408、プロテクションサーバ202、または、任意の他の適した情報のソースにアクセスすることで、メモリマップ406内に情報をポピュレートしてよい。ビロウO/Sセキュリティエージェント420は、オペレーティングシステム413、アプリケーション410またはドライバ411のような、オペレーティングシステムのレベルの複数のエンティティからの、物理メモリ403または仮想メモリ404の複数の要求をインターセプトすることで、メモリの所有権及び複数のコンテンツをメモリマップ406にマッピングしてよい。ビロウO/Sセキュリティエージェント420は、メモリマップ406がポピュレートされ得るよう、インO/Sセキュリティエージェント419にアクセスすることで、どのエンティティがメモリに読み込まれているかを特定してよい。メモリマップ406は、物理メモリ403、仮想メモリ404、及び/または、その2つの間のメモリマッピングを含んでよい。
ビロウO/Sセキュリティエージェント420は、仮想メモリ404及び/または物理メモリ403のどの部分を保護するかを決定するべく、複数のセキュリティルール408を調べてよい。複数のセキュリティルール408はメモリのいくつかの部分が動的ベースで保護されるべきであることを規定してよく、ここで、メモリの保護は、様々な考慮事項に依存してビロウO/Sセキュリティエージェント420によりイネーブルまたはディセーブルされてよい。そのような複数の考慮事項は、例えば、複数のアドミニストレータセッティング、悪意のあるまたは不審な挙動の検出、時間、以前に検出されたメモリの複数のアクセス、または任意の他の適した基準を含んでよい。電子デバイス401のメモリ保護が計算資源に関して費用がかかる場合には、そのような動的イネーブル及びディセーブルは、他の複数のタスクを実行するための電子デバイス401の機能についての複数の副次的影響を低減しつつ、ビロウO/Sセキュリティエージェント420が電子デバイス401のメモリの重大な複数の部分をより良好に保護することを可能にしてよい。例えば、オペレーティングシステム413のカーネルコードの複数のコンテンツを含むメモリは、ビロウO/Sセキュリティエージェント420によって常に保護されてよい。一方、サードパーティアプリケーション410のコードの複数のコンテンツを含むメモリは、マルウェアが存在することの兆候に際してのみ保護されるか、またはサードパーティアプリケーション410を感染させるかもしれない。
ビロウO/Sセキュリティエージェント420は、物理メモリ403及び/または仮想メモリ404の試行済みアクセスをトラップするべく制御構造内にフラグをセットしてよい。一実施形態では、トラップされるよう指定された、仮想メモリ404内のメモリページに対する要求がオペレーティングシステム413内のエンティティから生成されるときに、ビロウO/Sセキュリティエージェント420は、試行済み要求をインターセプトしてよい。別の実施形態において、仮想メモリ404内のメモリページに対する要求が生成されるときに、ビロウO/Sセキュリティエージェントは、その要求がMMU414によって物理メモリ403内のアドレスに対する要求に変換されるよう許可してよく、そのときビロウO/Sセキュリティエージェントは試行済み要求をインターセプトしてよい。さらに別の実施形態では、オペレーティングシステム413内のエンティティからの要求が直接、物理メモリ403内のアドレスに対して生成され得るときに、ビロウO/Sセキュリティエージェント420は試行済み要求をインターセプトしてよい。
いったん要求がインターセプトされると、ビロウO/Sセキュリティエージェント420は、インターセプトされた、メモリの要求を評価すべく、任意の適切なメカニズムを使用してよい。複数のセキュリティルール408は、試みが不審であり、電子デバイス401の複数のリソースを使用するマルウェアによる悪意ある試みを示しているかを特定するために用いられてよい。複数のセキュリティルール408は、例えば、読み取り、書き込みまたは実行が試みられていたか、どのエンティティが試みを生成したか、アクセスされたメモリアドレスまたはページ、同一の要求元による以前の複数の試みまたは複数のアクション、電子デバイス401のユーザに基づいて、事実上制限的である複数のルールのような、電子デバイス401の管理者による複数のセキュリティ設定、または、メモリ位置、及び/または、デジタル署名またはハッシュによって特定されるような、或いは、関係する複数のページまたは複数のメモリアドレス上で特定されるような要求元のIDなどの複数の考慮事項を含んでよい。
例えば、仮想メモリ404のページ2の、または、物理メモリ403のアドレス(J)のページディレクトリデータ構造の試行済みの書き込みは、ビロウO/Sセキュリティエージェント420によってインターセプトされてよい。未知の処理のメモリの一部分から書き込みが送られてきた場合には、書き込みはビロウO/Sセキュリティエージェント420によって不審であると特定されてよい。しかしながら、オペレーティングシステム413のカーネルの、既知の検証された部分から試行済みの書き込みが送られてきた場合には、そのときは、試みは不審でないと特定されてよい。同様に、仮想メモリ404のページ8の、または物理メモリ403のアドレス(H)のFn2の試行済みの実行は、インターセプトされてよい。試行済みの実行がユーザ入力から生成された場合には、そのときは、実行は不審でないと特定されてよい。試行済みの実行が他のプログラムのメモリから生成され、かつ、許可されたリストにプログラムが載っていない場合には、そのときは、試みは、悪意のあるものと特定されてよい。
他の例において、インターオペラビリティを目的として通常、他の複数のアプリケーションにキャッシュを曝すウェブブラウザがFnlである場合には、ビロウO/Sセキュリティエージェント420は、Fnlの複数のメモリページまたは複数のメモリアドレスの特定の部分が他の複数のアプリケーションによって読み取られることを許可してよい。しかしながら、非公開であるべきメタデータ、または他の情報をFnlが含む場合には、そのときは、ビロウO/Sセキュリティエージェント420は、Fnlの複数のメモリページまたは複数のメモリアドレスのこれらの部分を、Fnl自身とは異なる全ての処理によって読み取られることから保護してよい。
いったんプログラムが不審なものであるか、悪意のあるものであるか、さもなければマルウェアを示すものであると特定されると、次にビロウO/Sセキュリティエージェント420は、任意の適切な修正アクションを取り得る。ビロウO/Sセキュリティエージェント420は、例えば、仮想メモリ404のメモリページ2、または物理メモリ403のアドレス(J)への書き込み要求を拒否してよく、さらに、値が書き込まれたことを示す結果を戻してよい。要求を生成する処理は、電子デバイス401の複数のリソースにアクセスする追加の複数の試みのために監視されてよく、ストップされてよく、或いは、電子デバイス401から除かれてよい。他の例において、仮想メモリ404のページ8の、または物理メモリ403のアドレス(H)の試行済みの実行は、代わりに、ハニーポットプロセスまたはクリーンアッププロセスの実行を対象としてよい。
ビロウO/Sセキュリティエージェント420によって保護されたメモリの複数のコンテンツは、マルウェアによって攻撃され得るデータ、コード、または任意の他の有用な複数のシステムリソースを含んでよい。ビロウO/Sセキュリティエージェント420は、例えば、読み取り、書き込みを試みるマルウェア、または、電子デバイス401上で動作している複数の処理を示す複数のフックメカニズムからメモリの複数のコンテンツを保護してよく、これらはメモリに読み込まれた複数のアプリケーションの複数の部分に自身のコードを注入し、または、仮想メモリ404に対する複数のマッピングテーブルのアクセス許可及びアクセスフラグを変化させる。オペレーティングシステム413より下のレベルで動作することで、ビロウO/Sセキュリティエージェント420は、マルウェアがオペレーティングシステム413内のカーネルモードレベルで動作することを防いでよい。ビロウO/Sセキュリティエージェント420はゼロデイ検出を実現してよく、いくつかのケースで見られるように、要求エンティティのIDが以前に、悪意があるとして特定されているという知識を必要としないかもしれず、エンティティが未知であるという事実は、電子デバイス401のメモリのいくつかの部分へのアクセスを拒否するために使用されるかもしれない。オペレーティングシステム413または、オペレーティングシステム413内で動作しているアンチウィルス若しくはアンチマルウェアの手段が完全に不正アクセスされている場合には、オペレーティングシステムのレベルで動作している複数のエンティティからメモリが完全にロックされてよい。
ビロウO/Sセキュリティエージェント420の1つのアプリケーションは、特定のメモリページの複数のアクセス許可への変更を検出することによって、特定の複数のコンテンツの読み取り、書き込みまたは実行が試みられる前であっても、仮想メモリ404の複数のコンテンツの試行済みアクセスを検知すべきであってよい。MMU414によって使用される複数のメモリテーブルは、メモリに、仮想メモリ404自体のページに、及び/または、物理メモリ403のアドレスに常駐であってよい。例えば、処理のコードサブセクションの複数のアクセス許可を「読み取り」から「書き込み」へ変更すべくメモリテーブルの複数の値を変更する試みは、それ自体がビロウO/Sセキュリティエージェント420によってトラップされてよい。仮想メモリ404のメモリページまたは物理メモリ403のアドレスはビロウO/Sセキュリティエージェント420によって保護されてよく、そのような位置における複数のアクセス許可に対して新しい値を書き込むためのトラップされた試みに際して、ビロウO/Sセキュリティエージェント420は、試みの要求元がそのような変更を行うことを許可されているかを特定してよい。例えば、処理のコードサブセクションのアクセス許可を変更する要求が異なるプロセスから生じた場合には、アクセス許可の試行済みの変更は拒否されてよい。
図6は電子デバイスの、試行済みアクセスのビロウ‐オペレーティングシステムトラップを用いてメモリ保護する方法600の例示的な実施形態を示す図である。ステップ605において、電子デバイスの仮想または物理メモリは、メモリの複数のコンテンツのIDまたは所有者を特定するべく、マッピングされてよい。メモリをマッピングする目的で、例えば、プロテクションサーバはアクセスされてよく、メモリの読み取り、書き込み及び実行が追跡されてよく、及び/または、メモリの複数のコンテンツがスキャンされ、複数のコンテンツに対する複数のシグネチャが生成されてよい。
ステップ610において複数のセキュリティルールがアクセスされてよく、これにより、ステップ615において保護される物理メモリの複数のアドレスまたは仮想メモリの複数のページが特定される。保護されるメモリは、例えば、複数のセキュリティルール、電子デバイスのユーザ、マルウェアの兆候のような、電子デバイスにおける他の観察される挙動、安全なメモリにアクセスする以前の複数の試み、またはアドミニストレータセッティングに依存してよい。電子デバイスの動作条件が変化し得るので、保護されるメモリは動的に変化してよい。複数のセキュリティルールは、保護される電子デバイスの複数のエンティティを規定してよく、複数のエンティティの物理または仮想メモリ内の位置は、メモリマップにアクセスすることで特定されてよい。
ステップ620において、複数のセキュリティルールの複数の要件に従ってメモリの試行済みアクセスをトラップすべく、制御構造に複数のフラグが設定されてよい。そのような複数のフラグは、仮想メモリの複数のページ、及び/または、物理メモリの複数のアドレスに対して設定されてよい。複数のフラグは、フラグを付けるべきアクセス方法の種類(例えば、読み取り、書き込みまたは実行)だけでなく、保護されるべきメモリの指示を含んでよい。ステップ625において、安全なメモリへのアクセスは、指定タイプの試行済みアクセスが指定アドレスまたはページに対して生成されたかを見るべく、監視されてよい。ステップ630において、メモリにアクセスする試みがトラップされたかが特定されてよい。そうでない場合には、次にステップ635において、保護されるメモリの複数のフラグが変更を要求するかが特定されてよい。そうである場合には、次に方法600はステップ610に戻り、複数のセキュリティルールにアクセスすることで、メモリへのアクセスをガードする複数のフラグを更新する。そうでない場合には、次に方法600はステップ625に戻り、安全なメモリの試行済みアクセスを監視する。
メモリへのアクセスの試みがトラップされると、そのときは最初に、ステップ640においてトラップされた試みが評価されてよい。試みを評価すべく、メモリマップが調べられることで、どこで要求が生成されたか特定され、要求元が特定されてよい。書き込まれるデータの複数の値は、それらのコンテンツに対して特定され評価されてよい。試みの性質‐読み取り、書き込みまたは実行‐が考慮に入れられてよい。これらの例の考慮は、複数のセキュリティルールと合わせて使用されてよく、これにより、ステップ645において試行済みアクセスがマルウェアを示すか否かを特定する。試行済みアクセスがマルウェアを示す場合には、次にステップ650において修正アクションがとられてよい。そのような修正アクションは、要求されたアクセスを拒否すること、なりすまされた値を戻すこと、またはハニーポットまたは修正プロセスを開始することを含んでよい。試行済みアクセスがマルウェアを示さない場合には、次にステップ655において要求が許可されてよい。電子デバイスのメモリの保護を継続する要求に従って、方法600はステップ625に戻ってよい。
図7は、リアルタイムモジュールプロテクションのためのシステム400の例示的な動作の説明図である。保護は、メモリ内の複数のモジュールを保護すべくソフトウェアアクセスを規制することを含んでよい。そのような規制及び保護は、電子デバイス401上でビロウ‐オペレーティングシステムトラップを使用して実行されてよい。メモリ内の複数のモジュールは、特定されたエンティティのどの部分が安全なリソースの試行済みアクセスを生成したかを評価することで保護されてよい。そのような部分は、特定されたエンティティのサブセクションを含んでよい。そのようなサブセクションは、特定されたエンティティの、他の特定されたサブセクションとは種類が異なるとして特定されてよい。一実施形態では、試みがそのようなエンティティのヘッダ、データまたはコードサブセクションを起源とするかが評価されてよい。他の実施形態では、エンティティの任意の適切なサブセクションに基づいて、試みを生成するエンティティの選択的評価が生成されてよい。さらに、特定されたモジュールの特定の部分を選択的に保護することで、メモリ内の複数のモジュールが保護されてよい。一実施形態では、モジュールのヘッダ、データまたはコードサブセクション上で試みが生成されているかが評価されてよい。他の実施形態では、モジュールの任意の適切なサブセクションの選択的評価が生成されてよい。
システム400の保護リソースの試行済みアクセスは、ビロウO/Sセキュリティエージェント419によってインターセプトされてよい。アクセスは、仮想メモリ404または物理メモリ403の、保護された複数の部分を含む、システム400の任意の適切な複数の部分のアクセスであってよい。さらに、アクセスは、アプリケーション410またはドライバ411を含む、システム400のいずれの部分からのアクセスであってよい。
試行済みアクセスを生成しているエンティティのマルウェア状態を特定するいくつかの方法、例えば、ディスク上に存在するときのエンティティのシグネチャを評価することによる方法、または、既知の安全な複数のエンティティからなるホワイトリストにエンティティが載っているかを特定することによる方法などは、不十分であるかもしれない。さもなければ、ホワイトリスト上のエンティティは、システム100の安全な複数の部分に対してアクセスするエンティティによる複数の試みを、ビロウO/Sセキュリティエージェント420及びインO/Sセキュリティエージェント419のような複数のセキュリティエージェントに無視させる。しかしながら、マルウェアは、要求を生成するエンティティを変形し、その結果、知覚されずに動作するかもしれない。そのような変形は、エンティティのシグネチャまたは他のIDが不変であり得るようなものであるかもしれない。加えて、包括的で正確なメモリマップ406の生成は、難しく、非現実的で、リソースインテンシブであるかもしれない。特定のアドレスからの試みが与えられたとしても、試みを生み出しているオーバーオールエンティティをトレースすることは実現可能ではないかもしれない。オーバーオールエンティティのトレースは、アンチマルウェアシグネチャを適用するのに必要であるかもしれない。さらに、そのようなエンティティは、システムメモリに常駐であってよく、アンチマルウェアシグネチャを適用するストレージに存在するときのエンティティの追加トレースを必要とする。この追加トレースの特定は実現可能ではないかもしれない。システム400は、試みを生成しているエンティティの特定の部分を特定することで、保護リソースを保護し、試みを生成している特定の部分のIDに基づいて試行済みアクセスを評価してよい。
さらに、システム400のモジュールまたは他のリソースを保護するかを決定するいくつかの方法は、不十分であるかもしれない。モジュールは、システム400上で悪意のある動作を実現すべくマルウェアによりモジュールが操作され、変更され、さもなければアクセスされ得るという点で、マルウェアに屈従するかもしれない。従って、モジュールは、モジュールへのアクセスを制限することで保護されてよい。しかしながら、モジュールは、オープンであり、拡張可能であり、かつ、システム400上の他の複数のエンティティに対してアクセス可能であってよく、編集されるよう構成されてよい。結果として、モジュールへの全てのアクセスを拒否することはできない。さらに、モジュールは、単なる既知のまたは信頼されたエンティティではなく、システム400の全種類のエンティティによってアクセス可能であるように設定されてよい。例えば、モジュールは、システム400上の任意の適切なエンティティによって書き込まれるよう構成されたデータサブセクションを有するドライバを含んでよい。システム400は、モジュールの異なるサブセクションに対し異なる保護を選択的に適用することでモジュールを保護してよい。システム400は、アクセスされているモジュールの特定のサブセクションを特定し、アクセスされている特定の部分のIDに基づいて試行済みアクセスを評価してよい。
システム400における複数のエンティティ及び複数のモジュールは、アプリケーション410、ドライバ411のような、複数のドライバ、複数の実行ファイル及び他の複数のアプリケーションを含んでよいし、仮想メモリ404または物理メモリ403の複数の部分内に常駐であってよい。そのような複数のエンティティ及び複数のモジュールが実行を目的としてストレージからシステムメモリに読み込まれるときに、複数のエンティティ及び複数のモジュールは、複数の異なるサブセクションに分割されてよい。
一実施形態では、システム400内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐しているときには、それらはヘッダサブセクションを含んでよい。そのようなヘッダサブセクションは、例えば、エンティティまたはモジュールの他のサブセクションへの複数のリンク、複数の入力及び複数の出力の複数の定義、複数のアプリケーションプログラミングインタフェース及び複数の機能の複数の定義、並びに、ストレージ内に常駐であるときのエンティティまたはモジュールへの複数のリンクを含んでよい。ヘッダサブセクション自体は、複数のメモリページまたは複数のメモリ範囲にまたがって分割されてよい。
別の実施形態において、システム400内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐であるときには、それらはコードサブセクションを含んでよい。そのようなコードサブセクションは、エンティティまたはモジュールの複数の機能を目的としたロジック、コードまたは複数の命令を含んでよく、これらはエンティティまたはモジュールの複数の動作を実現するべく実行される。コードサブセクションは、固定サイズであってよく、または、固定の複数のコンテンツを含んでよい。コードサブセクション自体は、複数のメモリページまたは複数のメモリ範囲にまたがって分割されてよい。
さらに別の実施形態では、システム400内の複数のエンティティ及び複数のモジュールがシステムメモリ内に常駐であるときには、それらはデータサブセクションを含んでよい。そのようなデータサブセクションは、エンティティまたはモジュールの複数の機能及び実行において使用される複数のデータ構造及び他の複数の情報コンテンツを含んでよい。エンティティまたはモジュールの動作が進行し、要求されるサイズが増大または収縮するときには、データは可変サイズであってよい。さらに、他の複数のエンティティまたは複数のモジュールは、データサブセクションに対して書き込み可能であってよい。
複数の安全なリソースにアクセスする複数の試みは、ソースメモリ750で生成されてよい。複数の要素がシステムメモリ内に常駐であるときには、ソースメモリ750は、仮想メモリ404または物理メモリ403のようなシステムメモリの任意の組み合わせのビューを含んでよい。そのような複数の要素は、複数のモジュール、複数のドライバ、複数のアプリケーションまたは任意の他の適したエンティティを含んでよい。ソースメモリ750は、所定エンティティのサブセクションに対する全てのメモリページまたはメモリアドレス範囲が一緒に表示されるような、メモリマップ406の修正ビューを含んでよい。従って、ソースメモリ750内の複数の部分(A)、(B)、(C)及び(D)の出現は、複数の部分(A)、(B)、(C)及び(D)がそのような順序で実際に存在していることを示さないかもしれない。さらに、複数の部分(A)、(B)、(C)及び(D)のそれぞれは、仮想化された実際のメモリ404または物理メモリ403内で隣接して存在していない複数の要素を含むかもしれない。これらの複数の部分は、例示の目的で、全体の部分が隣接しているように示されている。
図7の例において、ソースメモリ750は、システム400のシステムメモリ内にドライバ1が常駐であることを示してよい。ドライバ1は例示の目的でソースメモリ750の複数の部分(A)、(B)及び(C)にわたって隣接するように示されているが、ドライバ1は、1または複数の不連続なメモリページまたはアドレスレンジ内に常駐であってよい。ドライバ1は実行を目的としてストレージからシステムメモリに読み込まれていてよい。ドライバ1は、1または複数のサブセクションを含んでよい。ドライバ1は、任意の適した数及びタイプのサブセクションを含んでよい。一実施形態では、ドライバ1は部分(A)内にヘッダサブセクションを含んでよい。別の実施形態において、ドライバ1は部分(B)にコードサブセクションを含んでよい。さらに別の実施形態では、ドライバ1は部分(C)にデータサブセクションを含んでよい。さらに、ソースメモリ750は部分(D)に示されるように、任意の数の他のエンティティまたはその複数の部分を含んでよい。
安全なリソースシステム400は、アクセスされたメモリ754内に表された複数のリソースを含んでよい。そのような複数のリソースは、複数のモジュール、複数のドライバ、または他の適した複数の敏感なリソースを含んでよい。アクセスされたメモリ754は、仮想メモリ404または物理メモリ403のようなシステムメモリの任意の組み合わせのビューを含んでよい。アクセスされたメモリ754は、所定のリソースの複数のサブセクションに対する全てのメモリページまたはメモリアドレス範囲が一緒に表示されるような、メモリマップ406の修正ビューを含んでよい。従って、アクセスされたメモリ754内の複数の部分(E)、(F)、(G)及び(H)の出現は、複数の部分(E)、(F)、(G)及び(H)がそのような順序で実際に存在していることを示さないかもしれない。さらに、複数の部分(E)、(F)、(G)及び(H)のそれぞれは、仮想化された実際のメモリ404または物理メモリ403内で隣接して存在していない複数の要素を含むかもしれない。これらの複数の部分は、例示の目的で、全体の部分が隣接しているように示されている。
図7の例において、アクセスされたメモリ754は、システム400のシステムメモリ内にドライバ2が常駐であることを示してよい。ドライバ2は例示の目的で、アクセスされたメモリ754の複数の部分(E)、(F)及び(G)にわたって隣接するように示されているが、ドライバ2は、1または複数の不連続なメモリページまたはアドレスレンジ内に常駐であってよい。ドライバ2は実行を目的としてストレージからシステムメモリに読み込まれていてよい。ドライバ2は、1または複数のサブセクションを含んでよい。ドライバ2は、任意の適した数及びタイプのサブセクションを含んでよい。一実施形態では、ドライバ2は部分(E)内にヘッダサブセクションを含んでよい。別の実施形態において、ドライバ2は部分(F)にコードサブセクションを含んでよい。さらに別の実施形態では、ドライバ2は部分(G)にデータサブセクションを含んでよい。さらに、アクセスされたメモリ754は部分(H)に示されるように、任意の数の他のリソースまたはその複数の部分を含んでよい。
一実施形態では、複数の安全なリソースへのアクセスを試みている、システム400の複数のエンティティは、そのような複数の試みをソースメモリ750内に表された複数のメモリ位置から発生させてよい。別の実施形態において、複数の安全なリソースへのアクセスを試みている、システム400の複数のエンティティは、アクセスされたメモリ754内に表されているような複数のメモリ位置にそれらのエンティティが常駐であるときには、そのような複数の安全なリソースへのアクセスを試みてもよい。ビロウO/Sセキュリティエージェント420及びインO/Sセキュリティエージェント419を含むシステム400は、アクセスされたメモリ754内に表されている複数のリソースを保護するよう動作してよい。そのような動作は、上で詳述したように、図1から図6と合わせて一部、説明され得る。
ビロウO/Sセキュリティエージェント420は、アクセスされたメモリ754内に示される複数の安全なリソースの試行済みアクセスをトラップしてよい。アクセスされたメモリ754内の、アクセスされた所定のリソースについて、ビロウO/Sセキュリティエージェント420は、リソースのどのサブセクションを試みが対象としたかを特定してよい。例えば、ビロウO/Sセキュリティエージェント420は、単にドライバ2のモジュールの一部分にアクセスすべく試みが生成されたことではなく、部分(D)のドライバヘッダサブセクション、部分(E)のドライバコードサブセクション、または、部分(F)のドライバデータサブセクションにアクセスすべく試みが生成されたことを具体的に特定してよい。ビロウO/Sセキュリティエージェント420は、そのような特定を行うべく、メモリマップ406を利用してよい。
安全なリソースのどのサブセクションがアクセスされたかの判断と、安全なリソースのIDに基づき、ビロウO/Sセキュリティエージェント420はどのようなアクションを行うかを決定してよい。与えられた試みに基づいて、任意の適切なアクションが行われてよい。一実施形態では、安全なリソースの特定のサブセクションにアクセスする試みは、概して予期することができ、その結果、試みは許可され得る。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを許可してよい。追加のチェック、スキャン、または、インO/Sセキュリティエージェント419若しくはプロテクションサーバ202への情報送信のような他の複数のアクションの実行に関するオーバヘッドまたは処理の犠牲は禁制的であってよく、ここでビロウO/Sセキュリティエージェント420は多くの試みをトラップして評価する。例えば、部分(G)のドライバ2のデータサブセクションに対する書き込みの試みは、概して予期することができ、マルウェアの兆候ではないかもしれない。従って、ビロウO/Sセキュリティエージェント420は、さらなる評価を目的としてインO/Sセキュリティエージェント419またはプロテクションサーバ202に試みについての情報をパスすることなく、部分(G)に対する書き込みまたは読み取りの試みを許可してよい。
別の実施形態において、サブセクションに対する読み取りまたは書き込みの複数の試みは、システム400上で通常の挙動をするエンティティには予想されないかもしれないので、安全なリソースの特定のサブセクションへのアクセスの試みは概して不審とみなされ得る。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを拒否してよい。追加のチェック、スキャンまたは他の複数のアクションの同期的な実行のオーバヘッドまたは処理の犠牲は、不経済であるかもしれない。例えば、ドライバ2のコードサブセクションへの書き込みの試みは、概して不審とみなされ、マルウェアの兆候であり得る。従って、ビロウO/Sセキュリティエージェント420は、インO/Sセキュリティエージェント419またはプロテクションサーバ202に試みについての情報を同期的にパスすることなく、部分(F)への書き込みの試みを拒否してよい。しかしながら、ビロウO/Sセキュリティエージェント420は、さらなる評価を目的として、インO/Sセキュリティエージェント419またはプロテクションサーバ202に、試みについての情報を非同期的にパスしてよい。ここで、ビロウO/Sセキュリティエージェント420は、修正アクションを実行する前に返信を待たない。
さらに別の実施形態では、安全なリソースの特定のサブセクションへのアクセスの試みが悪意のあるものであるか、安全なものであるかは知られていないかもしれない。そのような実施形態では、試みは、デフォルトで許可されるか、デフォルトで拒否されるか、または、デフォルトで追加プロセスを要求してよい。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、デフォルトの拒否または許可を実行してよい。デフォルトの追加処理を実行すべく、ビロウO/Sセキュリティエージェント420は、試みに関する追加情報またはスキャンを目的として、システム400の複数の部分にクエリを行ってよい。クエリは、シグネチャの比較またはエンティティのスキャンを含んでよく、これは、全体として、試みを生成すること、試みの複数のコンテンツを解析すること、試みについてヒューリスティック解析を行うこと、または、任意の他の適したアンチマルウェア技術である。クエリは、プロテクションサーバ202のエンティティ、インO/Sセキュリティエージェント419またはビロウO/Sセキュリティエージェント420自身のエンティティのような、任意の適切なエンティティに対して生成されてよい。ビロウO/Sセキュリティエージェント420による追加の解析は、複数のセキュリティルール408内の複数の追加ルールにアクセスすることで生成されてよい。インO/Sセキュリティエージェント419による追加の解析は、複数のセキュリティルール421内の複数のルールにアクセスすることで生成されてよい。複数のセキュリティルール、複数のアンチマルウェアリサーチャにより生成された複数のセッティングにアクセスすることで、または、試みを報告する、他の複数のシステムからの複数の報告を比較することで、保護サーバ202による追加の解析が行われてよい。例えば、ドライバ2のヘッダサブセクションへのアクセスの試みは、試みを生成しているエンティティのような他の複数の要因に依存して、安全なものであるか、悪意のあるものであってよい。従って、ビロウO/Sセキュリティエージェント420は、部分(G)にアクセスする複数の試みに対して複数の追加的クエリを行ってよい。そのような複数のクエリは、同期的にまたは非同期的に行われてよい。
さらに、行うアクションの決定には、試みを生成しているエンティティの考慮事項、または、試みのタイプが含まれてよい。例えば、試みを生成しているエンティティは、悪意のあるものとして既知であるかもしれない。このように、デフォルトのアクセスを許可する他のルールは、既知の悪意のあるエンティティからの試みが拒否されることを規定してよい。他の例において、試行済みの読み出しである複数の試みは、複数の試行済みの書き込みとは異なるように扱われてよい。読み取りは、マルウェアに関連する可能性が低いか、または、少なくともそれ自体が悪意のあるものである可能性が低いかもしれず、その結果、デフォルトで許可されるかもしれない。ここで、同一サブセクションの書き込みは拒否されるかもしれない。たとえ悪意のあるエンティティによるものであっても、そのような読み取りの許可は、システム400による検出を加速し得る。
複数のセキュリティルール408は、さまざまな特定された、安全なリソースの様々なサブセクションの試行済みアクセスをどのように処理するかをビロウO/Sセキュリティエージェント420に示す複数のルールを含んでよい。複数のセキュリティルール408は、所定の安全なリソースまたは複数のリソースのクラスに対するルールのセットを含んでよい。結果として、複数の異なる安全なリソースの同等のサブセクションの試行済みアクセスに対し、異なる複数のルールが適用されてよい。例えば、第1ドライバのデータサブセクションの複数の試行済みの書き込みは許可されてよいが、第2ドライバのデータサブセクションの複数の試行済みの書き込みは、試みを生成しているエンティティが安全なリソースに関連するかを見るべく追加のチェックを要求してよい。図7の例において、複数のセキュリティルール408は、追加的クエリを生成することでドライバ2のヘッダサブセクション(部分(E))のアクセスが処理され得ることを定義するルールを含んでよい。他の例において、複数のセキュリティルール408は、ドライバ2のコードサブセクション(部分(F))に対する読み取りの複数の試みが許可されてよいことを定義するルールを含んでよい。そのような複数の試みは、ドライバ2の複数の機能を実行する、システム400の他の複数のエンティティによる通常の処理を反映してよい。さらに他の例において、複数のセキュリティルール408は、ドライバ2のコードサブセクション(部分(F))に対する書き込みが拒否されてよいことを定義するルールを含んでよい。さらに他の例において、複数のセキュリティルール408は、悪意のあるものと知られていないソースに由来する、ドライバ2のデータサブセクション(部分(G))の試行済みアクセスが許可されてよいことを定義するルールを含んでよい。複数のセキュリティルール408は、部分(H)における複数のエンティティのような他の複数のエンティティの試行済みアクセスが不図示の複数のセキュリティルールによって処理されてよい、或いは、追加プロセスに対するクエリを引き起こすことによって処理されてよいことを定義するルールを含んでよい。
ビロウO/Sセキュリティエージェント420は、複数の安全なリソースの試行済みアクセスを、ソースメモリ750内に示されたエンティティによってトラップしてよい。試みを生成しているソースメモリ750内のエンティティに対し、ビロウO/Sセキュリティエージェント420は、エンティティのいずれのサブセクションから試みが発生しているかを特定してよい。例えば、ビロウO/Sセキュリティエージェント420は、単に、安全なリソースにアクセスすべくドライバ1によって試みが生成されたことではなく、部分(A)のドライバ1のヘッダサブセクション、部分(B)のドライバ1のコードサブセクション、または部分(C)のドライバ1のデータサブセクションから試みが生成されたことを具体的に特定してよい。ビロウO/Sセキュリティエージェント420は、そのような特定を行うべく、メモリマップ406を利用してよい。
エンティティのどのサブセクションがそのような試みを生成したかの判断と、エンティティのIDに基づき、ビロウO/Sセキュリティエージェント420はどのようなアクションを行うかを決定してよい。与えられた試みに基づいて、任意の適切なアクションが行われてよい。一実施形態では、エンティティの特定のサブセクションから安全なリソースにアクセスする試みは、概して予期することができ、その結果、試みは許可され得る。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを許可してよい。追加のチェック、スキャン、または、インO/Sセキュリティエージェント419若しくはプロテクションサーバ202への情報送信のような他の複数のアクションの実行に関するオーバヘッドまたは処理の犠牲は禁制的であってよく、ここでビロウO/Sセキュリティエージェント420は多くの試みをトラップして評価する。例えば、部分(B)のドライバ1のコードサブセクションからの試みは、概して予期することができ、マルウェアの兆候ではないかもしれない。従って、ビロウO/Sセキュリティエージェント420は、さらなる評価を目的としてインO/Sセキュリティエージェント419またはプロテクションサーバ202に試みについての情報をパスすることなく、ドライバ1のコードサブセクション(部分(B))からの試みを許可してよい。
別の実施形態において、エンティティの特定のサブセクションから複数の安全なリソースにアクセスする試みは概して不審とみなされ得る。これは、そのような試みは、システム400上で通常の挙動をするエンティティには予想されないかもしれないためである。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、そのような複数の試みを拒否してよい。追加のチェック、スキャンまたは他の複数のアクションの同期的な実行のオーバヘッドまたは処理の犠牲は、不経済であるかもしれない。例えば、ドライバ1のデータサブセクションから安全なリソースにアクセスする試みは、概して不審とみなされ、マルウェアの兆候であり得る。従って、ビロウO/Sセキュリティエージェント420は、インO/Sセキュリティエージェント419またはプロテクションサーバ202に試みについての情報を同期的にパスすることなく、ドライバ1のコードサブセクション(部分(C))から安全なリソースにアクセスする試みを拒否してよい。しかしながら、ビロウO/Sセキュリティエージェント420は、さらなる評価を目的として、インO/Sセキュリティエージェント419またはプロテクションサーバ202に、試みについての情報を非同期的にパスしてよい。ここで、ビロウO/Sセキュリティエージェント420は、修正アクションを実行する前に返信を待たない。
さらに別の実施形態では、安全なリソースの特定のサブセクションから複数の安全なリソースへのアクセスの試みが悪意のあるものであるか、安全なものであるかは知られていないかもしれない。そのような実施形態では、試みは、デフォルトで許可されるか、デフォルトで拒否されるか、または、デフォルトで追加プロセスを要求してよい。ビロウO/Sセキュリティエージェント420は、追加のチェック、スキャンまたは他の複数のアクションを行うことなく、デフォルトの拒否または許可を実行してよい。デフォルトの追加処理を実行すべく、ビロウO/Sセキュリティエージェント420は、試みに関する追加情報またはスキャンを目的として、システム400の複数の部分にクエリを行ってよい。例えば、ドライバ1のヘッダサブセクションから安全なリソースにアクセスする試みは、安全なリソースまたはエンティティの予期される挙動のような他の複数の要素に依存して、安全なものであるかもしれないし、悪意のあるものであるかもしれない。従って、ビロウO/Sセキュリティエージェント420は、ドライバ1のヘッダサブセクション(部分(A))に由来する複数の試みに対して複数の追加的クエリを行ってよい。そのような複数のクエリは、同期的にまたは非同期的に行われてよい。
さらに、行うアクションの決定には、他の考慮事項が含まれてよい。例えば、試みを生成しているエンティティは、悪意のあるものとして既知であり、かつ、ブラックリストに載っているかもしれない。そのような例において、エンティティが全体として悪意のあるものであるという特定は、サブセクション特有の複数のルールを無効にしてよい。他の例において、試みを生成するエンティティは、安全であると知られており、複数のセキュリティルール408内でのドライバ1の出現のような、ホワイトリストに載っていてよい。そのような例において、複数のセキュリティルール408は、部分(A)及び(B)に示されるドライバ1のヘッダ及びコードサブセクションからのデフォルトのアクセスを許可する複数のルールを含んでよい。それにもかかわらず、たとえドライバ1が複数のセキュリティルール408のホワイトリスト内に含まれ得るとしても、部分(C)に示されるドライバ1のデータサブセクションに由来する試みは、不審なもの、または、悪意のあるものであり得る。ホワイトリストと、観察された複数のアクションとの間のそのような不一致は、不正確なホワイトリストから生じるかもしれないし、また、追加の検証または報告を要求するかもしれない。このように、たとえドライバ1が複数のセキュリティルール408のホワイトリスト内に含まれ得るとしても、セキュリティルール408は、ホワイトリストを無効にし、かつ、部分(C)に示されるドライバ1のデータサブセクションに由来する試みがデフォルトで拒否されるべきであること、或いはクエリの生成を引き起こすべきであることを示すルールを含んでよい。
複数のセキュリティルール408は、所定エンティティのさまざまなサブセクションによって安全なリソースの試行済みアクセスをどのように処理するかをビロウO/Sセキュリティエージェント420に示す複数のルールを含んでよい。例えば、複数のセキュリティルール408は、ドライバ1のヘッダサブセクション(部分(A))に由来するアクセスが追加的クエリを行うことで処理されてよいことを定義するルールを含んでよい。他の例において、複数のセキュリティルール408は、ドライバ1のコードサブセクション(部分(B))に由来するアクセスがデフォルトで許可されてよいことを定義するルールを含んでよい。そのような複数の試みは、ドライバ1の通常の処理を反映することで、その複数の機能を実行してよい。そのようなルールは、所定の複数の安全なリソースのアクセスを定義する他の複数のルール、例えば特定の複数のエンティティだけがそのようなアクセスの生成を許可されることの要件を前提にしてよい。さらに他の例において、複数のセキュリティルール408は、ドライバ1のデータサブセクション(部分(C))に由来する試行済みアクセスが拒否されてよいことを定義するルールを含んでよい。複数のセキュリティルール408は、部分(D)内のエンティティのような他の複数のエンティティによる試行済みアクセスが複数の不図示のセキュリティルールによって処理されてよいか、或いは追加プロセスに対するクエリを引き起こすことで処理されてよいことを定義するルールを含んでよい。
安全なリソースの試行済みアクセスを生成しているエンティティの正確なサブセクションの特定は、難しいかもしれない。包括的な、または完全に正確なメモリマップ406は、利用可能でないか、現実的でない。安全なリソースの試行済みアクセスの特定のサブセクションを特定すべく、ビロウO/Sセキュリティエージェント416は、安全なリソースの試行済みアクセスを引き起こした、命令ポインタアドレスを含む範囲の対応バイト列を特定するように設定されてよい。さらなる実施形態において、そのようなバイト列は、少なくとも特定のバイト数、2*Nを含んでよい。他のさらなる実施形態において、そのようなバイト列は、試みを引き起こした命令ポインタの周辺のバイト、プラスNバイトまたはマイナスNバイトを含んでよい。そのようなバイト列は、試みを生成した同一処理内の、隣接のコードの複数のバイトを代表してよい。バイト列は、セグメント752内に示され得る。セグメント752は、ソースメモリ750からの複数の命令、複数のオペコード、または、他の情報の隣接ブロックを示してよい。そのような隣接ブロックは、メモリページ内またはメモリアドレス範囲内の情報の隣接ブロックを含んでよい。セグメント752は、ソースメモリ750の任意の適切な部分を代表してよい。
ビロウO/Sセキュリティエージェント416は、試みの原因であるオーバーオールエンティティのシグネチャまたはハッシュを特定することを試みることなく、バイト列を、既知の安全なバイト列または既知の悪意のあるバイト列と比較してよい。さらに、ビロウO/Sセキュリティエージェント416は、そのようなバイト列をそのルールのインデックスとして使用し得る複数のセキュリティルール408のコンテキスト内で、そのようなバイト列を使用してよい。例えば、複数の安全なリソースにアクセスする複数の試みを起こすことで知られる、ドライバ1のコードサブセクションを表す部分(B)のさまざまな部分は、複数のセキュリティルール408内に記録されたバイト列を含んでよい。従って、バイト列に一致する試行済みアクセスは、部分(B)におけるドライバ1のコードサブセクションに関連すると特定されてよい。複数のセキュリティルール408は、次に、行うべき適切なアクションを定義してよい。一実施形態では、バイト列のハッシュが使用されてよい。
図8は、リアルタイムモジュールプロテクションの方法の例示的な実施形態を示す図である。保護は、メモリ内の複数のモジュールを保護すべく、ソフトウェアアクセスを規制することを含んでよい。
805において、複数の安全なリソースの試行済みアクセスはトラップされてよい。トラップは、ビロウ‐オペレーティングシステムトラップエージェントにより実行されてよい。トラップされた試みの次の処理は、少なくとも部分的にビロウ‐オペレーティングシステムハンドリングエージェントによって行われてよい。複数のリソースは、安全なシステムメモリと、そこに常駐する複数のモジュール、複数のドライバ、複数のアプリケーション、または他の複数のエンティティとの一部を含んでよい。そのようなメモリは、物理または仮想メモリに従って定義されてよい。メモリ内に常駐の複数の安全なリソースは、所定のエンティティのさまざまなサブセクションの位置に従ってメモリマップにマッピングされてよい。
810において、エンティティの、特定されたサブセクションとして知られたメモリ位置によって試みが生成されたかが特定されてよい。そのような複数のサブセクションは、例えば、ヘッダ、データ及びコードサブセクションを含んでよい。一実施形態では、エンティティのサブセクションが既知であるかの解析は、メモリマップに基づいてよい。別の実施形態において、エンティティのサブセクションが既知であるかの解析は、試みを生み出した命令ポインタを含むバイト列に基づいてよい。エンティティのサブセクションが既知である場合には、方法800は815に進んでよい。違う場合には、方法800は845に進んでよい。
815において、エンティティの所定のサブセクションからの試行済みアクセスをどのように処理するかを決定するべく、複数のセキュリティルールがアクセスされてよい。そのような決定は、820のコンテキスト内で使用されてよい。820において、安全なリソースの何れのサブセクションが試みを生成したかが特定されてよい。そのような試みの特定のサブセクションによる処理は、試みを生成している特定のエンティティのIDに従って変化してよい。例えば、複数のオペレーティングシステムカーネル、アクセスされているモジュールに関連した複数のエンティティ、または、署名された複数のドライバからのコードサブセクションは、アクセスを許可されてよい。ここで、未署名の複数のドライバ、未知の複数のドライバ、またはアクセスされているモジュールに無関係の複数のエンティティからのコードサブセクションは拒否されてよい。一実施形態では、試みがヘッダサブセクションによるものであった場合には、方法800は830に進んでよい。さまざまな他の実施形態において、試みがヘッダサブセクションによるものであった場合には、方法800が835または825に進んでよい。別の実施形態において、試みがデータサブセクションによるものであった場合には、方法800は835に進んでよい。さまざまな他の実施形態において、試みがデータサブセクションによるものであった場合には、方法800は830または825に進んでよい。さらに別の実施形態では、試みがコードサブセクションによるものであった場合には、方法800は825に進んでよい。さまざまな他の実施形態において、試みがコードサブセクションによるものであった場合には、方法800は830または835に進んでよい。試みがそのような複数のサブセクションによらないもの、他の特定されたサブセクションによるもの、または未確認のサブセクションによるものであった場合には、方法800はデフォルトで830に進んでよい。
825において、試みは許可されてよい。一実施形態では、試みの許可を無効にし得る他の複数のアンチマルウェアルールのアプリケーションの結果がでるまで、試みは許可されてよい。例えば、試みを生成しているオーバーオールエンティティが或いは悪意のあるものであると特定された場合には、試みは代わりに拒否されてよい。別の実施形態において、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが許可されてよい。方法800は、845に進んでよい。
830において、試みについての追加の解析に対するクエリが行われてよい。そのような解析は、同期のものであってもよいし、非同期のものであってもよい。解析は、例えば、スキャン、シグネチャマッチングまたはヒューリスティック解析を含んでよい。解析は、例えば、試みを生成しているエンティティの複数のコンテンツまたはID、安全なリソースの複数のコンテンツまたはID、または、試行済みの変更の複数のコンテンツを利用してよい。
835において、試みは拒否されてよい。一実施形態では、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが拒否されてよい。方法800は、890に進んでよい。
845において、安全なリソースの、特定されたサブセクション上で試みが生成されたかが特定されてよい。そのような複数のサブセクションは、例えば、ヘッダ、データ及びコードサブセクションを含んでよい。一実施形態では、サブセクションが既知であるかの解析は、メモリマップに基づいてよい。サブセクションが既知である場合には、方法800は850に進んでよい。違う場合には、方法800は890に進んでよい。
850において、安全なリソースの所定のサブセクションに対する試行済みアクセスをどのように処理するかを決定すべく、複数のセキュリティルールがアクセスされてよい。そのような決定は、855のコンテキスト内で使用されてよい。モジュールの特定のサブセクションの試みの処理は、モジュールのIDに従って変化してよい。例えば、複数のオペレーティングシステムカーネル、複数の重要なデバイスドライバ、または他の複数の重要なコンポーネントの試行済みアクセスは、ドライバに関連した複数のエンティティによるドライバの試行済みアクセスよりも厳格な複数のアクセス要件を発動させてよい。855において、安全なリソースの何れのサブセクションが対象であったかが特定されてよい。一実施形態では、試みがヘッダサブセクションに対するものであった場合には、方法800は880に進んでよい。さまざまな実施形態において、試みがヘッダサブセクションに対するものであった場合には、方法800は、条件付きのまたは絶対的な許可または拒否を行うべく、860、865、870、875に進んでよい。別の実施形態において、試みがデータサブセクションに対するものであった場合には、方法800は860に進んでよい。さまざまな他の実施形態において、試みがデータサブセクションに対するものであった場合には、方法800は、クエリ、条件付きの若しくは絶対的な許可、または、条件付きの若しくは絶対的な拒否を行うべく、865、870、875または880に進んでよい。さらに別の実施形態では、試みがコードサブセクションに対するものであった場合には、方法800は865に進んでよい。さまざまな他の実施形態において、試みがコードサブセクションに対するものであった場合には、方法800は、クエリ、条件付きの若しくは絶対的な許可、または、条件付きの若しくは絶対的な拒否を行うべく、860、870、875または880に進んでよい。試みがそのようなサブセクションに対するもの、他の特定されたサブセクションに対するもの、または未確認のサブセクションに対するものであった場合には、方法800はデフォルトで880に進んでよい。そのような試みは、特定のサブセクションを考慮することなく、対象のモジュールのIDに従って処理されてよい。
860において、或いは悪意のあるものと知られているエンティティからの試みであったかが特定されてよい。そのような特定は、エンティティが安全なもの、または悪意のあるものであることの最終的な特定を要求しないかもしれない。エンティティのマルウェア状態が未知であるか、安全であると知られている場合には、次に、エンティティが悪意のあるものと知られていなかったことが特定されてよい。エンティティが悪意のあるものと知られている場合には、方法800は875に進んでよい。エンティティが悪意のあるものと知られていない場合には、方法800は870に進んでよい。
865において、試みが試行済みの読み出しまたは試行済みの書き込みであったかが特定されてよい。試みが読み取りであった場合には、方法800は870に進んでよい。試みが書き込みであった場合には、方法800は875に進んでよい。
870において、試みは許可されてよい。一実施形態では、試みの許可を無効にし得る他の複数のアンチマルウェアルールのアプリケーションの結果がでるまで、試みは許可されてよい。例えば、試みを生成しているエンティティが或いは悪意のあるものであると特定された場合には、試みは代わりに拒否されてよい。別の実施形態において、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが許可されてよい。方法800は、890に進んでよい。
875において、試みは拒否されてよい。一実施形態では、複数のアバブ‐オペレーティングシステムエレメントへの参照を行うことなく、ビロウ‐オペレーティングシステムハンドリングエージェントによって試みが拒否されてよい。
方法800は、890に進んでよい。880において、試みについての追加の解析に対するクエリが行われてよい。そのような解析は、同期のものであってもよいし、非同期のものであってもよい。解析は、例えば、スキャン、シグネチャマッチングまたはヒューリスティック解析を含んでよい。解析は、例えば、試みを生成しているエンティティの複数のコンテンツまたはID、安全なリソースの複数のコンテンツまたはID、または、試行済みの変更の複数のコンテンツを利用してよい。
890において、方法800は繰り返され、805のような任意の前の要素に戻って良い。または、方法800は終了してよい。
図3、図6及び図8は例示の方法300、600および800に関して行われる特定数のステップを示しているが、方法300、600および800は、図3、図6及び図8で示されるよりも多いまたは少ないステップで実行されてよい。加えて、図3、図6及び図8は方法300、600および800に関して行われるステップの特定の順序を示しているが、これらの方法を含む複数のステップは、任意の適切な順序で完了してよい。さらに、方法300、600および800の幾つか又は全てのステップは、方法300、600および800の他の方法からの複数のステップと組み合わされてよい。
方法300、600および800は、図1、図2、図4、図5、図7または図8の複数のシステムを用いて実装されてよい。特定の実施形態において、方法300、600および800は、コンピュータ可読記憶媒体に実装されたソフトウェア内に部分的にまたは完全に具体化されてよい。
複数のプログラム命令は、複数の命令でプログラムされる汎用または専用のプロセッシングシステムに上述の複数の動作を実現させるために使用されてよい。複数の動作は、複数の動作を実行するハードウェアロジックを含む複数の特定のハードウェアコンポーネントによって、または、プログラムされた複数のコンピュータコンポーネントと、複数のカスタムハードウェアコンポーネントとの任意の組み合わせによって実行されてよい。ここで説明された複数の方法は、1または複数の機械可読媒体を含み得るコンピュータプログラム製品として提供されてよい。機械可読媒体は、複数の方法を実現するべくプロセッシングシステムまたは他の電子デバイスをプログラムするために使用され得る複数の命令を格納する。本明細書で用いられた「機械可読媒体」または「コンピュータ可読媒体」の用語は、機械による実行のための一連の命令であって、ここで説明された複数の方法の何れか1つを機械に実現させる命令を格納またはエンコーディングすることが可能な任意の媒体を含む。従って、「機械可読媒体」の用語は、限定はされないが、複数のソリッドステートメモリ、光及び磁気ディスクのような複数のメモリを含む。さらに、どのような形にしても(例えばプログラム、プロシージャ、処理、アプリケーション、モジュール、ロジックなど)、動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、当技術分野においてよくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させるプロセッシングシステムによるソフトウェアの実行を述べることの簡潔な表現の方法にすぎない。
システム100、200、400、500および700の1つまたは複数は、システム100、200、400、500および700の複数の他の部分と組み合わされてよい。
以下の例はさらなる実施形態に関する。電子デバイスを保護する方法は、電子デバイスの安全なシステムリソースにアクセスする試みをトラップする段階を含んでよい。方法は、試みに関連するモジュールを特定する段階をさらに含んでよい。モジュールは、複数の別個のサブセクションを有してよい。また、方法は、試みに関連するモジュールのサブセクションを特定する段階を含んでよい。サブセクションは、試みに関連するメモリ位置を有してよい。方法は、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスする段階を更に含んでよい。さらに、方法は、セキュリティルールに基づいて試みを処理する段階を含んでよい。トラップする段階は、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みを処理する段階は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みを拒否する段階を含んでよい。さらに、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みを許可する段階を含んでよい。また、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みを拒否する段階を含んでよい。さらに、試みを処理する段階は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しを許可する段階を含んでよい。さらに、試みを処理する段階は、試みのマルウェア状態を特定すべく追加的クエリを行う段階を含んでよい。少なくとも1つの機械可読ストレージ媒体は、コンピュータ可読媒体に担持される、コンピュータ実行可能な複数の命令を含んでよい。複数の命令はプロセッサにより可読でよい。複数の命令は、読み取られて実行されるときに、電子デバイスの安全なシステムリソースにアクセスする試みをプロセッサにトラップさせてよい。プロセッサはさらに、試みに関連するモジュールを特定させられてよい。モジュールは複数の別個のサブセクションを含んでよい。また、プロセッサは、試みに関連するモジュールのサブセクションを特定させられてよい。サブセクションは、試みに関連するメモリ位置を有してよい。また、プロセッサは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスさせられてよい。さらに、プロセッサは、セキュリティルールに基づいて試みを処理させられてよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
電子デバイスを保護するシステムは、メモリ、プロセッサ、安全なシステムリソース、及び、1または複数のセキュリティエージェントを含んでよい。複数のセキュリティエージェントは、メモリに常駐してプロセッサによる実行のために処理可能な複数の命令を含んでよい。複数のセキュリティエージェントは、電子デバイスの安全なシステムリソースにアクセスする試みをトラップするように設定されてよい。複数のセキュリティエージェントは、試みに関連するモジュールを特定するようさらに構成されてよい。モジュールは、複数の別個のサブセクションを含んでよい。また、複数のセキュリティエージェントは、試みに関連するモジュールのサブセクションを特定するように設定されてよい。サブセクションは、試みに関連するメモリ位置を有してよい。また、複数のセキュリティエージェントは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスするように設定されてよい。さらに、複数のセキュリティエージェントは、セキュリティルールに基づいて試みを処理するように設定されてよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
電子デバイスを保護するシステムは、電子デバイスを保護する手段を含んでよく、また、電子デバイスの安全なシステムリソースにアクセスする試みをトラップすることを含んでよい。システムは、試みに関連するモジュールを特定する手段をさらに含んでよい。モジュールは、複数の別個のサブセクションを有してよい。また、システムは、試みに関連するモジュールのサブセクションを特定する手段を含んでよい。サブセクションは、試みに関連するメモリ位置を有してよい。システムは、モジュールの特定及びサブセクションの特定に基づいて、試みのアクセスを許可するかを決定するセキュリティルールにアクセスする手段を更に含んでよい。さらに、システムは、セキュリティルールに基づいて試みを処理する手段を含んでよい。トラップは、電子デバイスの全てのオペレーティングシステムより下のレベルで実行されてよい。試みの処理は、電子デバイスの全てのオペレーティングシステムより下のレベルで少なくとも部分的に実行されてよい。メモリ位置は、試みの発信元を特定してよい。さらに、メモリ位置は試みのターゲットポイントを特定してよい。サブセクションは、データサブセクションを含んでよい。また、サブセクションはヘッダサブセクションを含んでよい。さらに、サブセクションはコードサブセクションを含んでよい。試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの書き込みの許可を含んでよい。また、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションからの試行済みの書き込みの拒否を含んでよい。さらに、試みの処理は、コードサブセクション、ヘッダサブセクションまたはデータサブセクションに対する試行済みの読み出しの許可を含んでよい。さらに、試みの処理は、試みのマルウェア状態を特定すべく追加的クエリを行うことを含んでよい。
本開示は詳述されたが、理解するべきことは、添付の特許請求の範囲で定義されるような開示の概念及び範囲を逸脱することなく、様々な修正形態、代替及び変更が行われてよいことである。
本実施形態の例を下記の各項目として示す。
[項目1]
電子デバイスを保護する方法であって、
前記電子デバイスの安全なシステムリソースにアクセスする試みをトラップする段階と、 前記試みに関連するモジュールであって、複数の別個のサブセクションを有するモジュールを特定する段階と、 前記試みに関連する前記モジュールのサブセクションであって、前記試みに関連するメモリ位置を有するサブセクションを特定する段階と、 前記モジュールの前記特定及び前記サブセクションの前記特定に基づいて、前記試みのアクセスを許可するかを決定するセキュリティルールにアクセスする段階と、 前記セキュリティルールに基づいて前記試みを処理する段階と
を含む方法。
[項目2]
トラップする前記段階は、前記電子デバイスの全てのオペレーティングシステムより下のレベルで実行され、
前記試みを処理する前記段階は、前記電子デバイスの全ての前記オペレーティングシステムより下のレベルで少なくとも部分的に実行される項目1に記載の方法。
[項目3]
前記メモリ位置は、前記試みの発信元を特定する項目1または2に記載の方法。
[項目4]
前記メモリ位置は前記試みのターゲットポイントを特定する項目1から3の何れか1項に記載の方法。
[項目5]
前記サブセクションは、前記試みのターゲットであり、かつ、データサブセクションである項目1から4の何れか1項に記載の方法。
[項目6]
前記サブセクションは、前記試みのターゲットであり、かつ、ヘッダサブセクションである項目1から5の何れか1項に記載の方法。
[項目7]
前記サブセクションは、前記試みのターゲットであり、かつ、コードサブセクションである項目1から6の何れか1項に記載の方法。
[項目8]
前記セキュリティルールは、
前記試みのターゲットをコードサブセクションとして特定し、
この特定に基づいて、前記試みを処理する前記段階が、前記コードサブセクションに対する試行済みの書き込みを拒否する段階を含むと規定する項目1から7の何れか1項に記載の方法。
[項目9]
前記セキュリティルールは、
前記試みのターゲットをヘッダサブセクションとして特定し、
この特定に基づいて、前記試みを処理する段階が、前記ヘッダサブセクションに対する試行済みの書き込みを拒否する段階を含むと規定する項目1から8の何れか1項に記載の方法。
[項目10]
前記セキュリティルールは、
前記試みのターゲットをデータサブセクションとして特定し、
この特定に基づいて、前記試みを処理する前記段階は、前記データサブセクションに対する試行済みの書き込みを許可する段階を含むと規定する項目1から9の何れか1項に記載の方法。
[項目11]
コンピュータのプロセッサに項目1から10の何れか1項に記載の方法を実行させるプログラム。
[項目12]
電子デバイスを保護するシステムであって、
メモリと、
プロセッサと、
安全なシステムリソースと、
前記メモリに常駐の、前記プロセッサによる実行のために処理可能な複数の命令を含む1または複数のセキュリティエージェントと
を備え、
前記複数のセキュリティエージェントは、項目1から10の何れか1項に記載の方法を実行するシステム。
[項目13]
電子デバイスを保護するシステムであって、
メモリと、
プロセッサと、
安全なシステムリソースと、
項目1から10の何れか1項に記載の方法を実行する手段と
を備えるシステム。