説明

保護エージェント及び特権モード

【課題】保護エージェントに付随するオペレーティングシステムメモリの一部を特権モードから変更またはアクセスできなくする。
【解決手段】自身のオペレーティングシステムメモリを変更しかつ実コンピュータプロセッサの処理帯域幅のうちの一部を用いる特権を有している第1のパーティション110に関連づけられたオペレーティングシステム仮想プロセッサと、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記実コンピュータプロセッサの前記処理帯域幅の異なる部分を用いる特権を有している第2のパーティション112に関連づけられた保護エージェント仮想プロセッサと、を含み、前記第2のパーティション112内に存在する保護エージェント142を前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、保護エージェント及び特権モードに関する。
【背景技術】
【0002】
コンピュータデバイスのプロセッサは、特権モード及び非特権モードを有することが多い。特権モードでソフトウェアを実行すると、通常、プロセッサによってサポートされるあらゆる命令を実行することができる。一般的に、オペレーティングシステムカーネルは、特権モードにおいて動作する。特権モードは、「リング0」、「スーパバイザモード」、または「カーネルモード」と称されることがある。
【0003】
対照的に、コンピュータデバイス上で動作するいくつかのソフトウェアは、非特権モードでだけ動作するよう限定されているかもしれない。このモードは、通常、プロセッサの命令のサブセットをソフトウェアが実行できるようにする。よって、オペレーティングシステムは、非特権モードを用いて、このモードで動作するソフトウェアの機能を制限することができる。例えば、ソフトウェアを、コンピュータデバイスのメモリの特定のサブセットに限定してもよい。この非特権モードは、「リング3」または「ユーザモード」として公知の場合もある。該して、コンピュータデバイスのユーザアプリケーションは、この非特権モードで動作する。
【0004】
ソフトウェアアプリケーションがこの非特権モードで動作する場合、当該アプリケーションは、非特権モードから直接アクセスすることができないメモリの一部分へのアクセスを要求するかもしれない。例えば、アプリケーションは、「新規なファイルを生成する」ことなどのメモリの当該一部分での動作を実行することを所望するかもしれない。この要求は、通常、コールゲートまたは他のシステムコール命令を介して発送される。コールゲートまたは他のシステムコール命令は、この非特権モードのコードを特権モードのコードに移行させる。この移行によって、特権モードからだけアクセス可能に指定されているメモリに非特権モードは直接アクセスできないということを確実にする。
【0005】
これらのモードによって、悪質なコードの作者は、特権モードにアクセスして、コンピュータデバイスの動作を変更するマルウェアをインストールすることができる。例えば、このマルウェアは、ファイルの場所を改ざんし、ファイルを隠し、ファイルを変更し、または、キー入力を変更するなどするかもしれない。このマルウェアのいくつかは、「ルートキット」を含んでいるかもしれない。ルートキットは、コンピュータデバイスの動作を変更するだけでなく、特権モードのメモリ内でそれ自身を隠す。従って、コンピュータデバイス上で動作するアンチウィルスアプリケーションは、この隠れたルートキットを発見できず、よって、マルウェアにその悪質な行為を続けさせるかもしれない。更に、以下で検討するように、かかるマルウェアは、オペレーティングシステムの組み込みプロテクションシステムにパッチを当てるかもしれない。
【0006】
マルウェアの作者は、特権モードにアクセスして、様々な方法でコンピュータデバイスにマルウェアをロードするかもしれない。様々な方法には、コンピュータデバイスのユーザをだましてユーザ自身のコンピュータデバイスにマルウェアを知らずにインストールさせることを含む。その結果、現在のオペレーティングシステムは、かかるマルウェアを検出する1つまたは複数のプロテクションシステムを用いることが多い。これらのプロテクションシステムは、通常、特定の重要なオペレーティングシステム資源を監視して、これらの資源に対するあらゆる変更を検出する。かかるプロテクションシステムがかかる変更を検出すると、プロテクションシステムは特定の資源がマルウェアに感染したと判断することができる。これらのプロテクションシステムは、また、ユーザのアンチウィルスアプリケーションに対して、非特権モードのメモリにそのとき存在するアプリケーションのリストを提供することができる。もちろん、マルウェアが隠れることに成功している場合、マルウェアは提供されるリスト上に表示されない。更に、マルウェアがプロテクションシステムにパッチを当てることに成功している場合、プロテクションシステムは起動できないか、または重要なオペレーティングシステム資源についての何らの変更を検出できないかもしれない。
【0007】
これらのプロテクションシステムは有効であるかもしれないが、また、いくつかの欠点に苦しんでいるかもしれない。先ず、これらのシステムは、曖昧な事象に依存することが多く、よってマルウェアによって特定されている条件での利用に弱い。即ち、マルウェアがプロテクションシステムの正体を解明してプロテクションシステムを見つける場合、マルウェアは保護システム自体を無効にすることができる。マルウェアの作者は、また、同じことをする方法に関して他人に命令することができる。更にかつ最初のことに関連して、これらのプロテクションシステムは、通常、オペレーティングシステムの保護領域と同じ保護領域において(例えば、特権モード自体内で)動作する。従って、マルウェアが特権モードにアクセスして、曖昧なプロテクションシステムの正体を暴くことが可能な場合、プロテクションシステムはそれ自体が攻撃の対象となる。最後に、これらのプロテクションシステムは、オペレーティングシステムまたは特権モードと同時に初期化される。従って、マルウェアまたはマルウェアの作者がこの初期化の前にコンピュータデバイスの支配権を得る場合、マルウェアまたはマルウェアの作者は、プロテクションシステムが初期化されないようにすることができる。
【発明の概要】
【0008】
この明細書は、保護エージェントに付随するオペレーティングシステムメモリの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることができるツールを開示する。いくつかの実施形態では、これらのツールは、バーチャルマシンモニタがオペレーティングシステムメモリのこの一部を保護することを要求することにより、保護エージェント特権モードを生成することができる。他の実施形態では、これらのツールは、物理プロセッサを複数の仮想プロセッサに仮想化することにより、保護エージェント特権モードを生成することができる。複数の仮想プロセッサのうちの少なくとも1つは、保護エージェントを実行するように設計されている保護エージェント仮想プロセッサである。オペレーティングシステムメモリのこの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることによって、保護エージェントを、オペレーティングシステム特権モードにおいて動作しているエンティティによる攻撃に対して強くできる。
【0009】
この概要は、詳細な説明で更に後述する単純化された形式の概念の選択を導くために提供されている。この概要は請求された発明の重要な特徴または基本的特徴を識別することを意図していないし、請求された発明の範囲を決定する際の援助として用いられることも意図していない。例えば、用語「ツール」は、上記のコンテキストによってかつ明細書全体にわたって認められるように、システム(または複数のシステム)、方法(または複数の方法)、複数のコンピュータ可読命令、及び/または技術(または複数の技術)を述べてもよい。
【0010】
同じ番号が、明細書及び図の全体にわたって同様の構成要素及び特徴を参照するために用いられる。
【図面の簡単な説明】
【0011】
【図1】ツールの様々な実施形態が動作することができる例示的な動作環境を示す図である。
【図2】図1に示したモジュールの様々なコンピュータデバイスメモリ権利を示す図である。
【図3】図1に示したモジュールのいくつかが存在するコンピュータデバイスメモリの様々な部分を表す図である。
【図4】バーチャルマシンモニタが、保護エージェントに付随するメモリの一部を保護し、エージェントを実行するタイマをセットすることができる例示的な方法を示すフローチャートである。
【図5】物理プロセッサを複数のオペレーティングシステム仮想プロセッサ及び1つの保護エージェント仮想プロセッサへ仮想化することができるバーチャルマシンモニタを有する例示的なアーキテクチャを示す図である。
【図6】図5の物理プロセッサの帯域幅を様々な仮想プロセッサの間で割り当てることができる方法を示す図である。
【図7】オペレーティングシステム特権モードからアクセスできない場所に存在する保護エージェントをツールが有効にしかつ実行するいくつかの方法を説明する例示的なプロセスを示す図である。
【図8】オペレーティングシステム特権モードからアクセスできない場所に存在する保護エージェントを有効にしかつ実行するバーチャルマシンモニタをツールが変更し得るいくつかの方法を示す例示的な方法を説明する例示的なプロセスを示す図である。
【図9】バーチャルマシンモニタへ要求することによりツールが保護エージェント特権モードを生成することができるいくつかの方法を説明する例示的なプロセスを示す図である。
【図10】実コンピュータプロセッサを複数の仮想コンピュータプロセッサに仮想化することにより、ツールが保護エージェント特権モードを生成し、複数の仮想コンピュータプロセッサのうちの少なくとも1つが保護エージェントを実行することになっているいくつかの方法を説明する例示的なプロセスを示す図である。
【図11】下層の物理プロセッサに存在しない特権モードをツールが追加することができるいくつかの方法を説明する例示的なプロセスを示す図である。
【発明を実施するための形態】
【0012】
概説
以下の明細書は、保護エージェントをオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくする形で保護エージェントを動作させることができるツールを説明する。よって、これらのツールは、保護エージェント自体の保護を可能にし、それによって、重要なオペレーティングシステム資源に対する変更を検出する保護エージェントの能力を確保する。更に、これらのツールは、資源の変更の検出に対応してまたは保護エージェント自体の変更の試みに対応して、オペレーティングシステムまたはオペレーティングシステム特権モードをシャットダウンすることができる。更に、これらのツールは、その後に資源の変更を検出せずに、保護エージェントがオペレーティングシステム資源での変更ができないようにする。
【0013】
ツールがこれら動作及び他の動作を有効にすることができる環境は、「例示的な動作環境」と題されたセクションで後述する。「自律保護エージェント」と題されたセクションが続き、2つのサブセクションを含む。「バーチャルマシンモニタ保護エージェント」と題された最初のサブセクションは、保護エージェントがバーチャルマシンモニタ内に存在していてかつバーチャルマシンモニタ内で動作することができる1つの例示的な方法を説明する。この後に、1つの例示的な方法を説明する「仮想パーティション保護エージェント」と題されたもう1つのサブセクションが続く。当該方法において、保護エージェントは、オペレーティングシステムのパーティションと別個の仮想パーティションに存在することができ、オペレーティングシステムのパーティションと別個の仮想パーティション内で動作することができる。
【0014】
「自律保護エージェント特権モード」と題された別のセクションが続き、同様に2つのサブセクションを含む。最初のサブセクションは、バーチャルマシンモニタのタイマが保護エージェント特権モードを下層のプロセッサに追加することができる1つの例示的な方法を説明していて、「バーチャルマシンモニタに対する保護要求」と題されている。「保護エージェント仮想プロセッサ」と題されたサブセクションが続き、保護エージェント特権モードを生成することができる別の方法を説明する。複数の仮想プロセッサを用いるこの例では、保護エージェント特権モードで保護エージェントを実行する仮想プロセッサを含む。「ツールの例示的な使用法」と題されたセクションが続き、前述の動作中のツールの例を説明する。最後に、「ツールの他の実施形態」と題されたセクションは、ツールが動作することができる他の様々な実施形態及び方法を説明する。これらのセクション表題及び概要を含んでいるこの概説は、読者の便宜のために提供されていて、特許請求の範囲または表題を付けたセクションの範囲を限定することを意図していない。
【0015】
例示的な動作環境
ツールを詳細に説明する前に、例示的な動作環境についての以下の説明が提供されて、ツールの様々な発明の態様を用いることができるいくつかの方法を理解するのに読者の助けとなる。後述する環境は、1つの例だけであって、いかなる1つの特定の動作環境にもツールの使用を限定することを意図していない。請求された発明の要旨の精神及び範囲を逸脱しない範囲で他の環境が用いられてもよい。例えば、以下のセクションは単一の保護エージェントを有する実施形態を説明するが、複数の保護エージェントが利用されてもよい。場合によっては、これらの保護エージェントは、独立してかつ並列で実行され得る。かかる例では、保護エージェントは、通常、そのそれぞれのパーティション内のメモリにしかアクセスできない。更に、以下に説明される技術は、同時に利用されてもよい。即ち、異なる保護エージェントは、同じ動作環境内で異なる技術を利用することができる。
【0016】
この例について見ると、図1は、符号100で1つのかかる例示的な動作環境をおおまかに示す。この環境はコンピュータデバイス102を含み、コンピュータデバイス102自体が、1つまたは複数のプロセッサ104及びコンピュータ可読媒体106を含む。コンピュータ可読媒体106は、バーチャルマシンモニタ108(例えば、ハイパーバイザ)を含み、バーチャルマシンモニタ108は、1つまたは複数のプロセッサを複数の仮想プロセッサに仮想化することができる。バーチャルマシンモニタ108は、また、複数の仮想パーティションを有効にすることができる。1つまたは複数の仮想プロセッサは各パーティションに付随することができ、これらの仮想プロセッサは利用可能な物理プロセッサ上にスケジューリングされる。図示されているように、いくつかの実施形態では、バーチャルマシンモニタは、第1の仮想パーティション110及び第2の仮想パーティション112を有効にすることができる。以下に詳細に検討されるように、これらのパーティションは、オペレーティングシステム機能を保護エージェントサービスから切り離す働きをすることができる。
【0017】
また、図示するように、コンピュータ可読媒体106は更に、オペレーティングシステム(OS)114及び1つまたは複数のユーザアプリケーション116を含む。オペレーティングシステム114は、オペレーティングシステムサービス118をユーザアプリケーション116に提供し、よって、アプリケーションがコンピュータデバイス上で実行されるようにする。更に、1つまたは複数のオペレーティングシステム資源120が、オペレーティングシステムに存在する。例示的な資源は、システムサービスディスパッチテーブル(SSDT)、割り込みディスパッチテーブル(IDT)、グローバルディスクリプタテーブル(GDT)などを含む。また、図示するように、オペレーティングシステムは、マルウェア122(即ち、悪意のコード)を含むかもしれない。マルウェア122は、上記で検討した方法かまたはそれ以外の方法でコンピュータデバイス上にロードされたかもしれない。以下で検討される1つまたは複数の保護エージェントは、マルウェアによってオペレーティングシステム資源になされた変更を検出することができて、該検出に対応して、防御措置をとることができる。保護エージェントがかかる判断をする場合、保護エージェントは、オペレーティングシステム及び/またはコンピュータデバイスをシャットダウンすることができるか、または反対の作用をする他の措置をとることができる。
【0018】
コンピュータデバイスの構造を検討したので、ここで、下層の1つまたは複数の物理プロセッサ104に存在する特権モードを変化させることに注意を向ける。バーチャルマシンモニタ特権モード124は、図1に示した最も高い特権モードを表す。この特権モードは、デバイスの資源及びメモリの全てにまたはほぼ全てにアクセスできる。バーチャルマシンモニタ特権モード124から、バーチャルマシンモニタは、プロセッサをスケジューリングすることができて、各仮想パーティションのためのメモリ領域にアクセスすることができる。パーティション内で動作するオペレーティングシステムは、自身が物理プロセッサの資源の全てを制御していると考えるかもしれないが、実際は、オペレーティングシステムはバーチャルマシンモニタによって決定された一部分を制御しているだけである。
【0019】
バーチャルマシンモニタ特権モードより低い特権を与えられているので、オペレーティングシステム特権モード126は、オペレーティングシステム資源120の全て及びオペレーティングシステムメモリのほとんどまたは全てにアクセスできる。しかしながら、この特権モードは、第2の仮想パーティション112などの別のパーティションに付随するいかなる資源またはメモリにもアクセスできない。それにもかかわらず、この特権モードは、通常、オペレーティングシステムメモリの全てにアクセスできるので、「特権モード」と称されるときもある。「リング0」、「スーパバイザモード」、または「カーネルモード」によっても、この特権モードが表されるかもしれない。上記で検討したように、オペレーティングシステム特権モード126内で動作しているユーザアプリケーションは、通常、バーチャルマシンモニタモードのために予約されている命令を除いて、プロセッサによって提供されるほとんどの命令を実行することができる。
【0020】
このオペレーティングシステム特権モードは、「非特権モード」、「リング3」、または単に「ユーザモード」と称されることもあるユーザ特権モード128と対比される。また、上記で検討したように、ユーザアプリケーションは、ユーザ特権モード128から動作すると、オペレーティングシステムに付随する特定のメモリにアクセスすることができないかまたは変更することができない。一般に、コンピュータデバイスのユーザアプリケーションは、基本操作を実行すると、このユーザ特権モードで動作する。
【0021】
上記のモードに加えて、図1はまた、第2の仮想パーティション特権モード130及び保護エージェント特権モード132を示す。以下に詳細に検討されるように、保護エージェント特権モード132は、オペレーティングシステム特権モードがアクセスできないメモリの一部へのアクセスができるが、通常、バーチャルマシンモニタ特権モードと同じ程度のメモリアクセスはできない。このように、この特権モードは、オペレーティングシステム特権モードより高い特権を有するが、バーチャルマシンモニタ特権モードより低い特権を有していてもよい。
【0022】
また、以下に詳細に検討するように、第2の仮想パーティション特権モードは、概して第2の仮想パーティション112に付随するメモリにアクセスできる。更に、このモードは、第1の仮想パーティションにアクセスできてもよい。かかる追加のアクセスによって、例えば、第2の仮想パーティションに存在する保護エージェントが、第1の仮想パーティション及びその対応するオペレーティングシステムに付随するメモリを走査することができるようにされてもよい。このモードは、通常、バーチャルマシンモニタにアクセスできず、よって、バーチャルマシンモニタ特権モードより低い特権を有している。それにもかかわらず、第2の仮想パーティション特権モードは、オペレーティングシステム特権モードがアクセスできないメモリの一部にやはりアクセスできる。
【0023】
一方、図2は、コンピュータデバイスのメモリ権利200を示す。よって、この図は、図1のモジュールでアクセス可能なメモリ量を表す。図示するように、バーチャルマシンモニタ特権モード124で動作するバーチャルマシンモニタ108は、図示した全てのモジュールのうちの最も多くのメモリ権利を有する。実際に、バーチャルマシンモニタは、メモリの一部202に存在し、メモリの一部202に単独でアクセスできる。次に、保護エージェント204(例えば、図1に示した保護エージェントのいずれか)は、保護エージェント特権モード132で動作し、バーチャルマシンモニタに対応する部分202以外の全てのメモリにアクセスできる。しかしながら、保護エージェントはメモリの一部206にアクセスできる。メモリの一部206は保護エージェント自体が存在するメモリの一部分である。
【0024】
一方、オペレーティングシステム114は、オペレーティングシステム特権モード126で動作し、部分202及び部分206以外の全てのメモリにアクセスできる。オペレーティングシステムは、保護エージェントに付随するメモリの一部206にアクセスできないが、オペレーティングシステム及びその付随する特権モードは、メモリの一部208にアクセスできる。メモリの当該部分208は、カーネルメモリまたはオペレーティングシステムの最下層レベルの構成要素として公知である場合もあり、通常、図1に示した資源を含む。しかしながら、例えマルウェアがメモリの一部208にロードされかつ動作しても、マルウェアは保護エージェントに付随するメモリの一部206にアクセスすることができない。
【0025】
最後に、図2は、ユーザアプリケーション116はメモリの一部210にアクセスできるだけということを示す。これらのユーザアプリケーション及び対応するユーザ特権モードは、オペレーティングシステムの最下層レベルの構成要素に付随するメモリの一部208にアクセスできない。この動作環境を考慮に入れて、以下の4つのセクションは、保護エージェントがオペレーティングシステム特権モードから変更できなくされるかまたはアクセスできなくされる例示的な方法を詳細に説明する。
【0026】
自律保護エージェント
以下のセクションは、オペレーティングシステム特権モードにおいて動作しているエンティティでアクセスできないメモリから、1つまたは複数のオペレーティングシステム資源が変更されたかどうかを判断することができるツールを説明する。このように、ツールは、保護エージェントがオペレーティングシステムメモリ自体の場所以外の場所に存在することを可能にしてもよい。より具体的には、以下のサブセクションは、保護エージェントがバーチャルマシンモニタ内または自律仮想パーティション内のいずれかに存在することができる方法について説明する。
【0027】
バーチャルマシンモニタ保護エージェント
このサブセクションは、図1が示すように、保護エージェント134がバーチャルマシンモニタ自体内に存在する方法について説明する。オペレーティングシステム特権モードはバーチャルマシンモニタにアクセスすることができないので、この場所は、オペレーティングシステムメモリ内にあるいかなるマルウェアからも保護エージェントを保護する。この場所から動作するために、保護エージェントは、保護エージェント134が監視することができる1つまたは複数のオペレーティングシステム資源120の識別証明を受信する。この識別証明は、資源識別子136を介して受信されてもよい。図示するように、オペレーティングシステムは、アプリケーションプログラミングインタフェース(API)コールを介してバーチャルマシンモニタにこの情報を提供することができる。または、オペレーティングシステムは、マニフェスト138の形で情報を提供することができる。上記のように、これらの資源には、SSDT、IDT、及びGDTを含むことができる。
【0028】
一旦、保護エージェント134が資源の識別証明を受信すると、保護エージェント134は保護エージェントサービス140をオペレーティングシステム114まで拡大する。これらの保護エージェントサービスは、通常、識別された資源のいずれかが変更されたかどうかについて判断することを含む。かかる判断がなされる場合、保護エージェントまたはバーチャルマシンモニタは、例えば、オペレーティングシステムをシャットダウンすることができる。保護エージェントサービスはまた、変更不可能(例えば、「リードオンリー」)とマークされたあらゆる資源に対しても変更できないようにすることを含み得る。
【0029】
かかるアーキテクチャを用いることは、バーチャルマシンモニタをロードして、初期化することから始まる。バーチャルマシンモニタは1つまたは複数のオペレーティングシステムをホストすることができる。この例では、バーチャルマシンモニタは、単一のオペレーティングシステム114をホストし、オペレーティングシステム114自体は、バーチャルマシンモニタがロードされた後に、初期化を開始する。オペレーティングシステムの初期化の間、オペレーティングシステム(例えばカーネル)の最下層レベルの構成要素に付随するメモリの一部208が、最初にロードされる。オペレーティングシステム資源120(例えば、SSDT、GDT、IDT)のいくつかまたは全ては、通常、このメモリの一部208に存在する。
【0030】
オペレーティングシステムが初期化する前にまたはその初期化の間、保護エージェント134は、バーチャルマシンモニタ内から動作を開始することができる。上記で検討したように、保護エージェントは、通常、1つまたは複数のオペレーティングシステム資源一式の識別証明を受信して、識別された資源のうちの1つまたは複数が変更されたかどうかを判断する。各々の識別された資源は、複数の場所で多数の構成要素を含むことが多く、保護エージェントは全資源を十分に保護するためにそれぞれを監視することができるということに注目する。例えば、マニフェストがSSDTを監視して保護すべき資源と見なす場合、保護エージェントは実際のテーブルだけでなくSSDTの他の構成要素も保護する。例えば、保護エージェントは、テーブルの場所を示しているレジスタも監視して走査することができる。更に、保護エージェントは、SSDTの仮想アドレスを物理アドレスに翻訳するメモリ翻訳データ構造(例えば、ページテーブル)も監視することができる。保護エージェントが監視することができない場合、悪質なコードは、異なるページテーブルマッピング(即ち、SSDT自体を迂回する)を有する別のテーブルを生成するかもしれない。
【0031】
識別証明に加えて、保護エージェントは、また、対応する資源を保護する方法について保護エージェントに命令する保護属性を受信することができる。例えば、保護エージェントは、SSDT資源の識別証明も「リードオンリー」についての対応する保護属性も、受信することができる。従って、SSDTはリードオンリーのままであるべきであって、よって変更されるべきではないということを、保護エージェントは知る。「リードオンリーを初期化せよ(Init read-only)」は、別の可能な保護属性であり、それは、対応する資源が初期化の間1度だけ書きこめるが、かかる期間の後は、資源はリードオンリーのままでなければならない、ということを保護エージェントに命令する。
【0032】
保護エージェントは、この資源の識別証明及び資源保護属性を、多くの方法で能動的にも受動的にも受信することができる。例えば、オペレーティングシステムは、保護エージェントが監視することができる資源を識別するデジタル署名入りのマニフェストを提供することができる。このデジタル署名入りのマニフェストは、例えば、名前によって(例えば、SSDT、IDT、GDT、その他)、またはアドレスによってなど、メモリの一部208の対応する場所に資源をマッピングする多くの方法で資源を識別することができる。後者の例では、マニフェストは資源のゲスト物理アドレス、ゲスト仮想アドレス、またはシステム物理アドレスを識別することができる。場合によっては、ゲスト物理アドレスは、実際のシステム物理アドレスにマッッピングされて、対応する資源構成要素の実際の物理的な場所を発見することができる点に注目する。
【0033】
バーチャルマシンモニタまたは保護エージェントはマニフェストを受信した後に、これらの構成要素は、マニフェストが改ざんまたは変更されているかどうかを判断することができる。バーチャルマシンモニタまたは保護エージェントがかかる判断をする場合、バーチャルマシンモニタまたは保護エージェントは、オペレーティングシステムを開始できないことを選ぶことができる。更に、資源のリストに付随する暗号化が無効にされてもよく、よってその安全性を守る。
【0034】
マニフェストに加えて、または、マニフェストに代わるものにおいて、保護エージェントは、バーチャルマシンモニタ(例えば「ハイパーコール」)への1つまたは複数のアプリケーションプログラミングインタフェース(API)コールを介して資源及び保護属性識別証明を受信することができる。オペレーティングシステムが初期化されるときに、オペレーティングシステム(及び、おそらくオペレーティングシステム208の最も低いレベルの構成要素)は、バーチャルマシンモニタへのハイパーコールをすることができる。ハイパーコールは、監視されかつ保護され得る特定の資源を保護エージェントに知らせる。これらのハイパーコールは、上記で検討したのと同じ方法で妥当な資源を識別することができる。また、上記で検討したように、これらのハイパーコールも資源の保護属性を識別することができる。
【0035】
デジタル署名入りのマニフェスト及び1つまたは複数のハイパーコールを利用する実施形態では、保護エージェントは、オペレーティングシステムが起動する前にまたは起動の間、マニフェストにおいて識別された資源を最初に走査することができる。この最初の走査の後に、オペレーティングシステムは、バーチャルマシンモニタへのハイパーコールをすることができる。ハイパーコールは、ハイパーコール識別ページが変更されたかどうかを判断することを保護エージェントに命令する。よってマニフェストは、オペレーティングシステムが起動するごとに資源を識別して走査するが、ハイパーコールは、資源のそれぞれの初期化があると、資源を識別して動的に走査する。
【0036】
監視されるべき資源を識別したので、次に保護エージェントは、資源(例えば、上記のSSDTの各部分の全て)が変更されたかどうかを判断する。保護エージェントは、また、識別された資源に対して変更できないようにすることができる。例えば、保護エージェントは、「リードオンリー」と示されたいかなる資源も「書き込み可能」に変更しないということを確実にすることができる。
【0037】
このようにして資源を監視して保護するために、バーチャルマシンモニタ内で動作するコードは、バーチャルマシンモニタインターセプトマネージャ(例えば、図1のマネージャ146)を用いることができる。そのように命令された場合、このインターセプトマネージャは、識別された資源の様々な構成要素に関する妨害を登録することができる。この登録によって、これらの識別された資源にアクセスするかまたは修正する試みがなされる場合に、バーチャルマシンモニタ内の保護エージェントは、妨害を受信することができる。このように、保護エージェントは、識別された資源の様々な構成要素を調べて走査することができ、それは、また、これらの資源を変更する試みを能動的に阻止することができる。
【0038】
いくつかの実施形態では、保護エージェントは、資源を走査して、それ以後の走査の結果を比較するのに用いるために資源の最初の状態を判断する。他の実施形態では、保護エージェントは、それ以後の走査の結果を比較するために資源の初期状態をすでに知っている。いずれにしても、保護エージェントは、この初期状態のハッシュ値またはチェックサム値を計算することができる。この計算の後に、保護エージェントは、オペレーティングシステムが起動する前に、起動した後に、または起動する間に、資源を走査する。走査の後に、保護エージェントは、結果のハッシュまたはチェックサムを計算して、これを初期状態のハッシュ値またはチェックサム値と比較する。等しい場合、保護エージェントは対応する資源が変更されていないと判断する。もちろん、保護エージェントは、ハッシュ値またはチェックサム値を飛ばして、その代わりに初期状態を走査と直接比較してもよい。
【0039】
しかしながら、値が異なっている場合、保護エージェント及び/またはバーチャルマシンモニタは1つまたは複数の応答動作を行うことができる。最初に、保護エージェント自体は、オペレーティングシステムまたはオペレーティングシステム特権モードをシャットダウンすることができる。または、バーチャルマシンモニタにシャットダウンするように命令することができる。更に、保護エージェントはバーチャルマシンモニタ内に存在するので、かつバーチャルマシンモニタはオペレーティングシステムのホストをするので、これらの2つの構成要素は、オペレーティングシステムをそのようにシャットダウンすることができる。更に、保護エージェントはバーチャルマシンモニタ内に存在するので、オペレーティングシステムをシャットダウンすることによって、オペレーティングシステム特権モードからさえ変更され得ない。
【0040】
オペレーティングシステムをシャットダウンすることに加えて、保護エージェント及び/またはバーチャルマシンモニタは、緊急のシャットダウンをオペレーティングシステムに最初に警告してもよい。バーチャルマシンモニタとオペレーティングシステムとの間の通信チャネルが、かかる通信を可能にしてもよい。別の方法では、保護エージェント及び/またはバーチャルマシンモニタは、メモリ場所に警告を書き込むことができるかまたはオペレーティングシステムが監視するイベントに信号を送ることができる。
【0041】
警告があったか否かに関わりなく、オペレーティングシステムのシャットダウンは、突然であっても正常であってもよい。前者の場合、バーチャルマシンモニタは、異なるハッシュ値またはチェックサム値を知った直後に、オペレーティングシステムを単にパワーダウンしてもよい。後者の場合、バーチャルマシンモニタは、オペレーティングシステムに自身を完全にシャットダウンすることができるある程度の時間を許容する。この時に、オペレーティングシステムは、例えば、あらゆるオープンファイルを閉じて、あらゆる対応データをフラッシュすることができる。オペレーティングシステムはまた、割り当てられた資源をリリースすることができる。更に、シャットダウンには両方の方法を利用することができる。例えば、バーチャルマシンモニタが複数のパーティションのホストをする場合、バーチャルマシンモニタは直ちに異なるハッシュ値またはチェックサム値を有するパーティションをシャットダウンするが、一方他のパーティションに完全にシャットダウンする時期を選ぶことを許容してもよい。いずれにしても、シャットダウンの方法は、ポリシーによって設定可能であってもよくかつ調整可能であってもよい。
【0042】
シャットダウン及び対応する警告に加えて、保護エージェント及び/またはバーチャルマシンモニタは、識別された資源の許可されていない変更に対応して、起動後動作を行うことができる。例えば、バーチャルマシンモニタ及び/または保護エージェントは、オペレーティングシステムの再起動があると、オペレーティングシステムに資源変更を知らせることができる。それに応じて、オペレーティングシステムはアンチウィルススキャンを実行して、部分208など(例えば、カーネル)のオペレーティングシステムメモリ内にマルウェアが実際に存在するかどうかを検出することができる。更に、バーチャルマシンモニタは、オペレーティングシステムをセーフモードで起動するかまたは、オペレーティングシステム自体が、セーフモードで起動することを選択することができる。また、通知に応じて、オペレーティングシステムは、自身が攻撃されたと認識することができ、よって、接続するいかなるネットワークに自身がアクセスするのを許容しなくてもよい。
【0043】
仮想パーティション保護エージェント
保護エージェント(例えば、図1の保護エージェント142)は、バーチャルマシンモニタ自体に存在する代わりに、別個の仮想パーティション(例えば、図1の第2の仮想パーティション112)に存在することができる。これらの実施形態では、この別個のパーティションは、バーチャルマシンモニタの信頼できる代表として働く。よって、保護エージェント142は、オペレーティングシステム特権モードからアクセスすることができない。上記で検討したように、バーチャルマシンモニタ108は、コンピュータデバイス102のかかる仮想化を提供する。バーチャルマシンモニタは、いくつのパーティションにでも、コンピュータデバイスを仮想化することができるが、図1は、オペレーティングシステムをホストする第1のパーティション及び保護エージェントをホストする第2のパーティションを示している。保護エージェントが存在する第2の仮想パーティションは、場合によっては、その主要な機能または唯一の機能が保護エージェントを実行させることになっている専用のセキュリティパーティションであってもよい。他の実施形態では、この第2の仮想パーティションは、別のオペレーティングシステムをホストすることなどの追加の機能を実行してもよい。
【0044】
第2の仮想パーティション内に存在する保護エージェント142は、バーチャルマシンモニタ内に存在する保護エージェント134に関して上記で検討したのと同じ機能のうちの多くまたは全てを実行することができる。即ち、保護エージェント142は、1つまたは複数のオペレーティングシステム資源120の識別証明を能動的にまたは受動的に受信することができる。識別証明に応じて、保護エージェントは更に、保護エージェントサービス140を拡大することができる。保護エージェントサービス140は通常、識別された資源のうちの1つまたは複数が変更されたか否かを判断して、変更されている場合に、応答動作を行うことを含む。これらのサービスは、また、指定された資源を変更できないようにすることを含んでもよい。保護エージェント142は、上記の技術と同様の技術を介してこれらの機能を実行することができる。
【0045】
図示するように、保護エージェント142は、第2の仮想パーティション特権モード130からアクセスできるが、オペレーティングシステム特権モード126からアクセスできない。このように、マルウェアがオペレーティングシステムの最も低いレベルの構成要素に付随するメモリの一部208内に存在する場合であっても、得られるアーキテクチャは、オペレーティングシステム内にあるマルウェアからの、保護エージェント自体の保護が可能になる。
【0046】
自律保護エージェント特権モード
本セクションは、保護エージェントに付随するオペレーティングシステムメモリの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくするが、メモリの当該部分がオペレーティングシステム物理メモリスペースに物理的になお存在できるようにするツールを説明する。よって、これらのツールは、自律保護エージェント特権モードを生成する。自律保護エージェント特権モードは、保護エージェントに付随するメモリの一部にも、オペレーティングシステム特権モードにおいてアクセスできるメモリの残りの部分にも、アクセスできる。よって、この特権モードは、オペレーティングシステム特権モードより高い特権を有する。
【0047】
最初のサブセクションは、バーチャルマシンモニタが保護エージェントに付随するメモリの一部を保護するよう要求することにより、保護エージェント特権モードを生成することができるツールを説明する。一方、2番目のサブセクションは、保護エージェントを実行させる専用の仮想プロセッサを含んでいる複数の仮想プロセッサへ物理プロセッサを仮想化することにより、保護エージェント特権モードを生成することができるツールを説明する。
【0048】
バーチャルマシンモニタに対する保護要求
本サブセクションは、保護エージェントが、保護エージェント及びこのような保護エージェント自体に付随するメモリを保護するようバーチャルマシンモニタに要求することができる方法について説明する。この保護によって、図1に示したように、保護エージェント特権モード132で動作する保護エージェント144が得られる。図示するように、保護エージェント特権モードに変わる前に、保護エージェント144は、最初にオペレーティングシステム特権モード内に存在することができる。この保護エージェント特権モードで動作すると、保護エージェントは、通常、オペレーティングシステム特権モード126で動作しているエンティティからの攻撃を受けにくい。
【0049】
保護エージェント特権モード132で動作すると、エンティティは、オペレーティングシステム特権モード126で動作するよりもわずかに高いが、バーチャルマシンモニタ特権モード124よりなお低い特権を有する。図2が示すように、この特権モードで動作する保護エージェントは、保護エージェント自体に付随するメモリの一部206に加えて、オペレーティングシステムに付随するメモリの全てにアクセスすることができる。バーチャルマシンモニタ108は、追加された保護エージェントのアクセスを実行する。
【0050】
図3及び図4は、この保護エージェント特権モードを生成する例示的な方法を示す。図3は、コンピュータデバイスメモリ300の全てまたはほぼ全てを表す。コンピュータデバイスメモリ300は、オペレーティングシステム特権モードに付随するメモリの一部302(例えば、カーネル)及びユーザ特権モードに付随するメモリの一部304を含む。図示するように、メモリの一部302はまた、保護エージェント144に付随するメモリの一部306及びドライバがロードするメモリの一部308を含む。
【0051】
図4に示すように、保護エージェント特権モード132を生成するプロセス400は、メモリの一部302(例えば、カーネル)を初期化することによって、動作1で始まる。動作2で、メモリの一部306または保護エージェント144自体は、バーチャルマシンモニタ108をコールして、保護エージェントに付随するメモリの一部をバーチャルマシンモニタが保護することを要求する。そう要求することにおいて、オペレーティングシステム特権モードにおいて実行中のコードが、メモリの当該部分306を変更されないようにするかまたは別の方法で影響を与えられないようにすることを、保護エージェントまたは対応するメモリは求める。保護エージェントは、また、バーチャルマシンモニタ108に対して(例えば、デジタル署名によって)自身を証明することができる。メモリの当該部分または保護エージェント自体はまた、バーチャルマシンモニタがタイマをセットして、タイマが期限切れになると保護エージェントを実行するということを要求することができる。動作3は、オペレーティングシステム特権モードにおいて動作しているエンティティからメモリを保護しかつ要求に応じてタイマをセットするバーチャルマシンモニタを示す。保護エージェントに付随するメモリの当該部分306はオペレーティングシステム特権モードからこのとき変更できないかまたはアクセスできないので、保護エージェントは、このとき保護エージェント特権モードに存在するということに注目する。
【0052】
動作4で、ドライバがメモリの一部308へロードされる。動作2の要求及び対応する動作3の保護は、マルウェアがドライバの形で存在するかもしれないので、通常、ドライバがメモリへロードされる前に起きる。以下の「ツールの例示的な使用法」で検討されるように、マルウェアの作者は、ユーザをだましてコンピュータデバイス上へ悪質なドライバをインストールさせることが多い。メモリの一部306が保護される前に1つまたは複数の悪質なドライバが実際にメモリへロードされる場合、悪質なドライバは、保護要求自体に潜在的にパッチを当てることができる。かかるパッチングは、このことによりバーチャルマシンモニタを介して保護エージェントの周期的な実行、よって、保護エージェント特権モードの生成を妨げるかもしれない。しかしながら、バーチャルマシンモニタがタイマを初期にセットするのを要求することにより、オペレーティングシステム特権モード内のコードが保護エージェントの周期的な実行をそのように無効にすることができないということをこのプロセスは確実にする。
【0053】
一方、動作5は、ドライバがロードされた後しばらくして起こり得る。図示するように、動作5は、バーチャルマシンモニタタイマの期限切れ、よって、保護エージェントの実行を示す。動作すると、保護エージェント144は、前のセクションで検討した機能と同様または同一の機能を実行する。また、上記で検討したように、保護エージェントは、1つまたは複数の識別された資源が変更されたという判断に応じて処置を行うことができる。保護エージェントは、また、オペレーティングシステム特権モードにおいて動作しているエンティティから、保護エージェントまたはその対応するメモリのアクセスの試みまたは変更の試みに応じてかかる処置を行うことができる。
【0054】
動作6は、保護エージェントが実行を終えると、バーチャルマシンモニタに通知する保護エージェントを示す。最後に、動作7は、動作3、5及び6の繰り返しを表す。このように、バーチャルマシンモニタは、そのタイマをリセットして、例えば100ミリ秒(ms)毎の周期的な間隔で保護エージェントを実行することができる。
【0055】
バーチャルマシンモニタでフェイルセーフタイマをセットすることによって、プロセス400は、保護エージェントに付随するメモリの一部を変更するオペレーティングシステムコードの能力を排除する。このように、保護エージェントが動作し続けて、オペレーティングシステム特権モードにおいて動作するマルウェアによりパッチを当てられないということをこのプロセスは確実にする。代わりに、保護エージェントは、オペレーティングシステムに割り当てられた物理的なメモリ内になお存在するが、自律特権モードにおいて動作することができる。
【0056】
保護エージェント仮想プロセッサ
本サブセクションは、バーチャルマシンモニタが仮想プロセッサをスケジューリングすることによって保護エージェント特権モードを生成して保護エージェント144を実行する方法を説明する。図5は、アーキテクチャ500を示し、アーキテクチャ500は、各々がオペレーティングシステムを含んでいる2つのパーティションにコンピュータデバイス102を仮想化するバーチャルマシンモニタ108を含む。図示するように、コンピュータデバイスは、この例では2つの実プロセッサ104(a)及び104(b)を含み、その各々により仮想プロセッサは複数の仮想プロセッサをスケジューリングすることができる。また、図示するように、バーチャルマシンモニタは、第1の仮想パーティション502及び第2の仮想パーティション504を生成する。第1の仮想パーティションは、第1のオペレーティングシステムを実行する第1の仮想プロセッサ506を含む。同様に、第2の仮想パーティションは、第2のオペレーティングシステムを実行する第2の仮想プロセッサ508を含む。しかしながら、この例では、バーチャルマシンモニタはまた、保護エージェント仮想プロセッサ510を含み、図1の保護エージェント144などの保護エージェントを実行する。
【0057】
アーキテクチャ500を生成するために、バーチャルマシンモニタが、最初にロードされて初期化される。図6に示すように、次に、バーチャルマシンモニタは、様々な仮想プロセッサを監視し、監視することにおいて、実プロセッサ帯域幅600を割り当てる。この仮想化及び割り当てを開始するために、バーチャルマシンモニタは、第1の実プロセッサ上へ第1の仮想プロセッサを仮想化する。この例では、この仮想化は、図6で示すように1対1方式でなされる。即ち、この単一の仮想プロセッサ506だけが実プロセッサ104(a)に対応し、よって、バーチャルマシンモニタは、実プロセッサの帯域幅の全てをこの仮想プロセッサに割り当てる。次に、バーチャルマシンモニタは、第2の実プロセッサ104(b)上に第2の仮想プロセッサ508を仮想化する。しかしながら、1対1方式の代わりに、バーチャルマシンモニタは、第2の実プロセッサの帯域幅のいくつかの部分を保持する。次に、バーチャルマシンモニタは、同様に図6で示すように、第2の実プロセッサ104(b)のこの残りの帯域幅上に保護エージェント仮想プロセッサ510仮想化する。
【0058】
第2の実プロセッサ上で動作する各仮想プロセッサは、通常、タイムスライシングベースで動作する。即ち、第2の仮想プロセッサは、第2の仮想プロセッサの動作が一時停止する前に、ある程度長時間第2の実プロセッサ上で動作することができる。この点で、第2の実プロセッサは、別のある程度長時間保護エージェント仮想プロセッサのオペレーションに切替わる。例えば、第2の仮想プロセッサは、90msの間第2の実プロセッサ上で動作することができる。この時点で、この第2の仮想プロセッサのオペレーションは中止し、保護エージェント仮想プロセッサのオペレーションは10msの間開始する。保護エージェント仮想プロセッサは、通常、オペレーティングシステムパーティション並びに第1の仮想プロセッサ及び第2の仮想プロセッサにトランスペアレントである。このように、両方のオペレーティングシステムは、両方のオペレーティングシステムの対応する仮想プロセッサがそれぞれの実プロセッサに対応すると考える。
【0059】
実プロセッサの帯域幅を割り当てることに加えて、バーチャルマシンモニタはまた、各仮想プロセッサがアクセスすることができるメモリの一部を管理する。この例では、第1の仮想プロセッサは、第1のオペレーティングシステムに付随するメモリの全てにアクセスすることができる。一方、第2の仮想プロセッサは、保護エージェントに付随するメモリの一部以外の、第2のオペレーティングシステムに付随するメモリの全てにアクセスすることができる。保護エージェント仮想プロセッサだけが、第2のオペレーティングシステムに割り当てられたメモリに加えて、保護エージェントに付随するメモリの一部にアクセスできる。
【0060】
更に、第1の仮想プロセッサ及び第2の仮想プロセッサは、それらの付随するメモリを変更する能力を有するだけである。このように、それらのそれぞれのオペレーティングシステムを動作させる仮想プロセッサのいずれも、保護エージェントに付随するメモリの一部を変更することができない。しかしながら、保護エージェント仮想プロセッサは、保護エージェントに付随するメモリ及び、いくつかの実施形態では、第2の仮想プロセッサに付随するメモリも変更することができる。
【0061】
そのプログラムされた特質によって、保護エージェント仮想プロセッサは、周期的に保護エージェントを実行することができる。場合によっては、保護エージェント仮想プロセッサがほかのアプリケーションを実行することができるが、この例では、専用の保護エージェント仮想プロセッサを示す。このように、この仮想プロセッサは、通常、保護エージェントを周期的に実行する働きをするだけである。更に、保護エージェントは、同様の方法かまたは同一の方法で、上記の保護エージェントと同様の機能または同一の機能を実行することができる。
【0062】
専用の保護エージェント仮想プロセッサをスケジューリングすることによって、バーチャルマシンモニタは、保護エージェントがこのプロセッサの制御下でかつ自律保護エージェント特権モードで周期的に動作することを確実にする。更に、この保護エージェント仮想プロセッサだけが保護エージェントに付随するメモリの一部にアクセスできるので、バーチャルマシンモニタはオペレーティングシステム内のコードからこのメモリを保護する。従って、オペレーティングシステム特権モードにおいて動作するマルウェアは、保護エージェントにパッチを当てることができずかつ保護エージェントが実行できないようにすることができない。このように、この技術は、本質的に、保護エージェントを変更するオペレーティングシステムの能力を除去する。
【0063】
ツールの例示的な使用法
保護エージェントの保護を確実にすることができるツールを前に説明したので、以下のセクションは、動作におけるこれらのツールの1つの例だけ説明する。最初に、コンピュータユーザがインターネットをサーフィンし、特定のウェブサイトをサーフィンする間に、悪質な意図を有するダイアログボックスがユーザのディスプレイにポップアップすると仮定する。ダイアログボックスは、ある種のマルウェアをユーザのコンピュータ上にインストールする許可をユーザに要求する。この要求は直接であってもよいが、ダイアログボックスが通常の場合のように要求を見せかけていると仮定する。ダイアログボックスは、例えば、ユーザが賞を獲得したという虚偽の通知をするかもしれない。そのように通知する際に、ダイアログボックスは、賞を授与されるためにダイアログボックスの「OK」ボタンをクリックするようにユーザに悪意をもって指示する。ユーザが実際にOKのボタンを選択し、コンピュータデバイスで実行中のソフトウェア(例えば、アンチウィルスアプリケーション)からの1つまたは複数の警告にもかかわらず要求されたオペレーションを続けることをユーザが選択すると仮定する。
【0064】
この時点で、コンピュータデバイスは、マルウェアを含むドライバのインストールを開始する。通常ドライバに当てはまることだが、この悪質なドライバはオペレーティングシステム特権モードへのアクセスを許可され、この特権モードに付随するメモリ(例えば、カーネル)にロードされる。一旦カーネルにロードされると、悪質なドライバ及びその付随するマルウェアは、コンピュータのメモリ及びオペレーティングシステムに基本的に何でもアクセスできる。ユーザにとって残念なことに、このマルウェアはユーザのキーストロークをログするキーロガーを含むと考えられる。ここで、ユーザは自分の銀行のウェブサイトに誘導し、自身の預金口座にサインすると仮定する。キーストロークをログするその能力のために、キーロガーは、ユーザの預金口座パスワードを知って、インターネットを介して悪質なドライバの作者にこのパスワードを送信する。
【0065】
更に状況を悪くすることに、マルウェアが「ルートキット」、即ち、保護エージェント及びユーザのアンチウィルスソフトウェアから能動的に隠れようとするマルウェアであると仮定する。従来のシステムでは、保護エージェントは、カーネル(即ち、悪質なドライバがアクセスできるメモリ内)内に存在する。従って、これらの従来のシステムでは、マルウェアは保護エージェントにアクセスでき、保護エージェントから自身を隠そうとすることができる。成功した場合、マルウェアは、カーネル内に存在しないかのように保護エージェントに見える。従って、ユーザのアンチウィルスソフトウェアが保護エージェントをコールしてコンピュータのメモリに存在する全てのアプリケーションのリストを要求すると、マルウェアは認められない。この不在によって、マルウェアを知りかつ除去するアンチウィルスソフトウェアは無力になる。更に、マルウェアは保護エージェントにパッチをあて、それによって保護エージェントを全く実行できないようにする。このように、マルウェアがいずれかのオペレーティングシステム資源を変更する場合には、保護エージェントは通知することができない。
【0066】
しかしながら、ユーザのコンピュータデバイス上の保護エージェントは、従来のシステムにおいてのようにカーネル内に存在する代わりに、メモリ内に存在するかまたはオペレーティングシステム特権モードからアクセスできないモードで動作すると仮定する。従って、悪質なドライバがカーネルにロードされると、悪質なドライバは保護エージェントが存在するメモリまたは保護エージェントが動作するモードにアクセスすることができない。それゆえに、ドライバ及びその付随するマルウェアは、保護エージェント自体にアクセスできない。よって、マルウェアは、保護エージェント及び、よって同様にアンチウィルスソフトウェアからも隠れることができない。従って、アンチウィルスソフトウェアが保護エージェントにコンピュータのメモリに存在する全てのアプリケーションのリストを求めると、返送されたリストにはマルウェアが含まれる。次に、アンチウィルスソフトウェアは、このコードをマルウェアと認め、従って、ユーザのコンピュータデバイスからこのコードを除去する。更に、マルウェアがオペレーティングシステム資源を変更する場合に、保護エージェントは自身に通知し、それに応じて、ユーザのコンピュータデバイスをシャットダウンすることができる。
【0067】
従って、メモリに存在していることによってまたはオペレーティングシステム特権モードからアクセスできないモードで動作していることによって、本明細書で開示した実施形態は、マルウェアが保護エージェントから隠れることができないようにするかまたは保護エージェントにパッチを当てることができないようにする。従って、上記の例では、マルウェアが重要な資源を変更すると、ユーザのコンピュータデバイスは、マシンからマルウェアを除去することができるかまたは、場合によっては、システムをシャットダウンすることができる。いずれにせよ、これらの実施形態は、害を及ぼそうとするマルウェアの実効性をより小さくする働きをする。
【0068】
ツールの他の実施形態
上記のセクションは、保護エージェントを、オペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくする特定の2、3の例を説明している。このセクションでは、例えば下層のプロセッサに存在しないプロセッサに対する特権モードを加えることなどの、ツールの他の実施形態が説明される。
【0069】
これらの例示的な実施形態は、図7乃至図11のプロセスの一部700乃至1100の一部として説明される。これらのプロセスも、図1乃至図6を参照して説明したかまたは図示した例示的なプロセスも、あらゆる適当なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて実施されてもよい。ソフトウェア及びファームウェアの場合、これらのプロセスは、コンピュータ可読媒体に保存されかつ1つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令として実行される一組のオペレーションを示す。本セクションで説明されるツールについてのこれらの実施形態は、ツールの範囲または請求の範囲を限定することを意図していない。
【0070】
図7を参照すると、ブロック702において、1つまたは複数のオペレーティングシステム資源を識別するエンフォースメントポリシーを受信する。このエンフォースメントポリシーは、暗号化データを含んでいてもよく、デジタル署名されたマニフェストを介してまたはアプリケーションプログラムインタフェース(API)をオペレーティングシステム(例えば、ハイパーコール)にさらすことによって受信され得る。ブロック704において、オペレーティングシステム特権モードにおいて動作しているエンティティからアクセスできないメモリから、1つまたは複数のオペレーティングシステム資源を識別する。例示的な資源は、システムサービスディスパッチテーブル(SSDT)、割り込みディスパッチテーブル(IDT)、及び/またはグローバル記述子テーブル(GDT)を含む。上記で検討したように、この識別は、バーチャルマシンモニタ(例えば、図1の保護エージェント134によって)内でまたは別個の仮想パーティション(例えば、図1の保護エージェント142によって)内で起きてもよい。
【0071】
一方、ブロック706において、識別された資源のいずれかが変更されたかどうかについて判断することが示される。更に、このことは、バーチャルマシンモニタ内でまたは別個のパーティション内で起こってもよい。ブロック706において、識別された資源のうちの1つまたは複数が実際に変更されたと判断される場合、ブロック708においてこの判断に応じてオペレーティングシステムを終了する。最後に、ブロック710において、オペレーティングシステムの再起動があるとオペレーティングシステムに不正なオペレーションが通知される。
【0072】
図8は、保護エージェントがバーチャルマシンモニタ内で動作するようにするプロセス800を示す。ブロック802において、オペレーティングシステム資源に付随するメモリページまたはレジスタが変更されたという指標を受信することを可能にするのに有効なバーチャルマシンモニタインターセプトマネージャを変更する。この資源は、図7を参照して説明される資源のうちの1つを含んでもよいしまたは別のオペレーティングシステム資源であってもよい。いずれにしても、ブロック804では、オペレーティングシステム資源及び場合により1つまたは複数の他のオペレーティングシステム資源を識別するエンフォースメントポリシーを受信する。更に、この識別は、上記で検討した技術を介してなされ得る。上記のように、資源の保護属性(例えば、「リードオンリー」「リードオンリーを初期化せよ」)は、資源の識別に付随して起こり得る。一方、ブロック806では、オペレーティングシステム資源に付随するメモリページまたはレジスタが実際に変更されたという指標の受信が示される。それに応じて、ブロック808において、オペレーティングシステム資源に付随するオペレーティングシステムをシャットダウンするのに有効なオペレーティングシステム特権モードをシャットダウンする。場合によっては、図1のバーチャルマシンモニタ108は、オペレーティングシステム特権モードのこのシャットダウンを行うことができる。
【0073】
次に、図9は、図1に示した保護エージェント特権モード132などの保護エージェント特権モードを生成する例示的なプロセス900を説明する。ブロック902において、メモリの特定の領域をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくするという要求を受信する。更に、バーチャルマシンモニタがこの要求を受信してもよく、この要求はメモリの領域自体からまたはメモリの領域に存在する保護エージェントからのものであってもよい。ブロック904において、メモリの領域を保護し、メモリの領域に存在する保護エージェントを周期的に実行するタイマをセットする。更に、バーチャルマシンモニタはかかるタイマをセットすることができ、タイマは規則的な間隔で保護エージェントを実行するようバーチャルマシンモニタに命令することができる。
【0074】
一方、ブロック906において、オペレーティングシステム資源を記載するエンフォースメントポリシーを受信する。更に、エンフォースメントポリシー及び記載された資源は、上記で検討されたエンフォースメントポリシー及び記載された資源と同様かまたは同一であってもよい。ブロック908で、保護エージェントを実行し、それはバーチャルマシンモニタによって行われてもよい。判断ブロック910において、オペレーティングシステム資源が変更されたかどうかが問題にされる。保護エージェントは、上記で詳述した方法で働くことによってこの判断を行うことができる。実際にブロック910で、変更があったと判断する場合、ブロック912においてオペレーティングシステムをシャットダウンする。しかしながら、かかる判断が行われない場合、ブロック914において、保護エージェントが動作を終えたという通知を受信する。場合によってはかつ上記のように、保護エージェント自体が、バーチャルマシンモニタにそのように通知することができる。一方、ブロック916で、保護エージェントを実行することと保護エージェントを実行しないこととの間の繰り返しを示す。最後に、保護エージェントは動作しないが、バーチャルマシンモニタは、保護エージェントに付随するメモリの領域の、オペレーティングシステム特権モードにおいて動作するエンティティからの、アクセスの試みに応じてオペレーティングシステムをシャットダウンすることができるということに注目する。
【0075】
図10は、図1に示した保護エージェント特権モード132などの保護エージェント特権モードを生成する例示的な別のプロセス1000を示す。ブロック1002において、実コンピュータプロセッサを複数の仮想コンピュータプロセッサに仮想化する。これらの仮想プロセッサは、図6に示したように、自身のオペレーティングシステムメモリを変更しかつ実プロセッサの処理帯域幅の一部を用いる特権を各々が有している1つまたは複数のオペレーティングシステム仮想プロセッサを含むことができる。仮想プロセッサは、また、自身の保護エージェントメモリを変更しかつ実プロセッサの処理帯域幅の異なる部分を用いる特権を有する少なくとも1つの保護エージェント仮想プロセッサを含むことができる。仮想プロセッサの全てがバーチャルマシンモニタによってスケジューリングされてもよいとともに、保護エージェント仮想プロセッサはオペレーティングシステム仮想プロセッサにトランスペアレントでもよい。場合によっては、オペレーティングシステム仮想プロセッサは、保護エージェント仮想プロセッサに割り当てられるメモリを変更することができなくてもよい。更に、保護エージェント仮想プロセッサは、専用のプロセッサであってもよく、専用のプロセッサの主要な目的または唯一の目的は、上記で検討したように、保護エージェントを動作させることである。
【0076】
次に、ブロック1004において、保護エージェント仮想プロセッサに保護エージェントを実行させる。保護エージェントは、当該オペレーティングシステムメモリの一部が変更されたか否かを判断するのに有効であり得る。一方、ブロック1006において、オペレーティングシステムメモリの一部が変更されたという指標を受信する。それに応じて、ブロック1008において、対応するオペレーティングシステムをシャットダウンする。
【0077】
最後に、図11は、実コンピュータプロセッサに特権モードを追加するプロセス1100を示す。ブロック1102において、下層の物理プロセッサに存在する1つまたは複数の特権モードについて判断、識別、または分類することが示される。これらの特権モードは、通常、下層の物理プロセッサ自体によって画定される。いずれにせよ、ブロック1104において、下層の物理プロセッサに存在しない特権モードを追加する。場合によっては、追加された特権モードは、1つまたは複数の存在している特権モードによって変更できるメモリの一部と異なっているコンピュータデバイスのメモリの一部を変更することができる。追加された特権モードは、また、以前に存在しなかったかまたは下層のプロセッサにおいて実行可能でなかった命令を追加して実行することができてもよい。
【0078】
更に、下層の物理プロセッサに存在する1つまたは複数の特権モードは、ユーザ特権モード及びオペレーティングシステム特権モードを含むことができる。これらの実施形態において、追加された特権モードは、ユーザ特権モード及びオペレーティングシステム特権モードの両方より高い特権を有していてもよいし、ユーザ特権モードより高い特権を有しているがオペレーティングシステム特権モードより低い特権を有していてもよいし、または、ユーザ特権モード及びオペレーティングシステム特権モードの両方より低い特権を有していてもよい。最後に、特権モードを追加する1つの例は、上記で検討した多数の方法で保護エージェント特権モード(例えば、図1に示した保護エージェント特権モード132)を追加することを含んでいてもよいということに注意が必要である。例えば、メモリの領域をオペレーティングシステム特権モードにおいて動作するエンティティからアクセス不可能にすることを、保護エージェントまたはその付随するメモリの領域は要求することができる。バーチャルマシンモニタは、また、保護エージェント仮想プロセッサをスケジューリングして保護エージェントを実行することによりこの特権モードを生成することができる。
【0079】
結論
上記のツールは、保護エージェントがオペレーティングシステム特権モードからアクセスできない場所に存在するのを可能にすることによって、または、保護エージェント特権モードを生成することによって、保護エージェントをオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることを可能にする。ツールは、構造上の特徴及び/または方法論的動作に固有の言語で説明されてきたが、添付の請求の範囲において画定されるツールは、説明された特定の特徴または動作に必ずしも限定されるわけではないということが理解されなければならない。むしろ、特定の特徴及び動作は、ツールを実施する例示的な形式として開示されている。

