JP6761476B2 - 仮想マシンを監査するためのシステムおよび方法 - Google Patents

仮想マシンを監査するためのシステムおよび方法 Download PDF

Info

Publication number
JP6761476B2
JP6761476B2 JP2018535098A JP2018535098A JP6761476B2 JP 6761476 B2 JP6761476 B2 JP 6761476B2 JP 2018535098 A JP2018535098 A JP 2018535098A JP 2018535098 A JP2018535098 A JP 2018535098A JP 6761476 B2 JP6761476 B2 JP 6761476B2
Authority
JP
Japan
Prior art keywords
audit
target
computer system
agent
engine
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
JP2018535098A
Other languages
English (en)
Other versions
JP2019503539A (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 JP2019503539A publication Critical patent/JP2019503539A/ja
Application granted granted Critical
Publication of JP6761476B2 publication Critical patent/JP6761476B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • 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
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/45591Monitoring or debugging support
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Description

関連出願
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、2016年1月5日に出願された「Systems and Methods for Auditing a Virtual Machine(仮想マシンを監査するためのシステムおよび方法)」という名称の米国仮特許出願第62/274,902号の出願日の利益を主張する。
[0002]本発明は、ソフトウェア監査を実施するためのシステムおよび方法に関し、特に、ハードウェア仮想化構成において実施されるソフトウェア監査に関する。
[0003]今日のソフトウェア主導型経済では、会社が保持するハードウェアおよびソフトウェア・アセットの量および複雑さは絶え間なく増加する。従業員が、デスクトップコンピュータを使用することから、ラップトップ、タブレットコンピュータ、およびモバイルフォンなど、モバイルデバイスを使用することに移行するにつれて、ならびに職場が非局在化するにつれて、会社のハードウェアおよびソフトウェア・アセットを追跡することが深刻な問題になる。例えば、すべての会社コンピュータにわたってソフトウェアアプリケーションの単一のバージョンを使用する代わりに、会社は、現今では、一般に、従業員が現代のモバイルオフィスで使用する様々なハードウェアプラットフォームおよびオペレーティングシステムに対応するために、各アプリケーションの複数のバージョンを使用する。この状況は、ソフトウェアアップデートを適用するときに、そのようなアップデートがすべてのコンピュータおよびモバイルデバイスに一様に配信されないことがあると、さらに複雑になる。
[0004]そのような高まる異種性は、ソフトウェアライセンシングおよびサービスレベル契約を複雑にし得る。その上、モバイルデバイス上で使用されるアプリケーションソフトウェアの最近の急増は、コンピュータセキュリティリスクの増加を引き起こす。悪意のあるソフトウェアおよびスパイウェアが、あり余る程の合法アプリケーションおよびバージョンの中で容易に隠れることができ、これにより、従業員および会社を、プロプライエタリデータへの無許可のアクセスのリスクにさらし、特に、生産性の損失にさらす。
[0005]コンピューティングの典型的なモデルを変更するさらなる最近の発展は、ハードウェア仮想化である。ウェブサーバファームおよび仮想デスクトップインフラストラクチャ(VDI)などの適用例では、何百台もの仮想マシンが、単一の物理的プラットフォーム上で同時に実行し得る。そのような仮想マシンは、動的にインスタンス化および/または削除され得、これは、それぞれの物理的プラットフォーム上で常時実行するソフトウェアの異種性をさらに増加させる。
[0006]監査ソフトウェアは、特に、ライセンシング、デジタル著作権管理、アプリケーション制御、およびコンピュータセキュリティなどの目的で、コンピュータシステム上でインストールされたおよび/または現在実行中のソフトウェアを追跡するために使用され得る。現代の仮想化された環境に特に適した、監査システムおよび方法を開発することに対する関心が高まっている。
[0007]一態様によれば、コンピュータシステムは、ゲスト仮想マシン(VM)のセットを実行し、ゲストVMのセットの外部でVM監査エンジンをさらに実行するように構成される、少なくとも1つのハードウェアプロセッサを含む。VM監査エンジンは、リモート監査サーバから監査リクエストを受信したことに応答して、ゲストVMのセットのターゲットVM中に監査エージェントを挿入するように構成され、監査エージェントは、ターゲットVMの監査を実施するように構成され、監査は、ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断する(determining;判定する、求める、決定する)こととからなるグループから選択された項目を含み、量は、ターゲットVMによって現在使用される。VM監査エンジンは、監査エージェントを挿入したことに応答して、ターゲットVMに監査エージェントを実行させることと、ターゲットVMが監査エージェントを実行したことに応答して、ターゲットVMから監査エージェントを削除することとを行うようにさらに構成される。
[0008]別の態様によれば、方法は、コンピュータシステム上で実行するゲストVMのセットの外部で仮想マシン監査エンジンを実行するために、コンピュータシステムの少なくとも1つのハードウェアプロセッサを採用することを含む。VM監査エンジンを実行することは、リモートサーバから監査リクエストを受信したことに応答して、ゲストVMのセットのターゲットVM中に監査エージェントを挿入することを含み、監査エージェントは、ターゲットVMの監査を実施するように構成され、監査は、ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとからなるグループから選択された項目を含み、量は、ターゲットVMによって現在使用される。VM監査エンジンを実行することは、監査エージェントを挿入したことに応答して、ターゲットVMに監査エージェントを実行させることと、ターゲットVMが監査エージェントを実行したことに応答して、ターゲットVMから監査エージェントを削除することとをさらに含む。
[0009]別の態様によれば、サーバコンピュータシステムは、複数のクライアントシステムとの監査トランザクションを実施するように構成される、少なくとも1つのハードウェアプロセッサを含む。監査トランザクションは、複数のクライアントシステムのうちのクライアントシステムに監査リクエストを送ることと、応答して、クライアントシステムから監査報告を受信することとを含み、監査報告は、クライアントシステム上で実行するゲストVMのセットの外部のクライアントシステム上で実行する仮想マシン監査エンジンによって判断される(determined;判定される、求められる、決定される)。監査報告を判断することは、サーバコンピュータシステムから監査リクエストを受信したことに応答して、ゲストVMのセットのターゲットVM中に監査エージェントを挿入することを含み、監査エージェントは、ターゲットVMの監査を実施するように構成され、監査は、ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとからなるグループから選択された項目を含み、量は、ターゲットVMによって現在使用される。監査報告を判断することは、監査エージェントを挿入したことに応答して、ターゲットVMに監査エージェントを実行させることと、ターゲットVMが監査エージェントを実行したことに応答して、ターゲットVMから監査エージェントを削除することとをさらに含む。
[0010]別の態様によれば、非一時的コンピュータ可読媒体は、コンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されると、コンピュータシステムに仮想マシン監査エンジンを形成させる命令を格納し、VM監査エンジンは、コンピュータシステム上に公開されるゲストVMのセットの外部で実行し、VM監査エンジンは、リモート監査サーバから監査リクエストを受信したことに応答して、ゲストVMのセットのターゲットVM中に監査エージェントを挿入するように構成され、監査エージェントは、ターゲットVMの監査を実施するように構成され、監査は、ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとからなるグループから選択された項目を含み、量は、ターゲットVMによって現在使用される。VM監査エンジンは、監査エージェントを挿入したことに応答して、ターゲットVMに監査エージェントを実行させることと、ターゲットVMが監査エージェントを実行したことに応答して、ターゲットVMから監査エージェントを削除することとを行うようにさらに構成される。
[0011]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照するとよりよく理解されるようになるであろう。
[0012]本発明のいくつかの実施形態による、複数のクライアントシステムが監査サーバのリクエスト時に監査される例示的な構成を示す図である。 [0013]本発明のいくつかの実施形態による、被監査クライアントシステムの例示的なハードウェア構成を示す図である。 [0014]は、本発明のいくつかの実施形態による、監査サーバの例示的なハードウェア構成を示す図である。 [0015]本発明のいくつかの実施形態による、被監査クライアントシステム上で実行するハイパーバイザと、被監査VMの外部で実行するVM監査エンジンとによって公開される例示的な仮想マシンを示す図である。 [0016]本発明のいくつかの実施形態による、ゲスト仮想マシンがクライアントシステム上で実行する別個の監査VMによって監査される代替構成を示す図である。 [0017]本発明のいくつかの実施形態による、クライアントシステムの監査を設定するために監査インストーラアプリケーションによって行われるステップの例示的なシーケンスを示す図である。 [0018]本発明のいくつかの実施形態による、被監査クライアントシステムと監査サーバとの間の例示的なデータ交換を示す図である。 [0019]本発明のいくつかの実施形態による、VM監査エンジンによって実施されるステップの例示的なシーケンスを示す図である。 [0020]本発明のいくつかの実施形態による、様々なプロセッサ特権レベルにおいて実行する監査エージェントの例示的な構成要素を示す図である。 [0021]本発明のいくつかの実施形態による、監査エージェントを、被監査VMにドロップするためにVM監査エンジンによって実施されるステップの例示的なシーケンスを示す図である。 [0022]本発明のいくつかの実施形態による、監査エージェントのドライバローダによって実施されるステップの例示的なシーケンスを示す図である。 [0023]本発明のいくつかの実施形態による、監査ドライバによって実施されるステップの例示的なシーケンスを示す図である。
[0024]以下の説明において、構造間のすべての列挙された接続は、中間体構造を通じた直接の動作的な接続または間接の動作的な接続であってよいことが理解される。要素のセットは、1つまたは複数の要素を含む。要素の任意の列挙は、少なくとも1つの要素を指すと理解される。複数の要素は、少なくとも2つの要素を含む。別段の要求がない限り、任意の説明される方法ステップは、図示された特定の順序で必ずしも実施される必要はない。第2の要素から導出された第1の要素(例えばデータ)は、第2の要素に等しい第1の要素、ならびに第2の要素および随意に他のデータを処理することによって生成された第1の要素を包含する。パラメータに従って判断または判定することは、パラメータに従って、および随意に他のデータに従って判断または判定することを包含する。別段の定めがない限り、何らかの量/データのインジケータは、量/データ自体であるか、または量/データ自体とは異なるインジケータであってよい。コンピュータプログラムは、タスクを行うプロセッサ命令のシーケンスである。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、他のコンピュータプログラムのスタンドアロン・ソフトウェア・エンティティまたはサブエンティティ(例えば、サブルーチン、ライブラリ)であってよい。別段の定めがない限り、合法コンピュータプログラムは、それぞれのコンピュータシステムの合法ユーザが実行するために、インストールされるかまたは場合によっては構成されるコンピュータプログラムである。対照的に、それぞれのコンピュータシステムに無認可の侵入者によってインストールされた不正の悪意のあるソフトウェア(マルウェア)およびコンピュータプログラムは、本明細書では違法コンピュータプログラムと見なされる。コンピュータプログラムは、それぞれのコンピュータプログラムがそれぞれの仮想マシンの少なくとも1つの仮想プロセッサ上で実行するとき、仮想マシン内で、または仮想マシンの内部で実行する(またはそれぞれの仮想マシンが、それぞれのコンピュータプログラムを実行する)と言われている。プロセスは、アプリケーションまたはオペレーティングシステムの一部など、コンピュータプログラムのインスタンスであり、少なくとも実行スレッド、および実行スレッドに割り当てられた仮想メモリスペースを有することによって特徴付けられ、それぞれの仮想メモリスペースのコンテンツは実行コードを含む。別段の定めがない限り、ページは、ホストシステムの物理メモリに個々にマッピングされ得る仮想メモリの最小単位を表す。別段の定めがない限り、レジスタは、プロセッサと一体化されるかまたはプロセッサの一部を形成し、ランダムアクセスメモリ(RAM)とは別個の、ストレージ構成要素を表す。トンネルは、通信ネットワークに接続される2つのエンティティ間の仮想ポイントツーポイント接続である。コンピュータ可読媒体は、磁気、光、および半導体のストレージ媒体(例えばハードドライブ、光ディスク、フラッシュメモリ、DRAM)などの非一時的な媒体、ならびに導電性ケーブルリンクおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書で説明される方法を実施するようにプログラムされたハードウェア(例えば1つまたは複数のマイクロプロセッサ)を含むコンピュータシステム、ならびに本明細書で説明された方法を実施するための命令をエンコードするコンピュータ可読媒体を提供する。
[0025]以下の説明は、本発明の実施形態を例として示すが、必ずしも限定として示すとは限らない。
[0026]図1は、本発明のいくつかの実施形態による例示的な構成を示し、複数のクライアントシステム12a〜dは、監査サーバ14のリクエスト時にリモートで監査される。例示的なクライアントシステム12a〜dは、パーソナルコンピュータシステム、モバイルコンピューティングプラットフォーム(ラップトップコンピュータ、タブレット、携帯電話)、エンターテインメントデバイス(TV、ゲーム機)、ウェアラブルデバイス(スマートウォッチ、フィットネスバンド)、家庭用器具、およびプロセッサとメモリとを含み、ハードウェア仮想化プラットフォームを動作させることが可能な任意の他の電子デバイスを含む。クライアントシステム12a〜dは、企業ネットワークまたはインターネットなど、通信ネットワーク10を介して相互接続される。ネットワーク10の一部は、ローカルエリアネットワーク(LAN)を含んでよい。
[0027]監査サーバ14は、クライアントシステム12a〜dに通信可能に結合され、それぞれのクライアントシステムの監査を実施するために、各クライアントシステム12a〜dと共同する。例示的な監査アクティビティは、特に、ソフトウェア・アセットの識別、ならびに認可、使用、および権利に関するそれぞれのソフトウェア・アセットの検証を含む。そのような監査のグラニュラリティは、比較的高いレベル(例えば、どんなアプリケーション/バージョンがクライアントシステム上にインストールされるかを判断すること)から、例えば、各構成要素がインストールまたはアクセスされたときに、クライアントシステム上で実行するソフトウェアが重要な構成要素(例えば、ドライバ、パッチ、アンチマルウェアモジュール)の特定のバージョンを使用するかどうか、単一のアプリケーションがどのくらいのハードウェアリソースを使用するかなどを含む、徹底的な監査まで変動してよい。他の例示的な監査アクティビティは、特に、どのソフトウェア構成要素(アプリケーション、プロセス、ドライバなど)が監査の瞬間においてクライアントシステム上で現在実行中であるかを判断すること、それぞれのクライアントシステムのプロセッサの現在状態を判断すること、リソース使用状況(例えば、CPU、メモリ、ディスク、ネットワークなど)の現在レベルを判断すること、およびそれぞれのクライアントシステムの、OSの構成パラメータ値/設定、様々なアプリケーションの構成パラメータ値/設定、ユーザ設定などのセットを判断することを含む。
[0028]サーバ14は、互いに物理的に近接することもしないこともある、相互接続されたコンピューティングシステムのセットを総称的に表す。いくつかの実施形態では、監査サーバ14は、クライアントデータベース15にアクセスするように構成される。例示的なクライアントデータベース15では、各エントリは、被監査クライアントシステム12a〜dに関連し、それぞれのクライアントシステムから受信された監査報告のセット(下記参照)のコンテンツを含んでよい。各エントリは、さらに、それぞれのクライアントシステムから受信された各監査報告について、受信時間のインジケータをタイムスタンプ(time−stamped)され得る。データベース15の各エントリは、それぞれのクライアントシステムについて判断された監査データを含んでよく、監査データは、例えば、それぞれのクライアントシステムのハードウェア構成のインジケータ、オペレーティングシステム(OS)のタイプおよびバージョンのインジケータ、合法的にインストールされたアプリケーションまたは他のソフトウェア構成要素(例えば、ドライバ、パッチ)のセットのインジケータ、監査のときに現在ロードされ、および/または実行中のソフトウェア構成要素(アプリケーション、プロセス、ドライバなど)のセットのインジケータ、それぞれのクライアントシステムについての様々なOS、アプリケーションおよび/またはユーザ設定を示すパラメータのセット、ならびに監査のときのリソース使用状況(例えばCPU、メモリ、ディスクなど)のインジケータのセットを含む。監査データは、さらに、各リストされたソフトウェア構成要素がインストールされたとき、および/または各リストされた構成要素がアクセスまたは変更された最近の瞬間を示す、時間インジケータを含んでよい。
[0029]図2−Aは、図1中のシステム12a〜dなど、クライアントシステム12の例示的なハードウェア構成を示す。簡単のために、図示されたクライアントシステムは、コンピュータシステムであり、携帯電話、ウォッチなどの他のクライアントシステムのハードウェア構成は、図示された構成とはいくらか異なってよい。クライアントシステム12は、ハードウェアプロセッサ16とメモリユニット18とを含む、物理デバイスのセットを含む。プロセッサ16は、信号および/またはデータのセットを用いた計算および/または論理動作を実行するように構成された物理デバイス(例えばマイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路など)を含む。いくつかの実施形態では、そのような動作は、プロセッサ命令のシーケンスの形態(例えば機械コードまたは他のタイプの符号化)でプロセッサ16に配信される。メモリユニット18は、プロセッサ16によってアクセスまたは生成される命令および/またはデータを格納する揮発性コンピュータ可読媒体(例えばDRAM、SRAM)を含んでよい。
[0030]入力デバイス20は、ユーザがデータおよび/または命令をクライアントシステム12に入れることを可能にするそれぞれのハードウェアインターフェースおよび/またはアダプタを含む、特に、コンピュータキーボード、マウス、およびマイクロフォンを含んでよい。出力デバイス22は、特に、モニタおよびスピーカーなどのディスプレイデバイス、ならびにクライアントシステム12がデータをユーザに通信することを可能にする、グラフィックカードなどのハードウェアインターフェース/アダプタを含んでよい。いくつかの実施形態では、入力デバイス20と出力デバイス22とは、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有してよい。ストレージデバイス24は、ソフトウェア命令および/またはデータの不揮発性の格納、読取り、および書込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス24は、磁気ディスクおよび光ディスクおよびフラッシュメモリデバイス、ならびにCDおよび/またはDVDのディスクおよびドライブなどのリムーバブル媒体を含む。ネットワークアダプタ26のセットは、クライアントシステム12がコンピュータネットワークおよび/または他のデバイス/コンピュータシステムに接続することを可能にする。コントローラハブ28は、複数のシステム、周辺機器、および/またはチップセットバス、ならびに/あるいはプロセッサ16とデバイス18、20、22、24および26との間の通信を可能にするすべての他の回路を表す。例えば、コントローラハブ28は、特に、メモリコントローラ、入出力(I/O)コントローラ、および割込みコントローラを含んでよい。別の例では、コントローラハブ28は、プロセッサ16をメモリ18に接続するノースブリッジ、および/またはプロセッサ16をデバイス20、22、24、および26に接続するサウスブリッジを含んでよい。
[0031]図2−Bは、本発明のいくつかの実施形態による、監査サーバ14の例示的なハードウェア構成を示す。サーバ14は、少なくとも1つのハードウェアプロセッサ116(例えば、マイクロプロセッサ、マルチコア集積回路)、物理メモリ118、およびサーバネットワークアダプタ126のセットを含む。アダプタ126は、監査サーバ14が通信ネットワーク10に接続することを可能にする、ネットワークカードおよび他の通信インターフェースを含んでよい。いくつかの実施形態では、サーバ14は、機能の点で、それぞれ、入力デバイス20、出力デバイス22、およびストレージデバイス24と同様であることがある、入力デバイス、出力デバイスおよびストレージデバイスをさらに含む。
[0032]いくつかの実施形態では、クライアントシステム12は、例えば図3−A〜図3−Bに示されているように、仮想マシンのセットを公開するように構成される。仮想マシン(VM)は、ハードウェア仮想化の当技術分野において知られている様々な技法のいずれかを使用して、実際の物理マシン/コンピュータシステムをエミュレートする。いくつかの実施形態では、仮想マシンモニタ(VMM)としても当技術分野で知られているハイパーバイザ30は、クライアントシステム12上で実行し、クライアントシステム12の実際の物理デバイスの代わりに、仮想プロセッサおよび仮想メモリ管理ユニットなど、複数の仮想化されたデバイスを作成するかまたは使用可能にし、そのような仮想化されたデバイスをソフトウェアに公開するように構成される。そのような動作は、一般に、仮想マシンを公開することとして当技術分野で知られている。ハイパーバイザ30はさらに、各仮想マシンが独立して動作し、クライアントシステム12上で同時に実行する他のVMに気づかれないように、複数のVMがホストシステム12のハードウェアリソースを共有することを可能にし得る。普及しているハイパーバイザの例は、特に、VMware社からのVMware vSphere(商標)およびオープンソースXenハイパーバイザがある。
[0033]図3−A〜図3−Bに示されている例示的な構成では、ゲストVM32は、ゲストオペレーティングシステム(OS)34、およびアプリケーション36a〜bのセットを実行する。ゲストOS34は、特に、Microsoft Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(商標)などの任意の広く利用可能なオペレーティングシステムを含んでよく、VM32内で実行するアプリケーションとVM32の仮想化されたハードウェアデバイス内で実行するアプリケーションとの間のインターフェースを提供する。アプリケーション36a〜bは、特に、ワードプロセッサ、表計算アプリケーション、グラフィックスアプリケーション、ブラウザ、ソーシャルメディア、および電子通信アプリケーションなどの任意のユーザアプリケーションを総称的に表す。
[0034]図3−Aに示されている実施形態では、VM監査エンジン40aは、ハイパーバイザ30のプロセッサ特権レベル(例えば、ルートレベルまたはリング−1)において、ゲストVM32の外部で実行する。VM監査エンジン40aは、ゲストVM32の監査を実施するように構成される。いくつかの実施形態では、そのような監査は、以下で詳細に説明されるように、監査エージェント42を、被監査VMにドロップすることと、監査が完了すると、被監査VMからエージェント42を削除することとを含む。
[0035]図3−Bに示されている代替実施形態では、ハイパーバイザ30は、すべての被監査ゲストVMとは別個の監査VM33を公開するように構成され、監査VM33は、(1つまたは複数の)ゲストVM32と同時に実行してよい。監査VM33のいくつかの実施形態は、軽量、最小オペレーティングシステム(例えば、Linux(登録商標)OSのカスタマイズされたバージョン)を含み、ゲストVM32の監査を実施するように構成されたVM監査エンジン40bを実行するように構成される。ゲストVM32の仮想環境と監査VM33の仮想環境とは、ゲストVM32内で実行する悪意のあるソフトウェアが、監査VM33内で実行するソフトウェアに感染できないことまたは場合によってはそれを妨害できないことを保証するために、仮想化の当技術分野で知られている任意の方法を使用して互いから分離され得る。図3−Bの実施形態では、内部監視エンジン44は、ハイパーバイザ30のプロセッサ特権レベルにおいて、ゲストVM32および監査VM33の外部で実行する。図3−Aの例示的な実施形態では、内部監視エンジン44のアクティビティのいくつかは、VM監査エンジン40aによって少なくとも部分的に実施され得る。
[0036]図3−A〜図3−Bは、1つのゲストVM32のみがクライアントシステム12上で実行することを示すように作成されたが、いくつかの実施形態は、複数のVMを動かすクライアントシステムにおいて監査を実施するように構成され得る。そのような仮想化プラットフォームの一般的な適用例はサーバファームであり、単一のコンピュータシステムは、同時に動作する何百台もの別個のウェブサーバVMをホストしてよい。別の一般的な適用例は、仮想デスクトップインフラストラクチャ(VDI)のカテゴリーに属し、ユーザのアプリケーションが第1のコンピュータシステム上で実行する間、そのユーザは、第2のコンピュータシステム(端末)を介してそれぞれのアプリケーションと対話する。一般的なVDI構成では、リクエストされたアプリケーションを動かす仮想マシンは、第1のコンピュータシステム上でオンデマンドでインスタンス化され、これは、最終的に複数のリモートユーザのために何百台ものそのようなVMを実行することになることがある。そのような実施形態では、単一のVM監査エンジン40a〜bは、それぞれのクライアントシステム上で実行する、複数のVMまたはすべてのVMの監査を実施してよい。例えば、監査エンジン40a〜bは、それぞれのゲストVMの各々の内部に監査エージェントをドロップしてよい。1つのそのような例では、VM監査エンジン40a〜bは、監査エージェントのタイプを選択し、各VMのハードウェアおよび/またはソフトウェア仕様に従って、例えば、それぞれのVM内で実行するOSのタイプに従って、エージェント・ドロッピング・プロシージャを調整してよい。いくつかの実施形態では、VM監査エンジン40a〜bは、それぞれのクライアントシステム上で実行する、特定のターゲットVMまたはVMの選択されたサブセットの監査を選択的に実施するようにサーバ14によって命令され得る。
[0037]いくつかの実施形態では、内部監視エンジン44(図3−B)は、被監査ゲストVM内のソフトウェアの実行中に発生する様々なイベントを検出し、そのような情報を他の監査ソフトウェア(例えば、エージェント42および/またはエンジン40a〜b)と交換するように構成される。内部監視エンジン44によって検出された例示的なイベントは、例えば、プロセッサ例外および/または割込み、ゲストOS34の特定の機能を実行するための試み、プロセッサ特権(例えば、システムコール)の変更、特定のメモリロケーションにアクセスする(特定のメモリロケーションから読み取り、特定のメモリロケーションに書き込み、および/または特定のメモリロケーションから実行する)ための試みなどを含む。内部監視エンジン44は、以下でさらに説明されるように、ゲストVM32内で実行する様々なソフトウェア構成要素のメモリアドレスを判断するようにさらに構成され得る。
[0038]そのようなイベントを検出するためのいくつかの方法が、当技術分野で知られている。1つのそのような例では、内部監視エンジン44は、第2レベルのアドレス変換機構(例えば拡張されたページテーブル−Intel(登録商標)プラットフォーム上のEPT、高速仮想化インデックス付け−AMD(登録商標)プラットフォーム上のRVI)を使用して、メモリアクセス許可を設定するためにハイパーバイザ30と共同し得る。特定のメモリページにアクセスするための試みが、それぞれのメモリページについて設定されたアクセス許可に違反するとき、それぞれの試みは、例外または仮想マシン終了イベント(Intel(登録商標)プラットフォーム上のVMExit)などのプロセッサイベントをトリガしてよい。プロセッサイベントの結果として、プロセッサ16は、内部監視エンジン44内のイベント・ハンドラ・ルーチンを実行することに切り替えることができ、これは、エンジン44がそれぞれのイベントの発生を検出することを可能にする。そのような機構は、それぞれの機能の一部を含んでいるメモリページを非実行可能とマークすることによって、例えば、特定の機能のコールを検出することができる。
[0039]簡単のために、および一般性の喪失なしに、以下の説明は、図3−Aに示されているように構成された例示的な実施形態に焦点を当てる。説明されるシステムおよび方法が他の構成に、特に図3−Bの例示的な構成に適応され得ることを、当業者は理解されよう。以下の説明では、(1つまたは複数の)VM監査エンジンは、総称的に40と標示され、これは、選定された構成に応じて、監査エンジン40aまたは監査エンジン40bのいずれかを表し得る。
[0040]図4は、本発明のいくつかの実施形態による、クライアントシステムの監査を設定するために実施されるステップの例示的なシーケンスを示す。企業ネットワークを監査することの一般的なシナリオでは、ネットワーク管理者は、監査アプリケーションを各クライアントシステム12a〜d上にインストールしてよい。監査アプリケーションは、VM監査エンジン40、内部監視エンジン44など、様々な構成要素を含んでよい。図示されたステップのシーケンスは、例えば、それぞれの監査アプリケーションのインストーラユーティリティによって行われ得る。ハードウェア仮想化構成において現在動作していないクライアントシステム上にインストールされたとき、監査ソフトウェアは、最初に(例えば、仮想化をサポートするIntel(登録商標)プラットフォーム上のVMXRoot、場合によっては一般的に知られているルートモードまたはリング−1)最も特権的なレベルにおいてプロセッサ16を支配し、ハイパーバイザ30をインストールしてよい。次いで、ハイパーバイザ30は、ゲストVM32を公開し、ゲストVM32内で実行するために、それぞれのクライアントシステム上で前に実行していたすべてのソフトウェアを移動してよい。ハイパーバイザ30は、さらに、VM監査エンジン40および/または内部監視エンジン44を設定してよい。複数の仮想マシンをすでに動かしているハードウェア仮想化プラットフォーム上にインストールされたとき、ステップ200〜202は省略され得る。
[0041]いくつかの実施形態では、ステップ206は、監査サーバ14からVM監査エンジン40へのリモートアクセスを設定してよい。そのようなアクセスは、監査サーバが、自動的に、または人間オペレータによって支援されて、被監査クライアントシステム12に命令を直接送ることを可能にしてよい。そのような命令は、例えば、VM監査エンジン40に、特定の種類の監査を実施すること、特定のソフトウェア構成要素の存在および/または特性についてゲストVMを検査すること、プロセッサ16の現在状態(例えば、プロセッサレジスタのセットのコンテンツ)を判断すること、ゲストOS34または他のソフトウェアのためのパラメータ設定のセットを読み取ることなどを行うように命令してよい。例示的な一実施形態では、ステップ206は、サーバ14とハイパーバイザ30との間、および/またはサーバ14と監査VM33との間のトンネル(すなわち、ポイントツーポイント通信リンク)を構成してよい。例示的なトンネルは、仮想プライベートネットワーキング(VPN)および/またはセキュアシェル(SSH)プロトコルおよび方法に従って設定され得る。そのようなトンネルが設定されると、そのトンネルは、監査リクエストおよび/または他の命令をVM監査エンジン40に送るために、サーバ14によって使用され得る。
[0042]さらなるステップ208において、監査インストーラは、ハイパーバイザ30のレベルから内部監視および/またはイベント・インターセプションを構成してよい。ステップ208は、例えば、それぞれのページにアクセスするための試みが、プロセッサイベント(例えば、VM終了イベント)をトリガし、VM監査エンジン40または内部監視エンジン44が、被監査ゲストVM32内のイベント(例えば、システムコール)の発生を検出することを可能にするように、被監査ゲストVMによって使用されるいくつかのメモリページへのアクセス許可を設定することを含んでよい。いくつかの実施形態では、ステップ208は、さらに、被監査VM(例えば、監査エージェント42)内で実行する構成要素とそれぞれのVM(例えば、監査エンジン40、内部監視エンジン44)の外部で実行する構成要素との間のシグナリングおよび/または通信機構を設定してよい。そのような通信またはシグナリングは、ハードウェア仮想化の当技術分野において知られている任意の方法を使用してよい。一例では、2つのソフトウェア構成要素は、2つのソフトウェア構成要素によって共有される物理メモリのセクションを介して互いの間でデータを送信してよい。VMの内部で実行する第1の構成要素から、それぞれのVMの外部で実行する第2の構成要素にデータを送るために、第1のソフトウェア構成要素は、共有されたメモリセクションにデータを書き込み、次いで、特権的プロセッサ命令(例えば、Intel(登録商標)プラットフォーム上のVMCALL)を発行し、これにより、VM終了イベントを引き起こし得る。Intel(登録商標)プラットフォーム上のVMExitなどのVM終了イベントは、第1のソフトウェア構成要素を実行することから、第2のソフトウェア構成要素の一部であってよい、ハンドラ・ルーチンを実行することにプロセッサ16を切り替える。したがって、それぞれのVMの外部で実行する第2の構成要素は、第1の構成要素がデータを送信することを試みていることを通知され得る。逆に、第2の構成要素から第1の構成要素にデータを送るために、第2の構成要素は、共有されたメモリセクションにデータを書き込み、次いで、それぞれのVMに割込みをインジェクトし得る。その割込みは、それぞれのVM内で実行する割込みハンドラによって(例えば、第1のソフトウェア構成要素によって)処理されることになる。したがって、第1の構成要素は、第2の構成要素がデータを送信することを試みていることを検出し得る。いくつかの実施形態では、ステップ208は、上記で説明された通信機構を可能にするために、適切なソフトウェア構成要素を様々なプロセッサイベントのためのハンドラとして登録することを含む。
[0043]図5は、本発明のいくつかの実施形態による、監査サーバ14と被監査クライアントシステムとの間の例示的なデータ交換を示す。サーバ14は、監査リクエスト50をクライアントシステム12に送り、リクエスト50は、VM監査エンジン40にクライアントシステム12の監査を実施するように命令し得る。いくつかの実施形態では、監査リクエスト50は、監査のタイプのインジケータ、例えば、クライアントシステム12上で実施されるべき監査動作のタイプ、すなわち、すべての合法アプリケーションをリストすること、現在のOS設定を判断することなどのための監査動作のタイプのインジケータを含む。別の例示的な監査リクエスト50は、クライアントシステム12上で現在実行するターゲット仮想マシンのインジケータを含み、そのような監査リクエストは、監査エンジン40にターゲットVMの監査を選択的に実施するように命令し得る。また別の例示的な監査リクエスト50は、特定のソフトウェア構成要素(例えば、Microsoft Word(登録商標)、特定のドライバなど)のインジケータを含んでよい。そのようなリクエストは、特に、それぞれのソフトウェア構成要素がそれぞれのクライアントシステム上に合法的にインストールされたかどうか、それぞれのソフトウェア構成要素のどのバージョンがインストールされたか、それぞれのソフトウェア構成要素が現在、メモリにロードされた/実行中であるかどうか、それぞれのソフトウェア構成要素が直近でいつ使用されたかなどを判断するようにエンジン40に命令してよい。別の例示的な監査リクエスト50は、ターゲットVMによって、またはターゲットVM内で実行する特定のソフトウェア構成要素によって使用されるハードウェアリソース(例えば、プロセッサ、ストレージ、メモリ)の現在のレベル/量/割合を判断するようにエンジン40に命令してよい。
[0044]監査リクエスト50は、被監査クライアントシステム上で実行するターゲットゲストVMの識別子を含んでよい。そのようなリクエストは、それぞれのゲストVMの選択的監査を実施するように監査エンジン40に命令してよい。他のリクエスト50は、被監査クライアントシステム上で現在実行するすべてのゲストVMの監査を実施するように監査エンジンに命令してよい。
[0045]監査リクエスト50は、スケジュールに従って、またはネットワーク管理者のアクションに応答して送出され得る。監査リクエスト50は、すべてのクライアントシステム12a〜dに一様に送出され得るか、または各被監査クライアントシステムに特別に調整され得る。いくつかの実施形態では、監査リクエストは、それぞれのクライアントシステム上で発生するイベントによって、または通信ネットワーク10上の他の場所で発生するイベントに応答して、トリガされ得る。リクエストされた監査を行ったことに応答して、(1つまたは複数の)VM監査エンジン40a〜bは、監査報告52をサーバ14に送り得る。報告52は、それぞれの監査アクティビティの結果、例えばインストールされたソフトウェア構成要素のリスト、それぞれのクライアントシステムの現在の構成設定のセットなどを含む。
[0046]図6は、本発明のいくつかの実施形態による、VM監査エンジン40によって実施されるステップの例示的なシーケンスを示す。エンジン40は、サーバ14からの監査リクエスト50をリッスンすることができる。リクエスト50が受信されると、エンジン40は、監査リクエスト50に従って監査するためのターゲットVMを選択し、監査エージェントを、ターゲットゲストVM(例えば、図3−A〜図3−B中のゲストVM32)にドロップしてよい。
[0047]エージェントは、被監査ゲストVMのタイプに従って、例えば、被監査VM内で現在実行するゲストOS34のタイプに従って、クラフティングされ得る。OSタイプは、Windows(登録商標)などの名前インジケータ、および、特に、7、Home、またはEnterpriseなどのバージョンインジケータを含んでよい。いくつかの実施形態では、監査エンジン40は、それぞれのゲストVMのモデル固有レジスタ(MSR:model−specific register)のコンテンツ、またはそれぞれのMSRによって指されるメモリのセクションのコンテンツに従って、OSのタイプを識別する。いくつかの実施形態では、エンジン40は、被監査VM内で実行するソフトウェアによって、そのようなMSRに書き込まれるデータに従ってOSの名前を判断することができる。例えば、エンジン40は、SYSENTERまたはSYSCALL MSRに書き込むようにとの命令をインターセプトし、そのような書込み命令のパラメータに従って、現在実行または現在初期設定するOSのタイプを判断することができる。特に、OSの名前に関する情報を与え得る他の例示的なレジスタは、制御レジスタ、割込み記述子テーブル(IDT:interrupt descriptor table)、およびグローバル記述子テーブル(GDT:global descriptor table)を含む。MSR書込みに従ってOSタイプを識別するために、内部監視エンジン40は、さらに、各OSに固有の高速システムコール・ハンドラの所定のライブラリ(例えば、SYSCALL MSRまたはSYSENTER MSRのコンテンツに従って扱われるシステムコール)に対するパターンマッチングを使用してよい。そのような高速システムコール・ライブラリは、監査エンジン40および/または内部監視エンジン44を用いて与えられ得、周期的またはオンデマンド・ソフトウェア・アップデートを介して最新に保たれ得る。
[0048]いくつかの実施形態では、OSのそれぞれのタイプに固有のいくつかのカーネルデータ構造をパースすることによって、(リリース名、ビルド番号などの)バージョンインジケータが取得され得る。OSバージョンの識別を可能にする例示的なデータ構造は、Linux(登録商標)カーネルのいくつかのエクスポート・シンボル、または特にNtBuildNumberなど、Windows(登録商標)カーネルのいくつかのエクスポートされたシンボルである。
[0049]監査エージェント42を、ターゲットゲストVMにドロップすると、ステップ228〜230〜232のシーケンスが、監査が完了するまでループで繰り返され得る。監査が進む間、VM監査エンジン40は、データ(例えば、様々なソフトウェア構成要素のメモリアドレス、監査の様々な結果)を監査エージェント42と交換してよい。仮想マシン内で実行する構成要素と仮想マシンの外部で実行する構成要素との間のそのようなメッセージングは、仮想化の当技術分野において知られている任意の方法を使用して(例えば、上記で説明されたように、監査エンジン40と監査エージェント42との間で共有されるメモリのセクションを介して)行われ得る。監査が完了すると、ステップ234が、例えばドライバローダを含んでいるメモリのセクションを消去することによって、監査エージェントを被監査VMから消去する(以下にさらなる詳細)。さらなるステップ236において、監査エンジン40は、監査報告52を構築し、サーバ14に送る。
[0050]図7は、プロセッサ特権レベル(例えば、特権リング)の観点から監査エージェント42の例示的な構成要素を示す。いくつかの実施形態では、監査エージェント42は、ドライバローダ46と監査ドライバ48とを含む。ドライバローダ46は、VM監査エンジン40によって、図3−A〜図3−B中のアプリケーション36a〜bなど、動いているアプリケーション36にインジェクトされ得る。したがって、ドライバローダ46は、アプリケーション36の特権レベルにおいて、一般に、リング3(プロセッサ特権のユーザモードまたはユーザレベル)において実行し得る。いくつかの実施形態では、ドライバローダ46は、ゲストVM32上に監査ドライバ48をロードおよび起動し、ドライバ48は、一般に、ゲストOS34のプロセッサ特権レベル(例えば、リング0、カーネルモード、またはカーネルレベル)において実行する。監査ドライバ48は、次いで、ゲストVM32内で監査動作を行い得る。監査が完了すると、ローダ46またはVM監査エンジン40は、例えばドライバ48を含んでいるメモリセクションを消去することによって、ドライバ48をゲストVM32から削除し得る。代替実施形態は、ドライバローダ46を使用しないが、代わりに、ゲストOS34のカーネルにコード(例えば、監査エージェント42)を直接インジェクトする。そのような実施形態では、エージェント42は、完全にリング0(カーネルモード)において実行してよい。
[0051]ソフトウェア構成要素を仮想マシンにドロップすることは、当技術分野において知られている様々な方法を使用して達成され得る。図8は、本発明の好ましい実施形態による、ゲストVM32の内部にエージェント42をドロップする(図6中のステップ226)ためにVM監査エンジン40によって実施されるステップの例示的なシーケンスを示す。ステップ250において、VM監査エンジン40は、ドライバローダ46をインジェクトするのに適したメモリのセクションを識別する。いくつかの実施形態では、OSのメモリ割当て機能を使用する必要なしに(OSのメモリ割当て機能を使用することは、ローダ46および/またはドライバ48を、ゲストVM32内で実行するマルウェアを含む他のソフトウェアによって発見可能にすることがある)、ドライバローダ46は、存在するデータ構造の中で安全に隠れていることができるように、できるだけ小さく、例えば、メモリページよりもはるかに小さくクラフティングされる。
[0052]一例では、VM監査エンジン40は、一般に、ドライバセクション間でゲストOS34によって確保されるパディングスペース内でドライバローダ46を受信するのに適したメモリセクションを探索し得る。Windows(登録商標)などのいくつかのオペレーティングシステムは、オブジェクトの各別個のセクションがページ境界に整合されるようにメモリを割り当てるので、そのようなパディングスペースが存在する。セクションがメモリページ全体を占有しないとき、それぞれのページ内の残りのメモリスペースは、ダミーデータ(例えば、0)を用いてパディングされる。そのような実施形態では、ドライバローダ46に適応するために好適なメモリスペースを探索することが、ゲストOS34のドライバに割り当てられたメモリページをそのようなダミーデータについて走査することを含んでよい。
[0053]別の例では、エンジン40は、メモリを小さいオブジェクト(例えば、ドライバ)に割り当てるためのOSによる試みをインターセプトし得、それぞれのオブジェクトはメモリページよりも小さい。メモリの必要とされる量を割り当てる代わりに、エンジン40は、ゲストOS34に、フルメモリページ(例えば、4kB)をそれぞれのオブジェクトに割り当てることと、ドライバローダ46をホストするためにそれぞれのメモリページ内の残りのスペースを使用することとを行うように強制してよい。そのようなメモリ割当て試みをインターセプトするために、監査エンジン40および/または内部監視エンジン44のいくつかの実施形態は、Windows(登録商標)におけるKeAllocatePoolWithTagなど、ネイティブOSメモリ管理関数を実行するための試みを検出してよい。そのような関数がそれぞれのゲスト仮想マシン32のメモリ中にある、メモリアドレスを判断するために、監査エンジン40は、カーネルバイナリイメージ(例えばWindows(登録商標)におけるPortable Executable、Linux(登録商標)におけるExecutable and Linkable Format)のエクスポートされる関数テーブルなど、いくつかのデータ構造にアクセスしてよい。現在ビアを割り当てられているオブジェクトのタイプは、インターセプトされるコールの割当てタグに従って判断され得る。例えば、Windows(登録商標)では、「Driv」タグがドライバオブジェクトを示す。
[0054]また別の例では、ステップ250は、未使用のメモリページを、図7中のアプリケーション36など、実行プロセスのメモリスペースにマッピングすることを含む。ドライバローダ46をホストするためにメモリの好適なセクションを識別すると、ステップ252において、VM監査エンジン40は、メモリのそれぞれのセクションにローダ46をインジェクトし得る。
[0055]次に、監査エンジン40のいくつかの実施形態は、例えばAMD(登録商標)プラットフォーム上のSYSCALL、またはIntel(登録商標)プラットフォーム上のSYSENTERなど、システムコールを発行することによって、プロセッサ特権の変更を試みるために、(アプリケーション36などの)現在実行中のプロセスを待つことができる。それぞれのVMの外部からのシステムコールをインターセプトすることは、いくつかのやり方で達成され得る。一例では、エンジン40は、システムコールを試みるスレッドを現在実行する、仮想プロセッサのプロセッサレジスタの値をリセットしてよい。そのようなプロセッサレジスタの例は、Intel(登録商標)プラットフォーム上のIA32_LSTARレジスタおよびIA32_SYSENTER_EIPレジスタがある。そのようなレジスタ操作は、その後、システムコールが試みられるときに障害を引き起こすことになり、それぞれの障害は、VM監査エンジン40または内部監視エンジン44によって検出され得る。別の例では、エンジン40は、ゲストOS34のシステムコール・ハンドラを含んでいるコードページ上へのリダイレクションフックを配置してよい。
[0056]いくつかの実施形態では、システムコールがインターセプトされるとき、ステップ256が、それぞれのシステムコールのコンテキストがドライバローダ46の安全なインジェクションを可能にするかどうかを判断するために、適格性検査のセットを行う。システムコールのインターセプションが、システムコール・ハンドラのフッキングを介して達成される一例では、適格性検査は、現在のスタックがユーザスタックであるか否かを判断することを含んでよい。スタックがユーザスタックであるときにコードをインジェクトするための試みは、ユーザモードにあるどんなものもカーネルについて信用できないので、システムを損ない得る。さらに、他のスレッドが、ユーザスタックからデータをスニッフィングし得、ドライバローダ46を攻撃さえすることが可能でさえあり得る。いくつかの実施形態では、スタックがユーザスタックであるかどうかを判断することは、スタックセグメント記述子の特権レベルを判断することを含む。別の適格性検査は、割込みが現在可能にされるかどうかを判断し得る。ドライバローダ46は、割込みが可能にされることを要求する、いくつかのプロセッサ命令を実行しなければならないことがある。また別の適格性検査は、現在の割込みリクエストレベル(IRQL:interrupt request level)を判断し得る。いくつかの実施形態は、例えば、現在のIRQLが、ドライバローダ46の動作を行うことが可能であるように0に等しくなることを必要とし得る。
[0057]システムコールが適格性要件を満たすとき、ステップ260において、監査エンジン40は、それぞれのシステムコールを発行したスレッドの実行を中断し、プロセッサ16をドライバローダ46を実行することに切り替え得る。ローダ46が実行し終わったとき、監査エンジン40は、プロセッサ16を元のスレッド(例えば、アプリケーション36)を実行することに切り替えて戻し得る。
[0058]図9は、本発明のいくつかの実施形態による、ドライバローダ46によって実施されるステップの例示的なシーケンスを示す。メモリを監査ドライバ48に割り当てるために、および/またはドライバ48のためのスレッドを作成するために、いくつかの実施形態は、ゲストOS34の専用関数、例えばWindows(登録商標)におけるExAllocatePoolWithTagおよびPsCreateSystemThread(同様の関数が他のOS、例えばLinux(登録商標)中に存在する)を呼び得る。ドライバローダ46が小さいメモリフットプリントを有することを必要とされる実施形態では、そのようなOS関数のアドレスは、上記で説明されたように、例えば、メッセージング機構を介して、VM監査エンジン40によってローダ46に与えられ得る。そのような実施形態では、ドライバローダ46は、ドライバ48を割り当てられたメモリに実際に書き込まないことがある。代わりに、ローダ46は、メモリの割り当てられたセクションのアドレスをVM監査エンジン40に通信し得、実際の書込みは、監査エンジン40によって行われる。
[0059]監査ドライバ48が起動される(ステップ274)と、ローダ46は止まってよい。いくつかの実施形態では、監査ドライバ48が実行を終了するとき、例えば、現在の監査動作が完了するとき、ドライバローダ46は、ゲストVM32から監査ドライバ48を削除してよい。代替実施形態では、VM監査エンジン40が、クリーンアップを実施(例えば、メモリからドライバ48を削除)してよい。
[0060]図10は、本発明のいくつかの実施形態による、監査ドライバ48によって実施される例示的なステップを示す。それ自体のメモリスペースと実行スレッドとを有するドライバ48が、ゲストVM32内で実行するので、ドライバ48は、ゲストVM32の監査を実施するために、例えば、インストールされたアプリケーションのリストを列挙すること、OSの様々なパラメータ値を判断すること、様々なソフトウェア構成要素に関連するタイムスタンプを判断すること、リソース使用状況を判断することなどを行うために、ゲストOS34にとって利用可能なすべてのリソースを使用し得る。そのようなタスクは、当技術分野で知られている様々な方法を使用して行われ得る。例えば、監査ドライバ48は、ゲストOS34のいくつかのレジストリ鍵を列挙することができ、それぞれの鍵は、インストールされたアプリケーション/ソフトウェアパッケージなどの識別情報をあらわにする。別の監査方法は、インストールされたプログラムに関する様々なデータを取得するために、ゲストOS34によって公開される(Windows(登録商標)におけるWindows Management Instrumentation−WMIなどの)アプリケーション・プログラミング・インターフェース(API)を呼び出す。また別の例では、ドライバ48は、インストールされるプログラムおよびアップデートのリストを取得するために、特定のファイルおよびフォルダ(例えば、Windows(登録商標)におけるプログラムファイル)を探索し得る。そのような例示的な方法は、単独でまたは一緒に使用され得る。監査中に集められたデータは、例えばそのようなデータをドライバ48とVM監査エンジン40との間で共有されるメモリの所定のセクションに書き込むことによって、VM監査エンジン40に送信され得る。
[0061]いくつかの実施形態では、監査を実施したことに応答して、および止まる前に、監査ドライバ48は、アンチマルウェアドライバなどのセキュリティモジュールをロードおよび/または起動してよい。セキュリティモジュールは、例えば、被監査ゲストVMがマルウェアを含むどうかを判断し得、および/あるいは存在するマルウェアを消すかまたは場合によっては無能力にし得る。そのようなセキュリティモジュールの内密および動的展開により、セキュリティモジュールの存在およびアクティビティは、それぞれのゲストVM内で実行するマルウェアによって検出し、干渉することが比較的困難であり得る。
[0062]本明細書で説明される例示的なシステムおよび方法は、比較的多数のクライアントシステム(例えば、企業ネットワーク)上でソフトウェア監査をリモートで実施することを可能にする。ソフトウェア監査は、本明細書では、合法ソフトウェア、すなわち、それぞれのクライアントシステムの合法ユーザ(例えば、システム管理者)によってそれぞれのクライアントシステム上での実行のためにインストールおよび/または構成されるソフトウェアを評価することを指す。例示的な監査は、例えば、どのソフトウェアアプリケーションが会社のコンピュータ上に現在インストールされるかを判断し得る。そのような情報は、例えば、ソフトウェアライセンシングを容易にすること、アップグレードを展開すること、従業員が仕事場においてあるソフトウェア(例えば、メッセージングアプリ、ゲーム)をインストールまたは使用するのを防ぐこと、特定のブランドまたは種類のソフトウェア(例えば、Google(登録商標)Chrome(登録商標))を使用すべき従業員を判断することなどのために使用され得る。
[0063]監査結果は、被監査クライアントシステムに通信可能に結合されたサーバコンピュータに好都合に集中化され得る。監査は、スケジュールに従って自動的に、および/または人間管理者のリクエスト時に要求に応じて、行われ得る。本発明のいくつかの実施形態では、監査は、さらに、選択されたクライアントシステムのターゲットにされるマルウェア走査/駆除など、コンピュータ・セキュリティ・アクティビティに結合され得る。
[0064]いくつかの実施形態は、ソフトウェア監査の安全および信頼性を増加させるためにハードウェア仮想化技術を使用する。監査ソフトウェアを、悪意のある人間の介入に公開することおよび/または被監査クライアントを感染させるマルウェアに公開することを回避するために、いくつかの実施形態は、オペレーティングシステムを含むクライアントソフトウェアを仮想マシン(VM)に移動し、尊重される仮想マシンの外部から監査の一部を実施する。したがって、監査ソフトウェアの一部は、ハイパーバイザのレベルで、またはそれぞれのクライアント上で実行する別個の専用監査VM内で、実行し得る。
[0065]仮想化を十分に利用することによって、本発明のいくつかの実施形態は、サーバファームおよび仮想デスクトップインフラストラクチャ(VDI)システムなど、並列に複数のVMを実行するクライアントシステムを監査することにも好適である。いくつかの実施形態に従って構成された単一の監査エンジンが、それぞれのクライアント上で実行する複数のVM、またはすべてのVMを監査してよい。仮想化された環境において監査動作を行うように構成されたいくつかの従来のシステムは、被監査VMのメモリスナップショットを分析することによって監査を実施する。そのような従来のシステムは、被監査VMがそれぞれのメモリスナップショットをとるために停止されることを必要とし得る。対照的に、本発明のいくつかの実施形態は、監査エージェントが現在実行中のVMにドロップされ得るので、被監査VMを停止することを必要としない。メモリスナップショットから抽出され得る情報に限定されないことによって、いくつかの実施形態は、実行中のVMの内部から実質的によりリッチな監査データへのアクセスを有し得る。
[0066]監査ソフトウェアを監査クライアント内に永続的にインストールしておくことは、そのようなソフトウェアをマルウェアに公開し得、これは、監査ソフトウェアを停止するかまたは場合によっては無能力にし得る。そのような従来のソリューションとは対照的に、本発明のいくつかの実施形態は、監査の持続時間の間、監査エージェントを被監査マシンに動的にドロップし、これにより、コンピュータセキュリティリスクを最小限に抑える。被監査VM内に永続的な監査エージェントを有しないことの別の利点は、そのような構成が仮想マシンと監査ソフトウェアの両方のアドミニストレーション、展開、およびアップグレードを著しく容易にし得ることである。監査ソリューションが、独立しており、被監査仮想マシンに永続的には関連付けられないとき、監査ソフトウェアは、VMソフトウェアから独立して更新され得る。例えば、VM監査エンジン40への更新は、それぞれのクライアント上で実行するゲストVMの動作に影響を及ぼすことなしに、インストールされ得る。VDIなど、ハードウェア仮想化の多くの現代の適用例では、仮想マシンは、一般に、クライアント上にローカルに記憶されるかまたはVDIサーバコンピュータから受信されるVMイメージにしばしば基づいて、クライアントシステム上でインスタンス化され、動的に削除される。被監査VMが永続的な監査エージェントを有しないとき、VMイメージは、監査ソフトウェアに影響を及ぼすことなしに任意の時間に更新されるかまたは場合によっては変更され得る。
[0067]しかしながら、被監査VMの外部から監査動作を実施することは、一般に「セマンティックギャップを埋めること」として当技術分野で知られている、困難な技術的問題を提示する。被監査VM内で実行するソフトウェアは、監査に関連する豊富な情報へのアクセスを有するが、それぞれのVMの外部で実行するソフトウェアは、一般に、物理メモリのコンテンツおよび被監査VMの仮想プロセッサの現在状態へのアクセスのみを有する。したがって、VM内ソフトウェアのセマンティクスをそれぞれのVMの外部から解決することは、不可能であり得るか、またはせいぜい、かなりの量の計算を必要とし得る。したがって、セマンティックギャップを埋めるのを助けるために、いくつかの実施形態は、被監査VM内に監査エージェントをドロップする。監査エージェントは、被監査VM内から情報を集め、そのような情報を、被監査VMの外部で実行する構成要素に通信してよい。
[0068]上記実施形態が本発明の範囲から逸脱することなく多くのやり方で変更され得ることは、当業者にとって明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびそれらの法的均等物によって判断されるべきである。

Claims (22)

  1. ゲスト仮想マシン(VM)のセットを実行し、VM監査エンジンをさらに実行するように構成される、少なくとも1つのハードウェアプロセッサを含むコンピュータシステムであって、前記VM監査エンジンは、ゲストVMの前記セットの外部で実行され、リモート監査サーバから監査リクエストを受信したことに応答して、
    前記ゲストVMの前記セットのターゲットVM中に監査エージェントを挿入することであって、前記監査エージェントは、前記ターゲットVMの監査を実施するように構成され、前記監査は、前記ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとを含むグループから選択された項目を含み、前記量は、前記ターゲットVMによって現在使用されている、挿入することと、
    前記監査エージェントを挿入したことに応答して、前記ターゲットVMに前記監査エージェントを実行させることと、
    前記ターゲットVMが前記監査エージェントを実行したことに応答して、前記ターゲットVMから前記監査エージェントを削除することと
    を行うように構成される、コンピュータシステム。
  2. 請求項1に記載のコンピュータシステムであって、前記監査エージェントを挿入することは、
    前記コンピュータシステムのメモリにドライバローダを書き込むことであって、前記ドライバローダは、監査ドライバを前記ターゲットVMにロードするように構成され、前記監査ドライバは、前記監査を実施するように構成される、書き込むことと、
    前記ターゲットVM内で実行されるコンピュータプログラムがシステムコールを発行すると、前記コンピュータプログラムを実行することから前記ドライバローダを実行することに切り替わるように前記ターゲットVMを構成することと
    を含む、コンピュータシステム。
  3. 請求項2に記載のコンピュータシステムであって、前記監査エージェントを挿入することは、前記ターゲットVMのドライバのために割り当てられたメモリセクションに前記ドライバローダを書き込むことを含む、コンピュータシステム。
  4. 請求項2に記載のコンピュータシステムであって、前記ドライバローダを書き込むことは、
    メモリをソフトウェアオブジェクトに割り当てるために、前記ターゲットVMのオペレーティングシステムによる試みをインターセプトすることと、
    前記試みをインターセプトしたことに応答して、割り当てられた前記メモリが前記ソフトウェアオブジェクトと前記ドライバローダの両方に適応するように、前記試みによって意図されたメモリ割当てを変更することと
    を含む、コンピュータシステム。
  5. 請求項1に記載のコンピュータシステムであって、前記監査は、合法コンピュータプログラムの前記リストの少なくとも1つのコンピュータプログラムがインストールされた時点を判断することをさらに含む、コンピュータシステム。
  6. 請求項1に記載のコンピュータシステムであって、前記監査は、合法コンピュータプログラムの第2のリストを生成することであって、前記第2のリストのすべてのメンバーは、前記ターゲットVMの揮発性メモリに現在ロードされている、生成することをさらに含む、コンピュータシステム。
  7. 請求項1に記載のコンピュータシステムであって、前記ハードウェアリソースは、前記少なくとも1つのハードウェアプロセッサの処理能力を含む、コンピュータシステム。
  8. 請求項1に記載のコンピュータシステムであって、前記ハードウェアリソースは、前記コンピュータシステムの不揮発性記憶デバイスを含む、コンピュータシステム。
  9. 請求項1に記載のコンピュータシステムであって、前記VM監査エンジンは、
    前記ターゲットVM上で現在実行されているオペレーティングシステムのタイプを検出することと、
    応答して、前記オペレーティングシステムの前記タイプに従って前記監査エージェントを構成することと
    を行うようにさらに構成される、コンピュータシステム。
  10. 請求項1に記載のコンピュータシステムであって、
    前記監査リクエストは前記ターゲットVMのインジケータを含み、
    前記VM監査エンジンは、前記監査リクエストに従ってゲストVMの前記セットから前記ターゲットVMを選択するように構成される、
    コンピュータシステム。
  11. 請求項1に記載のコンピュータシステムであって、前記VM監査エンジンは、前記ターゲットVMとは別個の監査VM内で実行される、コンピュータシステム。
  12. コンピュータシステムの少なくとも1つのハードウェアプロセッサを用いて、前記コンピュータシステム上で実行されるゲスト仮想マシン(VM)のセットの外部でVM監査エンジンを実行するステップを含む方法であって、前記VM監査エンジンを実行するステップは、
    リモートサーバから監査リクエストを受信したことに応答して、ゲストVMの前記セットのターゲットVM中に監査エージェントを挿入するステップであって、前記監査エージェントは、前記ターゲットVMの監査を実施するように構成され、前記監査は、前記ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとを含むグループから選択された項目を含み、前記量は、前記ターゲットVMによって現在使用されている、ステップと、
    前記監査エージェントを挿入するステップに応答して、前記ターゲットVMに前記監査エージェントを実行させるステップと、
    前記ターゲットVMが前記監査エージェントを実行するステップに応答して、前記ターゲットVMから前記監査エージェントを削除するステップと
    を含む、方法。
  13. 請求項12に記載の方法であって、前記監査エージェントを挿入するステップは、
    前記コンピュータシステムのメモリにドライバローダを書き込むステップであって、前記ドライバローダは、監査ドライバを前記ターゲットVMにロードするように構成され、前記監査ドライバは、前記監査を実施するように構成される、ステップと、
    前記ターゲットVM内で実行されるコンピュータプログラムがシステムコールを発行すると、前記コンピュータプログラムを実行することから前記ドライバローダを実行することに切り替わるように前記ターゲットVMを構成するステップと
    を含む、方法。
  14. 請求項13に記載の方法であって、前記監査エージェントを挿入するステップは、前記ターゲットVMのドライバのために割り当てられたメモリセクションに前記ドライバローダを書き込むステップを含む、方法。
  15. 請求項13に記載の方法であって、前記ドライバローダを書き込むステップは、
    メモリをソフトウェアオブジェクトに割り当てるために、前記ターゲットVMのオペレーティングシステムによる試みをインターセプトするステップと、
    前記試みをインターセプトするステップに応答して、割り当てられた前記メモリが前記ソフトウェアオブジェクトと前記ドライバローダの両方に適応するように、前記試みによって意図されたメモリ割当てを変更するステップと
    を含む、方法。
  16. 請求項12に記載の方法であって、前記監査は、合法コンピュータプログラムの第2のリストを生成するステップであって、前記第2のリストのすべてのメンバーは、前記ターゲットVMの揮発性メモリに現在ロードされている、ステップをさらに含む、方法。
  17. 請求項12に記載の方法であって、前記ハードウェアリソースは、前記少なくとも1つのハードウェアプロセッサの処理能力を含む、方法。
  18. 請求項12に記載の方法であって、前記ハードウェアリソースは、前記コンピュータシステムの不揮発性記憶デバイスを含む、方法。
  19. 請求項12に記載の方法であって、前記ターゲットVMとは別個の監査VM内で前記VM監査エンジンを実行するステップを含む、方法。
  20. 複数のクライアントシステムとの監査トランザクションを実施するように構成される、少なくとも1つのハードウェアプロセッサを含むサーバコンピュータシステムであって、監査トランザクションは、
    前記複数のクライアントシステムのうちのクライアントシステムに監査リクエストを送ることと、
    応答して、前記クライアントシステムから監査報告を受信することであって、前記監査報告は、前記クライアントシステム上で実行されるゲスト仮想マシン(VM)のセットの外部の前記クライアントシステム上で実行されるVM監査エンジンによって判断され、前記監査報告を判断することは、
    前記サーバコンピュータシステムから監査リクエストを受信したことに応答して、ゲストVMの前記セットのターゲットVM中に監査エージェントを挿入することであって、前記監査エージェントは、前記ターゲットVMの監査を実施するように構成され、前記監査は、前記ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとを含むグループから選択された項目を含み、前記量は、前記ターゲットVMによって現在使用されている、挿入することと、
    前記監査エージェントを挿入したことに応答して、前記ターゲットVMに前記監査エージェントを実行させることと、
    前記ターゲットVMが前記監査エージェントを実行したことに応答して、前記ターゲットVMから前記監査エージェントを削除することと
    を含む、受信することと
    を含む、サーバコンピュータシステム。
  21. コンピュータシステムの少なくとも1つのハードウェアプロセッサによって実行されると、前記コンピュータシステムに仮想マシン(VM)監査エンジンを形成させる命令を格納した非一時的コンピュータ可読媒体であって、前記VM監査エンジンは、前記コンピュータシステム上に公開されるゲストVMのセットの外部で実行され、前記VM監査エンジンは、リモート監査サーバから監査リクエストを受信したことに応答して、
    ゲストVMの前記セットのターゲットVM中に監査エージェントを挿入することであって、前記監査エージェントは、前記ターゲットVMの監査を実施するように構成され、前記監査は、前記ターゲットVM上での実行のためにインストールされた合法コンピュータプログラムのリストを生成することと、ハードウェアリソースの量を判断することとを含むグループから選択された項目を含み、前記量は、前記ターゲットVMによって現在使用されている、挿入することと、
    前記監査エージェントを挿入したことに応答して、前記ターゲットVMに前記監査エージェントを実行させることと、
    前記ターゲットVMが前記監査エージェントを実行したことに応答して、前記ターゲットVMから前記監査エージェントを削除することと
    を行うように構成される、非一時的コンピュータ可読媒体。
  22. 請求項21に記載のコンピュータ可読媒体であって、前記命令は、さらに、前記コンピュータシステムの少なくとも1つのハードウェアプロセッサに、前記コンピュータシステム上に前記ターゲットVMを公開するように構成されたハイパーバイザを形成させる、コンピュータ可読媒体。
JP2018535098A 2016-01-05 2017-01-04 仮想マシンを監査するためのシステムおよび方法 Active JP6761476B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662274902P 2016-01-05 2016-01-05
US62/274,902 2016-01-05
US15/045,979 2016-02-17
US15/045,979 US9965313B2 (en) 2016-01-05 2016-02-17 Systems and methods for auditing a virtual machine
PCT/EP2017/050112 WO2017118648A1 (en) 2016-01-05 2017-01-04 System and methods for auditing a virtual machine

Publications (2)

Publication Number Publication Date
JP2019503539A JP2019503539A (ja) 2019-02-07
JP6761476B2 true JP6761476B2 (ja) 2020-09-23

Family

ID=59235780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018535098A Active JP6761476B2 (ja) 2016-01-05 2017-01-04 仮想マシンを監査するためのシステムおよび方法

Country Status (12)

Country Link
US (3) US9965313B2 (ja)
EP (1) EP3400527A1 (ja)
JP (1) JP6761476B2 (ja)
KR (1) KR102255767B1 (ja)
CN (1) CN108475217B (ja)
AU (1) AU2017205257B2 (ja)
CA (1) CA3008201C (ja)
HK (1) HK1254084A1 (ja)
IL (1) IL260012B (ja)
RU (1) RU2691187C1 (ja)
SG (1) SG11201805390WA (ja)
WO (1) WO2017118648A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10181034B2 (en) * 2016-02-12 2019-01-15 Sophos Limited Virtual machine security
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10417065B2 (en) * 2016-06-13 2019-09-17 Dynatrace Llc Method and system for automated agent injection in container environments
US10515213B2 (en) * 2016-08-27 2019-12-24 Microsoft Technology Licensing, Llc Detecting malware by monitoring execution of a configured process
KR102179847B1 (ko) * 2016-11-11 2020-11-17 삼성에스디에스 주식회사 인프라 진단 시스템 및 그 방법
US10635479B2 (en) 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US11157300B2 (en) 2018-02-13 2021-10-26 Sophos Limited Managing virtual machine security resources
US11151603B2 (en) * 2018-12-31 2021-10-19 Microsoft Technology Licensing, Llc Optimizing content item delivery for installations of a mobile application
CN110278127B (zh) * 2019-07-02 2020-12-01 成都安恒信息技术有限公司 一种基于安全传输协议的Agent部署方法及系统
CN110719334B (zh) * 2019-10-18 2021-10-26 上海华讯网络系统有限公司 适用于云桌面行为的审计系统及方法
US11892939B2 (en) 2020-03-21 2024-02-06 Dynatrace Llc Automatic injection of agents into processes executing statically linked binaries
CN111290837B (zh) * 2020-05-07 2020-08-14 翱捷科技(上海)有限公司 一种构建轻量级虚拟化系统的方法
US11755374B2 (en) * 2020-05-26 2023-09-12 Dell Products L.P. Cloud resource audit system
RU2770136C1 (ru) * 2021-04-22 2022-04-14 Общество С Ограниченной Ответственностью "Кировский Региональный Центр Деловой Информации" Способ защиты компьютерной системы от несанкционированного доступа к информации, реализуемый на уровне аппаратной платформы посредством механизмов виртуализации, и устройство для его осуществления
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
CN114615013B (zh) * 2022-01-29 2022-12-02 北京永信至诚科技股份有限公司 一种网络靶场的综合审计方法及系统
CN114218599B (zh) * 2022-02-22 2022-05-27 飞狐信息技术(天津)有限公司 一种业务数据处理方法及装置、存储介质及电子设备
CN114625443A (zh) * 2022-03-23 2022-06-14 珠海雷酷互动科技有限公司 一种安卓系统虚拟环境运行方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US7698305B2 (en) * 2006-12-01 2010-04-13 Microsoft Corporation Program modification and loading times in computing devices
US9015704B2 (en) * 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
CN102099811B (zh) 2008-07-21 2015-04-08 国际商业机器公司 用于离线虚拟环境中的或与之相关的改进的方法和系统
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US11132237B2 (en) 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US20110154023A1 (en) * 2009-12-21 2011-06-23 Smith Ned M Protected device management
US8140735B2 (en) * 2010-02-17 2012-03-20 Novell, Inc. Techniques for dynamic disk personalization
US8938782B2 (en) 2010-03-15 2015-01-20 Symantec Corporation Systems and methods for providing network access control in virtual environments
US20130061012A1 (en) 2010-05-30 2013-03-07 Yoshio Turner Virtual machine code injection
US20120066681A1 (en) * 2010-09-12 2012-03-15 Levy Tomer System and method for management of a virtual machine environment
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US10102018B2 (en) 2011-05-27 2018-10-16 Red Hat, Inc. Introspective application reporting to facilitate virtual machine movement between cloud hosts
US8875295B2 (en) * 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
US9323931B2 (en) * 2013-10-04 2016-04-26 Bitdefender IPR Management Ltd. Complex scoring for malware detection
US9891940B2 (en) * 2014-12-29 2018-02-13 Nicira, Inc. Introspection method and apparatus for network access filtering
US9438618B1 (en) * 2015-03-30 2016-09-06 Amazon Technologies, Inc. Threat detection and mitigation through run-time introspection and instrumentation

Also Published As

Publication number Publication date
CN108475217B (zh) 2022-05-17
US20180253329A1 (en) 2018-09-06
US9965313B2 (en) 2018-05-08
IL260012B (en) 2020-04-30
KR20180099682A (ko) 2018-09-05
US20200065131A1 (en) 2020-02-27
WO2017118648A1 (en) 2017-07-13
HK1254084A1 (zh) 2019-07-12
US10489187B2 (en) 2019-11-26
US10949247B2 (en) 2021-03-16
EP3400527A1 (en) 2018-11-14
AU2017205257B2 (en) 2021-08-26
CN108475217A (zh) 2018-08-31
JP2019503539A (ja) 2019-02-07
KR102255767B1 (ko) 2021-05-27
CA3008201C (en) 2023-01-17
RU2691187C1 (ru) 2019-06-11
AU2017205257A1 (en) 2018-06-28
IL260012A (en) 2018-07-31
CA3008201A1 (en) 2017-07-13
SG11201805390WA (en) 2018-07-30
US20170192810A1 (en) 2017-07-06

Similar Documents

Publication Publication Date Title
JP6761476B2 (ja) 仮想マシンを監査するためのシステムおよび方法
US10445498B2 (en) Systems and methods of application control in virtualized environments
US11861005B2 (en) Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection/prevention, and/or other features
RU2679175C1 (ru) Способ поведенческого обнаружения вредоносных программ с использованием виртуальной машины-интерпретатора
US9507939B1 (en) Systems and methods for batch processing of samples using a bare-metal computer security appliance
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US8856473B2 (en) Computer system protection based on virtualization
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
JP6411494B2 (ja) 仮想マシンにおけるページフォールトインジェクション
US8910155B1 (en) Methods and systems for injecting endpoint management agents into virtual machines
Milenkoski et al. Experience report: an analysis of hypercall handler vulnerabilities
Hetzelt et al. Via: Analyzing device interfaces of protected virtual machines
Zhou et al. A coprocessor-based introspection framework via intel management engine
Botacin et al. Leveraging branch traces to understand kernel internals from within
Srivastava et al. Secure observation of kernel behavior
Zaidenberg et al. Hypervisor memory introspection and hypervisor based malware honeypot
Zhan et al. SAVM: A practical secure external approach for automated in‐VM management
Chen et al. DScope: To Reliably and Securely Acquire Live Data from Kernel-Compromised ARM Devices
Wei et al. Binary-centric defense of production operating systems against kernel queue injection attacks
Chang et al. Defeating TCG toctou attacks in trusted hvm
Wu Virtualization-Based Approaches for Mitigation of Malware Threats
Ibrahim et al. Virtual Machines Security in IaaS Platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200805

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: 20200807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200904

R150 Certificate of patent or registration of utility model

Ref document number: 6761476

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250