JP6378758B2 - 仮想マシンにおけるマルウェア検出のためのプロセス評価 - Google Patents

仮想マシンにおけるマルウェア検出のためのプロセス評価 Download PDF

Info

Publication number
JP6378758B2
JP6378758B2 JP2016523693A JP2016523693A JP6378758B2 JP 6378758 B2 JP6378758 B2 JP 6378758B2 JP 2016523693 A JP2016523693 A JP 2016523693A JP 2016523693 A JP2016523693 A JP 2016523693A JP 6378758 B2 JP6378758 B2 JP 6378758B2
Authority
JP
Japan
Prior art keywords
evaluated
evaluator
virtual machine
host system
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016523693A
Other languages
English (en)
Other versions
JP2016526730A (ja
JP2016526730A5 (ja
Inventor
ルカクス,サンドル
トシア,ラウル−ヴァシレ
ボカ,パウル−ダニエル
ハジマシアン,ゲオルゲ−フローリン
ルツァス,アンドレイ−ヴラド
Original Assignee
ビットディフェンダー アイピーアール マネジメント リミテッド
ビットディフェンダー アイピーアール マネジメント リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ビットディフェンダー アイピーアール マネジメント リミテッド, ビットディフェンダー アイピーアール マネジメント リミテッド filed Critical ビットディフェンダー アイピーアール マネジメント リミテッド
Publication of JP2016526730A publication Critical patent/JP2016526730A/ja
Publication of JP2016526730A5 publication Critical patent/JP2016526730A5/ja
Application granted granted Critical
Publication of JP6378758B2 publication Critical patent/JP6378758B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

[0001]本発明は、マルウェアからコンピュータシステムを保護するためのシステムおよび方法に関し、詳細には、ハードウェア仮想化技術を使用するアンチマルウェアシステムに関する。
[0002]悪意のあるソフトウェアは、マルウェアとしても知られ、世界中の多数のコンピュータシステムに影響を与える。コンピュータウイルス、ワーム、およびルートキットなど、その多くの形式でマルウェアは、数百万人のコンピュータユーザに深刻なリスクを与え、特に、データおよび機密情報の損失、個人情報の盗難、ならびに生産性の損失を受けやすくしている。
[0003]ハードウェア仮想化技術により、多くの方法で物理コンピュータシステムとしてふるまう、一般に仮想マシンとして知られるシミュレートされたコンピュータ環境の創出が可能となる。サーバ統合およびサービスとしてのインフラストラクチャ(IAAS:infrastructure-as-a-service)などの代表的な応用では、いくつかの仮想マシンが、特にハードウェアリソースを共有して、したがって投資および運用コストを減らして、同じ物理マシン上で同時に動作することができる。各仮想マシンは、その独自のオペレーティングシステムおよび/またはソフトウェアアプリケーションを、他の仮想マシンから切り離して実行することができる。マルウェアが一定して増えているために、このような環境で動作している各仮想マシンは、潜在的にマルウェア防御を必要としている。
[0004]当技術分野で一般的に使用される仮想化ソリューションは、コンピューティングハードウェアと仮想マシンのオペレーティングシステム(OS)との間で動作しているソフトウェアの層から成り、それぞれのOSよりも大きいプロセッサ特権を有し、仮想マシンモニタとしても知られるハイパーバイザを含む。ルートキットなどのいくつかのマルウェアは、OS特権レベルで動作するので、ハイパーバイザの特権レベルで実行されるアンチマルウェアソリューションを開発することへの関心がある。
[0005]1つの態様によれば、ホストシステムが、仮想マシンを公開する(expose)ように構成されたハイパーバイザと、仮想マシン内で実行されるプロセス評価器と、仮想マシンの外で実行されるメモリ内部監視エンジン(memory introspection engine)と、プロセススコアリングモジュールとを実行するように構成された少なくとも1つのプロセッサを含む。プロセス評価器は、仮想マシン内で実行される評価されるプロセスがアクションを行うかどうかを判断し、それに応じて、評価されるプロセスがアクションを行うとき、評価されるプロセスに対して判断された第1のプロセス評価インジケータをプロセススコアリングモジュールに送るように構成される。メモリ内部監視エンジンは、オペレーティングシステム機能へのコールをインターセプトし、仮想マシン内で実行される保護されるプロセスの起動を検出し、オペレーティングシステム機能は、保護されるプロセスを仮想マシン内で実行されるプロセスのリストに追加するように構成され、起動を検出することに応じて、評価されるプロセスが保護されるプロセスのメモリページを変更しようと試みるかどうかを判断し、それに応じて、評価されるプロセスがメモリページを変更しようと試みるとき、評価されるプロセスに対して判断された第2のプロセス評価インジケータをプロセススコアリングモジュールに送るように構成される。プロセススコアリングモジュールは、第1および第2のプロセス評価インジケータを受け取り、それに応じて、第1および第2のプロセス評価インジケータにより、評価されるプロセスが悪意のあるものであるかどうかを判断するように構成される。
[0006]別の態様によれば、非一時的コンピュータ可読媒体が、命令をエンコードし、命令は、少なくとも1つのプロセッサを含んだホストシステムで実行されるとき、ホストシステムに、仮想マシンを公開するように構成されたハイパーバイザと、仮想マシン内で実行されるプロセス評価器と、仮想マシンの外で実行されるメモリ内部監視エンジンと、プロセススコアリングモジュールとを形成させる。プロセス評価器は、仮想マシン内で実行される評価されるプロセスがアクションを行うかどうかを判断し、それに応じて、評価されるプロセスがアクションを行うとき、評価されるプロセスに対して判断された第1のプロセス評価インジケータをプロセススコアリングモジュールに送るように構成される。メモリ内部監視エンジンは、オペレーティングシステム機能へのコールをインターセプトし、仮想マシン内で実行される保護されるプロセスの起動を検出し、オペレーティングシステム機能は、保護されるプロセスを仮想マシン内で実行されるプロセスのリストに追加するように構成され、起動を検出することに応じて、評価されるプロセスが保護されるプロセスのメモリページを変更しようと試みるかどうかを判断し、それに応じて、評価されるプロセスがメモリページを変更しようと試みるとき、評価されるプロセスに対して判断された第2のプロセス評価インジケータをプロセススコアリングモジュールに送るように構成される。プロセススコアリングモジュールは、第1および第2のプロセス評価インジケータを受け取り、それに応じて、第1および第2のプロセス評価インジケータにより、評価されるプロセスが悪意のあるものであるかどうかを判断するように構成される。
[0007]別の態様によれば、方法が、ホストシステムの少なくとも1つのプロセッサを使用して、ホストシステムで実行されるハイパーバイザによって公開された仮想マシン内で実行される評価されるプロセスに対して判断された第1のプロセス評価インジケータを受け取るステップを含む。この方法はさらに、少なくとも1つのプロセッサを使用して、評価されるプロセスに対して判断された第2のプロセス評価インジケータを受け取るステップと、第1および第2のプロセス評価インジケータを受け取ることに応じて、少なくとも1つのプロセッサを使用して、第1および第2のプロセス評価インジケータにより、評価されるプロセスが悪意のあるものであるかどうかを判断するステップとを含む。第1のプロセス評価インジケータを判断するステップが、仮想マシン内で実行されるプロセス評価器を使用して、評価されるプロセスが第1のアクションを行うかどうかを判断するステップを含む。第2のプロセス評価インジケータを判断するステップが、仮想マシンの外で実行するメモリ内部監視エンジンを使用して、評価されるプロセスが第2のアクションを行うかどうかを判断するステップを含む。
[0008]別の態様によれば、方法が、ホストシステムの少なくとも1つのプロセッサを使用して、メモリ内部監視エンジンを実行するステップを含み、メモリ内部監視エンジンは、ホストシステムで実行されるハイパーバイザによって公開される仮想マシンの外で実行され、メモリ内部監視エンジンを実行するステップは、仮想マシン内で実行されるプロセスの起動を検出するステップを含む。この方法はさらに、メモリ内部監視エンジンがプロセスの起動を検出することに応じて、少なくとも1つのプロセッサを使用して、プロセスの第1および第2のプロセス評価インジケータを判断するステップを含む。この方法はさらに、第1および第2の評価インジケータを判断することに応じて、少なくとも1つのプロセッサを使用して、第1および第2のプロセス評価インジケータにより、プロセスが悪意のあるものであるかどうかを判断するステップを含む。
[0009]本発明の前述の態様および利点は、次の詳細な説明を読むと、および図面を参照すると、よりよく理解されるようになるであろう。
[0010]本発明のいくつかの実施形態によりマルウェアから保護されるホストコンピュータシステムの例示的なハードウェア構成を示す図である。 [0011]図1のホストシステムで実行中のハイパーバイザによって公開される仮想マシンの例示的なセット、および本発明のいくつかの実施形態により仮想マシンを保護するためにメモリ内部監視エンジンとともに動作しているセキュリティアプリケーションを示す図である。 [0012]本発明のいくつかの実施形態によりアンチマルウェアオブジェクトのセットを含んだ、様々なプロセッサ特権レベルでホストシステムにおいて実行されるソフトウェアオブジェクトの例示的な階層を示す図である。 [0013]本発明のいくつかの実施形態により、複数のプロセス評価器によってプロセスに対して判断された複数のプロセス評価インジケータを受け取る例示的なプロセススコアリングモジュールを示す図である。 [0014]本発明のいくつかの実施形態により図4のプロセススコアリングモジュールによって行われる例示的な一連のステップを示す図である。 [0015]本発明のいくつかの実施形態により図2のシステム構成におけるメモリアドレスの例示的なマッピングを示す図である。 [0016]Windows(登録商標)環境におけるプロセスのセットの例示的な実行フローを示す図である。実線の矢印は、アンチマルウェアシステムがない場合の例示的な実行フローを示す。破線の矢印は、本発明のいくつかの実施形態により動作している複数のプロセス評価器によって導入される、実行フローの変更を示す。 [0017]本発明のいくつかの実施形態により図2〜図3のメモリ内部監視エンジンによって行われる例示的な一連のステップを示す図である。 [0018]本発明のいくつかの実施形態によりメモリページを保護するためにメモリ内部監視エンジンによって行われる例示的な一連のステップを示す図である。 [0019]コンピュータネットワークを介してセキュリティサーバに接続された複数のホストシステムを含む例示的な構成を示す図である。 [0020]本発明のいくつかの実施形態によりホストシステムとセキュリティサーバとの間の例示的なアンチマルウェアトランザクションを示す図である。
[0021]次の説明では、構造間の列挙するすべての接続は、直接的動作接続または中間構造を介した間接的動作接続であり得ることは理解されよう。要素のセットは、1つまたは複数の要素を含む。要素の任意の列挙は、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。別段の要求がない限り、記載する方法のステップは、必ずしも例示する特定の順序で行われる必要はない。第2の要素から導き出される第1の要素(たとえば、データ)は、第2の要素に等しい第1の要素、ならびに第2の要素およびオプションでは他のデータを処理することによって生成される第1の要素を含む。パラメータにより判断および決定を行うことは、パラメータによりおよびオプションでは他のデータにより判断および決定を行うことを含む。別段の指定がない限り、ある量/データのインジケータは、その量/データ自体、またはその量/データ自体とは異なるインジケータであってもよい。別段の指定がない限り、プロセスは、コンピュータプログラムのインスタンスを表し、コンピュータプログラムは、コンピュータシステムに指定されたタスクを行うように判断させる一連の命令である。別段の指定がない限り、ページは、コンピュータシステムの物理メモリに個々にマップされる仮想化された物理メモリの最小単位を表す。コンピュータ可読媒体は、磁気、光、および半導体記憶媒体(たとえば、ハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに導電性ケーブルおよび光ファイバリンクなどの通信リンクを含む。いくつかの実施形態によれば、本発明は、特に、本明細書に記載する方法を行うようにプログラムされたハードウェア(たとえば、1つまたは複数のプロセッサ)、ならびに本明細書に記載する方法を行うように命令をエンコードするコンピュータ可読媒体を含んだコンピュータシステムを提供する。
[0022]次の説明は、例として、必ずしも限定としてではなく、本発明の諸実施形態を示す。
[0023]図1は、本発明のいくつかの実施形態によりアンチマルウェア動作を行うホストシステム10の例示的なハードウェア構成を示す。ホストシステム10は、特に、エンタープライズサーバなどの企業のコンピューティングデバイス、またはパーソナルコンピュータもしくはスマートフォンなどのエンドユーザデバイスを表すことができる。他のホストシステムには、TVおよびゲーム機などのエンターテイメントデバイス、または仮想化を支援し、マルウェア防御を必要とする、メモリおよびプロセッサを有する他のいかなるデバイスも含まれる。図1は、説明のためにコンピュータシステムを示すが、携帯電話もしくはタブレットなどの他のクライアントデバイスは、異なる構成を有することがある。いくつかの実施形態では、システム10は、プロセッサ12、メモリユニット14、入力デバイス16のセット、出力デバイス18のセット、ストレージデバイス20のセット、およびネットワークアダプタ22のセットなど、物理デバイスのセットを含み、すべてがバス24のセットによって接続されている。
[0024]いくつかの実施形態では、プロセッサ12は、信号および/またはデータのセットを用いて計算および/または論理演算を実行するように構成された物理デバイス(たとえば、マルチコアの集積回路)を含む。いくつかの実施形態では、このような論理演算は、一連のプロセッサ命令(たとえば、マシンコードまたは他のタイプのソフトウェア)の形でプロセッサ12に引き渡される。メモリユニット14は、命令を実行する過程でプロセッサ12によってアクセスされるまたは生成されるデータ/信号を記憶する揮発性コンピュータ可読媒体(たとえば、RAM)を含むことができる。入力デバイス16は、ユーザがデータおよび/または命令をシステム10に導入できるようにするそれぞれのハードウェアインターフェースおよび/またはアダプタなど、特に、コンピュータキーボード、マウス、およびマイクを含むことができる。出力デバイス18は、特にモニタおよびスピーカなどのディスプレイデバイス、ならびにシステム10がデータをユーザに伝えられるようにする、グラフィックカードなどのハードウェアインターフェース/アダプタを含むことができる。いくつかの実施形態では、入力デバイス16および出力デバイス18は、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有することができる。ストレージデバイス20は、ソフトウェア命令および/またはデータの不揮発性の記憶、読み取り、および書き込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス20は、磁気および光ディスク、ならびにフラッシュメモリデバイス、ならびにCDおよび/またはDVDディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ22のセットは、システム10がコンピュータネットワークに、および/または他のデバイス/コンピュータシステムに接続できるようにする。バス24は、複数のシステム、周辺機器、およびチップセットバス、ならびに/またはホストシステム10のデバイス12〜22の相互通信を可能にする他のすべての回路を集合的に表す。たとえば、バス24は、特に、プロセッサ12をメモリ14に接続するノースブリッジ、および/またはプロセッサ12をデバイス16〜22に接続するサウスブリッジを含むことができる。
[0025]図2は、本発明のいくつかの実施形態により、ホストシステム10上で実行され、ハイパーバイザ30によって公開されるゲスト仮想マシン32a〜bの例示的なセットを示す。仮想マシン(VM)は一般的に、当技術分野では、それぞれが他のVMとは独立してその独自のオペレーティングシステムおよびソフトウェアを実行することができる、実際の物理マシン/コンピュータシステムのソフトウェアエミュレーションとして知られている。ハイパーバイザ30は、プロセッサ動作、メモリ、ストレージ、入力/出力、およびネットワーキングデバイスなど、ホストシステム10のハードウェアリソースの複数の仮想マシンによる多重化(共有)を可能にするソフトウェアを含む。いくつかの実施形態では、ハイパーバイザ30は、複数の仮想マシンおよび/またはオペレーティングシステム(OS)が様々な分離の度合で、ホストシステム10で同時に動作できるようにする。このような構成を可能にするために、ハイパーバイザ30の一部を形成するソフトウェアは、複数の仮想化された、すなわちソフトウェアエミュレートされたデバイスを作成することができ、仮想化されたデバイスがそれぞれ、特に、プロセッサ12およびメモリ14などのシステム10の物理ハードウェアデバイスをエミュレートする。ハイパーバイザ30はさらに、ホストシステム10で動作する各VMに仮想デバイスのセットを割り当てることができる。したがって、各VM32a〜bは、あたかもその独自の物理デバイスのセットを所有するかのように、すなわち、ほぼ完全なコンピュータシステムとして動作する。よく知られているハイパーバイザの例には、特に、VMware社が提供するVMware vSphere(商標)、およびオープンソースのXenハイパーバイザが含まれる。
[0026]いくつかの実施形態では、ハイパーバイザ30は、以下にさらに詳細に記載するように、アンチマルウェア動作を行うように構成されたメモリ内部監視エンジン40を含む。エンジン40は、ハイパーバイザ30に組み込まれても良い、またはハイパーバイザ30とは異なり独立しているが、ハイパーバイザ30と実質的に同様のプロセッサ特権レベルで実行されるソフトウェアコンポーネントとして提供されてもよい。単一のエンジン40が、ホストシステム10で実行される複数のVMをマルウェア防御する(malware-protect)ように構成されてもよい。
[0027]図2は、簡単にするためにわずか2つのVM32a〜bを示しているが、ホストシステム10は、多数の、たとえば数百のVMを同時に動作させることがあり、このようなVMの数は、ホストシステム10の動作中に変わることがある。いくつかの実施形態では、各VM32a〜bが、それぞれゲストオペレーティングシステム34a〜bならびに/またはソフトウェアアプリケーション42a〜b、42c、および44のセットを、同時におよびホストシステム10で動作している他のVMとは独立して実行する。各OS34a〜bは、それぞれのVM32a〜bの(仮想化された)ハードウェアへのインターフェースを提供するソフトウェアを含み、それぞれのOSで実行されるソフトウェアアプリケーションのホストとして機能する。オペレーティングシステム34a〜bは、特に、Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、Android(商標)など、広く入手することができる任意のオペレーティングシステムを含むことができる。アプリケーション42a〜cは、特に、文書処理、画像処理、データベース、ブラウザ、および電子通信アプリケーションを含むことができる。次の説明では、仮想マシンの仮想プロセッサで実行されるソフトウェアは、それぞれの仮想マシン内で実行されると言われる。たとえば、図2では、アプリケーション42bは、VM32a内で実行されると言われ、アプリケーション42cは、VM32b内で実行されると言われる。対照的に、メモリ内部監視エンジン40は、VM32a〜bの外で実行されると言われる。
[0028]図2の例では、セキュリティアプリケーション44が、ゲストOS34b上で実行され、アプリケーション44は、以下に詳述するように、メモリ内部監視エンジン40とともにアンチマルウェア(AM)動作を行って、マルウェアから仮想マシン32bを保護するように構成されている。いくつかの実施形態では、アプリケーション44のインスタンスが、ホストシステム10で動作している複数のVMのそれぞれで実行されてもよく、このような各インスタンスが、内部監視エンジン40とインターフェースをとって、それぞれの仮想マシンを保護するように構成される。セキュリティアプリケーション44は、スタンドアロンプログラムであってもよい、または特に、アンチマルウェア、アンチスパム、およびアンチスパイウェアコンポーネントを含むソフトウェアスイートの一部を形成してもよい。
[0029]図3は、本発明のいくつかの実施形態によりホストシステム10で実行されるソフトウェアオブジェクトの階層を示す。図3は、当技術分野ではレイヤまたはプロテクションリングとしても知られる、プロセッサ特権レベルの視点から表されている。いくつかの実施形態では、このような各レイヤまたはプロテクションリングは、それぞれのプロセッサ特権レベルで実行されるソフトウェアオブジェクトが実行することを許可される命令のセットを特徴とする。ソフトウェアオブジェクトが、それぞれの特権レベル内で許可されていない命令を実行しようと試みるとき、この試みは、例外、フォルト、または仮想マシン終了(exit)イベントなどのプロセッサイベントをトリガすることができる。いくつかの実施形態では、特権レベル間の切替えは、専用の命令のセットにより行われてもよい。このような例示的な命令には、ユーザレベルからカーネルレベルへ切り替えるSYSCALL/SYSENTER、カーネルレベルからユーザレベルへ切り替えるSYSRET/SYSEXIT、ユーザまたはカーネルレベルのいずれかからルートレベルへ切り替えるVMCALL、ならびにルートレベルからカーネルレベルまたはユーザレベルのいずれかへ切り替えるVMRESUMEが含まれる。
[0030]いくつかの実施形態では、ハイパーバイザ30は、最大特権レベル(たとえば、仮想化を支援し、リング1またはルートモードとしても知られているIntel(登録商標)プラットフォームのVMXroot)でプロセッサ12の制御を行い、したがってホストシステム10で実行される他のソフトウェアに仮想マシン32として提示されるハードウェア仮想化プラットフォームを作成する。図2のOS34a〜bなどのオペレーティングシステム34が、VM32の仮想環境内で実行され、OS34は、ハイパーバイザ30よりも小さいプロセッサ特権(たとえば、Intelプラットフォームのリング0、またはカーネルモード)を有する。アプリケーション42d〜eのセットが、OS34よりも小さいプロセッサ特権(たとえば、リング3、またはユーザモード)で実行される。
[0031]いくつかの実施形態では、セキュリティアプリケーション44の一部が、ユーザレベルのプロセッサ特権、すなわちアプリケーション42d〜eと同じレベルで実行されることがある。たとえば、このような一部は、それぞれのVM上で検出されたいかなるマルウェアまたはセキュリティ脅威もユーザに知らせ、たとえばアプリケーション44のための望ましい設定オプションを示すユーザからの入力を受け取る、グラフィカルユーザインターフェースを含むことがある。ユーザレベルで実行される構成要素の別の例は、以下に詳述する、ユーザレベルのプロセス評価器である。アプリケーション44の他の部分は、カーネル特権レベルで実行されることがある。たとえば、アプリケーション44は、アンチマルウェアドライバ36およびプロセススコアリングモジュール38をインストールし、両方がカーネルモードで動作することがある。例示的なAMドライバ36が、たとえば、マルウェア署名用のメモリをスキャンするための、ならびに/またはOS34で実行されるプロセスおよび/もしくは他のソフトウェアオブジェクトのマルウェアを示唆する挙動を検出するための機能を、アンチマルウェアアプリケーション44に提供する。
[0032]いくつかの実施形態では、プロセススコアリングモジュール38は、複数のソフトウェアコンポーネントから、評価されるプロセスに対して判断されたプロセス評価データを受け取り、それぞれのデータにより評価されるプロセスが悪意のあるものであるかどうかを判断するように構成される。プロセスは、アプリケーションまたはオペレーティングシステムの一部などのコンピュータプログラムのインスタンスであり、少なくとも実行スレッドおよびオペレーティングシステムによって実行スレッドに割り当てられた仮想メモリのセクションを有し、それぞれのセクションが実行可能コードを含むことを特徴とする。いくつかの実施形態では、オペレーティングシステムは、ホストシステム10上で(または、仮想化の場合は仮想マシン32内で)現在実行中のプロセスを管理し、このような管理は、特に、各プロセスに仮想メモリを割り当てること、および各プロセスまたはそのスレッドを実行のためにスケジュールすることを含む。
[0033]図4は、複数のプロセス評価インジケータ52a〜dを受け取り、各インジケータ52a〜dがプロセス評価コンポーネントによって判断される、例示的なプロセススコアリングモジュール38を示す。図4では、このような評価コンポーネントが、特に、ユーザレベルのプロセス評価器50a、カーネルレベルのプロセス評価器50b、およびシステムコール評価器50cを含む。評価器50a〜cは、アンチマルウェアドライバ36によってセットアップされる、またはアンチマルウェアドライバ36の一部を形成することがある。このような各評価器は、他の評価器とは独立して実行されることがあり、それぞれが、評価されるプロセスの複数の異なるプロセス評価インジケータを判断することができる。評価器50a〜cの動作について、以下にさらに詳述する。いくつかの実施形態では、図4中のインジケータ52a〜cなどのいくつかのプロセス評価インジケータが、VM32内で実行されるコンポーネントによって判断され、52dなどの他のプロセス評価インジケータが、VM32の外で実行されるコンポーネントによって(たとえば、メモリ内部監視エンジン40によって)判断される。
[0034]いくつかの評価インジケータは、マルウェアを示唆するものであってもよい、すなわち、評価されるプロセスが悪意のあるものであることを示してもよい。いくつかの評価インジケータは、それ自体はマルウェアを示唆するものではないことがあるが、他の評価インジケータと組み合わされるとき、悪意のあるものであることを示すことがある。各評価インジケータ52a〜dは、異なる方法または基準により判断されてもよい。評価されるプロセスに対して判断された例示的なプロセス評価インジケータが、たとえば、評価されるプロセスが、VM32のシステムレジスタキーを編集すること、または保護されるソフトウェアオブジェクトに属するメモリページへ書き込むことなど、あるアクションを行ったかまたは行おうと試みたかを示す、挙動インジケータを含むことがある。別の例示的なプロセス評価インジケータは、評価されるプロセスに属するメモリのセクションが、マルウェアを示唆する署名を含んでいるかどうかを示すことがある。いくつかの実施形態では、各プロセス評価インジケータ52a〜dが、プロセスID、ラベル、またはハッシュインデックスなどのプロセス識別インジケータを含み、モジュール38がそのそれぞれのインジケータが判断されたプロセスを識別できるようにする。
[0035]いくつかの実施形態では、プロセス評価インジケータが、それぞれのプロセス評価器によって判断された数値スコアを含むことがあり、スコアは、それぞれのプロセスの悪意の程度を示している。あるいは、このようなスコアは、プロセス評価インジケータ52a〜dにより、モジュール38によって判断されてもよい。悪意スコアは、2値(1/0、はい/いいえ)であってもよい、または値の連続した範囲にわたって変化してもよい。値の範囲内で変化することがある例示的な悪意スコアは、評価されたプロセスが悪意のある可能性(たとえば、確率)を示す数字を含み、たとえばそのようなスコアは、0と1の間で、または0%と100%の間で変化することがある。スコア値は、挙動固有であってもよい。たとえば、評価されるプロセスは、ディスクファイルを作成するとき、0.2という悪意スコア、およびWindowsレジストリ値を変更するとき、0.7という悪意スコアを受け取ることがある。
[0036]図5は、本発明のいくつかの実施形態によりプロセススコアリングモジュール38によって実行される例示的な一連のステップを示す。ステップ302において、モジュール38が、VM32内(たとえば、図4の評価器50a〜c参照)、またはVM32の外(たとえば、メモリ内部監視エンジン40)のいずれかで動作することができるプロセス評価器から、図4のインジケータ52a〜dなどのプロセス評価インジケータを受け取る。ステップ304において、モジュール38は、それぞれのプロセス評価インジケータが判断されたプロセスを識別することができる。いくつかの実施形態では、プロセススコアリングモジュール38は、様々なプロセス評価器から受け取られるすべてのプロセス評価インジケータのプロセスごとの記録をつけることができ、ステップ304は、ステップ302で受け取られたインジケータをそれぞれのプロセスの記録に追加することをさらに含むことができる。
[0037]評価されるプロセスが悪意のあるものであるかどうかを判断するために、ステップ306において、プロセススコアリングモジュール38が、それぞれのプロセスに対して判断された、および様々なプロセス評価器から受け取られた個々のスコアを結合することによって、総スコアを判断することができる。例示的な総スコアは、個々のスコアの加重和および加重平均を含む。いくつかの実施形態では、総スコアは、評価されるプロセスに対して判断されたプロセス評価インジケータ/スコアを、他のプロセスまたはソフトウェアオブジェクトに対して判断されたプロセス評価インジケータ/スコアと結合することができる。たとえば、評価されるプロセスに対して判断されたスコアは、評価されるプロセスの子プロセスに対して判断されたスコアと、および/または評価されるプロセスの親プロセスに対して判断されたスコアと、結合され得る。
[0038]ステップ308において、モジュール38は、総スコアを所定の閾値と比較することができる。総スコアが閾値を超えないとき、モジュール38は上述のステップ302に戻ることができる。いくつかの実施形態では、閾値は、(たとえば、セキュリティアプリケーション44によって公開されるユーザインタフェースにより)それぞれのVMのユーザから受け取られる入力により決定される値に設定され得る。閾値は、それぞれのユーザのセキュリティの基本設定(security preference)を反映することができる。たとえば、ユーザが厳重なセキュリティを選ぶとき、閾値は比較的低い値に設定されてもよく、ユーザがより寛容なセキュリティ設定を好むとき、閾値は比較的高い値に設定されてもよい。いくつかの実施形態では、閾値は、図10〜図11に関して以下に記載するように、リモートセキュリティサーバから受け取られることがある。
[0039]いくつかの実施形態では、ステップ306〜308において、プロセススコアリングモジュール38は、複数の総スコアを判断し、各総スコアを(場合により異なる)閾値と比較することができる。このような各総スコアは、プロセス評価インジケータの異なるサブセットにより判断され得る。例示的な実施形態では、プロセス評価インジケータのこのような各セットが、マルウェアの特定のクラスまたはタイプ(たとえば、Trojan、ルートキットなど)を表し、モジュール38が検出されたマルウェアの分類を行うことができるようにする。
[0040]ステップ310において、総スコアが閾値を超えるとき、モジュール38は、評価されるプロセスが悪意のあるものであると判定し、アンチマルウェアアクションをとることがある。いくつかの実施形態では、このようなアンチマルウェアアクションは、特に、評価されたプロセスを終了すること、評価されたプロセスを隔離すること、および評価されたプロセスのリソース(ファイルもしくはメモリのセクションなど)を除去することもしくは無効にすることを含むことができる。いくつかの実施形態では、アンチマルウェアアクションは、ホストシステム10のユーザに警告すること、および/または、たとえば(1つもしくは複数の)ネットワークアダプタ22を介してホストシステム10に接続されたコンピュータネットワークを通じてシステム管理者にメッセージを送信することによって、システム管理者に警告することをさらに含むことができる。いくつかの実施形態では、アンチマルウェアアクションは、図10〜図11に関して以下に記載するように、リモートセキュリティサーバにセキュリティレポートを送信することも含むことがある。
[0041]図3〜図4に示す例示的なプロセススコアリングモジュール38は、OSプロセッサ特権レベル(たとえば、カーネルモード)においてVM32内で動作する。代替的実施形態では、プロセススコアリングモジュール38は、ユーザモードにおいてVM32内で、またはハイパーバイザ30のプロセッサ特権レベルでVM32の外でも、実行されることがある。
[0042]いくつかの実施形態では、内部監視エンジン40が、実質的にハイパーバイザ30と同じ特権レベルにおいて実行され、VM32などの仮想マシンの内部監視を行うように構成される。VMの、またはそれぞれのVMで実行されるソフトウェアオブジェクトの内部監視は、特に、ソフトウェアオブジェクトの挙動を分析すること、このようなソフトウェアオブジェクトのメモリアドレスを判断するおよび/またはこれにアクセスすること、このようなアドレスに位置しているメモリの内容へのあるプロセスのアクセスを制限すること、このような内容を分析すること、ならびにそれぞれのソフトウェアオブジェクトのプロセス評価インジケータ(たとえば、図4のインジケータ52d)を判断することを含むことができる。いくつかの実施形態では、内部監視エンジン40によって標的とされるソフトウェアオブジェクトは、特に、プロセス、命令ストリーム、レジスタ、ならびにそれぞれのVMのページテーブルおよびドライバオブジェクトなどのデータ構造を含む。
[0043]それぞれのVMの外からVM32の内部監視を行うために、エンジン40のいくつかの実施形態は、プロセッサ12のメモリマッピング構造および機構を使用する。仮想マシンは、一般的に、仮想化された物理メモリ、すなわちホストシステム10の実際の物理メモリ14の仮想表現で動作する。仮想化された物理メモリは、物理メモリ14および/または物理記憶装置20内のアドレスにマップされたそれぞれの空間の部分とともに、ホストシステム10で実行される各ゲストVMに固有の、仮想化されたアドレスの連続した空間を含む。仮想化を支援するように構成されたシステムでは、このようなマッピングは、一般的に、拡張ページテーブル(EPT:extended page table)または入れ子ページテーブル(NPT:nested page table)などの、プロセッサ12によって制御される専用データ構造によって実現される。このようなシステムでは、仮想化された物理メモリが、ページとして当業者に知られる単位で分割され得る。ページが、EPTおよび/またはNPTなどの機構により物理メモリに個々にマップされた仮想化された物理メモリの最小単位を表し、すなわち、物理メモリと仮想化された物理メモリの間のマッピングは、ページ粒度で行われる。すべてのページは、一般的に、所定のサイズ、たとえば4キロバイト、2メガバイトなどを有する。仮想化された物理メモリをページに分割することは、通常、ハイパーバイザ30によって設定される(configured)。いくつかの実施形態では、ハイパーバイザ30は、EPT/NPT、したがって物理メモリと仮想化された物理メモリとの間のマッピングもまた設定する。仮想化された物理メモリの物理メモリアドレスへの実際の変換は、ホストシステム10のトランスレーションルックアサイドバッファ(TLB:translation lookaside buffer)で物理メモリアドレスを調べることを含むことができる。いくつかの実施形態では、アドレス変換は、ページウォークを行うことを含み、ページウォークは、ページテーブルのセットにおける連続したアドレスルックアップのセットを含み、それぞれのページに関連したアドレスにページのオフセットを加算するなどの計算を行う。
[0044]いくつかのハードウェア構成により、ハイパーバイザ30が、各ページ内に格納されたデータへのアクセスを、たとえばそれぞれのページへの読み出しおよび書き込みアクセス権を設定することによって、選択的に制御することができる。このような権利は、たとえば、EPTまたはNPT内のそれぞれのページのエントリを変更することによって設定されてもよい。ハイパーバイザ30はしたがって、どのソフトウェアオブジェクトが各ページ内のアドレスに格納されたデータにアクセスすることができるかを選択することができ、たとえば読み出し、書き込みなど、それぞれのデータでどの動作が許可されるかを示すことができる。VM内で実行されるソフトウェアオブジェクトによる、たとえばオブジェクトが読み出しの権利を有していないページからデータを読み出す、または書き込みの権利を有していないページにデータを書き込むなどの動作を行おうとする試みが、仮想マシン終了イベント(たとえば、IntelプラットフォームのVMExitイベント)をトリガすることができる。いくつかの実施形態では、仮想マシン終了イベントが、プロセッサの制御を、それぞれのソフトウェアオブジェクトを実行しているVMからハイパーバイザ30へまたはメモリ内部監視エンジン40へ移し、したがってハイパーバイザ30および/またはエンジン40が許可されていない読み出し/書き込みの試みをインターセプトし、分析することを可能にする。
[0045]いくつかの実施形態では、OS34が、仮想メモリ空間(論理アドレス空間とも呼ばれる)を構成し、図3のアプリケーション42d〜eおよび44などのアプリケーションに仮想メモリ空間を公開する。このようなシステムでは、OS34が、たとえばページテーブル機構を使用して、仮想メモリ空間とVM32の仮想化された物理メモリとの間のマッピングを構成し、維持する。いくつかの実施形態では、仮想メモリ空間はまた、ページに分割され、このようなページは、OS34によって仮想化された物理メモリに個々にマップされた仮想メモリの最小単位を表す(仮想から仮想化された物理メモリへのマッピングは、ページ粒度で行われる)。
[0046]図6は、図2に示す実施形態におけるメモリアドレスの例示的なマッピング(変換)を示す。VM32a内で実行されるアプリケーションまたはプロセスなどのソフトウェアオブジェクトが、ゲストOS34aによって仮想アドレス空間214aを割り当てられる。それぞれのソフトウェアオブジェクトが、空間214aの例示的なメモリアドレス60aにアクセスしようと試みるとき、アドレス60aは、ゲストOS34aによって構成および制御されるページテーブルにより、ゲストVM32aの仮想化されたプロセッサによって、仮想マシン32aの仮想化された物理メモリ空間114a内のアドレス60bに変換される。アドレス60bは、当技術分野でゲスト物理アドレスとして知られている。ハイパーバイザ30は、仮想化された物理メモリ114aを構成および制御し、たとえば上述のようにEPTまたはNPT手段を使用して、アドレス60bをホストシステム10の物理メモリ14内のアドレス60cにマップする。
[0047]同様に、仮想メモリ空間214bが、ゲストVM32bで実行されるアプリケーション(たとえば、42c)または他のソフトウェアオブジェクトに対してゲストOS34bによってセットアップされる。空間214b内の例示的な仮想アドレス60dは、ゲストOS34bによって構成され、制御されるページテーブルにより、ゲストVM32bの仮想化されたプロセッサによって、ゲストVM32bの仮想化された物理メモリ空間114b内のアドレス60eに変換される。アドレス60eは、ハイパーバイザ30によって物理メモリ14内のアドレス60fにさらにマップされる。
[0048]いくつかの実施形態では、ハイパーバイザ30は、物理メモリ14の表現を含んだその独自の仮想メモリ空間214cをセットアップし、変換機構(たとえば、ページテーブル)を使用して、空間214c内のアドレスを物理メモリ14内のアドレスにマップする。図6では、このような例示的なマッピングが、アドレス60gをアドレス60hに変換する。同様に、物理メモリ14内の60cおよび60fなどのアドレスが、ハイパーバイザ30の仮想メモリ空間214c内のアドレス60kおよび60mにそれぞれ対応する。このような変換により、ハイパーバイザ30は、ホストシステム10で動作している様々なVM内で実行されるソフトウェアオブジェクトに属するメモリページを管理する(たとえば、読み出す、書き込む、およびアクセスを制御する)ことができる。
[0049]図7は、本発明のいくつかの実施形態によりVM32で実行されるプロセス70a〜bのセットの例示的な実行フローを示す。図7の例は、Windows(登録商標)OSのバージョンを実行しているシステムにおける実行フローを示し、たとえばLinuxなどの他のオペレーティングシステムに対して、同様の図が描かれ得る。実線の矢印は、セキュリティアプリケーション44などのアンチマルウェアシステムがない場合の実行フローを表す。破線矢印は、本発明のいくつかの実施形態により実行されるプロセス評価器があることによるフローへの変更を表す。
[0050]プロセス70aは、複数のダイナミックリンクライブラリ(DLL:dynamic-linked library)72a〜cを含み、図7の例では、DLL72cが、(悪意のある可能性のある)プロセス70bによってプロセス70aに注入される。コードインジェクション(code injection)は、DLLなどの一連のコードを、既存のプロセスのメモリ空間に導入して、それぞれのプロセスの元の機能を変える一群の方法を示すために当技術分野で使用される一般的な用語である。プロセス70aが、たとえばディスクファイルに何かを書き込むために、またはレジストリキーを編集するために、あるシステム機能を呼び出す命令を実行するとき、それぞれの命令は、KERNEL32.DLLまたはNTDLL.DLLなどのユーザモードのAPIを呼び出す。図7の例では、それぞれのユーザモードのAPIコールは、ユーザレベルの挙動フィルタ50aによってインターセプトされ、分析される。このようなインターセプションは、特に、DLLインジェクションまたはフッキングなどの方法によって実現され得る。フッキングは、ソフトウェアコンポーネント間で渡される関数コール、またはメッセージ、またはイベントをインターセプトする方法に対して当技術分野で使用される一般的な用語である。1つの例示的なフッキング方法は、実行を第2の関数へリダイレクトする命令を挿入することによって、ターゲット関数のエントリポイントを変えることを含む。このようなフッキングに続いて、第2の関数は、ターゲット関数の代わりに、またはその前に実行され得る。図7の例では、アンチマルウェアドライバ36が、KERNEL32.DLLまたはNTDLL.DLLのある関数にフックして、実行をフィルタ50aにリダイレクトするようにそれぞれの関数に命令する。したがって、フィルタ50aは、プロセス70aが、リダイレクションを行う関数により識別される、ある挙動を行おうとしていることを検出することができる。フィルタ50aがこのような挙動を検出するとき、フィルタ50は、プロセス評価インジケータ52a(図4)を構築し(formulate)、インジケータ52aをプロセススコアリングモジュール38に送ることができる。
[0051]実行の一般的なフローでは、ユーザモードのAPI関数は、オペレーティングシステムのカーネルからサービスを要求することができる。いくつかの実施形態では、このような動作は、x86プラットフォームのSYSCALLおよびSYSENTERなどのシステムコールを発行することによって行われる。図7の例では、このようなシステムコールは、システムコール評価器50cによってインターセプトされる。いくつかの実施形態では、このようなインターセプションは、たとえば、プロセッサ12のモデル固有レジスタ(MSR)に格納されている値を変えることによってシステムコールハンドラルーチンを変更することを含み、これは実行をフィルタ50cに効率的にリダイレクトする。このような技法は、当技術分野ではMSRフッキングとして知られており、評価されるプロセスがあるシステムコールを行おうと試みていることをシステムコール評価器50cが検出できるようにすることができる。このようなシステムコールがインターセプトされるとき、システムコールフィルタ50cが、プロセス評価インジケータ52cを構築し、インジケータ52cをプロセススコアリングモジュール38に送ることができる。
[0052]システムコールに続いて、プロセッサの制御は、一般的にOS34のカーネルに引き継がれる。いくつかの実施形態では、カーネルレベルのプロセス評価器50bが、OSカーネルのある動作をインターセプトし、したがって、評価されるプロセスが悪意のある可能性のあるある動作を行おうと試みていると判断するように構成される。このような動作をインターセプトするために、いくつかの実施形態は、OS34に組み込まれ、OS34によって公開されるフィルタリング機構のセットを使用することができる。たとえば、Windows OSでは、ファイルを作成する、ファイルを開く、ファイルに書き込む、およびファイルを削除するなどの動作をインターセプトするために、FltRegisterFilterが使用され得る。別の例では、評価器50bが、作成または複写オブジェクトハンドル(object-handle)動作をインターセプトするためにObRegisterCallbackを、または新しいプロセスの作成をインターセプトするためにPsSetCreateProcessNotifyRoutineを使用することがある。さらに別の例では、レジストリキー/値を作成し、設定することなどのWindowsレジストリ動作は、CmRegisterCallbackExを使用してインターセプトされ得る。Linux(登録商標)などの他のオペレーティングシステムに対して、同様のフィルタリング機構が、当技術分野で知られている。カーネルモードのプロセス評価器50bがこのような動作をインターセプトするとき、評価器50bは、プロセス評価インジケータ52bを構築し、インジケータ52bをプロセススコアリングモジュール38に送ることができる。
[0053]プロセス評価インジケータ52a〜cなどのデータを評価器50a〜cからスコアリングモジュール38に送るために、当業者は任意のプロセス間通信方法を使用することができる。たとえば、ユーザモードおよびカーネルモードのコンポーネント間で通信するために、評価器50a〜cおよびモジュール38は、メモリの共有セクションを使用するように構成され得る。
[0054]図8は、本発明のいくつかの実施形態によりメモリ内部監視エンジン40によって行われる例示的な一連のステップを示す。ステップ312において、エンジン40は、マルウェアからの保護を要求するプロセス(以下保護されるプロセスと呼ぶ)がVM32内で起動していることを検出することができる。いくつかの実施形態では、このような保護されるプロセスは、特に、セキュリティアプリケーション44に属するプロセスを含む。
[0055]保護されるプロセスの起動を検出するために、エンジン40は、OS34にネイティブのデータ構造および/または機構を使用することができる。たとえば、Windows(登録商標)OSのいくつかのバージョンは、カーネルによって保持される、アクティブプロセスのリストを使用してプロセスを管理する。プロセスが作成されるたびに、それぞれのプロセスのインジケータが、アクティブプロセスのリストに挿入され、それぞれのプロセスが終了すると、インジケータはリストから削除される。いくつかの実施形態では、OS34のカーネルは、各プロセスをデータ構造として、たとえば、Windowsではエグゼクティブプロセスブロック(EPROCESS)として表し、これは特に、それぞれのプロセスのスレッドのそれぞれへのハンドル、およびOS34が複数の実行中のプロセスからそれぞれのプロセスを識別できるようにする一意のプロセスIDを含む。
[0056]保護されるプロセスの作成を検出する(図8のステップ312)ために、いくつかの実施形態は、当技術分野で知られている任意のフッキング方法を使用して、アクティブプロセスのリストを操作するカーネル関数にフックする。Windows OSのこのような関数の例は、PspInsertProcessであり、これは、それぞれのプロセスが起動されて実行されるとき、アクティブプロセスのリストにプロセスを追加する。AMドライバ36のいくつかの実施形態は、VMCALL命令またはJMP命令など、それぞれのカーネル関数にリダイレクションパッチを適用することができる。他の実施形態は、新しいアドレスをポイントするように、それぞれのカーネル関数のEPTエントリを変更することができる。このようなパッチおよび/またはEPTフックの結果、ネイティブのOS関数の実行を、メモリ内部監視エンジン40によって提供されるコードの断片にリダイレクトすることになる。フッキングに続いて、OS34がプロセスを起動して実行しようとするとき、コードの断片は、それぞれのカーネル関数のコードの前に、またはその代わりに実行されることになり、したがってそれぞれのプロセスが実行されていることをメモリ内部監視エンジン40に知らせる。いくつかの実施形態では、エンジン40は、それぞれのプロセスが起動されるとき、カーネル関数に渡されるパラメータ(たとえば、一意のプロセスIDを含んだEPROCESS構造)により、それぞれのプロセスを識別することができる。代替的実施形態は、メモリフック(EPTフックなど)を使用して、アクティブプロセスのリストを格納しているメモリのセクションのアドレスにアクセスし、それぞれのメモリセクションの内容により、現在実行中の各プロセスを記述しているEPROCESS構造のアドレスをさらに判断することができる。
[0057]ステップ314において、メモリ内部監視エンジン40は、保護されるプロセスが実行されていることをAMドライバ36に知らせることができる。たとえば、エンジン40は、保護されるプロセスのプロセスIDなどのインジケータをAMドライバ36に送信することができる。次に、ステップ316においてエンジン40は、ドライバ36から、保護されるプロセスのコードおよび/またはデータを格納しているメモリページのインジケータ(たとえば、仮想メモリ内のページのアドレス)を受け取ることができる。いくつかの実施形態では、エンジン40は、セマンティックギャップを埋めるために、ステップ314〜316を使用する。セマンティックギャップは、エンジン40がVM32の外で実行され、保護されるプロセスがVM32内で実行されるために発生する。AMドライバ36はVM32内で、カーネルモードで実行することによって、保護されるプロセスによって使用されるメモリアドレス、たとえば、保護されるプロセスのコードおよび/またはデータを格納しているそれぞれのVMの仮想化された物理メモリ内のページのアドレス(図6の空間114a〜b参照)などの情報に直接アクセスすることができる。ハイパーバイザ30は、それぞれのVM内で実行されるアクティブプロセスのリストにアクセスすることはないが、それぞれのプロセスによってロードされるすべてのモジュール(DLLなど)を判断するためにリストをパースし、さらにハイパーバイザ30のレベルからこのようなデータ/コードを格納しているメモリページのすべてのアドレスを判断すると、かなりの計算を要する可能性がある。いくつかの実施形態では、一連のステップ314〜316の別の理由は、ユーザモードのプロセスに属するデータが、物理メモリ14と他のコンピュータ可読媒体、たとえばストレージデバイス20との間でOS34によってスワップされ得ることである。それぞれのVMの外で実行されるので、メモリ内部監視エンジン40は、データが物理メモリにスワップインおよび物理メモリからスワップアウトされるときそれを検出することができるが、データが物理メモリにない間は、そのようなデータにアクセスするおよび/またはそのようなデータを保護することはできない可能性がある。対照的に、VM32内で実行されるAMドライバ36は、OS34にそれぞれのページをロードさせることによって、物理メモリからスワップアウトされるページに容易にアクセスすることができる。AMドライバ36は、したがって保護されるプロセスによって使用される/ロードされるすべてのモジュールを効率的にリスト表示し、VM32の仮想化された物理メモリ内のそのようなモジュールのサイズおよび場所を判断することができる。
[0058]代替的実施形態では、保護されるプロセスの起動をアクティブに検出する(上記ステップ312)代わりに、メモリ内部監視エンジン40が、AMドライバ36から保護されるプロセスのインジケータを受け取ることができる。AMドライバ36は、VM32内から保護されるプロセスの起動を実際に検出することができる。このような実施形態では、上述のステップ314は、もはや必要ではない。さらに別の実施形態では、ステップ316において、エンジン40が、上述のようにAMドライバ36に依存する代わりに、保護されるプロセスのメモリページのアドレスを判断するために、必要な計算を実際に行うことができる。
[0059]ステップ318において、メモリ内部監視エンジンが、たとえば悪意のあるソフトウェアがVM32を危険にさらそうとすることによる望ましくない変更からターゲットページを保護する。いくつかのこのようなメモリ保護機構が、当技術分野で知られている。保護は、EPTまたはNPTなどのデータ構造を使用して、メモリ内部監視エンジン40上でリクエストによりハイパーバイザ30によって実施され得る。たとえば、ハイパーバイザ30は、それぞれのページのEPT/NPTアクセス権ビット(access right bit)を変更することによって、ターゲットメモリページを読み出し専用として設定することができる。いくつかの実施形態では、ハイパーバイザ30は、ターゲットオブジェクトに割り当てられたメモリページに書き込もうとするいかなる試みもインターセプトし、分析のためにそれぞれの試みをメモリ内部監視エンジン40にリダイレクトすることができる。ステップ318におけるエンジン40の動作については、図9に関して以下にさらに詳述する。
[0060]ターゲットページに書き込み保護を適用するために、ステップ318は、保護されるプロセスのためにOS34によってセットアップされた仮想メモリ空間からホストシステム10の物理メモリ14へ、またはそれぞれのVMの仮想化された物理メモリ空間から物理メモリ14へ、図6に示されるようなメモリアドレスの変換を行うことを含むことができる。それぞれの変換によりメモリ内部監視エンジン40は、AMドライバ36からステップ316において受け取られたインジケータにより、実際の物理メモリ14内のターゲットページのアドレスを判断できるようになる。このような変換は、図6に関して述べたように、EPT/NPT機構を使用することができる。
[0061]ステップ320において、エンジン40が、保護されたプロセスの終了を検出することができる。いくつかの実施形態では、ステップ320は、上述のステップ312と同様の方法で進行することができる。たとえば、ステップ320は、VM32のアクティブプロセスのリストからプロセスを削除するように構成されたカーネル関数から信号を受け取ることを含むことができ、それぞれの関数は、フッキング(たとえば、VMCALL命令などのパッチをそれぞれの関数に適用し、パッチが実行をエンジン40にリダイレクトすること)によってAMドライバ36によって変更される。このように変更され得る例示的なWindows関数は、PspDeleteProcessである。エンジン40が保護されるプロセスの終了を検出するとき、ステップ322が、たとえばターゲットページの書き込み許可を変えるようハイパーバイザ30に命令することによって、それぞれのターゲットページから保護を解除する。
[0062]図9は、ターゲットページを保護するためにメモリ内部監視エンジン40によって行われる一連のステップを示す(図8のステップ318)。ステップ332において、エンジン40が、ターゲットページに書き込もうとする試みをインターセプトすることができ、このような試みは、悪意のある意図を示している可能性があり、上述のように、ハイパーバイザ30によってインターセプトされ得る。ステップ334において、エンジン40は、試みを実行しているプロセスを識別することができ、それぞれのプロセスは、問題のあるプロセス(offending process)と呼ばれることになる。いくつかの実施形態では、ステップ334を実行するために、エンジン40は、x86システムでEIPおよび/またはRIPレジスタなどの命令ポインタレジスタの内容を使用して、試みを行っているプロセッサ命令(またはそのアドレス)を識別し、CR3レジスタの内容を使用して、それぞれの命令が属するプロセスを識別することができる。あるいは、エンジン40は、x86プロセッサでFSおよびGSレジスタなどのセグメントレジスタの内容を使用して、あるカーネルデータ構造により問題のあるプロセスを識別することができる。カーネルデータ構造は、OS34がプロセス間で実行を切り替えるたびに変更される。
[0063]ステップ336において、エンジン40は、問題のあるプロセスのプロセス評価インジケータ52d(たとえば図4参照)を構築し、インジケータ52dをプロセススコアリングモジュール38に送ることができる。例示的なインジケータ52dは、ステップ334で識別される問題のあるプロセスのインジケータ(たとえば、プロセスID)、および問題のあるプロセスによって試みられ、ステップ332でインターセプトされるアクションのタイプ(たとえば、保護されるメモリページへ書き込もうとする試み)のインジケータを含むことができる。
[0064]上述の方法およびシステムのいくつかは、VM32内で実行されるコンポーネントとそれぞれのVMの外で実行されるコンポーネントとの間で、データ交換および/またはメッセージングなどの通信を必要とする。このような通信は、仮想化の技術分野で知られている任意の方法を使用して実行され得る。たとえば、AMドライバ36などのカーネルモードで実行されているコンポーネントから、メモリ内部監視エンジン40へデータを送るには(たとえば、図8のステップ316参照)、いくつかの実施形態は、特権命令を使用して、プロセッサ12の制御をVM32からハイパーバイザ30に移す。このような特権命令の例が、IntelプラットフォームでのVMCALLであり、これは、データがVM32内から送られていることをエンジン40に信号で伝えるために使用され得る。送られている実際のデータは、ドライバ36とエンジン40との間で共有されているメモリの所定のセクションに置かれ得る。メモリ内部監視エンジン40からAMドライバ36にデータを送るために(たとえば、図8のステップ314、および図9のステップ336参照)、いくつかの実施形態は、割り込みインジェクション機構(interrupt injection mechanism)を使用して、データがそれぞれのVMの外から送られていることをドライバ36に信号で伝える。実際のデータは、たとえば上述の共有メモリセクションを介して伝えられ得る。
[0065]いくつかの実施形態では、ホストシステム10は、マルウェア検出イベントについての詳細などのセキュリティ情報を、リモートセキュリティサーバと交換するように構成され得る。図10は、このような例示的な構成を示し、複数のホストシステム10a〜cが、コンピュータネットワーク26を介してセキュリティサーバ110に接続されている。例示的な実施形態では、ホストシステム10a〜cは、会社の従業員によって使用される個々のコンピュータであり、セキュリティサーバ110は、システム10a〜cで発生するマルウェア脅威またはセキュリティイベントを監視するためにそれぞれの会社のネットワーク管理者によって構成されたコンピュータシステムを含むことができる。別の実施形態では、たとえば各ホストシステム10a〜cが数十または数百の仮想マシンをホストするサーバである、サービスとしてのインフラストラクチャ(IAAS)システムでは、セキュリティサーバ110は、中心の位置からこのようなすべてのVMのためにアンチマルウェア動作を管理するように構成されたコンピュータシステムを含むことができる。さらに別の実施形態では、セキュリティサーバ110は、アンチマルウェアソフトウェアのプロバイダ(たとえば、特にセキュリティアプリケーション44のプロバイダ)によって、ネットワーク26中の様々なシステムで検出されたマルウェアについての統計および/または挙動データを受け取るように構成されたコンピュータシステムを含むことができる。ネットワーク26は、インターネットなどのワイドエリアネットワークを含めることができ、ネットワーク26の一部は、ローカルエリアネットワーク(LAN)を含めることができる。
[0066]図11は、図10に示す実施形態におけるホストシステム10とセキュリティサーバ110との間の例示的なデータ交換を示す。ホストシステム10は、セキュリティレポート80をサーバ110に送信し、サーバ110からセキュリティ設定82のセットを受け取るように構成され得る。いくつかの実施形態では、セキュリティレポート80は、特に、ホストシステム10で実行されているプロセス評価器によって判断されたプロセス評価インジケータおよび/もしくはスコア、ならびに/またはプロセススコアリングモジュール38によって判断された総スコアを含む。セキュリティレポート80はまた、それぞれの仮想マシンおよび評価されるプロセスを識別するデータ(たとえば、プロセスID、名前、パス、ハッシュ、バージョン情報、またはアプリケーションおよび/もしくはプロセスの他の種類の識別子)、ならびにプロセス評価インジケータ/スコアを、それが判断されたVMおよびプロセスに関連付けるインジケータを含むことができる。いくつかの実施形態では、レポート80は、ホストシステム10で実行されるプロセスおよび/またはアプリケーションに関する統計および/または挙動データをさらに含むことができる。システム10は、マルウェアを検出すると、および/またはスケジュールにより(たとえば、2、3分ごとに、毎時になど)、レポート80を送信するように構成され得る。
[0067]いくつかの実施形態では、セキュリティ設定82は、プロセス評価器の動作パラメータ(たとえば、図4のフィルタ50a〜cのパラメータ)および/またはプロセススコアリングモジュール38のパラメータを含むことができる。モジュール38の動作パラメータの例は、評価されるプロセスが悪意のあるものであるかどうかを判定するための閾値である(図5のステップ308および関連する説明参照)。プロセス評価器の例示的な動作パラメータは、評価されるプロセスがあるアクションを行うとき、評価されるプロセスに割り当てられる悪意スコア(maliciousness score)の値である。たとえば、評価されるプロセスは、それぞれのプロセスがディスクファイルに書き込むとき、0.1の悪意スコアを、それぞれのプロセスがWindowsレジストリ値を変更するとき、0.7の悪意スコアを受け取ることができる。
[0068]いくつかの実施形態では、サーバ110は、マルウェア検出性能を最大にするために、たとえば誤検出を最小にしながら検出率を増大させるために、このようなパラメータを動的に調整する最適化アルゴリズムを実行する。最適化アルゴリズムは、様々なプロセス評価器によってプロセススコアリングモジュール38に報告されたプロセス評価インジケータ/スコアなど、複数のホストシステム10a〜cで実行される様々なプロセスについての統計および/または挙動データを受け取り、パラメータの最適値を判断することができる。値は、次いでネットワーク26を介してそれぞれのホストシステムに送られる。いくつかの実施形態では、最適なパラメータ値を判断するために、サーバ110は、クリーンである(マルウェアに感染していない)ことがわかっているプロセスのセットを使用してプロセススコアリングモジュール38および/またはプロセス評価器50a〜cの動作を校正する(calibrate)ことができる。例示的な校正シナリオでは、セキュリティサーバ110は、ホストシステム10に、クリーンであることがわかっている校正プロセスのセットを実行し、校正プロセスに対して判断されたプロセス評価インジケータ/スコアのセットをサーバ110に返送するよう命令することができる。サーバ110は、次いでそれぞれの仮想マシンおよび/またはホストシステムに合わせられたパラメータ値を判断することができる。
[0069]別の例では、セキュリティ設定82は、様々なプロセス評価器から受け取られる個々のプロセス評価インジケータにより、評価されるプロセスの総悪意スコアを判断するためにプロセススコアリングモジュール38によって使用される重み値のセットを含む。総スコアが個々のスコアの加重和または加重平均であり、(たとえば、各スコアが評価されるプロセスがあるマルウェアを示唆する挙動を行うかどうかを示すとき)各スコアが異なるマルウェア検出基準または方法により計算される実施形態では、個々のスコアの重みを変えると、他の基準/方法に比べて、それぞれの基準または方法の関連性を効果的に変えることができる。マルウェア脅威は、一般的に波のように発生し、世界中の多数のコンピュータシステムが、短い時間間隔で同じマルウェアエージェントに感染する。複数のホストシステムからリアルタイムにセキュリティレポート80を受け取ることによって、セキュリティサーバ110は、現在のマルウェア脅威の最新情報に通じていることが可能であり、それぞれのホストシステムに最適なセキュリティ設定82を直ちに伝えることができ、設定82は、たとえば、現在のマルウェア脅威を検出するために最適化されたスコア重みのセットを含む。
[0070]上述の例示的なシステムおよび方法により、コンピュータシステムなどのホストシステムを、ウイルスおよびルートキットなどのマルウェアから保護することができる。従来のアンチマルウェアシステムは、一般的に、オペレーティングシステムのプロセッサ特権レベル(たとえば、カーネルモード)で実行される。ルートキットなどのいくつかのマルウェアもまた、OSのレベルで動作することができ、したがって従来のアンチマルウェアシステムを無能にし、コンピュータシステムのセキュリティを危うくする可能性がある。対照的に、本発明のいくつかの実施形態では、ハイパーバイザがコンピュータシステムで最高のプロセッサ特権レベルで実行され、仮想マシンに対するオペレーティングシステムに取って代わる。本発明のいくつかの実施形態により動作するアンチマルウェアシステムは、ハイパーバイザレベルで、VM内で実行されるコンポーネントと、VMの外で実行されるコンポーネントとを含む。いくつかのアンチマルウェア動作は、したがって、オペレーティングシステムのプロセッサ特権レベルよりも上位のプロセッサ特権レベルから行われることが可能であり、VM内で実行されるマルウェアによって破壊される可能性はない。いくつかの実施形態では、単一のメモリ内部監視エンジンが、ハイパーバイザのレベルで実行されて、それぞれのコンピュータシステムで同時に実行される複数の仮想マシンを保護することができる。
[0071]いくつかの実施形態では、メモリ内部監視エンジンの動作は、特にいくつかのドライバ、ライブラリ、レジスタ、およびページテーブルなどの重要なソフトウェアオブジェクトのセットを選択することと、このようなオブジェクトへの悪意のある変更を防ぐこととを含む。詳細には、いくつかの実施形態は、したがって、VM内で実行されるアンチマルウェアコンポーネントを悪意のある攻撃から保護することができる。
[0072]このようなオブジェクトを保護するために、いくつかの実施形態は、それぞれのオブジェクトに割り当てられたメモリ空間へ書き込もうとする試みをインターセプトし、試みをブロックするまたはリダイレクトすることによって、悪意のある変更を防ぐことができる。他の実施形態は、それぞれのオブジェクトに割り当てられたメモリ空間をリードオンリとしてマーク付けすることによって、ターゲットオブジェクトを保護することができる。一般的なハードウェアおよびソフトウェア構成では、メモリは、ページとして知られている、連続したアドレスの個々のブロックに分割される。仮想化を支援するシステムでは、ページアクセス許可は、たとえばIntelプラットフォームの拡張ページテーブル(EPT)などの専用データ構造を使用して、ハイパーバイザによって制御される。したがって、ターゲットオブジェクトのメモリ空間を保護することは、たとえばメモリ内部監視エンジンがハイパーバイザに、それぞれのオブジェクトに属するデータを含んでいるページのセットをリードオンリとしてマーク付けするよう命令することによって達成され得る。
[0073]いくつかの実施形態では、いくつかのアンチマルウェアコンポーネントが、マルウェアを検出するためにメモリ内部監視エンジンと連携して、保護される仮想マシン内で実行される。このような構成は、仮想化により発生するセマンティックギャップを穴埋めすることによって、実質的にマルウェア検出を簡略化することができる。一般的なソフトウェア構成では、ユーザモードで実行されるマルウェア検出コンポーネントは、評価されるプロセスの挙動についての豊富な情報にアクセスすることができるが、この情報の大部分は、カーネルレベルでまたはそれぞれのVMの外で実行されるコンポーネントが容易に利用できるものではない。たとえば、評価されるプロセスがインターネットからファイルをダウンロードしようと試みるとき、ユーザモードのプロセス評価器は、たとえばDLLインジェクションなどの当技術分野で知られている方法を使用して、どのプロセスがアクションを行っているかを識別することができ、評価されるプロセスがファイルをダウンロードしようと試みていることを検出することができ、特に、ファイルがダウンロードされるIPアドレス、およびダウンロードされたファイルのディスク場所を判断することができる。一方、ハイパーバイザのレベルで実行されるプロセス評価器は、ネットワークパケットのセットがホストシステムのネットワークアダプタを通じて流れていることを検出するにすぎない可能性がある。ハイパーバイザのレベルから評価されるプロセスの挙動についての情報を回復することは、原則として可能であり得るが、このようなタスクはかなりの計算コストを伴う可能性があるので、マルウェア検出には実用的ではない可能性がある。それぞれのVM内で実行されるアンチマルウェアコンポーネントを、VMの外で実行されるメモリ内部監視エンジンと結合することによって、本発明のいくつかの実施形態は、VM内部のコンポーネントがアクセスできる豊富な挙動データを使用するとともに、それぞれのVMの外からこのようなコンポーネントの整合性を保護することができる。
[0074]従来のアンチマルウェアシステムでは、オペレーティングシステムのプロセッサ特権レベルと同様のプロセッサ特権レベルで実行されるソフトウェアコンポーネントが、プロセスがいつ起動されるかを検出し、他のアンチマルウェアコンポーネントにそれぞれのプロセスの挙動を監視するよう命令する。いくつかのマルウェアエージェントは、プロセス起動を検出するソフトウェアコンポーネントを無効にし、したがってアンチマルウェアシステムに現在実行中のプロセスのサブセットのみを監視させることによって、このようなアンチマルウェアシステムを巧みに危うくする。対照的に、本発明のいくつかの実施形態では、プロセス起動を検出するコンポーネントは、オペレーティングシステムよりも上位のプロセッサ特権レベルで、それぞれの仮想マシンの外に移動される。このような構成は、マルウェアがアンチマルウェアコンポーネントから隠れることのないようにすることができる。
[0075]いくつかの実施形態では、プロセススコアリングモジュールが、それぞれのVM内または外で実行される複数のプロセス評価器からプロセスごとの評価インジケータを受け取る。保護されるVM内で実行されるコンポーネントから受け取られるプロセス評価インジケータは、たとえば、評価されるプロセスがOSのレジストリ値を変更しようとする試み、またはファイルを削除しようとする試みなど、マルウェアを示唆する挙動を行ったことを示すことができる。それぞれのVMの外で判断されるプロセス評価インジケータは、たとえば、評価されるプロセスが、保護されるメモリセクションに書き込もうと試みていることを示すことができる。プロセス評価インジケータは、それぞれのプロセスの悪意の程度を示す数値スコアを含むことができる。いくつかの実施形態では、プロセススコアリングモジュールは、様々なプロセス評価器から受け取られる複数のプロセス評価インジケータ/スコアにより総スコアを判断し、総スコアにより、評価されるプロセスが悪意のあるものであるかどうかを判断する。
[0076]上記の実施形態は、本発明の範囲を逸脱することなく多くの方法で変更され得ることは、当業者には明らかであろう。したがって、本発明の範囲は、添付の特許請求の範囲およびそれらの法的同等物によって決定されるべきである。

Claims (20)

  1. 仮想マシンを公開するように構成されたハイパーバイザと、
    前記仮想マシン内で実行されるプロセス評価器と、
    前記仮想マシンの外で実行されるメモリ内部監視エンジンと、
    プロセススコアリングモジュールと
    を実行するように構成された少なくとも1つのプロセッサを含むホストシステムであって、
    前記プロセス評価器は、
    前記仮想マシン内で実行される評価されるプロセスがアクションを行うかどうかを判断し、
    前記評価されるプロセスが前記アクションを行うときに、前記評価されるプロセスに対して求められた第1のプロセス評価インジケータを前記プロセススコアリングモジュールに送る
    ように構成され、
    前記メモリ内部監視エンジンは、
    オペレーティングシステム機能へのコールをインターセプトして、前記仮想マシン内で実行される保護されるプロセスの起動を検出し、前記オペレーティングシステム機能は、前記保護されるプロセスを前記仮想マシン内で実行されるプロセスのリストに追加するように構成され、
    前記起動を検出することに応じて、
    前記評価されるプロセスが前記保護されるプロセスのメモリページを変更しようと試みるかどうかを判断し、
    前記評価されるプロセスが前記メモリページを変更しようと試みるときに、
    前記評価されるプロセスに対して求められた第2のプロセス評価インジケータを前記プロセススコアリングモジュールに送る
    ように構成され、
    前記プロセススコアリングモジュールは、
    前記ホストシステムを含む複数のコンピュータシステムとアンチマルウェアトランザクションを行うよう構成されたセキュリティサーバから、第1の重み及び第2の重みを受け取ることと、
    前記第1および第2のプロセス評価インジケータを受け取ることと
    前記第1および第2のプロセス評価インジケータにより、前記評価されるプロセスが悪意のあるものであるかどうかを判断することであって、前記評価されるプロセスが悪意のあるものであるかどうかを判断することは、第1のスコアおよび第2のスコアの加重和を求めることを含み、前記第1の重みは前記加重和において前記第1のスコアに乗算され、前記第2の重みは前記加重和において前記第2のスコアに乗算され、前記第1および第2のスコアは、それぞれ前記第1および第2のプロセス評価インジケータにより求められる、判断することと、
    前記加重和に基づき前記評価されるプロセスが悪意あるものであると判断された場合に、前記評価されるプロセスに対してアンチマルウェアアクションをとることと
    を行うように構成された、ホストシステム。
  2. 請求項1に記載のホストシステムであって、前記メモリ内部監視エンジンは、
    前記保護されるプロセスの前記起動を検出することに応じて、前記保護されるプロセスのインジケータを前記仮想マシン内で実行されるセキュリティアプリケーションに送信し、
    前記セキュリティアプリケーションから前記メモリページのインジケータを受け取る
    ようにさらに構成された、ホストシステム。
  3. 請求項1または2に記載のホストシステムであって、前記プロセス評価器は、ユーザレベルのプロセッサ特権で実行されるユーザレベルのプロセス評価器を含み、前記ユーザレベルのプロセス評価器は、前記評価されるプロセスが前記アクションを行うかどうかを判断するように構成された、ホストシステム。
  4. 請求項1または2に記載のホストシステムであって、前記プロセス評価器は、カーネルレベルのプロセッサ特権で実行されるカーネルレベルのプロセス評価器を含み、前記カーネルレベルのプロセス評価器は、前記評価されるプロセスが前記アクションを行うかどうかを判断するように構成された、ホストシステム。
  5. 請求項1から4のうちの何れか一項に記載のホストシステムであって、前記プロセス評価器は、前記評価されるプロセスによって行われるシステムコールをインターセプトするように構成されたシステムコール評価器を含む、ホストシステム。
  6. 請求項1から5のうちの何れか一項に記載のホストシステムであって、前記プロセススコアリングモジュールは、前記仮想マシン内で実行される、ホストシステム。
  7. 請求項1から5のうちの何れか一項に記載のホストシステムであって、前記プロセススコアリングモジュールは、前記仮想マシンの外で実行される、ホストシステム。
  8. 請求項1から7のうちの何れか一項に記載のホストシステムであって、前記保護されるプロセスは、前記プロセススコアリングモジュールを含む、ホストシステム。
  9. 請求項1から8のうちの何れか一項に記載のホストシステムであって、前記保護されるプロセスは、前記プロセス評価器を含んだセキュリティアプリケーションの一部を形成する、ホストシステム。
  10. ホストシステムに、
    仮想マシンを公開するように構成されたハイパーバイザと、
    前記仮想マシン内で実行されるプロセス評価器と、
    前記仮想マシンの外で実行されるメモリ内部監視エンジンと、
    プロセススコアリングモジュールと
    を形成させるプログラムであって、
    前記プロセス評価器は、
    前記仮想マシン内で実行される評価されるプロセスがアクションを行うかどうかを判断し、
    前記評価されるプロセスが前記アクションを行うときに、前記評価されるプロセスに対して求められた第1のプロセス評価インジケータを前記プロセススコアリングモジュールに送る
    ように構成され、
    前記メモリ内部監視エンジンは、
    オペレーティングシステム機能へのコールをインターセプトして、前記仮想マシン内で実行される保護されるプロセスの起動を検出し、前記オペレーティングシステム機能は、前記仮想マシン内で実行され、前記仮想マシン内で実行されるプロセスのリストに前記保護されるプロセスを追加するように構成され、
    前記起動を検出することに応じて、
    前記評価されるプロセスが前記保護されるプロセスのメモリページを変更しようと試みるかどうかを判断し、
    前記評価されるプロセスが前記メモリページを変更しようと試みるときに、
    前記評価されるプロセスに対して求められた第2のプロセス評価インジケータを前記プロセススコアリングモジュールに送る
    ように構成され、
    前記プロセススコアリングモジュールは、
    前記ホストシステムを含む複数のコンピュータシステムとアンチマルウェアトランザクションを行うよう構成されたセキュリティサーバから、第1の重み及び第2の重みを受け取ることと、
    前記第1および第2のプロセス評価インジケータを受け取ることと
    前記第1および第2のプロセス評価インジケータにより、前記評価されるプロセスが悪意のあるものであるかどうかを判断することであって、前記評価されるプロセスが悪意のあるものであるかどうかを判断することは、第1のスコアおよび第2のスコアの加重和を求めることを含み、前記第1の重みは前記加重和において前記第1のスコアに乗算され、前記第2の重みは前記加重和において前記第2のスコアに乗算され、前記第1および第2のスコアは、それぞれ前記第1および第2のプロセス評価インジケータにより求められる、判断することと、
    前記加重和に基づき前記評価されるプロセスが悪意あるものであると判断された場合に、前記評価されるプロセスに対してアンチマルウェアアクションをとることと
    を行うように構成された、プログラム。
  11. 請求項10に記載のプログラムであって、前記メモリ内部監視エンジンは、
    前記保護されるプロセスの前記起動を検出することに応じて、前記保護されるプロセスのインジケータを前記仮想マシン内で実行されるセキュリティアプリケーションに送信し、
    前記セキュリティアプリケーションから前記メモリページのインジケータを受け取る
    ようにさらに構成された、プログラム。
  12. 請求項10または11に記載のプログラムであって、前記プロセス評価器は、ユーザレベルのプロセッサ特権で実行されるユーザレベルのプロセス評価器を含み、前記ユーザレベルのプロセス評価器は、前記評価されるプロセスが前記アクションを行うかどうかを判断するように構成された、プログラム。
  13. 請求項10または11に記載のプログラムであって、前記プロセス評価器は、カーネルレベルのプロセッサ特権で実行されるカーネルレベルのプロセス評価器を含み、前記カーネルレベルのプロセス評価器は、前記評価されるプロセスが前記アクションを行うかどうかを判断するように構成された、プログラム。
  14. 請求項10から13のうちの何れか一項に記載のプログラムであって、前記プロセス評価器は、前記評価されるプロセスによって行われるシステムコールをインターセプトするように構成されたシステムコール評価器を含む、プログラム。
  15. 請求項10から14のうちの何れか一項に記載のプログラムであって、前記プロセススコアリングモジュールは、前記仮想マシン内で実行される、プログラム。
  16. 請求項10から14のうちの何れか一項に記載のプログラムであって、前記プロセススコアリングモジュールは、前記仮想マシンの外で実行される、プログラム。
  17. 請求項10から16のうちの何れか一項に記載のプログラムであって、前記保護されるプロセスは、前記プロセススコアリングモジュールを含む、プログラム。
  18. 請求項10から17のうちの何れか一項に記載のプログラムであって、前記保護されるプロセスは、前記プロセス評価器を実行するように構成されたセキュリティアプリケーションの一部を形成する、プログラム。
  19. 請求項10から18のうちの何れか一項に記載のプログラムを記憶したコンピュータ可読記憶媒体。
  20. ホストシステムの少なくとも1つのハードウェアプロセッサが、前記ホストシステムを含む複数のコンピュータシステムとアンチマルウェアトランザクションを行うよう構成されたセキュリティサーバから、第1の重み及び第2の重みを受け取るステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記ホストシステムで実行されるハイパーバイザによって公開される仮想マシン内で実行される評価されるプロセスに対して求められた第1のプロセス評価インジケータを受け取るステップであって、前記第1のプロセス評価インジケータは、前記仮想マシン内で実行されるプロセス評価器が、前記評価されるプロセスが第1のアクションを実行するかどうかを判断することによって求められる、ステップと、
    前記少なくとも1つのハードウェアプロセッサが、前記評価されるプロセスに対して求められた第2のプロセス評価インジケータを受け取るステップであって、前記第2のプロセス評価インジケータは、前記仮想マシンの外で実行されるメモリ内部監視エンジンが、前記評価されるプロセスが第2のアクションを実行するかどうかを判断することにより求められる、ステップと、
    前記第1および第2のプロセス評価インジケータを受け取ることに応じて、前記少なくとも1つのハードウェアプロセッサが、前記第1および第2のプロセス評価インジケータにより、前記評価されるプロセスが悪意のあるものであるかどうかを判断するステップであって、前記評価されるプロセスが悪意のあるものであるかどうかを判断するステップは、第1のスコアおよび第2のスコアの加重和を求めるステップを含み、前記第1の重みは前記加重和において前記第1のスコアに乗算され、前記第2の重みは前記加重和において前記第2のスコアに乗算され、前記第1および第2のスコアは、それぞれ前記第1および第2のプロセス評価インジケータにより求められる、ステップ
    前記加重和に基づき前記評価されるプロセスが悪意あるものであると判断された場合に、前記少なくとも1つのハードウェアプロセッサが、前記評価されるプロセスに対してアンチマルウェアアクションをとるステップと
    を含方法。
JP2016523693A 2013-07-05 2014-07-02 仮想マシンにおけるマルウェア検出のためのプロセス評価 Active JP6378758B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/936,058 2013-07-05
US13/936,058 US9117080B2 (en) 2013-07-05 2013-07-05 Process evaluation for malware detection in virtual machines
PCT/RO2014/000019 WO2015152748A1 (en) 2013-07-05 2014-07-02 Process evaluation for malware detection in virtual machines

Publications (3)

Publication Number Publication Date
JP2016526730A JP2016526730A (ja) 2016-09-05
JP2016526730A5 JP2016526730A5 (ja) 2017-02-23
JP6378758B2 true JP6378758B2 (ja) 2018-08-22

Family

ID=52133728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016523693A Active JP6378758B2 (ja) 2013-07-05 2014-07-02 仮想マシンにおけるマルウェア検出のためのプロセス評価

Country Status (13)

Country Link
US (1) US9117080B2 (ja)
EP (1) EP3017392B1 (ja)
JP (1) JP6378758B2 (ja)
KR (1) KR101946982B1 (ja)
CN (1) CN105393255B (ja)
AU (1) AU2014389572B2 (ja)
CA (1) CA2915888C (ja)
ES (1) ES2785350T3 (ja)
HK (1) HK1216930A1 (ja)
IL (1) IL243123B (ja)
RU (1) RU2634205C2 (ja)
SG (1) SG11201510313SA (ja)
WO (1) WO2015152748A1 (ja)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10187452B2 (en) 2012-08-23 2019-01-22 TidalScale, Inc. Hierarchical dynamic scheduling
KR101880796B1 (ko) * 2013-02-10 2018-08-17 페이팔, 인코포레이티드 예측보안 제품을 제공하고 기존의 보안제품을 평가하는 방법과 장치
US9824225B1 (en) * 2013-09-20 2017-11-21 EMC IP Holding Company LLC Protecting virtual machines processing sensitive information
WO2015065330A1 (en) * 2013-10-29 2015-05-07 Hewlett-Packard Development Company, L.P. Virtual machine introspection
US9692789B2 (en) 2013-12-13 2017-06-27 Oracle International Corporation Techniques for cloud security monitoring and threat intelligence
US9514317B2 (en) * 2013-12-19 2016-12-06 Intel Corporation Policy-based trusted inspection of rights managed content
US9507935B2 (en) * 2014-01-16 2016-11-29 Fireeye, Inc. Exploit detection system with threat-aware microvisor
US20150229659A1 (en) * 2014-02-13 2015-08-13 Guardicore Ltd. Passive detection of malicious network-mapping software in computer networks
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
US9241010B1 (en) * 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US10038703B2 (en) * 2014-07-18 2018-07-31 The Regents Of The University Of Michigan Rating network security posture and comparing network maliciousness
US9710648B2 (en) * 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
US11507663B2 (en) 2014-08-11 2022-11-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US9552481B1 (en) * 2014-12-30 2017-01-24 Symantec Corporation Systems and methods for monitoring programs
US9189630B1 (en) 2015-01-21 2015-11-17 AO Kaspersky Lab Systems and methods for active operating system kernel protection
US10944764B2 (en) * 2015-02-13 2021-03-09 Fisher-Rosemount Systems, Inc. Security event detection through virtual machine introspection
US10127064B2 (en) * 2015-02-24 2018-11-13 Red Hat Israel, Ltd. Read-only VM function chaining for secure hypervisor access
US10417031B2 (en) * 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US10567395B2 (en) * 2015-05-10 2020-02-18 Check Point Advanced Threat Prevention Ltd Detection of potentially malicious web content by emulating user behavior and user environment
US9703956B1 (en) * 2015-06-08 2017-07-11 Symantec Corporation Systems and methods for categorizing virtual-machine-aware applications for further analysis
US10691476B2 (en) * 2015-06-27 2020-06-23 Mcafee, Llc Protection of sensitive data
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
RU2618947C2 (ru) * 2015-06-30 2017-05-11 Закрытое акционерное общество "Лаборатория Касперского" Способ предотвращения работы программ, содержащих нежелательный для пользователя функционал
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) * 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
RU2589862C1 (ru) 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
US10216927B1 (en) * 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
CN105389197B (zh) 2015-10-13 2019-02-26 北京百度网讯科技有限公司 用于基于容器的虚拟化***的操作捕获方法和装置
JP6721329B2 (ja) * 2015-12-21 2020-07-15 三菱電機株式会社 パワー半導体装置およびその製造方法
US10089124B2 (en) 2015-12-31 2018-10-02 International Business Machines Corporation Security application for a guest operating system in a virtual computing environment
JP6711000B2 (ja) * 2016-02-12 2020-06-17 日本電気株式会社 情報処理装置、ウィルス検出方法及びプログラム
US10536478B2 (en) * 2016-02-26 2020-01-14 Oracle International Corporation Techniques for discovering and managing security of applications
US10127368B2 (en) 2016-03-01 2018-11-13 Filevine, Inc. Systems for identity validation and association
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
WO2017155523A1 (en) * 2016-03-09 2017-09-14 Hewlett Packard Enterprise Development Lp Server virtual address space
US10116630B2 (en) * 2016-04-04 2018-10-30 Bitdefender IPR Management Ltd. Systems and methods for decrypting network traffic in a virtualized environment
US11379385B2 (en) 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
CN107360120B (zh) * 2016-05-10 2019-06-11 华为技术有限公司 虚拟网络功能的审计方法和装置
US10430223B2 (en) 2016-05-17 2019-10-01 Vmware, Inc. Selective monitoring of writes to protected memory pages through page table switching
US10592267B2 (en) 2016-05-17 2020-03-17 Vmware, Inc. Tree structure for storing monitored memory page data
FR3051934A1 (fr) * 2016-05-24 2017-12-01 Orange Procede d'identification d'au moins une fonction d'un noyau d'un systeme d'exploitation
US10579421B2 (en) * 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
CN106445639A (zh) * 2016-09-30 2017-02-22 北京奇虎科技有限公司 监测虚拟机的方法及装置
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
CN108241801B (zh) * 2016-12-26 2021-03-30 华为技术有限公司 处理***调用的方法和装置
US9734337B1 (en) 2017-01-24 2017-08-15 Malwarebytes Inc. Behavior-based ransomware detection
US10592664B2 (en) * 2017-02-02 2020-03-17 Cisco Technology, Inc. Container application security and protection
JP6841703B2 (ja) * 2017-03-29 2021-03-10 アドソル日進株式会社 コンピュータ装置
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10802863B2 (en) 2017-07-07 2020-10-13 Electronics And Telecommunications Research Institute Apparatus and method for storing audit trail in response to virtual-machine process execution
KR101937935B1 (ko) * 2017-07-07 2019-04-11 한국전자통신연구원 가상머신 프로세스 실행에 따른 감사 증적 저장 장치 및 방법
US11294898B2 (en) 2017-07-31 2022-04-05 Pearson Education, Inc. System and method of automated assessment generation
US10467552B2 (en) * 2017-07-31 2019-11-05 Pearson Education, Inc. System and method for automatic content provisioning
WO2019032728A1 (en) 2017-08-08 2019-02-14 Sentinel Labs, Inc. METHODS, SYSTEMS AND DEVICES FOR DYNAMICALLY MODELING AND REGROUPING END POINTS FOR ONBOARD NETWORKING
KR20190021673A (ko) * 2017-08-23 2019-03-06 주식회사 수산아이앤티 랜섬웨어 방지 장치 및 방법
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10546120B2 (en) * 2017-09-25 2020-01-28 AO Kaspersky Lab System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
US10678922B2 (en) * 2017-11-23 2020-06-09 Nicira, Inc. Detecting arbitrary code execution using a hypervisor
US10713357B2 (en) * 2017-11-23 2020-07-14 Nicira, Inc. Detecting lateral movement using a hypervisor
CN107798236B (zh) * 2017-11-30 2021-05-04 阿里巴巴(中国)有限公司 一种对应用程序安装包实现安全安装的方法和装置
US11250123B2 (en) 2018-02-28 2022-02-15 Red Hat, Inc. Labeled security for control flow inside executable program code
CN108804225B (zh) * 2018-05-24 2021-01-01 新华三云计算技术有限公司 一种虚拟机负载调控方法和装置
WO2020104772A1 (en) * 2018-11-19 2020-05-28 Secure Micro Ltd Computer implemented method
US11295008B2 (en) * 2019-02-13 2022-04-05 Nec Corporation Graphics processing unit accelerated trusted execution environment
US11550903B1 (en) * 2019-04-26 2023-01-10 Joseph Alan Epstein System and method for trustworthiness, reputation, provenance, and measurement of software
EP3973427A4 (en) 2019-05-20 2023-06-21 Sentinel Labs Israel Ltd. SYSTEMS AND METHODS FOR EXECUTABLE CODE DETECTION, AUTOMATIC FEATURE EXTRACTION, AND POSITION-INDEPENDENT CODE DETECTION
US11277436B1 (en) * 2019-06-24 2022-03-15 Ca, Inc. Identifying and mitigating harm from malicious network connections by a container
US11782713B1 (en) * 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution
US11630900B2 (en) * 2019-09-30 2023-04-18 Mcafee, Llc Detection of malicious scripted activity in fileless attacks
US10754506B1 (en) * 2019-10-07 2020-08-25 Cyberark Software Ltd. Monitoring and controlling risk compliance in network environments
US11836247B2 (en) * 2020-03-30 2023-12-05 Fortinet, Inc. Detecting malicious behavior in a network using security analytics by analyzing process interaction ratios
IL275098A (en) * 2020-06-03 2022-01-01 Kazuar Advanced Tech Ltd A multi-computing environment with the fewest loopholes
RU2763112C1 (ru) * 2020-08-24 2021-12-27 Акционерное общество "Лаборатория Касперского" Система и способ формирования списка виртуальных машин с указанием статуса защиты
WO2022081733A1 (en) * 2020-10-13 2022-04-21 BedRock Systems, Inc. A formally verified trusted computing base with active security and policy enforcement
US11579857B2 (en) 2020-12-16 2023-02-14 Sentinel Labs Israel Ltd. Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach
US20230229761A1 (en) * 2021-04-20 2023-07-20 Assured Information Security, Inc. Prevention and remediation of malware based on selective presentation of files to processes
CN113221103B (zh) * 2021-05-08 2022-09-20 山东英信计算机技术有限公司 一种容器安全防护方法、***及介质
US11899782B1 (en) * 2021-07-13 2024-02-13 SentinelOne, Inc. Preserving DLL hooks
WO2023069166A1 (en) * 2021-10-21 2023-04-27 Microsoft Technology Licensing, Llc Securely redirecting system service routines
KR102656980B1 (ko) * 2022-03-14 2024-04-15 세종대학교산학협력단 가상화 환경에서 인스턴스의 메모리를 연속적으로 기록하는 방법 및 장치
WO2023239009A1 (ko) * 2022-06-10 2023-12-14 엘지전자 주식회사 차량의 신호 처리 장치 및 이를 구비하는 차량용 통신 장치용 통신 장치
US11977496B1 (en) 2022-09-29 2024-05-07 Amazon Technologies, Inc. Security vulnerability mitigation using hardware-supported context-dependent address space hiding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4412156B2 (ja) * 2004-11-30 2010-02-10 沖電気工業株式会社 処理装置
US8516583B2 (en) * 2005-03-31 2013-08-20 Microsoft Corporation Aggregating the knowledge base of computer systems to proactively protect a computer from malware
US7996836B1 (en) 2006-12-29 2011-08-09 Symantec Corporation Using a hypervisor to provide computer security
US8380987B2 (en) * 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7797748B2 (en) * 2007-12-12 2010-09-14 Vmware, Inc. On-access anti-virus mechanism for virtual machine architecture
US8561182B2 (en) * 2009-01-29 2013-10-15 Microsoft Corporation Health-based access to network resources
US8387046B1 (en) 2009-03-26 2013-02-26 Symantec Corporation Security driver for hypervisors and operating systems of virtualized datacenters
WO2012135192A2 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US20120254993A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US8099596B1 (en) 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
US9069586B2 (en) * 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment

Also Published As

Publication number Publication date
CA2915888A1 (en) 2015-10-08
CN105393255A (zh) 2016-03-09
KR101946982B1 (ko) 2019-05-10
ES2785350T3 (es) 2020-10-06
US20150013008A1 (en) 2015-01-08
EP3017392A1 (en) 2016-05-11
AU2014389572A1 (en) 2016-01-21
HK1216930A1 (zh) 2016-12-09
RU2016103212A (ru) 2017-08-10
KR20160030385A (ko) 2016-03-17
JP2016526730A (ja) 2016-09-05
SG11201510313SA (en) 2016-01-28
IL243123B (en) 2019-11-28
WO2015152748A1 (en) 2015-10-08
CN105393255B (zh) 2019-07-12
AU2014389572B2 (en) 2019-03-07
CA2915888C (en) 2021-05-04
US9117080B2 (en) 2015-08-25
EP3017392B1 (en) 2020-01-22
RU2634205C2 (ru) 2017-10-24

Similar Documents

Publication Publication Date Title
JP6378758B2 (ja) 仮想マシンにおけるマルウェア検出のためのプロセス評価
US9565214B2 (en) Real-time module protection
JP6411494B2 (ja) 仮想マシンにおけるページフォールトインジェクション
JP6842455B2 (ja) 非同期イントロスペクション例外を使用するコンピュータセキュリティシステムおよび方法
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US10635479B2 (en) Event filtering for virtual machine security applications
US8549648B2 (en) Systems and methods for identifying hidden processes
US9087199B2 (en) System and method for providing a secured operating system execution environment
US8621620B2 (en) System and method for protecting and securing storage devices using below-operating system trapping
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9424427B1 (en) Anti-rootkit systems and methods

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170117

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180727

R150 Certificate of patent or registration of utility model

Ref document number: 6378758

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250