【特許請求の範囲】
【請求項1】
コンピュータで実行する方法であって、
1つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するステップであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、ステップを含み、
前記仮想コンピュータプロセッサは、
第1のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの処理帯域幅のうちの一部を用いる特権を有しているオペレーティングシステム仮想プロセッサと、
第2のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの前記処理帯域幅の異なる部分を用いる特権を有している保護エージェント仮想プロセッサと、
を含み、
前記方法は更に、
前記第2のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断するステップを含むことを特徴とする方法。
【請求項2】
バーチャルマシンモニタのインターセプトマネージャを、前記第1のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更するステップと、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信するステップと、
前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンするステップと、
を更に含むことを特徴とする請求項1記載の方法。
【請求項3】
前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含むことを特徴とする請求項1記載の方法。
【請求項4】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項1記載の方法。
【請求項5】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項1記載の方法。
【請求項6】
1つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するコンピュータデバイスであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、コンピュータデバイスを備え、
前記仮想コンピュータプロセッサは、
第1のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの処理帯域幅のうちの一部を用いる特権を有しているオペレーティングシステム仮想プロセッサと、
第2のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの前記処理帯域幅の異なる部分を用いる特権を有している保護エージェント仮想プロセッサと、
を含み、
前記コンピュータデバイスは更に、
前記第2のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断することを特徴とするシステム。
【請求項7】
前記コンピュータデバイスは、バーチャルマシンモニタのインターセプトマネージャを、前記第1のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更し、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信し、
前記コンピュータデバイスは、前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンすることを特徴とする請求項6記載のシステム。
【請求項8】
前記コンピュータデバイスは、さらに、前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含むことを特徴とする請求項6記載のシステム。
【請求項9】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項6記載のシステム。
【請求項10】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項6記載のシステム。
【請求項11】
コンピュータ可読命令を記録したコンピュータ可読記録媒体であって、前記コンピュータ可読命令はコンピュータデバイスに、
1つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するステップであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、ステップを含み、
前記仮想コンピュータプロセッサは、
第1のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの処理帯域幅のうちの一部を用いる特権を有しているオペレーティングシステム仮想プロセッサと、
第2のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記1つまたは複数の実コンピュータプロセッサの前記処理帯域幅の異なる部分を用いる特権を有している保護エージェント仮想プロセッサと、
を含み、
前記方法は更に、
前記第2のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断するステップを含む方法を実行させることを特徴とするコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項12】
バーチャルマシンモニタのインターセプトマネージャを、前記第1のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更するステップと、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信するステップと、
前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンするステップと、
を更に含む方法を実行させることを特徴とする請求項11記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項13】
前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含む方法を実行させることを特徴とする請求項11記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項14】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項11記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項15】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項11記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2012−198927(P2012−198927A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−134970(P2012−134970)
【出願日】平成24年6月14日(2012.6.14)
【分割の表示】特願2009−547243(P2009−547243)の分割
【原出願日】平成19年12月12日(2007.12.12)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)