JP6317435B2 - マルウェア検出のための複雑なスコアリング - Google Patents

マルウェア検出のための複雑なスコアリング Download PDF

Info

Publication number
JP6317435B2
JP6317435B2 JP2016520024A JP2016520024A JP6317435B2 JP 6317435 B2 JP6317435 B2 JP 6317435B2 JP 2016520024 A JP2016520024 A JP 2016520024A JP 2016520024 A JP2016520024 A JP 2016520024A JP 6317435 B2 JP6317435 B2 JP 6317435B2
Authority
JP
Japan
Prior art keywords
entity
score
collection
entities
host system
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
JP2016520024A
Other languages
English (en)
Other versions
JP2016536667A (ja
JP2016536667A5 (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 JP2016536667A publication Critical patent/JP2016536667A/ja
Publication of JP2016536667A5 publication Critical patent/JP2016536667A5/ja
Application granted granted Critical
Publication of JP6317435B2 publication Critical patent/JP6317435B2/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/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
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess 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/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/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

[0001]本発明は、コンピュータシステムをマルウェアから保護するためのシステムおよび方法に関係する。
[0002]マルウェアとしても知られている、悪意あるソフトウェアは、世界中の多数のコンピュータシステムに影響を及ぼす。コンピュータウィルス、ワーム、ルートキット、およびスパイウェアなどのその多くの形態で、マルウェアは、深刻な危険を何百万ものコンピュータユーザにもたらし、ユーザを、とりわけ、データおよび機密情報の損失、個人情報の盗難(identity theft)、ならびに、生産性の損失に対して脆弱にする。
[0003]セキュリティソフトウェアは、ユーザのコンピュータシステムを汚染するマルウェアを検出するために、および加えて、そのようなマルウェアを除去する、または、そのようなマルウェアの実行を停止するために使用され得る。いくつかのマルウェア検出技法が、当技術分野で知られている。一部のものは、マルウェアエージェントのコードの断片を、マルウェアを示すシグネチャのライブラリとマッチングすることに依拠する。他の従来の方法は、マルウェアエージェントのマルウェアを示す挙動の集合を検出する。
[0004]検出を逃れる、および/または、セキュリティソフトウェアの動作を弱体化させるために、一部のマルウェアエージェントは、それらのコードを暗号化すること、または、わずかに異なるコードバージョンを各々の汚染されたコンピュータシステム上で使用すること(多形性)など、難読化技法を用いる。他の例示的な検出回避方法は、悪意ある活動をいくつかのアクションに分割し、各々のアクションは、別々のエージェントにより、場合によっては時間遅延を伴って実施される。他の例ではマルウェアは、例えば、特権昇格を使用することにより、および/または、セキュリティソフトウェアのコードを上書きすることにより、セキュリティソフトウェアをアクティブに攻撃し、不能にすることを試み得る。
[0005]マルウェア脅威の急速に変化する集合に遅れずについてゆくために、ロバストかつスケーラブルなアンチマルウェア解決策を開発することへの強い関心が存在する。
[0006]1つの態様によれば、ホストシステムは、エンティティ管理モジュールと、エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを備える。エンティティ管理モジュールは、評価されるソフトウェアエンティティのコレクションを管理するように構成され、コレクションを管理することが、コレクションの第1のエンティティの子孫エンティティの集合を識別することと、第1のエンティティが終了したものであるかどうかを決定することと、それに応じて、第1のエンティティが終了したものであるときに、子孫エンティティの集合のすべてのメンバが終了したものであるかどうかを決定することと、それに応じて、子孫エンティティの集合のすべてのメンバが終了したものであるときに、第1のエンティティをコレクションから除去することとを含む。エンティティ評価器は、第1のエンティティを評価基準によって評価することと、それに応じて、第1のエンティティが評価基準を満たすときに、評価インジケータをスコアリングエンジンに送信することとを行うように構成される。スコアリングエンジンは、第1のエンティティに対して決定される第1のスコア、および、コレクションの第2のエンティティに対して決定される第2のスコアを記録することであって、第1および第2のスコアが評価基準によって決定される、記録することと、第1および第2のスコアを記録することに応じて、ならびに、評価インジケータを受信することに応じて、第2のスコアを評価インジケータによって更新することと、それに応じて、第2のエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することとを行うように構成される。
[0007]別の態様によれば、非一時的コンピュータ可読媒体は、命令を記憶し、それらの命令は、実行されるとき、ホストシステムの少なくとも1つのプロセッサを、評価されるソフトウェアエンティティのコレクションを管理することであって、コレクションの第1のエンティティの子孫エンティティの集合を識別することと、第1のエンティティが終了したものであるかどうかを決定することと、それに応じて、第1のエンティティが終了したものであるときに、子孫エンティティの集合のすべてのメンバが終了したものであるかどうかを決定することと、それに応じて、子孫エンティティの集合のすべてのメンバが終了したものであるときに、選択されるエンティティをコレクションから除去することとを含む、管理することを行うように構成する。命令は、少なくとも1つのプロセッサを、第1のエンティティに対して決定される第1のスコア、および、コレクションの第2のエンティティに対して決定される第2のスコアを記録することであって、第1および第2のスコアが評価基準によって決定される、記録することを行うようにさらに構成する。命令は、少なくとも1つのプロセッサを、第1および第2のスコアを記録することに応じて、第1のエンティティを評価基準によって評価することを行うようにさらに構成する。命令は、少なくとも1つのプロセッサを、第1のエンティティを評価することに応じて、第1のエンティティが評価基準を満たすときに、第2のスコアを更新することと、第2のスコアを更新することに応じて、第2のエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することとを行うようにさらに構成する。
[0008]別の態様によれば、ホストシステムは、エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを備える。エンティティ評価器は、第1のソフトウェアエンティティを評価基準によって評価することであって、第1のソフトウェアエンティティがクライアントシステム上で実行する、評価することと、それに応じて、第1のソフトウェアエンティティが評価基準を満たすときに、評価インジケータをスコアリングエンジンに送信することとを行うように構成される。スコアリングエンジンは、評価インジケータを受信することに応じて、スコアを評価インジケータによって更新することであって、スコアが、前にホストシステム上で実行する第2のソフトウェアエンティティに対して決定され、第2のソフトウェアエンティティが、スコアを更新するときには、終了したものである、更新することを行うように構成される。スコアリングエンジンは、第2のスコアを更新することに応じて、第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することを行うようにさらに構成される。
[0009]別の態様によれば、方法は、ホストシステムの少なくとも1つのプロセッサを用いて、ホストシステム上で実行する第1のソフトウェアエンティティが評価基準を満たすかどうかを決定するステップを含む。方法は、第1のソフトウェアエンティティが評価基準を満たすときに、少なくとも1つのプロセッサを用いて、前にホストシステム上で実行する第2のソフトウェアエンティティに対して決定されるスコアを更新するステップであって、第2のソフトウェアエンティティが、スコアを更新するときには、終了しており、スコアが評価基準によって決定される、更新するステップをさらに含む。方法は、第2のスコアを更新するステップに応じて、少なくとも1つのプロセッサを用いて、第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定するステップをさらに含む。
[0010]本発明の前述の態様および利点は、以下の詳述される説明を読むことで、および、図面を参照することで、より良好に理解されることになろう。
[0011]本発明の一部の実施形態による、マルウェアから保護されるホストコンピュータシステムの例示的なハードウェア構成を示す図である。 [0012]本発明の一部の実施形態による、ホストシステム上で実行するセキュリティアプリケーションを含むソフトウェアオブジェクトの例示的な集合を示す図である。 [0013]仮想化をサポートするように構成されたホストシステム内の、仮想マシンの内部で実行するセキュリティアプリケーションを含むソフトウェアオブジェクトの例示的な集合を示す図である。 [0014]本発明の一部の実施形態による、アンチマルウェアオブジェクトの集合を含む、様々なプロセッサ特権レベルで、ホストシステム上で実行するソフトウェアオブジェクトの例示的な階層を例示する図である。 [0015]本発明の一部の実施形態による、図3のエンティティ管理モジュールにより実施されるステップの例示的なシーケンスを示す図である。 [0016]本発明の一部の実施形態による、複数のエンティティ評価器モジュールによりソフトウェアエンティティに対して決定される複数のエンティティ評価インジケータを受信する、例示的なスコアリングエンジンを示す図である。 [0017]Windows(登録商標)環境でのプロセスの集合の例示的な実行フローを例示する図であり、実線矢印は、アンチマルウェアシステムが存しないときの例示的な実行フローを示し、破線矢印は、実行フローに対する修正を示し、それらの修正は、本発明の一部の実施形態によって動作する、複数のエンティティ評価器により導入されるものである。 [0018]本発明の一部の実施形態による、エンティティ評価器モジュールにより実施されるステップの例示的なシーケンスを示す図である。 [0019]複数の例示的なエンティティ・スコアリング・オブジェクト(ESO:entity scoring object)を示す図であり、各々のESOは、本発明の一部の実施形態によって、それぞれのソフトウェアエンティティに対して決定され、ESOの例示的なデータフィールドは、とりわけ、それぞれのエンティティに対して決定される、エンティティ識別情報インジケータEID、複数のスコアS、および集計スコアAを含む。 [0020]本発明の一部の実施形態による、スコアリングエンジンにより、ソフトウェアエンティティをスコアリングするために使用される、スコア値の例示的な集合、および、重みの様々な例示的な集合を例示する図である。 [0021]本発明の一部の実施形態による、スコアリングエンジン(図3〜4)により実施されるステップの例示的なシーケンスを示す図である。 [0022]セキュリティサーバにコンピュータネットワークを介して接続される複数のホストシステムを備える例示的な構成を例示する図である。 [0023]本発明の一部の実施形態による、ホストシステムとセキュリティサーバとの間の例示的なアンチマルウェアトランザクションを示す図である。
[0024]以下の説明では、構造間のすべての記載される接続は、直接的な動作可能接続、または、中間構造を介した間接的な動作可能接続であり得ることが理解されたい。要素の集合は、1つまたは複数の要素を含む。要素のいかなる記載も、少なくとも1つの要素を指すと理解されたい。複数の要素は、少なくとも2つの要素を含む。別段必要とされない限り、いかなる説明される方法ステップも、必ずしも特定の例示される順序で実施される必要はない。第2の要素から導出される第1の要素(例えば、データ)は、第2の要素に等しい第1の要素、ならびに、第2の要素、および任意選択で他のデータを処理することにより生成される第1の要素を包含する。決定または判断をパラメータによって行うことは、決定または判断を、パラメータによって、および任意選択で他のデータによって行うことを包含する。別段指定されない限り、何らかの量/データのインジケータは、量/データ自体、または、量/データ自体とは異なるインジケータであり得る。別段指定されない限り、プロセスは、コンピュータプログラムのインスタンスを表し、コンピュータプログラムは、指定されるタスクをコンピュータシステムが実施するように決定する命令のシーケンスである。コンピュータ可読媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードドライブ、光学ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに、導電性ケーブルおよび光学ファイバリンクなどの通信リンクを包含する。一部の実施形態によれば、本発明は特に、本明細書で説明される方法を実施するようにプログラムされるハードウェア(例えば、1つまたは複数のプロセッサ)を備えるコンピュータシステム、および、本明細書で説明される方法を実施するための命令を符号化するコンピュータ可読媒体を提供する。
[0025]以下の説明は、本発明の実施形態を、例としてのものであって、必ずしも制限するものとしてではなく例示するものである。
[0026]図1は、本発明の一部の実施形態による、アンチマルウェア動作を実施するホストシステム10の例示的なハードウェア構成を示す。ホストシステム10は、とりわけ、エンタープライズサーバなどの企業コンピューティングデバイス、または、パーソナルコンピュータもしくはスマートフォンなどのエンドユーザデバイスを表し得る。他のホストシステムは、TVおよびゲームコンソールなどの娯楽デバイス、または、仮想化をサポートし、マルウェア保護を要する、メモリおよびプロセッサを有する任意の他のデバイスを含む。図1は、コンピュータシステムを例示の目的で示すが、移動電話またはタブレットなどの他のクライアントデバイスは、異なる構成を有し得る。一部の実施形態ではシステム10は、すべてがバス24の集合により接続される、プロセッサ12、メモリユニット14、入力デバイス16の集合、出力デバイス18の集合、記憶デバイス20の集合、および、ネットワークアダプタ22の集合を含む、物理デバイスの集合を備える。
[0027]一部の実施形態ではプロセッサ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に接続するサウスブリッジを備え得る。
[0028]図2−Aは、ハードウェア仮想化を用いない構成での、ホストシステム10上で実行するソフトウェアオブジェクトの例示的な集合を示す。一部の実施形態ではゲストオペレーティングシステム(OS)34は、ホストシステム10のハードウェアに対するインターフェイスを提供するソフトウェアを含み、ソフトウェアアプリケーション42a〜cおよび44の集合に対するホストとして働く。OS34は、とりわけ、Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(商標)などの任意の広く利用可能なオペレーティングシステムを含み得る。アプリケーション42a〜cは、とりわけ、ワード処理、画像処理、データベース、ブラウザ、および電子通信アプリケーションを含み得る。
[0029]図2−Bは、ハードウェア仮想化を使用する実施形態での、ホストシステム10上で実行するソフトウェアオブジェクトの例示的な集合を示す。ゲスト仮想マシン32a〜bの集合が、ハイパーバイザ30によりエクスポーズされる。仮想マシン(VM)は、各々がそれ自体のオペレーティングシステムおよびソフトウェアを他のVMから独立して走らせる能力がある、実際の物理マシン/コンピュータシステムのソフトウェアエミュレーションとして、当技術分野で普通に知られている。ハイパーバイザ30は、多重の仮想マシンによる、プロセッサ動作、メモリ、記憶装置、入出力、およびネットワーキングデバイスなどの、ホストシステム10のハードウェアリソースの多重化(共有)を可能とするソフトウェアを含む。一部の実施形態ではハイパーバイザ30によって、多重の仮想マシンおよび/またはオペレーティングシステム(OS)が、同時にホストシステム10上で、様々な程度の隔離によって走ることが可能になる。そのような構成を可能にするために、ハイパーバイザ30の部分を形成するソフトウェアは、複数の仮想化される、すなわち、ソフトウェアエミュレーションされるデバイスを創出し得るものであり、各々の仮想化されるデバイスは、とりわけプロセッサ12およびメモリ14などの、システム10の物理ハードウェアデバイスをエミュレーションする。ハイパーバイザ30は、仮想デバイスの集合を、ホストシステム10上で動作する各々のVMにさらに割り当て得る。したがって各々のVM32a〜bは、そのVMが物理デバイスのそのVM自体の集合を所有するかのように、すなわち、程度の差はあれ完全形のコンピュータシステムとして動作する。仮想デバイスの、仮想マシンに対しての創出および割り当ては、それぞれのVMをエクスポーズすることとして、当技術分野で普通に知られている。普及しているハイパーバイザの例は、とりわけ、VMware Inc.製のVMware vSphere(商標)、および、オープンソースのXenハイパーバイザを含む。
[0030]一部の実施形態ではハイパーバイザ30は、下記でさらに説明されるようなアンチマルウェア動作を実施するように構成されたメモリイントロスペクション(introspection)エンジン40を含む。エンジン40は、ハイパーバイザ30内に組み込まれ得るものであり、または、ハイパーバイザ30とは別個で独立した、ただし、ハイパーバイザ30と実質的に同様のプロセッサ特権レベルで実行する、ソフトウェアコンポーネントとして給送され得る。単一のエンジン40が、ホストシステム10上で実行する多重のVMをマルウェア保護するように構成され得る。
[0031]図2−Bは、2つだけのVM32a〜bを簡単のために示すが、ホストシステム10は、多数の、例えば何百ものVMを同時に動作させ得るものであり、そのようなVMの数は、ホストシステム10の動作の間に変化し得る。一部の実施形態では各々のVM32a〜bは、ゲストオペレーティングシステム34a〜b、ならびに/または、ソフトウェアアプリケーション42d〜eおよび42fの集合を、それぞれ、同時に、および、ホストシステム10上で走る他のVMから独立して実行する。各々のOS34a〜bは、それぞれのVM32a〜bの(仮想化される)ハードウェアに対するインターフェイスを提供するソフトウェアを含み、それぞれのOS上で実行するコンピューティングアプリケーションに対するホストとして働く。
[0032]一部の実施形態ではセキュリティアプリケーション44は、下記で詳述されるようなアンチマルウェア動作を実施して、ホストシステム10をマルウェアから保護するように構成される。図2−Bの例では、アプリケーション44のインスタンスが、各々のVM32a〜b上で実行し得るものであり、各々のそのようなインスタンスは、それぞれの仮想マシンを保護するように構成される。セキュリティアプリケーション44は、スタンドアロンプログラムであり得るものであり、または、とりわけ、アンチマルウェア、アンチスパム、およびアンチスパイウェアのコンポーネントを含む、ソフトウェアスイートの部分を形成し得る。
[0033]図3は、本発明の一部の実施形態による、ホストシステム10上で実行するソフトウェアオブジェクトの階層を例示する。図3は、仮想化環境で実行するように構成された例示的な実施形態を示すが、例示される実施形態が、VM32の内部の代わりにホストシステム10上で直接実行するように修正され得ることは、当業者には明らかであり得る。図3は、当技術分野ではレイヤまたは保護リングとしても知られている、プロセッサ特権レベルの観点から表される。一部の実施形態では、各々のそのようなレイヤまたは保護リングは、それぞれのプロセッサ特権レベルで実行するソフトウェアオブジェクトが実行することを可能とされる、命令の集合により特徴付けられる。ソフトウェアオブジェクトが、それぞれの特権レベルの内部で可能とされない命令を実行しようと試みるとき、その試みは、例外、障害、または仮想マシン終了(exit)イベントなどのプロセッサイベントをトリガし得る。一部の実施形態では、特権レベル間の切り替えが、専用化された命令の集合によって実現され得る。そのような例示的な命令は、ユーザレベルからカーネルレベルに切り替えるSYSCALL/SYSENTER、カーネルレベルからユーザレベルに切り替えるSYSRET/SYSEXIT、ユーザレベルまたはカーネルレベルのいずれかからルートレベルに切り替えるVMCALL、および、ルートレベルからカーネルレベルまたはユーザレベルのいずれかに切り替えるVMRESUMEを含む。
[0034]オペレーティングシステム34の大部分のコンポーネントは、当技術分野ではカーネルレベルまたはカーネルモードとして知られているプロセッサ特権レベル(例えば、Intelプラットフォーム上のリング0)で実行する。アプリケーション42gは、OS34より劣るプロセッサ特権(例えば、リング3またはユーザモード)で実行する。仮想化をサポートする実施形態では、ハイパーバイザ30は、ルートレベルまたはルートモードとも知られている、最も特権を与えられるレベル(例えば、Intel(登録商標)プラットフォーム上のリング−1またはVMXroot)でプロセッサ12の制御を行って、仮想マシン32を、OS34、および、アプリケーション42gなどの他のソフトウェアオブジェクトにエクスポーズする。
[0035]一部の実施形態では、セキュリティアプリケーション44の部分は、ユーザレベルプロセッサ特権、すなわち、アプリケーション42gと同じレベルで実行し得る。例えばそのような部分は、グラフィカルユーザインターフェイスを含み得るものであり、そのグラフィカルユーザインターフェイスは、ユーザに、それぞれのVM上で検出される何らかのマルウェアまたはセキュリティ脅威を知らせ、例えば、アプリケーション44に対する所望される構成オプションを示す、ユーザからの入力を受信するものである。ユーザレベルで実行するコンポーネントの別の例は、下記で詳述されるように動作するユーザレベルエンティティ評価器50aである。一部の実施形態では、ユーザレベルエンティティ評価器50aの部分は、セキュリティアプリケーション44の内部で動作し得るものであり、一方で別の部分(フッキングモジュールなど)は、アプリケーション42gなどの評価されるアプリケーションの内部で動作し得る。アプリケーション44の他の部分は、カーネル特権レベルで実行し得る。例えばアプリケーション44は、すべてがカーネルモードで動作する、アンチマルウェアドライバ36、エンティティ管理モジュール37、およびスコアリングエンジン38をインストールし得る。ドライバ36は、例えば、メモリをマルウェアシグネチャに対してスキャンするための、ならびに/または、OS34上で実行するプロセスおよび/もしくは他のソフトウェアオブジェクトの、マルウェアを示す挙動を検出するための、アンチマルウェアアプリケーション44に対する機能性を提供する。一部の実施形態ではアンチマルウェアドライバ36は、下記で詳述されるように動作するカーネルレベルエンティティ評価器50bを含む。
[0036]一部の実施形態ではエンティティ管理モジュール37は、ホストシステム10(またはVM32)の内部で実行するソフトウェアエンティティのコレクションを管理する。一部の実施形態ではコレクションは、マルウェアに対して、55a〜bなどのエンティティ評価モジュールにより評価されているすべてのエンティティを含む。コレクションを管理するために、モジュール37は、下記のモード詳細で示されるようなエンティティ起動および/または終了イベントなどのライフサイクルイベントの発生を検出することに応じて、コレクションのエンティティを追加および/または除去し得る。モジュール37は、親エンティティの子エンティティ(例えば、子プロセス)を決定する、および/または、選択されるエンティティが、ライブラリなどのソフトウェアオブジェクトを別のエンティティ内に注入したかどうか、もしくは、選択されるエンティティが、別のソフトウェアエンティティによる注入の対象であるかどうかを決定するなど、エンティティ間の関係性をさらに決定し得る。子エンティティは、親エンティティと呼ばれる別の実行可能エンティティにより創出される実行可能エンティティであり、子エンティティは、親エンティティから独立して実行する。例示的な子エンティティは、例えば、Windows(登録商標)OSのCreateProcess関数によって、または、Linux(登録商標)でのフォーク機構によって創出される、子プロセスである。コード注入は、動的リンクライブラリ(DLL)などのコードのシーケンスを現存するプロセスのメモリ空間内に導入して、それぞれのプロセスの元の機能性を改変する方法の一群を示すために、当技術分野で使用される総称用語である。プロセスの起動を検出すること、および/または、コード注入を検出することなどのタスクを実施するために、モジュール37は、ある決まったOS関数を呼び出すこと、またはフックすることなどの、当技術分野で知られている任意の方法を用い得る。例えば、Windows(登録商標)OSを走らせるシステムでは、モジュール37は、PsSetCreateProcessNotifyRoutineコールバックを登録して、新しいプロセスの起動を検出し、および/または、CreateRemoteThread関数をフックして、注入されるコードの実行を検出し得る。
[0037]図4は、本発明の一部の実施形態による、エンティティ管理モジュール37により実施されるステップの例示的なシーケンスを示す。ステップ250〜252のシーケンスでモジュール37は、例えば、上記で説明された方法を使用して、エンティティライフサイクルイベントをインターセプトする。そのようなイベントが発生したとき、ステップ254は、それぞれのイベントをトリガするエンティティを識別する。ステップ258は、それぞれのエンティティの一意的なエンティティ識別インジケータ(EID)を決定するステップを含み得るものであり、そのようなインジケータは、下記でさらに示されるように、それぞれのエンティティをスコアリングする際に使用され得る。ステップ256は、イベントが、新しいエンティティ(例えば、新しいプロセス)の起動を含むかどうかを決定し、いいえ(NO)であるとき、モジュール37はステップ260に進む。イベントが起動を含むとき、ステップ258でモジュール37は、トリガするエンティティを、評価されるエンティティのコレクションに追加し得る。ステップ260は、イベントが、子エンティティを生み出す親エンティティを含むかどうかを決定するステップを含み、いいえであるとき、モジュール37はステップ264に進み得る。はい(YES)であるとき、ステップ262でモジュール37は、それぞれの子エンティティを、評価されるエンティティのコレクションに追加し得る。ステップ262は、子エンティティのEIDを決定し、トリガするエンティティと子エンティティとの間の関係を、派生(親−子)関係として登録するステップをさらに含み得る。
[0038]一部の実施形態ではステップ264は、イベントがコードの注入を含むかどうかを決定し、いいえであるとき、モジュール37はステップ268に進み得る。はいであるとき、モジュール37は、コード注入の発生源エンティティおよび対象エンティティを識別し得るものであり、発生源エンティティは、コードを対象エンティティ内に注入するものである。ステップ266でモジュール37は、発生源エンティティと対象エンティティとの間のコード注入タイプの関係を登録し得る。
[0039]ステップ268でエンティティ管理モジュール37は、イベントが、トリガするエンティティの終了を含むかどうかを決定し、いいえであるとき、モジュール37はステップ250に戻る。一部の実施形態ではエンティティは、それぞれのエンティティのすべてのコンポーネントが実行を終えたときに、終了させられたとみなされる。例えばプロセスは、それぞれのプロセスのすべてのスレッドが実行を終えたときに、終了する。イベントが、トリガするエンティティの終了を含んでいたとき、ステップ270でモジュール37は、トリガするエンティティの子孫エンティティの集合を決定し得る。一部の実施形態では、トリガするエンティティの子孫エンティティは、それぞれのエンティティの子エンティティ、および、それらの子エンティティの子エンティティを、多重の世代にわたって含む。一部の実施形態では子孫エンティティは、トリガするエンティティにより注入されるコードを含む対象エンティティ、および、対象にされるエンティティにより対象にされるエンティティを再帰的に含み得る。ステップ272でモジュール37は、子孫エンティティの集合のすべてのエンティティが終了したものであるかどうかを決定し得るものであり、いいえであるとき、実行はステップ250に戻る。すべての子孫が終了したものであるとき、ステップ274でエンティティ管理モジュール37は、トリガするエンティティを、評価されるエンティティのコレクションから除去し得る。
[0040]一部の実施形態ではスコアリングエンジン38は、データを、評価器50a〜bなどの複数のエンティティ評価器モジュールから受信することであって、データが、評価されるソフトウェアエンティティに対して決定される、受信することと、それぞれのエンティティが悪意あるものであるかどうかを、それぞれのデータによって決定することとを行うように構成される。一部の実施形態では、スコアリングエンジン38により分析されるソフトウェアエンティティは、とりわけ、プロセスおよび実行スレッドなどの実行可能オブジェクトを含む。プロセスは、アプリケーション、または、オペレーティングシステムの部分などの、コンピュータプログラムのインスタンスであり、少なくとも実行スレッド、および、オペレーティングシステムによりそれに割り当てられる仮想メモリのセクションを有することにより特徴付けられ、それぞれのセクションは実行可能コードを含む。一部の実施形態では、評価されるソフトウェアエンティティは、実質的に範囲および複雑度において、例えば、オペレーティングシステムおよび/または仮想マシンの、個々のスレッドから、個々のアプリケーションまで、全体のインスタンスまで変動し得る。
[0041]図5は、複数の評価インジケータ52a〜dを受信する、例示的なスコアリングエンジン38を示すものであり、各々のインジケータ52a〜dはエンティティ評価器により決定される。図5においてそのような評価器は、とりわけ、ユーザレベルエンティティ評価器50a、カーネルレベルエンティティ評価器50b、およびシステムコール評価器50cを含む。各々のそのような評価器モジュールは、他の評価器から独立して実行し得るものであり、各々は、評価されるソフトウェアエンティティの複数の別個のエンティティ評価インジケータを決定し得る。ハードウェア仮想化を実装するシステムでは、図5でのインジケータ52a〜cなどの一部の評価インジケータは、VM32の内部で実行するコンポーネントにより決定され、一方で、52dなどの他の評価インジケータは、(例えば、メモリイントロスペクションエンジン40により)VM32の外側で実行するコンポーネントにより決定される。一部の実施形態では、各々の評価インジケータ52a〜dはエンティティ識別インジケータを含み、そのエンティティ識別インジケータによってエンジン38は、それぞれの評価インジケータを、その評価インジケータが決定された対象であるソフトウェアエンティティに一意的に関連付けることが可能となる。
[0042]一部の評価インジケータは、マルウェアを示すものであり得るものであり、すなわち、評価されるエンティティが悪意あるものであることを示し得る。一部の評価インジケータは、それら自体はマルウェアを示すものでない場合があるが、他の評価インジケータと組み合わされるときに、悪意あることを示す場合がある。各々の評価インジケータ52a〜dは、別個の方法および/または基準によって決定され得る。例示的な評価基準は、評価されるエンティティが、ディスクファイルに書き込むこと、VM32のシステム登録キーを編集すること、または、保護されるソフトウェアオブジェクトに属するメモリページに書き込むことなどの、ある決まったアクションを実施するかどうかを決定することなどの挙動基準を含む。別の例示的な基準は、評価されるエンティティに属するメモリのセクションが、マルウェアを示すシグネチャを内包するかどうかを決定することを含み得る。
[0043]エンティティ評価器50a〜cの動作を例示するために、図6は、本発明の一部の実施形態による、ソフトウェアエンティティ70a〜bの集合の例示的な実行フローを示す。簡単のために、選定されるエンティティ70a〜bは、Windows(登録商標)OSのインスタンスで実行するプロセスであるが、同様の線図が、例えばLinuxなどの他のオペレーティングシステムに対して描写され得る。実線矢印は、エンティティ評価器が存しないときの(例えば、セキュリティアプリケーション44が存しないときの)実行フローを表す。破線矢印は、本発明の一部の実施形態によって実行する、エンティティ評価器50a〜cが存することに起因する、フローに対する修正を表す。
[0044]プロセス70aは、複数の動的リンクされるライブラリ(DLL)72a〜cをロードし、図6の例ではDLL72cは、プロセス70a内に(場合によっては悪意ある)プロセス70bにより注入される。プロセス70a(または、そのロードされるDLLの1つ)が、何らかのシステム機能性を呼び出す命令を実行して、例えば、何かをディスクファイルに書き込む、または、レジストリキーを編集するとき、それぞれの命令は、KERNEL32.DLLまたはNTDLL.DLLなどのユーザモードAPIを呼び出す。図6の例では、それぞれのユーザモードAPIコールは、ユーザレベル挙動フィルタ50aによりインターセプトおよび分析される。そのようなインターセプトは、とりわけ、DLL注入またはフッキングなどの方法により実現され得る。フッキングは、ソフトウェアコンポーネント間で渡される、関数コール、またはメッセージ、またはイベントをインターセプトする方法に対する、当技術分野で使用される総称用語である。1つの例示的なフッキング方法は、対象関数のエントリポイントを、実行を第2の関数にリダイレクトする命令を挿入することにより改変するステップを含む。そのようなフッキングの後に続いて、第2の関数が、対象関数の代わりに、またはその対象関数の前に実行され得る。図6の例ではアンチマルウェアドライバ36は、KERNEL32.DLLまたはNTDLL.DLLのある決まった関数内にフックして、それぞれの関数に、実行をフィルタ50aにリダイレクトするように命令し得る。したがってフィルタ50aは、プロセス70aが、フックされる関数によって識別される、ある決まった挙動を実施しようと試みていることを検出し得る。フィルタ50aがそのような挙動を検出するとき、フィルタ50は、評価インジケータ52aを定型化(formulate)し、インジケータ52aをスコアリングエンジン38に送信し得る(例えば、図5を確認されたい)。
[0045]実行の典型的なフローでは、エンティティ70aにより呼び出されるユーザモードAPI関数は、サービスをオペレーティングシステムのカーネルに要求し得る。一部の実施形態ではそのような動作は、x86プラットフォーム上のSYSCALLおよびSYSENTERなどのシステムコールを発行することにより実施される。図6の例ではそのようなシステムコールは、システムコール評価器50cによりインターセプトされる。一部の実施形態ではそのようなインターセプトは、例えば、システムコールハンドラルーチンを、プロセッサ12のモデル固有レジスタ(MSR)に記憶される値を変化させることにより修正することを含み、そのことは、実行をフィルタ50cに効果的にリダイレクトする。そのような技法は、MSRフッキングとして当技術分野で知られており、そのような技法によって、システムコール評価器50cは、評価されるプロセスが、ある決まったシステムコールを実施しようと試みていることを検出することが可能となり得る。そのようなシステムコールがインターセプトされるとき、システムコールフィルタ50cは、エンティティ評価インジケータ52cを定型化し、インジケータ52cをスコアリングエンジン38に送信し得る。
[0046]システムコールの後に続いて、プロセッサの制御が、典型的には、OS34のカーネルに引き継がれる。一部の実施形態では、カーネルレベルエンティティ評価器50bは、OSカーネルの、ある決まった動作をインターセプトし、したがって、評価されるプロセスが、悪意あるものであり得る、ある決まった動作を実施しようと試みていることを決定するように構成される。そのような動作をインターセプトするために、一部の実施形態は、OS34内に構築され、OS34によりエクスポーズされる、フィルタリング機構の集合を用い得る。例えばWindows OSでは、FltRegisterFilterが、ファイルを創出すること、ファイルを開くこと、ファイルに書き込むこと、および、ファイルを削除することのような動作をインターセプトするために使用され得る。別の例では評価器50bは、ObRegisterCallbackを使用して、オブジェクトハンドルを創出もしくは複製する動作をインターセプトし、または、PsSetCreateProcessNotifyRoutineを使用して、新しいプロセスの創出をインターセプトし得る。さらに別の例では、レジストリキー/値を創出および設定することなどのWindowsレジストリ動作が、CmRegisterCallbackExを使用してインターセプトされ得る。同様のフィルタリング機構が、当技術分野で、Linux(登録商標)などの他のオペレーティングシステムに対して知られている。カーネルモードエンティティ評価器50bがそのような動作をインターセプトするとき、評価器50bは、エンティティ評価インジケータ52bを定型化し、インジケータ52bをスコアリングエンジン38に送信し得る。
[0047]エンティティ評価インジケータ52a〜cなどのデータを、評価器50a〜cからスコアリングエンジン38に送信するために、当業者であれば、任意のプロセス間通信方法を用い得る。例えば、ユーザモードコンポーネントとカーネルモードコンポーネントとの間で通信するために、評価器50a〜cおよびエンジン38は、メモリの共有されるセクションを使用するように構成され得る。データ交換が、VM32の内部で実行するコンポーネントと、それぞれのVMの外側で実行するコンポーネントとの間で必要とされるとき、そのような通信が、仮想化の当技術分野で知られている任意の方法を使用して実施され得る。例えば、評価インジケータ52dを、メモリイントロスペクションエンジン40からスコアリングエンジン38に送信するために、一部の実施形態は、中断注入機構を使用して、エンジン38に、データがそれぞれのVMの外側から送信されていることをシグナリングする。実際のデータは、例えば、上記で説明された共有されるメモリセクションによって転送され得る。
[0048]図7は、本発明の一部の実施形態による、図4〜5での評価器50a〜cおよび/またはメモリイントロスペクションエンジン40などの、エンティティ評価器により実施されるステップの例示的なシーケンスを示す。ステップ302〜304のシーケンスでエンティティ評価器は、ホストシステム10および/または仮想マシン32の内部でのトリガイベントの発生に対して待機する。例示的なトリガイベントは、とりわけ、特定のプロセッサ命令を発行すること、記憶デバイス20もしくはネットワークアダプタ22などの特定のひとまとまりのハードウェアを使用しようと試みること、または、保護されるメモリページに書き込もうと試みることなど、ある決まった挙動を実施するソフトウェアエンティティを含む。例えば、評価器50cに対するトリガイベントは、システムコール(例えば、SYSENTER)を発行するソフトウェアエンティティを含み得る。評価器50dに対するトリガイベントの別の例は、UrlDownloadToFile APIの関数を呼び出すアプリケーションを含み得る。トリガイベントの発生を検出するために、それぞれのエンティティ評価器は、とりわけ、コード注入およびMSRフッキングなどの、当技術分野で知られている任意の方法を使用し得る。トリガイベントインターセプトの一部の例は、図6に関係して上記で説明されている。
[0049]トリガイベントが検出されるとき、ステップ306でエンティティ評価器は、それぞれのトリガイベントを引き起こすソフトウェアエンティティ(例えば、プロセス)を識別し得る。一部の実施形態ではエンティティ評価器は、ソフトウェアエンティティの識別情報を、OS34により、現在実行中の各々のプロセスおよび/またはスレッドを表すために使用される、データ構造から決定し得る。例えばWindowsでは、各々のプロセスはエグゼクティブプロセスブロック(EPROCESS)として表され、そのブロックは、とりわけ、それぞれのプロセスのスレッドの各々に対するハンドル、および、OS34が、それぞれのプロセスを複数の実行するプロセスから識別することを可能とする、一意的なプロセスIDを含む。同様のプロセス/スレッド表現が、Linuxなどの他のOSに対して利用可能である。
[0050]ステップ308でエンティティ評価器は、評価インジケータを定型化し得るものであり、その評価インジケータは、それぞれのソフトウェアエンティティの識別子(例えば、プロセスID)、および、それぞれのソフトウェアエンティティにより実施され、ステップ302〜304でインターセプトされるアクション/イベントの種類のインジケータを含む。一部の実施形態ではエンティティ評価器は、それぞれのソフトウェアエンティティのアクションおよび/または挙動のタイプを、インターセプトされるトリガイベントのパラメータから決定し得る。動作の例では、プロセスが、ファイルをインターネットからダウンロードしようと試みるとき、ユーザレベルエンティティ評価器50aは、その試みをインターセプトし得る。どのプロセスがアクションを実施しているかを識別することに加えて、評価器50aはさらには、とりわけ、アクション(ファイルをダウンロードすること)のタイプ、ファイルがダウンロードされるIPアドレス、および、ダウンロードされるファイルのディスク位置を決定し得る。そのようなデータが評価インジケータ内に選択的に組み込まれ得るものであり、そのことによって、スコアリングエンジン38は、エンティティXがアクションYをパラメータZによって実施したことを決定することが可能となる。ステップ310でエンティティ評価器は、評価インジケータをスコアリングエンジン38に送信する。
[0051]一部の実施形態では、スコアリングエンジン38および/またはエンティティ管理モジュール37は、ホストシステム10(または、VM32)上で実行するプロセスおよびスレッドなどの、評価されるソフトウェアエンティティの集中型の知識ベースを維持する。図8は、各々がそれぞれ例示的なエンティティ・スコアリング・オブジェクト(ESO)74a〜cとして表される、評価されるエンティティ70c〜eの集合を示す。各々のESOは複数のデータフィールドを含み、それらのデータフィールドの一部が、図8で例示される。そのようなフィールドは、一意的なエンティティ識別子(EID)76a、複数の評価スコア76b、および集計スコア76dを含み得る。一部の実施形態では評価スコア76bは、エンジン38により、個々のエンティティ評価器から受信される評価インジケータ52a〜dによって決定される。各々のそのようなスコアは、インジケータ76cにより識別される評価基準によって決定され得る。一部の実施形態では評価スコア76bは、各々のスコアがそれぞれの基準によるものと考えられるように、評価基準76cとの1対1対応を有する。例えば、特定の基準Cは、評価されるエンティティが、ファイルをインターネットなどのコンピュータネットワークからダウンロードするかどうかを決定することを含み得る。1つのそのような例では、それぞれのスコアSが、評価されるエンティティがダウンロードを試みる場合にのみ付与され得る。
[0052]一部の実施形態ではESO74aは、フラグ76eの集合をさらに含み得る。一部のフラグ76eは、バイナリインジケータ(例えば、0/1、はい/いいえ)であり得る。1つのそのような例ではフラグは、それぞれの評価されるエンティティEが、特定の評価基準を満たすかどうか(例えば、Eが、インターネットからダウンロードされた実行可能ファイルであるかどうか、Eが、コマンドラインモードで走るかどうか、その他)を示す。別の例示的なフラグは、エンティティEの分類を示すものであり、例えば、Eが、トロイの木馬マルウェア、ブラウザオブジェクト、PDFリーダアプリケーション、その他などの、オブジェクトの特定のカテゴリに属することのインジケータである。フラグの例示的な使用は、エンティティEの評価スコアSの更新が、Eの別の評価スコアSの更新をトリガする状況を含む(下記で確認されたい)。フラグは、そのような共同更新(co−update)機構をオンおよびオフにするために使用され得る。例えば、Eが評価基準Cを満たすとき(例えば、エンティティが特定のアクションを実施する場合)、エンティティEはさらには、基準Cを満たす公算が大きいことが知られている場合がある。したがって、スコアSが更新されるときにスコアSの更新をトリガする、接続<C,C>を示すフラグFが、エンティティEに対して設定され得る。
[0053]ESO74aは、それぞれのエンティティが、現在アクティブであるか、それとも、終了したものであるかを示す、終了インジケータ76fをさらに含み得る。そのような終了インジケータによって、スコアリングエンジン38は、終了したものであるエンティティの記録を保つこと、および/または、それらのエンティティのスコアを更新することが可能となり得る。ESO74aは、それぞれのエンティティEに関係付けられるソフトウェアエンティティの識別子の集合をさらに含み得る。そのような関係付けられるソフトウェアエンティティの例は、識別子76gにより表象されるEの親エンティティ、および、識別子76hにより表象されるEの子エンティティの集合を含み得る。ESO74aは、内にEがコードを注入したソフトウェアエンティティを識別する、注入対象エンティティのインジケータの集合(項目76j)をさらに、および、コードをE内に注入したソフトウェアエンティティを識別する、注入発生源エンティティのインジケータの集合(項目76k)をさらに含み得る。
[0054]一部の実施形態では、評価されるソフトウェアエンティティのスコアリングは、スコア値の集合によって、およびさらには、追加的なパラメータによって進行する。図9は、そのようなデータを例示するものであり、スコア値の集合は、項目80により表象される。スコア値は、それらの対応する評価基準C、…Cによりインデックス付けされる。各々のそのような値は、例えば、評価されるエンティティが、そのエンティティがそれぞれの評価基準を満たす場合(例えば、そのエンティティがファイルをインターネットからダウンロードする場合、そのエンティティがMS Word(登録商標)文書に書き込む場合、その他)に受け取る、あらかじめ決定された数のポイントを表し得る。
[0055]スコアリングを制御する例示的なパラメータは、初期化重み82aの集合、伝搬重み82bの集合、新しいインスタンス重み82cの集合、例外重み82dの集合、および、フラグ誘導される(flag−induced)重み82eの集合を含む。重み82a〜eは、評価基準C、…Cによりインデックス付けされる。一部のタイプの重みは、1つの重み値wが各々のCに対して存在するように、評価基準との1対1対応である。他のタイプの重みは、評価基準との1対多対応である。1つのそのような例は、図9での例外重み82dであり、特定の評価基準Cに対応する複数の重みwijが存在し得る。重みは、図9の例により例示されるように、エンティティのクラスまたはカテゴリによりグループ化され得るものであり、例えば、ワード処理アプリケーション(例えば、MS Word(登録商標))に適用可能な第1の重み値、ウェブブラウザ(例えば、Firefox(登録商標)およびMS Internet Expolrer(登録商標))に適用可能な(場合によっては、第1のものとは別個の)第2の重み値、および、ファイルマネージャアプリケーション(例えば、Windows Explorer(登録商標))に適用可能な第3の重み値が存在し得る。エンティティの異なるカテゴリの間で区別することは有用であり得るものであり、その理由は、一部の評価基準は、エンティティの1つのカテゴリに対して、他のものに対してよりマルウェアを示し得るからというものである。より一般的には、各々のスコアリング重みは、タプル<C,E,…>によりインデックス付けされ得るものであり、Cは、特定の評価基準を表象し、Eは、特定の評価されるエンティティを表象する。スコアリング重み82a〜eを記憶する、および、それらの重みにアクセスするための実際のデータフォーマットは、実施形態の間で変動し得る。重み82a〜eは、とりわけ、行列、リスト、リレーショナルデータベース(RDB)、または、拡張可能マークアップ言語(XML)構造として記憶され得る。スコアリングに対する重みの例示的な使用が、下記で論考されることになる。
[0056]スコア値80および/または重み82a〜eは、例えば、人間のオペレータによりあらかじめ決定される。一部の実施形態ではそのような値は、時間的に変化し得るものであり、マルウェア検出を最適化するように調整され得る。更新されるスコア値および/または重み値は、ホストシステム10に、周期的な、および/またはオンデマンドのソフトウェア更新として、セキュリティサーバから給送され得る(図10〜11に関係する下記を確認されたい)。
[0057]図10は、本発明の一部の実施形態による、スコアリングエンジン38により実行されるステップの例示的なシーケンスを示す。ステップ302でエンジン38は、エンティティ評価インジケータを、エンティティ評価器、例えば、図5での評価器50a〜cの1つから受信する。ハードウェア仮想化を実装する一部の実施形態では、エンジン38は、それぞれのエンティティ評価インジケータを、それぞれの仮想マシンの外側で実行するコンポーネント(例えば、図5でのメモリイントロスペクションエンジン40)から受信し得る。ステップ304でエンジン38は、それぞれのエンティティ評価インジケータが決定された対象であるソフトウェアエンティティを、例えば、それぞれの評価インジケータに埋め込まれるエンティティIDによって識別し得る(図7に関係する上記を確認されたい)。
[0058]次にスコアリングエンジン38は、ステップ304で識別されるエンティティEに対して、および、Eに関係付けられる他のエンティティに対して、ステップ318〜332のブロックを実施する。そのような関係付けられるエンティティは、とりわけ、Eの親および子のエンティティ、内にEがコードを注入した注入対象エンティティ、ならびに、コードをE内に注入した注入発生源エンティティを含み得る。この様式では、エンジン38が評価インジケータ(例えば、エンティティEが特定のアクションを実施したことを示す)を受信するごとに、ブロック318〜332は、エンティティEの評価スコアのみでなく、Eに関係付けられるエンティティの評価スコアもまた更新して、いくつかの回数、実行し得る。一部の実施形態ではブロック318〜332は、Eに対して1回、および、Eに関係付けられる各々のエンティティEに対して1回実行される。代替的実施形態ではブロック318〜332は、何らかの収束基準が満たされるまで再帰的に実行される。例示的な収束基準は、Eおよび/またはEの評価スコアが、ブロック318〜332の連続する実行間で変化するかどうかを検証し、そのような変化が存在しないときに終了すること(exiting)を含む。図10の例示的なアルゴリズムでは、変数Xが、スコア更新を現在受けるエンティティを示すために使用される。ステップ316でXは、ステップ304で識別されるエンティティEに設定される。
[0059]ステップ318でエンジン38は、エンティティXの評価スコア(例えば、図8でのエンティティ76b)を更新する。一部の実施形態では、評価スコアを更新することは、それぞれの評価スコアの記録される値を新しい値で置換することを含む。
(X)→S (X)+ΔS [1]
ただしS (X)は、エンティティXに対して、評価基準Cによって決定される評価スコアを表象し、ΔSは、正または負であり得る増加量を表象する(一部の実施形態では評価スコアは、更新の際に減少し得る)。
[0060]一部の実施形態ではスコア増加量ΔSは、スコアリングエンジン38により、ステップ312で受信される評価インジケータによって決定される。それぞれのインジケータは、スコアを含み得るものであり、および/または、それぞれのインジケータを決定する際に使用される評価基準を示し得る。一部の実施形態ではスコアリングエンジン38は、例えば次式のように、スコア増加量ΔSを、それぞれの評価基準Cに対応するスコア値80(図9を確認されたい)によって決定する。
ΔS=V [2]
ただしVは、基準Cに割り当てられるスコア値80を表象する。基準Cが、エンティティXがオブジェクトをネットワークからダウンロードするかどうかを決定することを含み、V=20である、1つのそのような例では、評価スコアS (X)は、エンティティXがダウンロードを実施するたびに、20ポイントだけ増大されることになる。一部の実施形態では、ΔS=εVであり、ただしεは、スコアSが、評価されるエンティティの部分集合に対してのみ更新されることを強制する、バイナリ例外重み(例えば、図9での項目82dを確認されたい)である。そのような例外重みは、例えば、評価されるエンティティの様々なタイプ間で区別するのに有用である。例えばブラウザは、マルウェアの疑いを高めることなく、制限されない数のIPアドレスにアクセスすることを可能とされるべきであり、インターネットアクセスを検出することを含む評価基準は、ブラウザタイプのエンティティに対して例外重みを0に設定し、一方で、他のタイプのエンティティに対してその例外重みをアクティブに保つ(ε=1)ことにより、ブラウザオブジェクトに対して効果的にオフに切り替えられ得る。
[0061]一部の実施形態では、エンティティXの評価スコアを更新する際に使用されるスコア増加量ΔSは、Xに関係付けられるエンティティXに対して決定される評価スコアによって決定されるものであり、すなわちスコアは、子から親に、または、注入対象から注入の発生源になど、1つのエンティティから、関係付けられるエンティティに伝搬し得る。1つのそのような例では、子プロセスにより実施されるアクションは、アクションを実施するエンティティ(子プロセス)のスコアの更新のみでなく、それぞれの子プロセスの親プロセスのスコアの更新もまたトリガし得る。そのようなスコア更新は、次式によってスコア増加量を計算することを含み得る。
ΔS=w (X*) [3]
ただしwは、エンティティXのスコアがエンティティXのスコアに影響を及ぼすときに伴う強さを示す、数値的な基準固有の重みを表象する。重みwは、伝搬重み82b(図9)を含み得る。一部の実施形態は、種々のそのような伝搬重みの間で区別するものであり、例えば、スコアを子エンティティから親エンティティに伝搬させるために使用される重みは、スコアを親エンティティから子エンティティに伝搬させるために使用される重みとは、値において異なり得る。同様に、スコアを子エンティティから親エンティティに伝搬させるために使用される重みは、スコアを、コード注入に対して対象とされるエンティティから、コード注入を実施するエンティティに伝搬させるために使用される重みとは、値において異なり得る。一部の実施形態ではスコアは、アクティブなエンティティから、終了したものであるエンティティに伝搬し得る。例えば、子プロセスのアクションは、親プロセスが終了したものであるときでも、親プロセスのスコアを増加させ得る。
[0062]一部の実施形態では、式[3]でのエンティティXは、エンティティXの別のインスタンスである。例えばXおよびXは、同時に実行する同じプロセスまたはスレッドのコピーであり得る。そのような事例では重みwは、新しいインスタンス重み(例えば、図9での項目82c)、または初期化重み(例えば、項目82a)であり得る。一部の実施形態では、エンティティXの新しいインスタンスX’が起動されるとき、エンジン38は、現存するエンティティXの一部またはすべての評価スコアを、新しいインスタンス重みwを使用して更新して、スコアをXからX’に伝搬させ得る。同様に、X’が起動されるとき、エンジン38は、X’の一部またはすべての評価スコアを、初期化重みwを使用して更新して、スコアを、すでに実行するエンティティXから新しいエンティティX’に伝搬させ得る。
[0063]一部の実施形態では、評価スコアSを更新することが、それぞれのエンティティの別個の評価スコアSの更新をトリガし得る。例えば、次式となる。
(X)→S (X)+Vが、S (X)→S (X)+F(X)kmをトリガする [4]
ただしF(X)は、エンティティXに対して設定されるフラグ(例えば、図8での項目76eを確認されたい)であり、フラグは、評価基準CとCとの間の接続を示すものであり、fkmは、Sの更新がエンティティXのSの更新に影響力を及ぼすときに伴う強さを示す、フラグ誘導される重み(例えば、図9での項目82eを確認されたい)である。
[0064]ステップ320でスコアリングエンジン38は、エンティティXのフラグ(図8に関係する上記のフラグに関する論考を確認されたい)を、ステップ312で受信される評価インジケータによって更新し得る。フラグは、式[4]に関係して上記で説明されたものなどのスコア共同更新機構を、アクティブ化および/または非アクティブ化するために設定され得る。1つのそのような例では、評価されるエンティティは、評価インジケータ(ステップ312)によってウェブブラウザアプリケーションであると識別され得るものであり、そのような識別は、スコアリングエンジン38に、インターネットからの将来のダウンロードに対してそれぞれのエンティティをスコアリングしないように示すべきものである。このことは、特別なフラグFの値を0に、それぞれのエンティティに対して設定することにより実現され得るものであり、フラグFは、スコアリングエンジン38に、エンティティがオブジェクトをインターネットからダウンロードするときに、それぞれのエンティティの評価スコアを更新するように示すものである。
[0065]ステップ322でスコアリングエンジン38は、例えば次式の合計として、それぞれのプロセスに対して決定される個々の評価スコアを組み合わせることにより、エンティティXの集計スコアを決定し得る。
Figure 0006317435
[0066]ステップ324でエンジン38は、集計スコアを、あらかじめ決定されたしきい値と比較し得る。集計スコアがしきい値を上回らないとき、スコアリングエンジン38は、下記で説明されるステップ326に進行し得る。一部の実施形態ではしきい値は、ユーザ入力によって決定される値に設定され得る。そのようなしきい値の値は、それぞれのユーザのセキュリティ選好を反映し得る。例えば、ユーザが、厳格なセキュリティを選ぶとき、しきい値は、比較的低い値に設定され得るものであり、ユーザが、より寛容なセキュリティ設定を選好するとき、しきい値は、比較的高い値に設定され得る。一部の実施形態ではしきい値の値は、図10〜11に関係して下記で説明されるように、リモートセキュリティサーバから受信され得る。
[0067]一部の実施形態では、ステップ322〜324でスコアリングエンジン38は、複数の集計スコアを決定し、各々の集計スコアを(場合によっては別個の)しきい値と比較し得る。各々のそのような集計スコアは、評価スコアの別個の部分集合によって決定され得る。例示的な実施形態では、スコアの各々のそのような部分集合、および、評価基準のそれらのスコアの対応する部分集合は、マルウェアの特定のクラスまたはタイプ(例えば、トロイの木馬、ルートキット、その他)を表し得る。このことによってエンジン38は、検出されるマルウェアの分類を実施することが可能となり得る。別の実施形態ではスコアリングエンジン38は、悪意あることの様々な程度(例えば、クリーン、疑わしい、危険、および、危機的)によって実行エンティティを分類するために、複数のしきい値の値を用いる。
[0068]集計スコアがしきい値を上回るとき、ステップ326でエンジン38は、評価されるプロセスが悪意あるものであると判断し得るものであり、アンチマルウェアアクションをとり得る。一部の実施形態では、そのようなアンチマルウェアアクションは、とりわけ、評価されるプロセスを終了させること、評価されるプロセスを検疫すること、および、評価されるプロセスのリソース(ファイル、または、メモリのセクションなど)を除去する、または不能にすることを含み得る。一部の実施形態ではアンチマルウェアアクションは、例えば、メッセージをシステムアドミニストレータに、ネットワークアダプタ22によってホストシステム10に接続されるコンピュータネットワークを介して送出することにより、ホストシステム10のユーザに警告すること、および/または、システムアドミニストレータに警告することをさらに含み得る。一部の実施形態ではアンチマルウェアアクションは、図10〜11に関係して下記で説明されるように、セキュリティ報告をリモートセキュリティサーバに送出することもまた含み得る。
[0069]ステップ328〜330のシーケンスでエンジン38は、Xに関係付けられるエンティティXを識別し得るものであり、その場合Xのスコアは、Xの現在のスコア更新の後に続いて更新することを必要とする。例えばXは、Xの親または子のエンティティであり得る。一部の実施形態ではエンティティXは、エンティティXのESOのフィールド76g〜k(例えば、図8を確認されたい)によって識別され得る。そのようなエンティティXが現存しないとき、または、すべてのそのようなエンティティXがすでにスコア更新に対して考慮されているとき、エンジン38はステップ312に戻る。少なくともエンティティXが存在するとき、ステップ332でスコアリングエンジンは、Xを現在のエンティティとし、ステップ318に戻る。
[0070]図3〜4で図示される例示的なスコアリングエンジン38は、VM32の内部で、OSプロセッサ特権レベル(例えば、カーネルモード)で動作する。代替的実施形態ではスコアリングエンジン38は、VM32の内部で、ユーザモードで、または、VM32の外側で、ハイパーバイザ30のプロセッサ特権レベルでも実行し得る。
[0071]一部の実施形態ではイントロスペクションエンジン40は、実質的にハイパーバイザ30と同じ特権レベルで実行し、VM32(図3)などの仮想マシンのイントロスペクションを実施するように構成される。VMの、または、それぞれのVM上で実行するソフトウェアエンティティのイントロスペクションは、とりわけ、ソフトウェアエンティティの挙動を分析すること、そのようなエンティティのメモリアドレスを決定し、および/または、それらのメモリアドレスにアクセスすること、ある決まったプロセスのアクセスを、そのようなアドレスに配置されるメモリのコンテンツに制約すること、そのようなコンテンツを分析すること、ならびに、それぞれのエンティティの評価インジケータ(例えば、図5でのインジケータ52d)を決定することを含み得る。
[0072]一部の実施形態ではホストシステム10は、マルウェア検出イベントに関する詳細などのセキュリティ情報を、リモートセキュリティサーバと交換するように構成され得る。図11は、そのような例示的な構成を例示するものであり、その構成では、上記で論考されたシステム10などの複数のホストシステム10a〜cが、セキュリティサーバ110にコンピュータネットワーク26を介して接続される。例示的な実施形態ではホストシステム10a〜cは、企業の従業員により使用される個々のコンピュータであり、一方でセキュリティサーバ110は、それぞれの企業のネットワークアドミニストレータにより、システム10a〜c上で発生する、マルウェア脅威またはセキュリティイベントを監視するように構成されたコンピュータシステムを備え得る。別の実施形態では、例えば、各々のホストシステム10a〜cが、何十または何百もの仮想マシンをホストするサーバである、サービスとしてのインフラストラクチャ(IAAS:Infrastructure−as−a−service)システムでは、セキュリティサーバ110は、すべてのそのようなVMに対するアンチマルウェア動作を中央位置から管理するように構成されたコンピュータシステムを備え得る。さらに別の実施形態ではセキュリティサーバ110は、アンチマルウェアソフトウェアのプロバイダ(例えば、とりわけ、セキュリティアプリケーション44のプロバイダ)により、ネットワーク26の周囲の様々なシステム上で検出されるマルウェアに関する統計および/または挙動データを受信するように構成されたコンピュータシステムを備え得る。ネットワーク26は、インターネットなどのワイドエリアネットワークを含み得るものであり、一方で、ネットワーク26の部分は、ローカルエリアネットワーク(LAN)を含み得る。
[0073]図12は、図11で示されるような実施形態での、ホストシステム10とセキュリティサーバ110との間の例示的なデータ交換を示す。ホストシステム10は、セキュリティ報告80をサーバ110に送出し、セキュリティ設定82の集合をサーバ110から受信するように構成され得る。一部の実施形態ではセキュリティ報告80は、とりわけ、ホストシステム10上で実行するエンティティ評価器50a〜cおよび/もしくは40により決定される、エンティティ評価インジケータ52a〜dおよび/もしくはスコア、ならびに/または、スコアリングエンジン38により決定される集計スコアを含む。セキュリティ報告80は、それぞれのシステム10および評価されるエンティティを識別するデータ(例えば、エンティティID、名前、パス、ハッシュ、または、他の種類のエンティティ識別子)、ならびに、エンティティ評価インジケータ/スコアを、そのインジケータ/スコアが決定された対象であるホストシステムおよびエンティティに関連付けるインジケータもまた含み得る。一部の実施形態では報告80は、ホストシステム10上で実行するエンティティに関する統計および/または挙動データをさらに含み得る。システム10は、報告80を、マルウェアの検出を基にして、および/または、予定によって(例えば、数分ごと、1時間ごと、その他)送出するように構成され得る。
[0074]一部の実施形態ではセキュリティ設定82は、エンティティ評価器の動作パラメータ(例えば、図5でのフィルタ50a〜cのパラメータ)、および/または、スコアリングエンジン38のパラメータを含み得る。エンジン38の例示的なパラメータは、とりわけ、評価されるプロセスが悪意あるものであるかどうかを判断するためのしきい値、ならびに、スコア値80および重み82a〜eを含む。
[0075]一部の実施形態ではサーバ110は、最適化アルゴリズムを走らせて、そのようなパラメータを動的に調整して、マルウェア検出性能を最大にし、例えば検出率を増大し、一方で偽陽性を最小にする。最適化アルゴリズムは、様々なエンティティ評価器によりスコアリングエンジン38に報告されるエンティティ評価インジケータ/スコアを含む、複数のホストシステム10a〜c上で実行する様々なエンティティに関する統計および/または挙動データを受信し、パラメータに対する最適な値を決定し得る。次いで値は、それぞれのホストシステムにネットワーク26を介して送信される。
[0076]最適化の1つのそのような例では、スコア値80を変化させることによって、それぞれの評価基準の関連性が、互いに対して効果的に変化し得る。マルウェア脅威は、典型的には次々と発生し、世界中の多数のコンピュータシステムが、同じマルウェアエージェントにより、短い時間間隔で影響を及ぼされる。セキュリティ報告80をリアルタイムで複数のホストシステムから受信することにより、セキュリティサーバ110は、現在のマルウェア脅威に、現在までのところで遅れずについてゆくようにされ得るものであり、最適なセキュリティ設定82を、それぞれのホストシステムに迅速に給送し得るものであり、設定82は例えば、現在のマルウェア脅威を検出するために最適化されるスコア値80の集合を含む。
[0077]上記で説明された例示的なシステムおよび方法によって、コンピュータシステムなどのホストシステムを、ウィルス、トロイの木馬、およびスパイウェアなどのマルウェアから保護することが可能となる。ホストシステム上で現在実行するプロセスおよびスレッドなどの複数の実行可能エンティティの各々に対して、スコアリングエンジンは、複数の評価スコアを記録し、各々のスコアは、別個の評価基準によって決定される。一部の実施形態では、評価されるソフトウェアエンティティは、実質的に範囲および複雑度において、例えば、オペレーティングシステムおよび/または仮想マシンの、個々の実行スレッドから、個々のアプリケーションまで、全体のインスタンスまで変動し得る。
[0078]監視されるエンティティが、評価基準を満たす(例えば、アクションを実施する)たびに、エンティティのそれぞれのスコアが更新される。対象エンティティのスコアを更新することが、対象エンティティに関係付けられる他のエンティティのスコア更新をトリガし得る。そのような関係付けられるエンティティは、とりわけ、対象エンティティの子、対象エンティティの親、内に対象エンティティがコードを注入したエンティティ、および、コードを対象エンティティ内に注入したエンティティを含む。
[0079]従来のアンチマルウェアシステムは、典型的には、各々のエンティティを、他のエンティティとは別々にスコアリングする。一部のマルウェアは、悪意ある活動を、悪意あるプロセスの子プロセスなどの、いくつかの別個のエージェントの間で分割し、そのことによって、個々のエージェントのどれも、検出されるのに充分なマルウェアを示す活動を実施しないようにすることにより、検出を逃れることを試み得る。対照的に本発明の一部の実施形態は、スコアを1つのエンティティから、他の関係付けられるエンティティに伝搬させ、したがって、マルウェアを示すデータを、関係付けられるエンティティにわたって補強する。スコア伝搬によって、悪意ある活動に関与させられるエージェントの少なくとも1つが検出されることが確実になり得る。
[0080]1つの例示的な逃れ戦略では、マルウェアエージェントは、複数の子プロセスを生み出し、閉止する場合がある。悪意ある活動は、子プロセスの間で分割され得るものであり、そのことによって、いかなる個々の子のアクションも、それらのアクション単独ではマルウェア警報をトリガしない場合がある。本発明の一部の実施形態ではスコアは、1つのエンティティから別のものに、後者が終了したものであるときでも伝搬し得る。そのような構成は、それが子プロセスの悪意あることを検出することに失敗し得る場合でも、親プロセスを悪意あるものとして検出し得る。一部の実施形態は、現在評価中のエンティティのリストを維持し、リストは、アクティブなエンティティ、および、終了したものであるエンティティの両方を含み得る。エンティティは、それぞれのエンティティのすべての子孫が終了したものであるときにのみ、リストから取り除かれ得る。
[0081]従来のアンチマルウェアシステムでは、ただ1つのスコアが典型的には、各々のエンティティに対して記録される。各々がその別個の基準によって計算される、複数のエンティティごとのスコアを保つことにより、本発明の一部の実施形態によって、スコアは、関係付けられるエンティティの間で、基準ごとを基礎として伝搬させられることが可能となる。そのようなスコアは、伝搬を基にして増大するか、さもなければ減少し得るものであり、そのことによって、各々のエンティティのライフサイクルの全体を通しての、悪意あることのより精密な評定が、偽陽性検出がより少ない状態で可能となる。一部の実施形態では、1つのエンティティのスコアが、関係付けられるエンティティのスコアに影響を及ぼす度合いは、数値的な伝搬重みによって調整可能である。そのような重みは、エンティティによって、および/または、評価基準によって異なり得るものであり、そのことによって、スコア伝搬の柔軟および精密な調整作業が可能となる。重み値は、人間のオペレータにより決定され得るものであり、および/または、マルウェア検出性能を改善することに向けられた、自動化された最適化に左右される場合がある。
[0082]一部の従来のアンチマルウェアシステムは、評価されるエンティティが悪意あるものであるかどうかを決定することを、それぞれのエンティティが、マルウェアを示す挙動を実施するかどうか、および/または、エンティティが、コードのマルウェアを示すシーケンスなどの、マルウェアを示す特徴を有するかどうかを決定することにより行う。対照的に本発明の一部の実施形態では、エンティティ評価基準は、必ずしもそれらの基準単独ではマルウェアを示すものではない。例えば一部の基準は、エンティティが、ファイルを開くこと、または、IPアドレスにアクセスすることなどの良性のアクションを実施するかどうかを決定することを含む。それでもそのようなアクションは、他のアクションと組み合わされるときに悪意あるものになり得るものであり、それらの他のアクション自体は、それら単独ではマルウェアを示すものではない場合があるものである。多種多様のエンティティ挙動および/または特徴を監視し、多数の(場合によっては何百もの)評価スコアを記録し、そのようなスコアをエンティティごとの方式で集計することにより、本発明の一部の実施形態は、検出率を増大し、一方で偽陽性を最小にし得る。
[0083]本発明の一部の実施形態は、仮想化される環境を保護し得る。仮想化をサポートするように構成された実施形態では、本発明の一部のコンポーネントは、仮想マシンの内部で実行し得るものであり、一方で他のものは、それぞれの仮想マシンの外側で、例えば、それぞれの仮想マシンをエクスポーズするハイパーバイザのレベルで実行し得る。ハイパーバイザレベルで実行するそのようなコンポーネントは、アンチマルウェア動作を、それぞれのホストシステム上で同時に実行する複数の仮想マシンに対して実施するように構成され得る。
[0084]上記の実施形態が、多くの方途で、本発明の範囲から逸脱することなく改変され得ることは、当業者には明らかであろう。したがって本発明の範囲は、以下の特許請求の範囲、および、それらの法的均等物により決定されるべきである。

Claims (15)

  1. 命令を記憶したメモリユニットを含むホストシステムであって、前記命令は、前記ホストシステムの少なくとも1つのハードウェアプロセッサにより実行されると、前記ホストシステムに、エンティティ管理モジュールと、エンティティ評価器と、スコアリングエンジンとを形成させ、
    前記エンティティ管理モジュールは、評価されるソフトウェアエンティティのコレクションを管理するように構成され、前記コレクションを管理することは、
    前記コレクションの第1のエンティティの子孫エンティティの集合を識別することと、
    前記第1のエンティティが終了したものであるかを判定することと、
    前記第1のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定することと、
    子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第1のエンティティを前記コレクションから除去することと
    を含み、
    前記エンティティ評価器は、
    前記第1のエンティティを評価基準によって評価することと、
    前記第1のエンティティが前記評価基準を満たすときに、評価インジケータを前記スコアリングエンジンに送信することと
    を行うように構成され、
    前記スコアリングエンジンは、
    前記第1のエンティティに対して求められた第1のスコア、および、前記コレクションの第2のエンティティに対して求められた第2のスコアを記録することであって、前記の第1および第2のスコアは前記評価基準によって求められた、記録することと、
    前記の第1および第2のスコアを記録することに応じて、ならびに、前記評価インジケータを受信することに応じて、前記第2のスコアを前記評価インジケータによって更新することと、
    前記第2のエンティティが悪意あるものであるかを、更新された前記第2のスコアによって判定することと、
    前記評価インジケータを受信することに応じて、前記第1のスコアを前記評価インジケータによって更新することと、
    前記第1のエンティティが悪意あるものであるかを、更新された前記第1のスコアによって判定することと
    を行うように構成された、ホストシステム。
  2. 請求項1に記載のホストシステムであって、前記第1のエンティティは、前記第2のエンティティの子である、ホストシステム。
  3. 請求項1に記載のホストシステムであって、前記第2のエンティティは、前記第1のエンティティの子である、ホストシステム。
  4. 請求項1に記載のホストシステムであって、前記第1のエンティティは、前記第2のエンティティにより注入されたコードのセクションを含む、ホストシステム。
  5. 請求項1に記載のホストシステムであって、前記第2のエンティティは、前記第1のエンティティにより注入されたコードのセクションを含む、ホストシステム。
  6. 請求項1に記載のホストシステムであって、前記第2のスコアを更新することは、前記第2のスコアを、w・Sによって求められた量だけ変化させることを含み、Sは前記第1のスコアであり、wは数値的な重みである、ホストシステム。
  7. 請求項1に記載のホストシステムであって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
    新しいソフトウェアエンティティの起動をインターセプトすることと、
    前記新しいソフトウェアエンティティを前記コレクションに追加することと
    をさらに含む、ホストシステム。
  8. 命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、ホストシステムの少なくとも1つのプロセッサにより実行されると、前記ホストシステムを、
    評価されるソフトウェアエンティティのコレクションを管理することであって、
    前記コレクションの第1のエンティティの子孫エンティティの集合を識別することと、
    前記第1のエンティティが終了したものであるかを判定することと、
    前記第1のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定することと、
    子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第1のエンティティを前記コレクションから除去することと、
    前記第1のエンティティに対して求められた第1のスコア、および、前記コレクションの第2のエンティティに対して求められた第2のスコアを記録することであって、前記の第1および第2のスコアは評価基準によって求められた、記録することと、
    前記の第1および第2のスコアを記録することに応じて、前記第1のエンティティを前記評価基準によって評価することと、
    前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第2のスコアを更新することと、
    前記第2のスコアを更新することに応じて、前記第2のエンティティが悪意あるものであるかを、更新された前記第2のスコアによって判定することと、
    前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第1のスコアを更新することと、
    前記第1のエンティティが悪意あるものであるかを、更新された前記第1のスコアによって判定することと
    を含む、管理すること
    を行うように構成する、コンピュータ可読記憶媒体。
  9. 請求項8に記載のコンピュータ可読記憶媒体であって、前記第1のエンティティは、前記第2のエンティティの子である、コンピュータ可読記憶媒体。
  10. 請求項8に記載のコンピュータ可読記憶媒体であって、前記第2のエンティティは、前記第1のエンティティの子である、コンピュータ可読記憶媒体。
  11. 請求項8に記載のコンピュータ可読記憶媒体であって、前記第1のエンティティは、前記第2のエンティティにより注入されたコードのセクションを含む、コンピュータ可読記憶媒体。
  12. 請求項8に記載のコンピュータ可読記憶媒体であって、前記第2のエンティティは、前記第1のエンティティにより注入されたコードのセクションを含む、コンピュータ可読記憶媒体。
  13. 請求項8に記載のコンピュータ可読記憶媒体であって、前記第2のスコアを更新することは、前記第2のスコアを、w・Sによって求められた量だけ変化させることを含み、Sは前記第1のスコアであり、wは数値的な重みである、コンピュータ可読記憶媒体。
  14. 請求項8に記載のコンピュータ可読記憶媒体であって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
    新しいソフトウェアエンティティの起動をインターセプトすることと、
    前記新しいソフトウェアエンティティを前記コレクションに追加することと
    をさらに含む、コンピュータ可読記憶媒体。
  15. ホストシステムの少なくとも1つのプロセッサが、評価されるソフトウェアエンティティのコレクションを管理するステップを含む方法であって、前記コレクションを管理するステップは、
    前記コレクションの第1のエンティティの子孫エンティティの集合を識別するステップと、
    前記第1のエンティティが終了したものであるかを判定するステップと、
    前記第1のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定するステップと、
    子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第1のエンティティを前記コレクションから除去するステップと、
    前記第1のエンティティに対して求められた第1のスコア、および、前記コレクションの第2のエンティティに対して求められた第2のスコアを記録するステップであって、前記の第1および第2のスコアは評価基準によって求められた、ステップと、
    前記の第1および第2のスコアを記録することに応じて、前記第1のエンティティを前記評価基準によって評価するステップと、
    前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第2のスコアを更新するステップと、
    前記第2のスコアを更新することに応じて、前記第2のエンティティが悪意あるものであるかを、更新された前記第2のスコアによって判定するステップと、
    前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第1のスコアを更新するステップと、
    前記第1のエンティティが悪意あるものであるかを、更新された前記第1のスコアによって判定するステップと
    を含む、方法。
JP2016520024A 2013-10-04 2014-09-25 マルウェア検出のための複雑なスコアリング Active JP6317435B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/046,728 2013-10-04
US14/046,728 US9323931B2 (en) 2013-10-04 2013-10-04 Complex scoring for malware detection
PCT/RO2014/000027 WO2015050469A1 (en) 2013-10-04 2014-09-25 Complex scoring for malware detection

Publications (3)

Publication Number Publication Date
JP2016536667A JP2016536667A (ja) 2016-11-24
JP2016536667A5 JP2016536667A5 (ja) 2017-06-15
JP6317435B2 true JP6317435B2 (ja) 2018-04-25

Family

ID=52001042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016520024A Active JP6317435B2 (ja) 2013-10-04 2014-09-25 マルウェア検出のための複雑なスコアリング

Country Status (12)

Country Link
US (1) US9323931B2 (ja)
EP (1) EP3053087A1 (ja)
JP (1) JP6317435B2 (ja)
KR (1) KR101948711B1 (ja)
CN (1) CN105593870B (ja)
AU (1) AU2014330136B2 (ja)
CA (1) CA2931325C (ja)
HK (1) HK1220523A1 (ja)
IL (1) IL244861B (ja)
RU (1) RU2645268C2 (ja)
SG (1) SG11201602586SA (ja)
WO (1) WO2015050469A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078752B2 (en) 2014-03-27 2018-09-18 Barkly Protects, Inc. Continuous malicious software identification through responsive machine learning
US9733976B2 (en) * 2014-03-27 2017-08-15 Barkly Protects, Inc. Method and apparatus for SYSRET monitoring of system interactions
US9977895B2 (en) * 2014-03-27 2018-05-22 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US9779239B2 (en) * 2015-03-15 2017-10-03 Fujitsu Limited Detection of malicious software behavior using signature-based static analysis
US10116688B1 (en) 2015-03-24 2018-10-30 Symantec Corporation Systems and methods for detecting potentially malicious files
US9798878B1 (en) 2015-03-31 2017-10-24 Symantec Corporation Systems and methods for detecting text display manipulation attacks
US9646159B2 (en) * 2015-03-31 2017-05-09 Juniper Networks, Inc. Multi-file malware analysis
US9767285B2 (en) 2015-06-04 2017-09-19 Accenture Global Services Limited Process categorization using crowdsourcing
US9798877B2 (en) 2015-06-04 2017-10-24 Accenture Global Services Limited Security risk-based resource allocation
US9703961B2 (en) 2015-06-05 2017-07-11 Accenture Global Services Limited Process risk classification
WO2016193831A1 (en) * 2015-06-04 2016-12-08 Accenture Global Services Limited Process categorization for computer security
US10176438B2 (en) 2015-06-19 2019-01-08 Arizona Board Of Regents On Behalf Of Arizona State University Systems and methods for data driven malware task identification
US9942248B1 (en) * 2015-06-24 2018-04-10 Symantec Corporation Systems and methods for adjusting behavioral detection heuristics
RU2618947C2 (ru) * 2015-06-30 2017-05-11 Закрытое акционерное общество "Лаборатория Касперского" Способ предотвращения работы программ, содержащих нежелательный для пользователя функционал
US9852295B2 (en) * 2015-07-14 2017-12-26 Bitdefender IPR Management Ltd. Computer security systems and methods using asynchronous introspection exceptions
US10089465B2 (en) * 2015-07-24 2018-10-02 Bitdefender IPR Management Ltd. Systems and methods for tracking malicious behavior across multiple software entities
EP3345116A4 (en) * 2015-09-02 2019-01-16 Nehemiah Security LAUNCH CONTROL, MONITORING AND PROCESS EXECUTION
RU2634175C2 (ru) * 2015-12-18 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения антивирусных проверок
US10210331B2 (en) * 2015-12-24 2019-02-19 Mcafee, Llc Executing full logical paths for malware detection
US9965313B2 (en) * 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10140448B2 (en) 2016-07-01 2018-11-27 Bitdefender IPR Management Ltd. Systems and methods of asynchronous analysis of event notifications for computer security applications
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
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
US10061921B1 (en) * 2017-02-13 2018-08-28 Trend Micro Incorporated Methods and systems for detecting computer security threats
US10320818B2 (en) 2017-02-14 2019-06-11 Symantec Corporation Systems and methods for detecting malicious computing events
US10735468B1 (en) 2017-02-14 2020-08-04 Ca, Inc. Systems and methods for evaluating security services
US10990678B2 (en) * 2017-07-26 2021-04-27 Comodo Security Solutions, Inc. Method to protect application running in a hostile environment
US10467552B2 (en) * 2017-07-31 2019-11-05 Pearson Education, Inc. System and method for automatic content provisioning
RU2708356C1 (ru) * 2018-06-29 2019-12-05 Акционерное общество "Лаборатория Касперского" Система и способ двухэтапной классификации файлов
US11017083B2 (en) 2018-10-17 2021-05-25 International Business Machines Corporation Multiple phase graph partitioning for malware entity detection
KR102023746B1 (ko) * 2019-03-26 2019-09-20 넷마블 주식회사 악성코드 탐지 방법 및 장치
RU2739833C1 (ru) * 2019-06-28 2020-12-28 Акционерное общество "Лаборатория Касперского" Система и способ снижения нагрузки на сервис обнаружения вредоносных приложений
CN111191226B (zh) * 2019-07-04 2023-12-01 腾讯科技(深圳)有限公司 利用提权漏洞的程序的确定方法、装置、设备及存储介质
US11238154B2 (en) * 2019-07-05 2022-02-01 Mcafee, Llc Multi-lateral process trees for malware remediation
CN110598410B (zh) * 2019-09-16 2021-11-16 腾讯科技(深圳)有限公司 一种恶意进程的确定方法、装置、电子设备及存储介质
US10754506B1 (en) * 2019-10-07 2020-08-25 Cyberark Software Ltd. Monitoring and controlling risk compliance in network environments
CN111224942B (zh) * 2019-11-20 2021-11-16 重庆邮电大学 基于三元关联图检测的恶意软件传播控制方法及装置
US20220391505A1 (en) * 2019-11-28 2022-12-08 Nippon Telegraph And Telephone Corporation Rule generating device and rule generating program
RU2752241C2 (ru) * 2019-12-25 2021-07-23 Общество С Ограниченной Ответственностью «Яндекс» Способ и система для выявления вредоносной активности предопределенного типа в локальной сети
CA3201355A1 (en) * 2020-12-17 2022-06-23 Satya V. Gupta Runtime memory protection (rmp) engine

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2829078B2 (ja) * 1990-02-05 1998-11-25 株式会社日立製作所 プロセス分散方法
US7003110B1 (en) * 2000-11-14 2006-02-21 Lucent Technologies Inc. Software aging method and apparatus for discouraging software piracy
JP3992136B2 (ja) * 2001-12-17 2007-10-17 学校法人金沢工業大学 ウイルス検出方法および装置
US7748039B2 (en) 2002-08-30 2010-06-29 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
AU2003233574B9 (en) * 2003-05-17 2010-03-25 Microsoft Corporation Mechanism for evaluating security risks
US7870612B2 (en) 2006-09-11 2011-01-11 Fujian Eastern Micropoint Info-Tech Co., Ltd Antivirus protection system and method for computers
US7908660B2 (en) 2007-02-06 2011-03-15 Microsoft Corporation Dynamic risk management
US7620992B2 (en) 2007-10-02 2009-11-17 Kaspersky Lab Zao System and method for detecting multi-component malware
CN101350052B (zh) 2007-10-15 2010-11-03 北京瑞星信息技术有限公司 发现计算机程序的恶意行为的方法和装置
US8037536B2 (en) 2007-11-14 2011-10-11 Bank Of America Corporation Risk scoring system for the prevention of malware
US10318730B2 (en) * 2007-12-20 2019-06-11 Bank Of America Corporation Detection and prevention of malicious code execution using risk scoring
US8904536B2 (en) * 2008-08-28 2014-12-02 AVG Netherlands B.V. Heuristic method of code analysis
US8615805B1 (en) * 2008-09-03 2013-12-24 Symantec Corporation Systems and methods for determining if a process is a malicious process
WO2010150251A1 (en) * 2009-06-22 2010-12-29 United Parents Online Ltd. Method and system of monitoring a network based communication among users
KR101057432B1 (ko) 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
US8578345B1 (en) * 2010-04-15 2013-11-05 Symantec Corporation Malware detection efficacy by identifying installation and uninstallation scenarios
KR101122650B1 (ko) * 2010-04-28 2012-03-09 한국전자통신연구원 정상 프로세스에 위장 삽입된 악성코드 탐지 장치, 시스템 및 방법
JP5478384B2 (ja) * 2010-06-24 2014-04-23 Kddi株式会社 アプリケーション判定システムおよびプログラム
RU2454714C1 (ru) * 2010-12-30 2012-06-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения эффективности обнаружения неизвестных вредоносных объектов
CN103620613B (zh) * 2011-03-28 2018-06-12 迈克菲股份有限公司 用于基于虚拟机监视器的反恶意软件安全的系统和方法
US8042186B1 (en) * 2011-04-28 2011-10-18 Kaspersky Lab Zao System and method for detection of complex malware
US9323928B2 (en) 2011-06-01 2016-04-26 Mcafee, Inc. System and method for non-signature based detection of malicious processes
JP5492150B2 (ja) * 2011-07-04 2014-05-14 株式会社日立製作所 多重系コントローラシステムとその運転方法
WO2013082437A1 (en) * 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
EP3044718A4 (en) * 2013-09-10 2017-05-17 Symantec Corporation Systems and methods for using event-correlation graphs to detect attacks on computing systems

Also Published As

Publication number Publication date
SG11201602586SA (en) 2016-05-30
WO2015050469A1 (en) 2015-04-09
US20150101049A1 (en) 2015-04-09
KR101948711B1 (ko) 2019-02-15
EP3053087A1 (en) 2016-08-10
RU2016114944A (ru) 2017-11-13
AU2014330136B2 (en) 2019-12-12
JP2016536667A (ja) 2016-11-24
CN105593870B (zh) 2019-01-29
KR20160065852A (ko) 2016-06-09
IL244861B (en) 2019-02-28
CA2931325C (en) 2020-10-06
US9323931B2 (en) 2016-04-26
RU2645268C2 (ru) 2018-02-19
HK1220523A1 (zh) 2017-05-05
CA2931325A1 (en) 2015-04-09
CN105593870A (zh) 2016-05-18
IL244861A0 (en) 2016-05-31

Similar Documents

Publication Publication Date Title
JP6317435B2 (ja) マルウェア検出のための複雑なスコアリング
AU2014330136A1 (en) Complex scoring for malware detection
KR102301721B1 (ko) 다수의 네트워크 종점들을 보호하기 위한 듀얼 메모리 인트로스펙션
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
JP6829718B2 (ja) 複数のソフトウェアエンティティにわたって悪意あるビヘイビアを追跡するためのシステムおよび方法
US9251343B1 (en) Detecting bootkits resident on compromised computers
JP2017527931A (ja) マルウェア検出の方法及びそのシステム
KR101086203B1 (ko) 악성 프로세스의 행위를 판단하여 사전에 차단하는 악성프로세스 사전차단 시스템 및 방법
CN102799817A (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180329

R150 Certificate of patent or registration of utility model

Ref document number: 6317435

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250