JP2016536667A - Complex scoring for malware detection - Google Patents

Complex scoring for malware detection Download PDF

Info

Publication number
JP2016536667A
JP2016536667A JP2016520024A JP2016520024A JP2016536667A JP 2016536667 A JP2016536667 A JP 2016536667A JP 2016520024 A JP2016520024 A JP 2016520024A JP 2016520024 A JP2016520024 A JP 2016520024A JP 2016536667 A JP2016536667 A JP 2016536667A
Authority
JP
Japan
Prior art keywords
entity
score
software
host system
evaluation
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.)
Granted
Application number
JP2016520024A
Other languages
Japanese (ja)
Other versions
JP6317435B2 (en
JP2016536667A5 (en
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/en
Publication of JP2016536667A5 publication Critical patent/JP2016536667A5/ja
Application granted granted Critical
Publication of JP6317435B2 publication Critical patent/JP6317435B2/en
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/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
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

説明されるシステムおよび方法によって、コンピュータシステムを、ウィルス、トロイの木馬、およびスパイウェアなどのマルウェアから保護することが可能となる。複数の実行可能エンティティ(コンピュータシステム上で実行するプロセスおよびスレッドなど)の各々に対して、スコアリングエンジンは、複数の評価スコアを記録し、各々のスコアは、別個の評価基準によって決定される。エンティティが、評価基準を満たす(例えば、アクションを実施する)たびに、エンティティのそれぞれのスコアが更新される。エンティティのスコアを更新することが、それぞれのエンティティに関係付けられるエンティティのスコア更新をトリガすることを、関係付けられるエンティティが終了したものである、すなわち、もはやアクティブではないときにも行い得る。関係付けられるエンティティは、とりわけ、それぞれのエンティティの親、および/または、コードをそれぞれのエンティティ内に注入するエンティティを含む。スコアリングエンジンは、エンティティが悪意あるものであるかどうかを、それぞれのエンティティの複数の評価スコアによって決定する。The described systems and methods allow computer systems to be protected from malware such as viruses, Trojan horses, and spyware. For each of a plurality of executable entities (such as processes and threads executing on a computer system), the scoring engine records a plurality of evaluation scores, each score being determined by a separate evaluation criterion. Each time an entity meets the evaluation criteria (eg, performs an action), the respective score of the entity is updated. Updating an entity's score may trigger an update of the score of an entity associated with the respective entity even when the associated entity is terminated, ie, no longer active. Related entities include, among other things, the parent of each entity and / or the entity that injects code into each entity. The scoring engine determines whether an entity is malicious or not by a plurality of evaluation scores for each entity.

Description

[0001]本発明は、コンピュータシステムをマルウェアから保護するためのシステムおよび方法に関係する。   [0001] The present invention relates to systems and methods for protecting computer systems from malware.

[0002]マルウェアとしても知られている、悪意あるソフトウェアは、世界中の多数のコンピュータシステムに影響を及ぼす。コンピュータウィルス、ワーム、ルートキット、およびスパイウェアなどのその多くの形態で、マルウェアは、深刻な危険を何百万ものコンピュータユーザにもたらし、ユーザを、とりわけ、データおよび機密情報の損失、個人情報の盗難(identity theft)、ならびに、生産性の損失に対して脆弱にする。   [0002] Malicious software, also known as malware, affects many computer systems around the world. In its many forms, such as computer viruses, worms, rootkits, and spyware, malware poses a serious danger to millions of computer users, especially for the loss of data and sensitive information, theft of personal information (Identity theft), as well as making it vulnerable to loss of productivity.

[0003]セキュリティソフトウェアは、ユーザのコンピュータシステムを汚染するマルウェアを検出するために、および加えて、そのようなマルウェアを除去する、または、そのようなマルウェアの実行を停止するために使用され得る。いくつかのマルウェア検出技法が、当技術分野で知られている。一部のものは、マルウェアエージェントのコードの断片を、マルウェアを示すシグネチャのライブラリとマッチングすることに依拠する。他の従来の方法は、マルウェアエージェントのマルウェアを示す挙動の集合を検出する。   [0003] Security software may be used to detect malware that contaminates a user's computer system and in addition to remove such malware or stop the execution of such malware. Several malware detection techniques are known in the art. Some rely on matching a piece of malware agent code with a library of signatures representing malware. Other conventional methods detect a set of behaviors indicative of malware of the malware agent.

[0004]検出を逃れる、および/または、セキュリティソフトウェアの動作を弱体化させるために、一部のマルウェアエージェントは、それらのコードを暗号化すること、または、わずかに異なるコードバージョンを各々の汚染されたコンピュータシステム上で使用すること(多形性)など、難読化技法を用いる。他の例示的な検出回避方法は、悪意ある活動をいくつかのアクションに分割し、各々のアクションは、別々のエージェントにより、場合によっては時間遅延を伴って実施される。他の例ではマルウェアは、例えば、特権昇格を使用することにより、および/または、セキュリティソフトウェアのコードを上書きすることにより、セキュリティソフトウェアをアクティブに攻撃し、不能にすることを試み得る。   [0004] In order to evade detection and / or weaken the operation of security software, some malware agents either encrypt their code or taint slightly different code versions. Use obfuscation techniques such as use on a computer system (polymorphism). Other exemplary detection avoidance methods divide malicious activity into several actions, each action being performed by a separate agent, possibly with a time delay. In other examples, malware may attempt to actively attack and disable security software, for example, by using privilege escalation and / or by overwriting security software code.

[0005]マルウェア脅威の急速に変化する集合に遅れずについてゆくために、ロバストかつスケーラブルなアンチマルウェア解決策を開発することへの強い関心が存在する。   [0005] There is a strong interest in developing robust and scalable anti-malware solutions to keep up with the rapidly changing set of malware threats.

[0006]1つの態様によれば、ホストシステムは、エンティティ管理モジュールと、エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを備える。エンティティ管理モジュールは、評価されるソフトウェアエンティティのコレクションを管理するように構成され、コレクションを管理することが、コレクションの第1のエンティティの子孫エンティティの集合を識別することと、第1のエンティティが終了したものであるかどうかを決定することと、それに応じて、第1のエンティティが終了したものであるときに、子孫エンティティの集合のすべてのメンバが終了したものであるかどうかを決定することと、それに応じて、子孫エンティティの集合のすべてのメンバが終了したものであるときに、第1のエンティティをコレクションから除去することとを含む。エンティティ評価器は、第1のエンティティを評価基準によって評価することと、それに応じて、第1のエンティティが評価基準を満たすときに、評価インジケータをスコアリングエンジンに送信することとを行うように構成される。スコアリングエンジンは、第1のエンティティに対して決定される第1のスコア、および、コレクションの第2のエンティティに対して決定される第2のスコアを記録することであって、第1および第2のスコアが評価基準によって決定される、記録することと、第1および第2のスコアを記録することに応じて、ならびに、評価インジケータを受信することに応じて、第2のスコアを評価インジケータによって更新することと、それに応じて、第2のエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することとを行うように構成される。   [0006] According to one aspect, a host system comprises at least one processor configured to execute an entity management module, an entity evaluator, and a scoring engine. The entity management module is configured to manage a collection of software entities to be evaluated, wherein managing the collection identifies a set of descendent entities of the first entity of the collection and the first entity is terminated. And, accordingly, determining whether all members of the set of descendent entities are terminated when the first entity is terminated, and And removing the first entity from the collection when all members of the set of descendent entities are terminated. The entity evaluator is configured to evaluate the first entity according to the evaluation criteria and correspondingly send an evaluation indicator to the scoring engine when the first entity meets the evaluation criteria. Is done. The scoring engine is to record a first score determined for the first entity and a second score determined for the second entity of the collection, the first and first A score of 2 is determined by the evaluation criteria, in response to recording and recording the first and second scores, and in response to receiving the evaluation indicator, the second score is an evaluation indicator And, accordingly, determining whether the second entity is malicious is determined by the updated second score.

[0007]別の態様によれば、非一時的コンピュータ可読媒体は、命令を記憶し、それらの命令は、実行されるとき、ホストシステムの少なくとも1つのプロセッサを、評価されるソフトウェアエンティティのコレクションを管理することであって、コレクションの第1のエンティティの子孫エンティティの集合を識別することと、第1のエンティティが終了したものであるかどうかを決定することと、それに応じて、第1のエンティティが終了したものであるときに、子孫エンティティの集合のすべてのメンバが終了したものであるかどうかを決定することと、それに応じて、子孫エンティティの集合のすべてのメンバが終了したものであるときに、選択されるエンティティをコレクションから除去することとを含む、管理することを行うように構成する。命令は、少なくとも1つのプロセッサを、第1のエンティティに対して決定される第1のスコア、および、コレクションの第2のエンティティに対して決定される第2のスコアを記録することであって、第1および第2のスコアが評価基準によって決定される、記録することを行うようにさらに構成する。命令は、少なくとも1つのプロセッサを、第1および第2のスコアを記録することに応じて、第1のエンティティを評価基準によって評価することを行うようにさらに構成する。命令は、少なくとも1つのプロセッサを、第1のエンティティを評価することに応じて、第1のエンティティが評価基準を満たすときに、第2のスコアを更新することと、第2のスコアを更新することに応じて、第2のエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することとを行うようにさらに構成する。   [0007] According to another aspect, a non-transitory computer readable medium stores instructions that, when executed, cause at least one processor of the host system to receive a collection of software entities to be evaluated. Identifying a set of descendant entities of the first entity of the collection, determining whether the first entity is terminated, and accordingly the first entity Determines whether all members of the set of descendent entities are terminated, and, accordingly, all members of the set of descendent entities are terminated To manage, including removing selected entities from the collection It is formed. The instructions are to record at least one processor with a first score determined for the first entity and a second score determined for the second entity of the collection, The first and second scores are further determined to be recorded as determined by the evaluation criteria. The instructions further configure the at least one processor to evaluate the first entity according to the evaluation criteria in response to recording the first and second scores. The instructions update the second score and update the second score when the first entity meets the evaluation criteria in response to evaluating the first entity with the at least one processor. In response, the second entity is further configured to determine whether the second entity is malicious by the updated second score.

[0008]別の態様によれば、ホストシステムは、エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを備える。エンティティ評価器は、第1のソフトウェアエンティティを評価基準によって評価することであって、第1のソフトウェアエンティティがクライアントシステム上で実行する、評価することと、それに応じて、第1のソフトウェアエンティティが評価基準を満たすときに、評価インジケータをスコアリングエンジンに送信することとを行うように構成される。スコアリングエンジンは、評価インジケータを受信することに応じて、スコアを評価インジケータによって更新することであって、スコアが、前にホストシステム上で実行する第2のソフトウェアエンティティに対して決定され、第2のソフトウェアエンティティが、スコアを更新するときには、終了したものである、更新することを行うように構成される。スコアリングエンジンは、第2のスコアを更新することに応じて、第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定することを行うようにさらに構成される。   [0008] According to another aspect, a host system comprises at least one processor configured to execute an entity evaluator and a scoring engine. An entity evaluator is to evaluate a first software entity according to an evaluation criterion, wherein the first software entity performs on the client system, and accordingly the first software entity evaluates When the criteria are met, an evaluation indicator is configured to be sent to the scoring engine. The scoring engine is to update the score with the evaluation indicator in response to receiving the evaluation indicator, the score being determined for a second software entity previously executing on the host system, When the second software entity updates the score, it is configured to do the updating, which is finished. The scoring engine is further configured to perform, in response to updating the second score, determining by the updated second score whether the second software entity is malicious. The

[0009]別の態様によれば、方法は、ホストシステムの少なくとも1つのプロセッサを用いて、ホストシステム上で実行する第1のソフトウェアエンティティが評価基準を満たすかどうかを決定するステップを含む。方法は、第1のソフトウェアエンティティが評価基準を満たすときに、少なくとも1つのプロセッサを用いて、前にホストシステム上で実行する第2のソフトウェアエンティティに対して決定されるスコアを更新するステップであって、第2のソフトウェアエンティティが、スコアを更新するときには、終了しており、スコアが評価基準によって決定される、更新するステップをさらに含む。方法は、第2のスコアを更新するステップに応じて、少なくとも1つのプロセッサを用いて、第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された第2のスコアによって決定するステップをさらに含む。   [0009] According to another aspect, a method includes using at least one processor of a host system to determine whether a first software entity executing on the host system meets an evaluation criterion. The method is the step of updating a score previously determined for a second software entity executing on the host system with at least one processor when the first software entity meets the evaluation criteria. Thus, the second software entity is finished when updating the score, and further includes the updating step, wherein the score is determined by the evaluation criteria. The method includes, in response to updating the second score, using at least one processor to determine whether the second software entity is malicious by the updated second score. In addition.

[0010]本発明の前述の態様および利点は、以下の詳述される説明を読むことで、および、図面を参照することで、より良好に理解されることになろう。   [0010] The foregoing aspects and advantages of the present invention will become better understood upon reading the following detailed description and upon reference to the drawings in which:

[0011]本発明の一部の実施形態による、マルウェアから保護されるホストコンピュータシステムの例示的なハードウェア構成を示す図である。[0011] FIG. 2 illustrates an exemplary hardware configuration of a host computer system protected from malware, according to some embodiments of the invention. [0012]本発明の一部の実施形態による、ホストシステム上で実行するセキュリティアプリケーションを含むソフトウェアオブジェクトの例示的な集合を示す図である。[0012] FIG. 4 illustrates an exemplary collection of software objects that include a security application executing on a host system, according to some embodiments of the invention. [0013]仮想化をサポートするように構成されたホストシステム内の、仮想マシンの内部で実行するセキュリティアプリケーションを含むソフトウェアオブジェクトの例示的な集合を示す図である。[0013] FIG. 5 illustrates an exemplary collection of software objects that include security applications executing inside a virtual machine in a host system configured to support virtualization. [0014]本発明の一部の実施形態による、アンチマルウェアオブジェクトの集合を含む、様々なプロセッサ特権レベルで、ホストシステム上で実行するソフトウェアオブジェクトの例示的な階層を例示する図である。[0014] FIG. 6 illustrates an exemplary hierarchy of software objects executing on a host system at various processor privilege levels, including a collection of anti-malware objects, according to some embodiments of the invention. [0015]本発明の一部の実施形態による、図3のエンティティ管理モジュールにより実施されるステップの例示的なシーケンスを示す図である。[0015] FIG. 4 illustrates an exemplary sequence of steps performed by the entity management module of FIG. 3, according to some embodiments of the invention. [0016]本発明の一部の実施形態による、複数のエンティティ評価器モジュールによりソフトウェアエンティティに対して決定される複数のエンティティ評価インジケータを受信する、例示的なスコアリングエンジンを示す図である。[0016] FIG. 6 illustrates an example scoring engine that receives a plurality of entity evaluation indicators determined for a software entity by a plurality of entity evaluator modules according to some embodiments of the invention. [0017]Windows(登録商標)環境でのプロセスの集合の例示的な実行フローを例示する図であり、実線矢印は、アンチマルウェアシステムが存しないときの例示的な実行フローを示し、破線矢印は、実行フローに対する修正を示し、それらの修正は、本発明の一部の実施形態によって動作する、複数のエンティティ評価器により導入されるものである。[0017] FIG. 4 illustrates an exemplary execution flow of a set of processes in a Windows environment, where solid arrows indicate an exemplary execution flow when no anti-malware system is present, and dashed arrows indicate , Illustrates modifications to the execution flow, which modifications are introduced by multiple entity evaluators that operate in accordance with some embodiments of the present invention. [0018]本発明の一部の実施形態による、エンティティ評価器モジュールにより実施されるステップの例示的なシーケンスを示す図である。[0018] FIG. 4 illustrates an exemplary sequence of steps performed by an entity evaluator module, according to some embodiments of the invention. [0019]複数の例示的なエンティティ・スコアリング・オブジェクト(ESO:entity scoring object)を示す図であり、各々のESOは、本発明の一部の実施形態によって、それぞれのソフトウェアエンティティに対して決定され、ESOの例示的なデータフィールドは、とりわけ、それぞれのエンティティに対して決定される、エンティティ識別情報インジケータEID、複数のスコアS、および集計スコアAを含む。[0019] FIG. 7 illustrates a plurality of example entity scoring objects (ESOs), each ESO determined for a respective software entity according to some embodiments of the present invention. The exemplary data fields of the ESO include an entity identification information indicator EID, a plurality of scores S i , and an aggregate score A that are determined for each entity, among others. [0020]本発明の一部の実施形態による、スコアリングエンジンにより、ソフトウェアエンティティをスコアリングするために使用される、スコア値の例示的な集合、および、重みの様々な例示的な集合を例示する図である。[0020] Illustrate an exemplary set of score values and various exemplary sets of weights used by the scoring engine to score a software entity, according to some embodiments of the invention. It is a figure to do. [0021]本発明の一部の実施形態による、スコアリングエンジン(図3〜4)により実施されるステップの例示的なシーケンスを示す図である。[0021] FIG. 4 illustrates an exemplary sequence of steps performed by a scoring engine (FIGS. 3-4), according to some embodiments of the present invention. [0022]セキュリティサーバにコンピュータネットワークを介して接続される複数のホストシステムを備える例示的な構成を例示する図である。[0022] FIG. 6 illustrates an exemplary configuration comprising a plurality of host systems connected to a security server via a computer network. [0023]本発明の一部の実施形態による、ホストシステムとセキュリティサーバとの間の例示的なアンチマルウェアトランザクションを示す図である。[0023] FIG. 6 illustrates an exemplary anti-malware transaction between a host system and a security server, according to some embodiments of the present invention.

[0024]以下の説明では、構造間のすべての記載される接続は、直接的な動作可能接続、または、中間構造を介した間接的な動作可能接続であり得ることが理解されたい。要素の集合は、1つまたは複数の要素を含む。要素のいかなる記載も、少なくとも1つの要素を指すと理解されたい。複数の要素は、少なくとも2つの要素を含む。別段必要とされない限り、いかなる説明される方法ステップも、必ずしも特定の例示される順序で実施される必要はない。第2の要素から導出される第1の要素(例えば、データ)は、第2の要素に等しい第1の要素、ならびに、第2の要素、および任意選択で他のデータを処理することにより生成される第1の要素を包含する。決定または判断をパラメータによって行うことは、決定または判断を、パラメータによって、および任意選択で他のデータによって行うことを包含する。別段指定されない限り、何らかの量/データのインジケータは、量/データ自体、または、量/データ自体とは異なるインジケータであり得る。別段指定されない限り、プロセスは、コンピュータプログラムのインスタンスを表し、コンピュータプログラムは、指定されるタスクをコンピュータシステムが実施するように決定する命令のシーケンスである。コンピュータ可読媒体は、磁気、光学、および半導体記憶媒体(例えば、ハードドライブ、光学ディスク、フラッシュメモリ、DRAM)などの非一時的媒体、ならびに、導電性ケーブルおよび光学ファイバリンクなどの通信リンクを包含する。一部の実施形態によれば、本発明は特に、本明細書で説明される方法を実施するようにプログラムされるハードウェア(例えば、1つまたは複数のプロセッサ)を備えるコンピュータシステム、および、本明細書で説明される方法を実施するための命令を符号化するコンピュータ可読媒体を提供する。   [0024] In the following description, it should be understood that all described connections between structures can be direct operable connections or indirectly operable connections through an intermediate structure. A set of elements includes one or more elements. Any description of an element should be understood to refer to at least one element. The plurality of elements includes at least two elements. Unless otherwise required, any described method steps need not necessarily be performed in a particular illustrated order. A first element (eg, data) derived from the second element is generated by processing the first element equal to the second element, and the second element and optionally other data. The first element to be included. Making a determination or judgment by parameter includes making a determination or judgment by parameter and optionally other data. Unless otherwise specified, some amount / data indicator may be the amount / data itself or a different indicator than the amount / data itself. Unless otherwise specified, a process represents an instance of a computer program, which is a sequence of instructions that determines that a computer system performs a specified task. Computer-readable media includes non-transitory media such as magnetic, optical, and semiconductor storage media (eg, hard drives, optical disks, flash memory, DRAM), and communication links such as conductive cables and optical fiber links. . According to some embodiments, the present invention particularly relates to a computer system comprising hardware (eg, one or more processors) programmed to perform the methods described herein, and the book A computer readable medium encoding instructions for performing the methods described herein is provided.

[0025]以下の説明は、本発明の実施形態を、例としてのものであって、必ずしも制限するものとしてではなく例示するものである。
[0026]図1は、本発明の一部の実施形態による、アンチマルウェア動作を実施するホストシステム10の例示的なハードウェア構成を示す。ホストシステム10は、とりわけ、エンタープライズサーバなどの企業コンピューティングデバイス、または、パーソナルコンピュータもしくはスマートフォンなどのエンドユーザデバイスを表し得る。他のホストシステムは、TVおよびゲームコンソールなどの娯楽デバイス、または、仮想化をサポートし、マルウェア保護を要する、メモリおよびプロセッサを有する任意の他のデバイスを含む。図1は、コンピュータシステムを例示の目的で示すが、移動電話またはタブレットなどの他のクライアントデバイスは、異なる構成を有し得る。一部の実施形態ではシステム10は、すべてがバス24の集合により接続される、プロセッサ12、メモリユニット14、入力デバイス16の集合、出力デバイス18の集合、記憶デバイス20の集合、および、ネットワークアダプタ22の集合を含む、物理デバイスの集合を備える。
[0025] The following description illustrates embodiments of the invention by way of example and not necessarily limitation.
[0026] FIG. 1 illustrates an exemplary hardware configuration of a host system 10 that implements anti-malware operations, according to some embodiments of the present invention. The host system 10 may represent an enterprise computing device such as an enterprise server or an end user device such as a personal computer or smartphone, among others. Other host systems include entertainment devices such as TVs and game consoles, or any other device with memory and processor that supports virtualization and requires malware protection. Although FIG. 1 shows a computer system for illustrative purposes, other client devices such as mobile phones or tablets may have different configurations. In some embodiments, the system 10 includes a processor 12, a memory unit 14, a set of input devices 16, a set of output devices 18, a set of storage devices 20, and a network adapter, all connected by a set of buses 24. It comprises a set of physical devices, including 22 sets.

[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に接続するサウスブリッジを備え得る。   [0027] In some embodiments, the processor 12 comprises a physical device (eg, a multi-core integrated circuit) configured to perform computational and / or logical operations with a collection of signals and / or data. In some embodiments, such logic operations are delivered to the processor 12 in the form of a sequence of processor instructions (eg, machine code or other type of software). The memory unit 14 may comprise volatile computer readable media (eg, RAM) that stores data / signals that are accessed or generated by the processor 12 in the course of executing instructions. Input device 16 may include, among other things, a computer keyboard, mouse, and microphone, including respective hardware interfaces and / or adapters that allow a user to introduce data and / or instructions into system 10. Output device 18 may include a display device, such as a monitor and speakers, and a hardware interface / adapter, such as a graphics card, among others, that allow system 10 to communicate data to the user. In some embodiments, input device 16 and output device 18 may share a common piece of hardware, as in the case of touch screen devices. Storage device 20 includes a computer-readable medium that enables non-volatile storage, reading, and writing of software instructions and / or data. The exemplary storage device 20 includes magnetic and optical disks and flash memory devices, and removable media such as CD and / or DVD disks and drives. The collection of network adapters 22 enables the system 10 to connect to a computer network and / or to other devices / computer systems. Bus 24 collectively represents multiple systems, peripherals, and chipset buses, and / or all other circuitry that allow devices 12-22 of host system 10 to communicate with each other. For example, the bus 24 may comprise, among other things, a north bridge that connects the processor 12 to the memory 14 and / or a south bridge that connects the processor 12 to the devices 16-22.

[0028]図2−Aは、ハードウェア仮想化を用いない構成での、ホストシステム10上で実行するソフトウェアオブジェクトの例示的な集合を示す。一部の実施形態ではゲストオペレーティングシステム(OS)34は、ホストシステム10のハードウェアに対するインターフェイスを提供するソフトウェアを含み、ソフトウェアアプリケーション42a〜cおよび44の集合に対するホストとして働く。OS34は、とりわけ、Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、iOS(登録商標)、またはAndroid(商標)などの任意の広く利用可能なオペレーティングシステムを含み得る。アプリケーション42a〜cは、とりわけ、ワード処理、画像処理、データベース、ブラウザ、および電子通信アプリケーションを含み得る。   [0028] FIG. 2-A illustrates an exemplary set of software objects executing on the host system 10 in a configuration that does not use hardware virtualization. In some embodiments, the guest operating system (OS) 34 includes software that provides an interface to the hardware of the host system 10 and serves as a host for a collection of software applications 42a-c and 44. The OS 34 may include any widely available operating system such as Windows®, MacOS®, Linux®, iOS®, or Android®, among others. Applications 42a-c may include word processing, image processing, databases, browsers, and electronic communication applications, among others.

[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ハイパーバイザを含む。   [0029] FIG. 2-B illustrates an exemplary set of software objects executing on the host system 10 in an embodiment using hardware virtualization. A set of guest virtual machines 32 a-b is exposed by the hypervisor 30. Virtual machines (VMs) are commonly known in the art as software emulations of actual physical machine / computer systems, each capable of running its own operating system and software independently of other VMs. ing. The hypervisor 30 includes software that enables multiplexing (sharing) of hardware resources of the host system 10 such as processor operations, memory, storage devices, input / outputs, and networking devices by multiple virtual machines. In some embodiments, the hypervisor 30 allows multiple virtual machines and / or operating systems (OS) to run on the host system 10 simultaneously with varying degrees of isolation. To enable such a configuration, the software that forms part of the hypervisor 30 is capable of creating multiple virtualized, ie software emulated devices, each virtualized. The device emulates the physical hardware devices of the system 10, such as the processor 12 and memory 14, among others. The hypervisor 30 may further assign a set of virtual devices to each VM running on the host system 10. Thus, each VM 32a-b operates as a complete computer system, to a greater or lesser extent, as if the VM owned its own set of physical devices. Creation and assignment of virtual devices to virtual machines is commonly known in the art as exposing each VM. Examples of popular hypervisors include VMware Inc., among others. VMware vSphere (TM) and an open source Xen hypervisor.

[0030]一部の実施形態ではハイパーバイザ30は、下記でさらに説明されるようなアンチマルウェア動作を実施するように構成されたメモリイントロスペクション(introspection)エンジン40を含む。エンジン40は、ハイパーバイザ30内に組み込まれ得るものであり、または、ハイパーバイザ30とは別個で独立した、ただし、ハイパーバイザ30と実質的に同様のプロセッサ特権レベルで実行する、ソフトウェアコンポーネントとして給送され得る。単一のエンジン40が、ホストシステム10上で実行する多重のVMをマルウェア保護するように構成され得る。   [0030] In some embodiments, the hypervisor 30 includes a memory introspection engine 40 that is configured to perform anti-malware operations as described further below. The engine 40 may be embedded within the hypervisor 30 or supplied as a software component that is separate and independent of the hypervisor 30 but runs at a processor privilege level that is substantially similar to the hypervisor 30. Can be sent. A single engine 40 may be configured to malware protect multiple VMs running on the host system 10.

[0031]図2−Bは、2つだけのVM32a〜bを簡単のために示すが、ホストシステム10は、多数の、例えば何百ものVMを同時に動作させ得るものであり、そのようなVMの数は、ホストシステム10の動作の間に変化し得る。一部の実施形態では各々のVM32a〜bは、ゲストオペレーティングシステム34a〜b、ならびに/または、ソフトウェアアプリケーション42d〜eおよび42fの集合を、それぞれ、同時に、および、ホストシステム10上で走る他のVMから独立して実行する。各々のOS34a〜bは、それぞれのVM32a〜bの(仮想化される)ハードウェアに対するインターフェイスを提供するソフトウェアを含み、それぞれのOS上で実行するコンピューティングアプリケーションに対するホストとして働く。   [0031] Although FIG. 2-B shows only two VMs 32a-b for simplicity, the host system 10 is capable of operating a large number, eg, hundreds of VMs, at the same time. The number of can vary during operation of the host system 10. In some embodiments, each VM 32a-b can run a set of guest operating systems 34a-b and / or software applications 42d-e and 42f, simultaneously, and other VMs running on the host system 10, respectively. Run independently. Each OS 34a-b includes software that provides an interface to the (virtualized) hardware of the respective VM 32a-b, and acts as a host for computing applications running on the respective OS.

[0032]一部の実施形態ではセキュリティアプリケーション44は、下記で詳述されるようなアンチマルウェア動作を実施して、ホストシステム10をマルウェアから保護するように構成される。図2−Bの例では、アプリケーション44のインスタンスが、各々のVM32a〜b上で実行し得るものであり、各々のそのようなインスタンスは、それぞれの仮想マシンを保護するように構成される。セキュリティアプリケーション44は、スタンドアロンプログラムであり得るものであり、または、とりわけ、アンチマルウェア、アンチスパム、およびアンチスパイウェアのコンポーネントを含む、ソフトウェアスイートの部分を形成し得る。   [0032] In some embodiments, the security application 44 is configured to perform an anti-malware operation as detailed below to protect the host system 10 from malware. In the example of FIG. 2-B, an instance of application 44 can be executed on each VM 32a-b, and each such instance is configured to protect a respective virtual machine. Security application 44 may be a stand-alone program or may form part of a software suite that includes, inter alia, anti-malware, anti-spam, and anti-spyware components.

[0033]図3は、本発明の一部の実施形態による、ホストシステム10上で実行するソフトウェアオブジェクトの階層を例示する。図3は、仮想化環境で実行するように構成された例示的な実施形態を示すが、例示される実施形態が、VM32の内部の代わりにホストシステム10上で直接実行するように修正され得ることは、当業者には明らかであり得る。図3は、当技術分野ではレイヤまたは保護リングとしても知られている、プロセッサ特権レベルの観点から表される。一部の実施形態では、各々のそのようなレイヤまたは保護リングは、それぞれのプロセッサ特権レベルで実行するソフトウェアオブジェクトが実行することを可能とされる、命令の集合により特徴付けられる。ソフトウェアオブジェクトが、それぞれの特権レベルの内部で可能とされない命令を実行しようと試みるとき、その試みは、例外、障害、または仮想マシン終了(exit)イベントなどのプロセッサイベントをトリガし得る。一部の実施形態では、特権レベル間の切り替えが、専用化された命令の集合によって実現され得る。そのような例示的な命令は、ユーザレベルからカーネルレベルに切り替えるSYSCALL/SYSENTER、カーネルレベルからユーザレベルに切り替えるSYSRET/SYSEXIT、ユーザレベルまたはカーネルレベルのいずれかからルートレベルに切り替えるVMCALL、および、ルートレベルからカーネルレベルまたはユーザレベルのいずれかに切り替えるVMRESUMEを含む。   [0033] FIG. 3 illustrates a hierarchy of software objects executing on the host system 10 according to some embodiments of the invention. Although FIG. 3 illustrates an exemplary embodiment configured to run in a virtualized environment, the illustrated embodiment may be modified to run directly on the host system 10 instead of inside the VM 32. This can be apparent to those skilled in the art. FIG. 3 is represented in terms of processor privilege levels, also known in the art as layers or guard rings. In some embodiments, each such layer or guard ring is characterized by a set of instructions that are allowed to be executed by software objects executing at the respective processor privilege level. When a software object attempts to execute an instruction that is not enabled within each privilege level, the attempt may trigger a processor event, such as an exception, failure, or virtual machine exit event. In some embodiments, switching between privilege levels may be achieved by a dedicated set of instructions. Such exemplary instructions include: SYSCALL / SYSENTER switching from user level to kernel level, SYSRET / SYSTEMX switching from kernel level to user level, VMCALL switching from either user level or kernel level to root level, and root level VMRESUME to switch to either kernel level or user level.

[0034]オペレーティングシステム34の大部分のコンポーネントは、当技術分野ではカーネルレベルまたはカーネルモードとして知られているプロセッサ特権レベル(例えば、Intelプラットフォーム上のリング0)で実行する。アプリケーション42gは、OS34より劣るプロセッサ特権(例えば、リング3またはユーザモード)で実行する。仮想化をサポートする実施形態では、ハイパーバイザ30は、ルートレベルまたはルートモードとも知られている、最も特権を与えられるレベル(例えば、Intel(登録商標)プラットフォーム上のリング−1またはVMXroot)でプロセッサ12の制御を行って、仮想マシン32を、OS34、および、アプリケーション42gなどの他のソフトウェアオブジェクトにエクスポーズする。   [0034] Most components of the operating system 34 run at a processor privilege level known in the art as the kernel level or kernel mode (eg, ring 0 on the Intel platform). The application 42g executes with processor privileges (for example, ring 3 or user mode) inferior to the OS 34. In embodiments that support virtualization, the hypervisor 30 is a processor at the most privileged level (e.g., Ring-1 or VMXroot on the Intel platform), also known as the root level or root mode. 12 to expose the virtual machine 32 to the OS 34 and other software objects such as the application 42g.

[0035]一部の実施形態では、セキュリティアプリケーション44の部分は、ユーザレベルプロセッサ特権、すなわち、アプリケーション42gと同じレベルで実行し得る。例えばそのような部分は、グラフィカルユーザインターフェイスを含み得るものであり、そのグラフィカルユーザインターフェイスは、ユーザに、それぞれのVM上で検出される何らかのマルウェアまたはセキュリティ脅威を知らせ、例えば、アプリケーション44に対する所望される構成オプションを示す、ユーザからの入力を受信するものである。ユーザレベルで実行するコンポーネントの別の例は、下記で詳述されるように動作するユーザレベルエンティティ評価器50aである。一部の実施形態では、ユーザレベルエンティティ評価器50aの部分は、セキュリティアプリケーション44の内部で動作し得るものであり、一方で別の部分(フッキングモジュールなど)は、アプリケーション42gなどの評価されるアプリケーションの内部で動作し得る。アプリケーション44の他の部分は、カーネル特権レベルで実行し得る。例えばアプリケーション44は、すべてがカーネルモードで動作する、アンチマルウェアドライバ36、エンティティ管理モジュール37、およびスコアリングエンジン38をインストールし得る。ドライバ36は、例えば、メモリをマルウェアシグネチャに対してスキャンするための、ならびに/または、OS34上で実行するプロセスおよび/もしくは他のソフトウェアオブジェクトの、マルウェアを示す挙動を検出するための、アンチマルウェアアプリケーション44に対する機能性を提供する。一部の実施形態ではアンチマルウェアドライバ36は、下記で詳述されるように動作するカーネルレベルエンティティ評価器50bを含む。   [0035] In some embodiments, portions of security application 44 may execute at the same level as user level processor privileges, ie, application 42g. For example, such a portion may include a graphical user interface that informs the user of any malware or security threat detected on the respective VM, eg desired for application 44 Receive input from the user indicating configuration options. Another example of a component that executes at the user level is a user level entity evaluator 50a that operates as detailed below. In some embodiments, the portion of the user level entity evaluator 50a is capable of operating within the security application 44, while another portion (such as a hooking module) is evaluated application such as the application 42g. Can work inside. Other parts of application 44 may run at the kernel privilege level. For example, application 44 may install anti-malware driver 36, entity management module 37, and scoring engine 38, all operating in kernel mode. The driver 36 is, for example, an anti-malware application for scanning memory for malware signatures and / or detecting processes indicative of malware in processes and / or other software objects executing on the OS 34. Provides functionality for 44. In some embodiments, anti-malware driver 36 includes a kernel level entity evaluator 50b that operates as detailed below.

[0036]一部の実施形態ではエンティティ管理モジュール37は、ホストシステム10(またはVM32)の内部で実行するソフトウェアエンティティのコレクションを管理する。一部の実施形態ではコレクションは、マルウェアに対して、55a〜bなどのエンティティ評価モジュールにより評価されているすべてのエンティティを含む。コレクションを管理するために、モジュール37は、下記のモード詳細で示されるようなエンティティ起動および/または終了イベントなどのライフサイクルイベントの発生を検出することに応じて、コレクションのエンティティを追加および/または除去し得る。モジュール37は、親エンティティの子エンティティ(例えば、子プロセス)を決定する、および/または、選択されるエンティティが、ライブラリなどのソフトウェアオブジェクトを別のエンティティ内に注入したかどうか、もしくは、選択されるエンティティが、別のソフトウェアエンティティによる注入の対象であるかどうかを決定するなど、エンティティ間の関係性をさらに決定し得る。子エンティティは、親エンティティと呼ばれる別の実行可能エンティティにより創出される実行可能エンティティであり、子エンティティは、親エンティティから独立して実行する。例示的な子エンティティは、例えば、Windows(登録商標)OSのCreateProcess関数によって、または、Linux(登録商標)でのフォーク機構によって創出される、子プロセスである。コード注入は、動的リンクライブラリ(DLL)などのコードのシーケンスを現存するプロセスのメモリ空間内に導入して、それぞれのプロセスの元の機能性を改変する方法の一群を示すために、当技術分野で使用される総称用語である。プロセスの起動を検出すること、および/または、コード注入を検出することなどのタスクを実施するために、モジュール37は、ある決まったOS関数を呼び出すこと、またはフックすることなどの、当技術分野で知られている任意の方法を用い得る。例えば、Windows(登録商標)OSを走らせるシステムでは、モジュール37は、PsSetCreateProcessNotifyRoutineコールバックを登録して、新しいプロセスの起動を検出し、および/または、CreateRemoteThread関数をフックして、注入されるコードの実行を検出し得る。   [0036] In some embodiments, the entity management module 37 manages a collection of software entities that execute within the host system 10 (or VM 32). In some embodiments, the collection includes all entities that have been evaluated against malware by an entity evaluation module, such as 55a-b. To manage the collection, the module 37 adds and / or adds entities to the collection in response to detecting the occurrence of a lifecycle event such as an entity start and / or end event as indicated in the mode details below. Can be removed. Module 37 determines the child entity (eg, child process) of the parent entity and / or whether the selected entity has injected a software object such as a library into another entity or is selected. Relationships between entities may be further determined, such as determining whether an entity is subject to injection by another software entity. A child entity is an executable entity created by another executable entity called a parent entity, and the child entity executes independently of the parent entity. Exemplary child entities are, for example, child processes created by the Windows OS CreateProcess function or by a fork mechanism in Linux. Code injection is a technique for introducing a sequence of code, such as a dynamic link library (DLL), into the memory space of an existing process to show a group of ways to modify the original functionality of each process. A generic term used in the field. In order to perform tasks such as detecting process invocations and / or detecting code injections, module 37 calls the certain OS function or hooks, etc. Any method known in can be used. For example, in a system running a Windows OS, module 37 registers a PsSetCreateProcessNotifyRoutine callback to detect the start of a new process and / or hooks the CreateRemoteThread function to inject injected code. Execution can be detected.

[0037]図4は、本発明の一部の実施形態による、エンティティ管理モジュール37により実施されるステップの例示的なシーケンスを示す。ステップ250〜252のシーケンスでモジュール37は、例えば、上記で説明された方法を使用して、エンティティライフサイクルイベントをインターセプトする。そのようなイベントが発生したとき、ステップ254は、それぞれのイベントをトリガするエンティティを識別する。ステップ258は、それぞれのエンティティの一意的なエンティティ識別インジケータ(EID)を決定するステップを含み得るものであり、そのようなインジケータは、下記でさらに示されるように、それぞれのエンティティをスコアリングする際に使用され得る。ステップ256は、イベントが、新しいエンティティ(例えば、新しいプロセス)の起動を含むかどうかを決定し、いいえ(NO)であるとき、モジュール37はステップ260に進む。イベントが起動を含むとき、ステップ258でモジュール37は、トリガするエンティティを、評価されるエンティティのコレクションに追加し得る。ステップ260は、イベントが、子エンティティを生み出す親エンティティを含むかどうかを決定するステップを含み、いいえであるとき、モジュール37はステップ264に進み得る。はい(YES)であるとき、ステップ262でモジュール37は、それぞれの子エンティティを、評価されるエンティティのコレクションに追加し得る。ステップ262は、子エンティティのEIDを決定し、トリガするエンティティと子エンティティとの間の関係を、派生(親−子)関係として登録するステップをさらに含み得る。   [0037] FIG. 4 illustrates an exemplary sequence of steps performed by the entity management module 37, according to some embodiments of the invention. In the sequence of steps 250-252, module 37 intercepts entity lifecycle events using, for example, the methods described above. When such an event occurs, step 254 identifies the entity that triggers the respective event. Step 258 may include determining a unique entity identification indicator (EID) for each entity, such an indicator when scoring each entity, as further described below. Can be used. Step 256 determines whether the event includes the activation of a new entity (eg, a new process), and if no (NO), module 37 proceeds to step 260. When the event includes an activation, at step 258, module 37 may add the triggering entity to the collection of entities to be evaluated. Step 260 includes determining whether the event includes a parent entity that produces a child entity, and if no, module 37 may proceed to step 264. When yes (YES), at step 262, module 37 may add each child entity to the collection of entities to be evaluated. Step 262 may further include determining the EID of the child entity and registering the relationship between the triggering entity and the child entity as a derived (parent-child) relationship.

[0038]一部の実施形態ではステップ264は、イベントがコードの注入を含むかどうかを決定し、いいえであるとき、モジュール37はステップ268に進み得る。はいであるとき、モジュール37は、コード注入の発生源エンティティおよび対象エンティティを識別し得るものであり、発生源エンティティは、コードを対象エンティティ内に注入するものである。ステップ266でモジュール37は、発生源エンティティと対象エンティティとの間のコード注入タイプの関係を登録し得る。   [0038] In some embodiments, step 264 determines whether the event includes a code injection, and if no, module 37 may proceed to step 268. When yes, module 37 may identify the source entity and the target entity for code injection, which injects code into the target entity. At step 266, module 37 may register a code injection type relationship between the source entity and the target entity.

[0039]ステップ268でエンティティ管理モジュール37は、イベントが、トリガするエンティティの終了を含むかどうかを決定し、いいえであるとき、モジュール37はステップ250に戻る。一部の実施形態ではエンティティは、それぞれのエンティティのすべてのコンポーネントが実行を終えたときに、終了させられたとみなされる。例えばプロセスは、それぞれのプロセスのすべてのスレッドが実行を終えたときに、終了する。イベントが、トリガするエンティティの終了を含んでいたとき、ステップ270でモジュール37は、トリガするエンティティの子孫エンティティの集合を決定し得る。一部の実施形態では、トリガするエンティティの子孫エンティティは、それぞれのエンティティの子エンティティ、および、それらの子エンティティの子エンティティを、多重の世代にわたって含む。一部の実施形態では子孫エンティティは、トリガするエンティティにより注入されるコードを含む対象エンティティ、および、対象にされるエンティティにより対象にされるエンティティを再帰的に含み得る。ステップ272でモジュール37は、子孫エンティティの集合のすべてのエンティティが終了したものであるかどうかを決定し得るものであり、いいえであるとき、実行はステップ250に戻る。すべての子孫が終了したものであるとき、ステップ274でエンティティ管理モジュール37は、トリガするエンティティを、評価されるエンティティのコレクションから除去し得る。   [0039] At step 268, the entity management module 37 determines whether the event includes the end of the triggering entity, and if no, the module 37 returns to step 250. In some embodiments, entities are considered terminated when all components of each entity have finished executing. For example, a process is terminated when all threads of the respective process have finished executing. When the event included the end of the triggering entity, module 37 may determine a set of descendant entities of the triggering entity at step 270. In some embodiments, the descendent entities of the triggering entity include child entities of each entity and child entities of those child entities over multiple generations. In some embodiments, descendent entities may recursively include a target entity that includes code injected by the triggering entity and an entity targeted by the targeted entity. At step 272, module 37 may determine whether all entities in the set of descendent entities are finished, and if no, execution returns to step 250. When all descendants are finished, at step 274 entity management module 37 may remove the triggering entity from the collection of evaluated entities.

[0040]一部の実施形態ではスコアリングエンジン38は、データを、評価器50a〜bなどの複数のエンティティ評価器モジュールから受信することであって、データが、評価されるソフトウェアエンティティに対して決定される、受信することと、それぞれのエンティティが悪意あるものであるかどうかを、それぞれのデータによって決定することとを行うように構成される。一部の実施形態では、スコアリングエンジン38により分析されるソフトウェアエンティティは、とりわけ、プロセスおよび実行スレッドなどの実行可能オブジェクトを含む。プロセスは、アプリケーション、または、オペレーティングシステムの部分などの、コンピュータプログラムのインスタンスであり、少なくとも実行スレッド、および、オペレーティングシステムによりそれに割り当てられる仮想メモリのセクションを有することにより特徴付けられ、それぞれのセクションは実行可能コードを含む。一部の実施形態では、評価されるソフトウェアエンティティは、実質的に範囲および複雑度において、例えば、オペレーティングシステムおよび/または仮想マシンの、個々のスレッドから、個々のアプリケーションまで、全体のインスタンスまで変動し得る。   [0040] In some embodiments, scoring engine 38 receives data from a plurality of entity evaluator modules, such as evaluators 50a-b, where the data is for the software entity being evaluated. It is determined to receive and to determine, depending on the respective data, whether each entity is malicious. In some embodiments, software entities analyzed by scoring engine 38 include executable objects such as processes and execution threads, among others. A process is an instance of a computer program, such as an application or part of an operating system, characterized by having at least a thread of execution and a section of virtual memory allocated to it by the operating system, each section executing Contains possible code. In some embodiments, the evaluated software entities vary in substantial scope and complexity, for example, from individual threads to individual applications, to entire instances of the operating system and / or virtual machine. obtain.

[0041]図5は、複数の評価インジケータ52a〜dを受信する、例示的なスコアリングエンジン38を示すものであり、各々のインジケータ52a〜dはエンティティ評価器により決定される。図5においてそのような評価器は、とりわけ、ユーザレベルエンティティ評価器50a、カーネルレベルエンティティ評価器50b、およびシステムコール評価器50cを含む。各々のそのような評価器モジュールは、他の評価器から独立して実行し得るものであり、各々は、評価されるソフトウェアエンティティの複数の別個のエンティティ評価インジケータを決定し得る。ハードウェア仮想化を実装するシステムでは、図5でのインジケータ52a〜cなどの一部の評価インジケータは、VM32の内部で実行するコンポーネントにより決定され、一方で、52dなどの他の評価インジケータは、(例えば、メモリイントロスペクションエンジン40により)VM32の外側で実行するコンポーネントにより決定される。一部の実施形態では、各々の評価インジケータ52a〜dはエンティティ識別インジケータを含み、そのエンティティ識別インジケータによってエンジン38は、それぞれの評価インジケータを、その評価インジケータが決定された対象であるソフトウェアエンティティに一意的に関連付けることが可能となる。   [0041] FIG. 5 illustrates an exemplary scoring engine 38 that receives a plurality of evaluation indicators 52a-d, where each indicator 52a-d is determined by an entity evaluator. Such evaluators in FIG. 5 include, among other things, a user level entity evaluator 50a, a kernel level entity evaluator 50b, and a system call evaluator 50c. Each such evaluator module may be executed independently of the other evaluators, and each may determine a plurality of separate entity evaluation indicators for the software entity being evaluated. In systems that implement hardware virtualization, some evaluation indicators, such as indicators 52a-c in FIG. 5, are determined by components that run inside VM 32, while other evaluation indicators, such as 52d, Determined by components executing outside VM 32 (eg, by memory introspection engine 40). In some embodiments, each rating indicator 52a-d includes an entity identification indicator that causes the engine 38 to make each rating indicator unique to the software entity for which the rating indicator was determined. Can be associated with each other.

[0042]一部の評価インジケータは、マルウェアを示すものであり得るものであり、すなわち、評価されるエンティティが悪意あるものであることを示し得る。一部の評価インジケータは、それら自体はマルウェアを示すものでない場合があるが、他の評価インジケータと組み合わされるときに、悪意あることを示す場合がある。各々の評価インジケータ52a〜dは、別個の方法および/または基準によって決定され得る。例示的な評価基準は、評価されるエンティティが、ディスクファイルに書き込むこと、VM32のシステム登録キーを編集すること、または、保護されるソフトウェアオブジェクトに属するメモリページに書き込むことなどの、ある決まったアクションを実施するかどうかを決定することなどの挙動基準を含む。別の例示的な基準は、評価されるエンティティに属するメモリのセクションが、マルウェアを示すシグネチャを内包するかどうかを決定することを含み得る。   [0042] Some evaluation indicators may be indicative of malware, that is, may indicate that the entity being evaluated is malicious. Some rating indicators may not themselves indicate malware, but may indicate malicious when combined with other rating indicators. Each rating indicator 52a-d may be determined by a separate method and / or criteria. An exemplary evaluation criterion is that the entity being evaluated has a certain action, such as writing to a disk file, editing the VM32 system registration key, or writing to a memory page belonging to a protected software object. Behavior criteria such as deciding whether to implement Another exemplary criterion may include determining whether a section of memory belonging to the entity being evaluated contains a signature indicative of malware.

[0043]エンティティ評価器50a〜cの動作を例示するために、図6は、本発明の一部の実施形態による、ソフトウェアエンティティ70a〜bの集合の例示的な実行フローを示す。簡単のために、選定されるエンティティ70a〜bは、Windows(登録商標)OSのインスタンスで実行するプロセスであるが、同様の線図が、例えばLinuxなどの他のオペレーティングシステムに対して描写され得る。実線矢印は、エンティティ評価器が存しないときの(例えば、セキュリティアプリケーション44が存しないときの)実行フローを表す。破線矢印は、本発明の一部の実施形態によって実行する、エンティティ評価器50a〜cが存することに起因する、フローに対する修正を表す。   [0043] To illustrate the operation of entity evaluators 50a-c, FIG. 6 illustrates an exemplary execution flow of a collection of software entities 70a-b, according to some embodiments of the present invention. For simplicity, the selected entities 70a-b are processes that run on an instance of the Windows OS, but similar diagrams can be depicted for other operating systems such as Linux, for example. . A solid arrow represents the execution flow when the entity evaluator does not exist (eg, when the security application 44 does not exist). Dashed arrows represent modifications to the flow due to the presence of entity evaluators 50a-c, performed in accordance with some embodiments of the present invention.

[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を確認されたい)。   [0044] Process 70a loads a plurality of dynamically linked libraries (DLLs) 72a-c, and in the example of FIG. 6, DLL 72c is injected into process 70a by (possibly malicious) process 70b. . Each instruction when process 70a (or one of its loaded DLLs) executes an instruction that invokes some system functionality, for example, writes something to a disk file or edits a registry key Is KERNEL32. DLL or NTDLL. Call a user mode API such as DLL. In the example of FIG. 6, each user mode API call is intercepted and analyzed by the user level behavior filter 50a. Such interception can be achieved by methods such as DLL injection or hooking, among others. Hooking is a generic term used in the art for a method of intercepting function calls, messages, or events that are passed between software components. One exemplary hooking method includes modifying the target function entry point by inserting an instruction that redirects execution to a second function. Following such hooking, a second function may be executed in place of or before the target function. In the example of FIG. 6, the anti-malware driver 36 is KERNEL 32. DLL or NTDLL. You can hook into certain functions in the DLL and instruct each function to redirect execution to the filter 50a. Thus, filter 50a may detect that process 70a is attempting to perform a certain behavior that is identified by the function being hooked. When filter 50a detects such behavior, filter 50 may formulate evaluation indicator 52a and send indicator 52a to scoring engine 38 (eg, see FIG. 5).

[0045]実行の典型的なフローでは、エンティティ70aにより呼び出されるユーザモードAPI関数は、サービスをオペレーティングシステムのカーネルに要求し得る。一部の実施形態ではそのような動作は、x86プラットフォーム上のSYSCALLおよびSYSENTERなどのシステムコールを発行することにより実施される。図6の例ではそのようなシステムコールは、システムコール評価器50cによりインターセプトされる。一部の実施形態ではそのようなインターセプトは、例えば、システムコールハンドラルーチンを、プロセッサ12のモデル固有レジスタ(MSR)に記憶される値を変化させることにより修正することを含み、そのことは、実行をフィルタ50cに効果的にリダイレクトする。そのような技法は、MSRフッキングとして当技術分野で知られており、そのような技法によって、システムコール評価器50cは、評価されるプロセスが、ある決まったシステムコールを実施しようと試みていることを検出することが可能となり得る。そのようなシステムコールがインターセプトされるとき、システムコールフィルタ50cは、エンティティ評価インジケータ52cを定型化し、インジケータ52cをスコアリングエンジン38に送信し得る。   [0045] In a typical flow of execution, a user mode API function called by entity 70a may request a service from the operating system kernel. In some embodiments, such operations are performed by issuing system calls such as SYSCALL and SYSENTER on x86 platforms. In the example of FIG. 6, such a system call is intercepted by the system call evaluator 50c. In some embodiments, such intercepting includes, for example, modifying a system call handler routine by changing a value stored in a model specific register (MSR) of processor 12, which may include executing Is effectively redirected to the filter 50c. Such a technique is known in the art as MSR hooking so that the system call evaluator 50c is attempting to perform a certain system call by the process being evaluated. Can be detected. When such a system call is intercepted, the system call filter 50c may formulate an entity evaluation indicator 52c and send the indicator 52c to the scoring engine 38.

[0046]システムコールの後に続いて、プロセッサの制御が、典型的には、OS34のカーネルに引き継がれる。一部の実施形態では、カーネルレベルエンティティ評価器50bは、OSカーネルの、ある決まった動作をインターセプトし、したがって、評価されるプロセスが、悪意あるものであり得る、ある決まった動作を実施しようと試みていることを決定するように構成される。そのような動作をインターセプトするために、一部の実施形態は、OS34内に構築され、OS34によりエクスポーズされる、フィルタリング機構の集合を用い得る。例えばWindows OSでは、FltRegisterFilterが、ファイルを創出すること、ファイルを開くこと、ファイルに書き込むこと、および、ファイルを削除することのような動作をインターセプトするために使用され得る。別の例では評価器50bは、ObRegisterCallbackを使用して、オブジェクトハンドルを創出もしくは複製する動作をインターセプトし、または、PsSetCreateProcessNotifyRoutineを使用して、新しいプロセスの創出をインターセプトし得る。さらに別の例では、レジストリキー/値を創出および設定することなどのWindowsレジストリ動作が、CmRegisterCallbackExを使用してインターセプトされ得る。同様のフィルタリング機構が、当技術分野で、Linux(登録商標)などの他のオペレーティングシステムに対して知られている。カーネルモードエンティティ評価器50bがそのような動作をインターセプトするとき、評価器50bは、エンティティ評価インジケータ52bを定型化し、インジケータ52bをスコアリングエンジン38に送信し得る。   [0046] Following the system call, control of the processor is typically taken over to the OS 34 kernel. In some embodiments, the kernel level entity evaluator 50b intercepts certain behaviors of the OS kernel and thus attempts to perform certain behaviors where the evaluated process can be malicious. Configured to determine what is being attempted. In order to intercept such operations, some embodiments may use a set of filtering mechanisms built into and exposed by OS 34. For example, in Windows OS, FltRegisterFilter can be used to intercept operations such as creating a file, opening a file, writing to a file, and deleting a file. In another example, the evaluator 50b may use an ObRegisterCallback to intercept an operation to create or duplicate an object handle, or a PsSetCreateProcessNotifyRoutine to intercept the creation of a new process. In yet another example, Windows registry operations such as creating and setting registry keys / values may be intercepted using CmRegisterCallbackEx. Similar filtering mechanisms are known in the art for other operating systems, such as Linux. When kernel mode entity evaluator 50b intercepts such operations, evaluator 50b may formalize entity evaluation indicator 52b and send indicator 52b to scoring engine 38.

[0047]エンティティ評価インジケータ52a〜cなどのデータを、評価器50a〜cからスコアリングエンジン38に送信するために、当業者であれば、任意のプロセス間通信方法を用い得る。例えば、ユーザモードコンポーネントとカーネルモードコンポーネントとの間で通信するために、評価器50a〜cおよびエンジン38は、メモリの共有されるセクションを使用するように構成され得る。データ交換が、VM32の内部で実行するコンポーネントと、それぞれのVMの外側で実行するコンポーネントとの間で必要とされるとき、そのような通信が、仮想化の当技術分野で知られている任意の方法を使用して実施され得る。例えば、評価インジケータ52dを、メモリイントロスペクションエンジン40からスコアリングエンジン38に送信するために、一部の実施形態は、中断注入機構を使用して、エンジン38に、データがそれぞれのVMの外側から送信されていることをシグナリングする。実際のデータは、例えば、上記で説明された共有されるメモリセクションによって転送され得る。   [0047] Any interprocess communication method may be used by those skilled in the art to transmit data, such as entity evaluation indicators 52a-c, from scoring devices 50a-c to scoring engine 38. For example, to communicate between a user mode component and a kernel mode component, the evaluators 50a-c and the engine 38 may be configured to use a shared section of memory. When data exchange is required between a component executing inside VM 32 and a component executing outside each VM, such communication is optional as known in the art of virtualization. Can be implemented using For example, to send the evaluation indicator 52d from the memory introspection engine 40 to the scoring engine 38, some embodiments use an interrupt injection mechanism to cause the engine 38 to send data to the outside of each VM. Signaling that it is being sent from. The actual data can be transferred, for example, by the shared memory section described above.

[0048]図7は、本発明の一部の実施形態による、図4〜5での評価器50a〜cおよび/またはメモリイントロスペクションエンジン40などの、エンティティ評価器により実施されるステップの例示的なシーケンスを示す。ステップ302〜304のシーケンスでエンティティ評価器は、ホストシステム10および/または仮想マシン32の内部でのトリガイベントの発生に対して待機する。例示的なトリガイベントは、とりわけ、特定のプロセッサ命令を発行すること、記憶デバイス20もしくはネットワークアダプタ22などの特定のひとまとまりのハードウェアを使用しようと試みること、または、保護されるメモリページに書き込もうと試みることなど、ある決まった挙動を実施するソフトウェアエンティティを含む。例えば、評価器50cに対するトリガイベントは、システムコール(例えば、SYSENTER)を発行するソフトウェアエンティティを含み得る。評価器50dに対するトリガイベントの別の例は、UrlDownloadToFile APIの関数を呼び出すアプリケーションを含み得る。トリガイベントの発生を検出するために、それぞれのエンティティ評価器は、とりわけ、コード注入およびMSRフッキングなどの、当技術分野で知られている任意の方法を使用し得る。トリガイベントインターセプトの一部の例は、図6に関係して上記で説明されている。   [0048] FIG. 7 is an illustration of steps performed by an entity evaluator, such as evaluator 50a-c and / or memory introspection engine 40 in FIGS. 4-5, according to some embodiments of the invention. Shows a typical sequence. In the sequence of steps 302-304, the entity evaluator waits for the occurrence of a trigger event within the host system 10 and / or the virtual machine 32. Exemplary trigger events include, among other things, issuing specific processor instructions, attempting to use a specific piece of hardware such as storage device 20 or network adapter 22, or writing to a protected memory page. Includes software entities that perform certain behaviors, such as trying to try. For example, the trigger event for the evaluator 50c may include a software entity that issues a system call (eg, SYSTEMER). Another example of a trigger event for the evaluator 50d may include an application that calls a function of the UrlDownloadToFile API. In order to detect the occurrence of a trigger event, each entity evaluator may use any method known in the art, such as code injection and MSR hooking, among others. Some examples of trigger event intercepts are described above with respect to FIG.

[0049]トリガイベントが検出されるとき、ステップ306でエンティティ評価器は、それぞれのトリガイベントを引き起こすソフトウェアエンティティ(例えば、プロセス)を識別し得る。一部の実施形態ではエンティティ評価器は、ソフトウェアエンティティの識別情報を、OS34により、現在実行中の各々のプロセスおよび/またはスレッドを表すために使用される、データ構造から決定し得る。例えばWindowsでは、各々のプロセスはエグゼクティブプロセスブロック(EPROCESS)として表され、そのブロックは、とりわけ、それぞれのプロセスのスレッドの各々に対するハンドル、および、OS34が、それぞれのプロセスを複数の実行するプロセスから識別することを可能とする、一意的なプロセスIDを含む。同様のプロセス/スレッド表現が、Linuxなどの他のOSに対して利用可能である。   [0049] When trigger events are detected, at step 306, the entity evaluator may identify software entities (eg, processes) that cause each trigger event. In some embodiments, the entity evaluator may determine the identity of the software entity from a data structure used by the OS 34 to represent each process and / or thread currently executing. For example, in Windows, each process is represented as an executive process block (EPROCESS), which identifies, among other things, the handle to each of the respective process's threads and the process by which the OS 34 executes each process. It contains a unique process ID that makes it possible to Similar process / thread representations are available for other OSes such as Linux.

[0050]ステップ308でエンティティ評価器は、評価インジケータを定型化し得るものであり、その評価インジケータは、それぞれのソフトウェアエンティティの識別子(例えば、プロセスID)、および、それぞれのソフトウェアエンティティにより実施され、ステップ302〜304でインターセプトされるアクション/イベントの種類のインジケータを含む。一部の実施形態ではエンティティ評価器は、それぞれのソフトウェアエンティティのアクションおよび/または挙動のタイプを、インターセプトされるトリガイベントのパラメータから決定し得る。動作の例では、プロセスが、ファイルをインターネットからダウンロードしようと試みるとき、ユーザレベルエンティティ評価器50aは、その試みをインターセプトし得る。どのプロセスがアクションを実施しているかを識別することに加えて、評価器50aはさらには、とりわけ、アクション(ファイルをダウンロードすること)のタイプ、ファイルがダウンロードされるIPアドレス、および、ダウンロードされるファイルのディスク位置を決定し得る。そのようなデータが評価インジケータ内に選択的に組み込まれ得るものであり、そのことによって、スコアリングエンジン38は、エンティティXがアクションYをパラメータZによって実施したことを決定することが可能となる。ステップ310でエンティティ評価器は、評価インジケータをスコアリングエンジン38に送信する。   [0050] In step 308, the entity evaluator may stylize an evaluation indicator, the evaluation indicator being implemented by the identifier (eg, process ID) of each software entity and each software entity, Contains an indicator of the type of action / event intercepted at 302-304. In some embodiments, the entity evaluator may determine the type of action and / or behavior of each software entity from the parameters of the intercepted trigger event. In an example operation, when a process attempts to download a file from the Internet, the user level entity evaluator 50a may intercept the attempt. In addition to identifying which process is performing the action, the evaluator 50a further includes, among other things, the type of action (downloading the file), the IP address from which the file is downloaded, and the downloaded The disk location of the file can be determined. Such data can be selectively incorporated into the evaluation indicator, which allows the scoring engine 38 to determine that entity X has performed action Y with parameter Z. In step 310, the entity evaluator sends an evaluation indicator to the scoring engine 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が、評価されるエンティティがダウンロードを試みる場合にのみ付与され得る。 [0051] In some embodiments, the scoring engine 38 and / or the entity management module 37 is a centralized version of the software entity being evaluated, such as processes and threads executing on the host system 10 (or VM 32). Maintain a knowledge base. FIG. 8 shows a set of evaluated entities 70c-e, each represented as an exemplary entity scoring object (ESO) 74a-c. Each ESO includes a plurality of data fields, some of which are illustrated in FIG. Such fields may include a unique entity identifier (EID) 76a, a plurality of evaluation scores 76b, and an aggregate score 76d. In some embodiments, rating score 76b is determined by rating indicators 52a-d received by engine 38 from individual entity evaluators. Each such score may be determined by the evaluation criteria identified by indicator 76c. In some embodiments, the evaluation score 76b has a one-to-one correspondence with the evaluation criteria 76c so that each score is considered to be according to a respective criterion. For example, the particular criteria C k may include determining whether the evaluated entity downloads the file from a computer network such as the Internet. In one such example, each score S k may be given only if the evaluated entity attempts to download.

[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に対して設定され得る。 [0052] In some embodiments, the ESO 74a may further include a set of flags 76e. Some flags 76e may be binary indicators (eg, 0/1, yes / no). In one such example, the flag may indicate whether each evaluated entity E 1 meets certain evaluation criteria (eg, whether E 1 is an executable file downloaded from the Internet, E 1 Indicates whether to run in command line mode, etc.). Another exemplary flag, which shows the classification of entities E 1, for example, E 1 is Trojan malware, browser object, PDF reader applications, such as other things belonging to a specific category of objects It is an indicator. An exemplary use of the flag includes a situation where an update of the evaluation score S i of entity E 1 triggers an update of another evaluation score S j of E 1 (see below). The flag may be used to turn on and off such a co-update mechanism. For example, when E 1 meets the evaluation criterion C i (eg, when the entity performs a specific action), the entity E 1 may further be known to be highly likely to meet the criterion C j. . Accordingly, a flag F 1 indicating a connection <C i , C j > that triggers an update of the score S j when the score S i is updated may be set for the entity E 1 .

[0053]ESO74aは、それぞれのエンティティが、現在アクティブであるか、それとも、終了したものであるかを示す、終了インジケータ76fをさらに含み得る。そのような終了インジケータによって、スコアリングエンジン38は、終了したものであるエンティティの記録を保つこと、および/または、それらのエンティティのスコアを更新することが可能となり得る。ESO74aは、それぞれのエンティティEに関係付けられるソフトウェアエンティティの識別子の集合をさらに含み得る。そのような関係付けられるソフトウェアエンティティの例は、識別子76gにより表象されるEの親エンティティ、および、識別子76hにより表象されるEの子エンティティの集合を含み得る。ESO74aは、内にEがコードを注入したソフトウェアエンティティを識別する、注入対象エンティティのインジケータの集合(項目76j)をさらに、および、コードをE内に注入したソフトウェアエンティティを識別する、注入発生源エンティティのインジケータの集合(項目76k)をさらに含み得る。 [0053] The ESO 74a may further include an end indicator 76f that indicates whether each entity is currently active or has ended. Such an end indicator may allow scoring engine 38 to keep a record of the entities that have ended and / or update the scores of those entities. ESO74a may further comprise a set of identifiers of the software entity to be associated with the respective entities E 1. Examples of such related software entities may include a set of E 1 parent entities represented by identifier 76g and a child entity of E 1 represented by identifier 76h. ESO74a identifies the software entity E 1 is injected code within a set of indicators of the injection target entity (item 76j) further and identifies the software entity that inject code into the E 1, injection occurs It may further include a set of source entity indicators (item 76k).

[0054]一部の実施形態では、評価されるソフトウェアエンティティのスコアリングは、スコア値の集合によって、およびさらには、追加的なパラメータによって進行する。図9は、そのようなデータを例示するものであり、スコア値の集合は、項目80により表象される。スコア値は、それらの対応する評価基準C、…Cによりインデックス付けされる。各々のそのような値は、例えば、評価されるエンティティが、そのエンティティがそれぞれの評価基準を満たす場合(例えば、そのエンティティがファイルをインターネットからダウンロードする場合、そのエンティティがMS Word(登録商標)文書に書き込む場合、その他)に受け取る、あらかじめ決定された数のポイントを表し得る。 [0054] In some embodiments, scoring of the evaluated software entity proceeds with a set of score values, and even with additional parameters. FIG. 9 illustrates such data, and a set of score values is represented by item 80. The score values are indexed by their corresponding evaluation criteria C 1 ,... C n . Each such value may be, for example, if the entity being evaluated meets the respective evaluation criteria (for example, if the entity downloads a file from the Internet, the entity will receive the MS Word® document). ) May represent a predetermined number of points received in others).

[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)構造として記憶され得る。スコアリングに対する重みの例示的な使用が、下記で論考されることになる。 [0055] Exemplary parameters that control scoring include a set of initialization weights 82a, a set of propagation weights 82b, a set of new instance weights 82c, a set of exception weights 82d, and flag-induced ) Includes a set of weights 82e. Weight 82a~e, the evaluation criteria C 1, are indexed by ... C n. Some types of weights have a one-to-one correspondence with evaluation criteria such that one weight value w i exists for each C i . Other types of weights have a one-to-many correspondence with evaluation criteria. One such example is the exception weight 82d in FIG. 9, where there may be multiple weights w ij corresponding to a particular evaluation criterion C i . The weights may be grouped by entity class or category, as illustrated by the example of FIG. 9, for example, a first applicable to a word processing application (eg, MS Word®). A weight value, a second weight value (possibly separate from the first) applicable to a web browser (eg, Firefox® and MS Internet Explorer®), and a file manager There may be a third weight value applicable to the application (eg, Windows Explorer®). It can be useful to distinguish between different categories of entities because some metrics may be more indicative of malware against one category of entities than others. It is from. More generally, each scoring weight can be indexed by a tuple <C i , E k ,...>, Where C i represents a specific evaluation criterion, and E k Represents the entity being evaluated. The actual data format for storing and accessing the scoring weights 82a-e may vary between embodiments. The weights 82a-e may be stored as a matrix, list, relational database (RDB), or extensible markup language (XML) structure, among others. An exemplary use of weights for scoring will be discussed below.

[0056]スコア値80および/または重み82a〜eは、例えば、人間のオペレータによりあらかじめ決定される。一部の実施形態ではそのような値は、時間的に変化し得るものであり、マルウェア検出を最適化するように調整され得る。更新されるスコア値および/または重み値は、ホストシステム10に、周期的な、および/またはオンデマンドのソフトウェア更新として、セキュリティサーバから給送され得る(図10〜11に関係する下記を確認されたい)。   [0056] The score value 80 and / or weights 82a-e are predetermined by, for example, a human operator. In some embodiments, such values can change over time and can be adjusted to optimize malware detection. The updated score values and / or weight values can be sent to the host system 10 from the security server as periodic and / or on-demand software updates (see below related to FIGS. 10-11). Wanna)

[0057]図10は、本発明の一部の実施形態による、スコアリングエンジン38により実行されるステップの例示的なシーケンスを示す。ステップ302でエンジン38は、エンティティ評価インジケータを、エンティティ評価器、例えば、図5での評価器50a〜cの1つから受信する。ハードウェア仮想化を実装する一部の実施形態では、エンジン38は、それぞれのエンティティ評価インジケータを、それぞれの仮想マシンの外側で実行するコンポーネント(例えば、図5でのメモリイントロスペクションエンジン40)から受信し得る。ステップ304でエンジン38は、それぞれのエンティティ評価インジケータが決定された対象であるソフトウェアエンティティを、例えば、それぞれの評価インジケータに埋め込まれるエンティティIDによって識別し得る(図7に関係する上記を確認されたい)。   [0057] FIG. 10 illustrates an exemplary sequence of steps performed by the scoring engine 38, according to some embodiments of the present invention. At step 302, engine 38 receives an entity evaluation indicator from an entity evaluator, eg, one of evaluators 50a-c in FIG. In some embodiments that implement hardware virtualization, the engine 38 receives the respective entity evaluation indicator from a component that executes outside the respective virtual machine (eg, the memory introspection engine 40 in FIG. 5). Can be received. At step 304, engine 38 may identify the software entity for which each entity evaluation indicator was determined, for example, by an entity ID embedded in each evaluation indicator (see above with respect to FIG. 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に設定される。 [0058] Next, scoring engine 38 performs the blocks of steps 318-332 for entity E identified in step 304 and for other entities associated with E. Such related entities may include, among other things, the parent and child entities of E, the injected entity into which E injected the code, and the injection source entity that injected the code into E. In this manner, each time engine 38 receives an evaluation indicator (eg, indicating that entity E has performed a particular action), blocks 318-332 are associated with E as well as entity E's evaluation score. The evaluation score of the selected entity may also be updated and executed several times. In some embodiments, blocks 318-332 are performed once for E and once for each entity E * associated with E. In an alternative embodiment, blocks 318-332 are performed recursively until some convergence criterion is met. An exemplary convergence criterion verifies whether the evaluation score for E and / or E * changes between successive executions of blocks 318-332 and exits when no such change exists (exiting). )including. In the exemplary algorithm of FIG. 10, the variable X is used to indicate the entity that currently receives the score update. In step 316 X is set to entity E identified in step 304.

[0059]ステップ318でエンジン38は、エンティティXの評価スコア(例えば、図8でのエンティティ76b)を更新する。一部の実施形態では、評価スコアを更新することは、それぞれの評価スコアの記録される値を新しい値で置換することを含む。   [0059] At step 318, engine 38 updates entity X's evaluation score (eg, entity 76b in FIG. 8). In some embodiments, updating the evaluation score includes replacing the recorded value of each evaluation score with a new value.

(X)→S (X)+ΔS [1]
ただしS (X)は、エンティティXに対して、評価基準Cによって決定される評価スコアを表象し、ΔSは、正または負であり得る増加量を表象する(一部の実施形態では評価スコアは、更新の際に減少し得る)。
S k (X) → S k (X) + ΔS k [1]
Where S k (X) represents, for entity X, an evaluation score determined by the evaluation criterion C k , and ΔS k represents an increase that can be positive or negative (in some embodiments). The rating score can be reduced upon update).

[0060]一部の実施形態ではスコア増加量ΔSは、スコアリングエンジン38により、ステップ312で受信される評価インジケータによって決定される。それぞれのインジケータは、スコアを含み得るものであり、および/または、それぞれのインジケータを決定する際に使用される評価基準を示し得る。一部の実施形態ではスコアリングエンジン38は、例えば次式のように、スコア増加量ΔSを、それぞれの評価基準Cに対応するスコア値80(図9を確認されたい)によって決定する。 [0060] In some embodiments, the score increment ΔS k is determined by the scoring engine 38 according to an evaluation indicator received at step 312. Each indicator may include a score and / or may indicate an evaluation criterion used in determining each indicator. In some embodiments, the scoring engine 38 determines the score increase ΔS k according to the score value 80 (see FIG. 9) corresponding to each evaluation criterion C k , for example,

ΔS=V [2]
ただしVは、基準Cに割り当てられるスコア値80を表象する。基準Cが、エンティティXがオブジェクトをネットワークからダウンロードするかどうかを決定することを含み、V=20である、1つのそのような例では、評価スコアS (X)は、エンティティXがダウンロードを実施するたびに、20ポイントだけ増大されることになる。一部の実施形態では、ΔS=εVであり、ただしεは、スコアSが、評価されるエンティティの部分集合に対してのみ更新されることを強制する、バイナリ例外重み(例えば、図9での項目82dを確認されたい)である。そのような例外重みは、例えば、評価されるエンティティの様々なタイプ間で区別するのに有用である。例えばブラウザは、マルウェアの疑いを高めることなく、制限されない数のIPアドレスにアクセスすることを可能とされるべきであり、インターネットアクセスを検出することを含む評価基準は、ブラウザタイプのエンティティに対して例外重みを0に設定し、一方で、他のタイプのエンティティに対してその例外重みをアクティブに保つ(ε=1)ことにより、ブラウザオブジェクトに対して効果的にオフに切り替えられ得る。
ΔS k = V k [2]
However, V k represents the score value 80 assigned to the reference C k . In one such example where the criterion C k includes determining whether the entity X downloads the object from the network and V k = 20, the evaluation score S k (X) Each download will be increased by 20 points. In some embodiments, ΔS k = εV k , where ε is a binary exception weight that enforces that the score S k is updated only for a subset of the evaluated entities (eg, FIG. 9) (See item 82d in FIG. 9). Such exception weights are useful, for example, to distinguish between various types of entities being evaluated. For example, browsers should be allowed to access an unlimited number of IP addresses without raising the suspicion of malware, and the criteria including detecting Internet access can be used against browser-type entities. By setting the exception weight to 0 while keeping the exception weight active for other types of entities (ε = 1), it can be effectively switched off for the browser object.

[0061]一部の実施形態では、エンティティXの評価スコアを更新する際に使用されるスコア増加量ΔSは、Xに関係付けられるエンティティXに対して決定される評価スコアによって決定されるものであり、すなわちスコアは、子から親に、または、注入対象から注入の発生源になど、1つのエンティティから、関係付けられるエンティティに伝搬し得る。1つのそのような例では、子プロセスにより実施されるアクションは、アクションを実施するエンティティ(子プロセス)のスコアの更新のみでなく、それぞれの子プロセスの親プロセスのスコアの更新もまたトリガし得る。そのようなスコア更新は、次式によってスコア増加量を計算することを含み得る。 [0061] In some embodiments, the score increment ΔS k used in updating the evaluation score of entity X is determined by the evaluation score determined for entity X * related to X. That is, the score may propagate from one entity to the related entity, such as from child to parent or from the injection subject to the source of the injection. In one such example, an action performed by a child process may trigger not only an update of the score of the entity (child process) that performs the action, but also an update of the score of the parent process of each child process. . Such a score update may include calculating a score increase according to:

ΔS=w (X*) [3]
ただしwは、エンティティXのスコアがエンティティXのスコアに影響を及ぼすときに伴う強さを示す、数値的な基準固有の重みを表象する。重みwは、伝搬重み82b(図9)を含み得る。一部の実施形態は、種々のそのような伝搬重みの間で区別するものであり、例えば、スコアを子エンティティから親エンティティに伝搬させるために使用される重みは、スコアを親エンティティから子エンティティに伝搬させるために使用される重みとは、値において異なり得る。同様に、スコアを子エンティティから親エンティティに伝搬させるために使用される重みは、スコアを、コード注入に対して対象とされるエンティティから、コード注入を実施するエンティティに伝搬させるために使用される重みとは、値において異なり得る。一部の実施形態ではスコアは、アクティブなエンティティから、終了したものであるエンティティに伝搬し得る。例えば、子プロセスのアクションは、親プロセスが終了したものであるときでも、親プロセスのスコアを増加させ得る。
ΔS k = w k S k (X *) [3]
Where w k represents a numerical criterion-specific weight that indicates the strength with which the score of entity X * affects the score of entity X. The weight w k may include a propagation weight 82b (FIG. 9). Some embodiments distinguish between various such propagation weights, e.g., the weight used to propagate the score from the child entity to the parent entity, the score from the parent entity to the child entity The weight used to propagate to may vary in value. Similarly, the weight used to propagate the score from the child entity to the parent entity is used to propagate the score from the entity targeted for code injection to the entity performing code injection. Weights can differ in value. In some embodiments, the score may propagate from an active entity to an entity that has ended. For example, a child process action may increase the score of the parent process even when the parent process is terminated.

[0062]一部の実施形態では、式[3]でのエンティティXは、エンティティXの別のインスタンスである。例えばXおよびXは、同時に実行する同じプロセスまたはスレッドのコピーであり得る。そのような事例では重みwは、新しいインスタンス重み(例えば、図9での項目82c)、または初期化重み(例えば、項目82a)であり得る。一部の実施形態では、エンティティXの新しいインスタンスX’が起動されるとき、エンジン38は、現存するエンティティXの一部またはすべての評価スコアを、新しいインスタンス重みwを使用して更新して、スコアをXからX’に伝搬させ得る。同様に、X’が起動されるとき、エンジン38は、X’の一部またはすべての評価スコアを、初期化重みwを使用して更新して、スコアを、すでに実行するエンティティXから新しいエンティティX’に伝搬させ得る。 [0062] In some embodiments, entity X * in equation [3] is another instance of entity X. For example, X and X * can be copies of the same process or thread executing simultaneously. In such cases, the weight w k may be a new instance weight (eg, item 82c in FIG. 9) or an initialization weight (eg, item 82a). In some embodiments, when a new instance X ′ of entity X is launched, engine 38 updates some or all evaluation scores of existing entity X with the new instance weight w k. , The score can be propagated from X to X ′. Similarly, when X ′ is invoked, engine 38 updates some or all evaluation scores for X ′ using initialization weights w k , and the scores are new from the already executing entity X. It can be propagated to entity 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を確認されたい)である。
[0063] In some embodiments, updating the evaluation score S k may trigger an update of a separate evaluation score S m for each entity. For example, the following equation is obtained.
S k (X) → S k (X) + V k triggers S m (X) → S m (X) + F (X) f km V m [4]
However, F (X) is a flag set for the entity X (for example, check the item 76e in FIG. 8), and the flag indicates a connection between the evaluation criteria C k and C m. F km is a flag-derived weight (eg, item 82e in FIG. 9) that indicates the strength with which the update of S k affects the update of S m of entity X. Want).

[0064]ステップ320でスコアリングエンジン38は、エンティティXのフラグ(図8に関係する上記のフラグに関する論考を確認されたい)を、ステップ312で受信される評価インジケータによって更新し得る。フラグは、式[4]に関係して上記で説明されたものなどのスコア共同更新機構を、アクティブ化および/または非アクティブ化するために設定され得る。1つのそのような例では、評価されるエンティティは、評価インジケータ(ステップ312)によってウェブブラウザアプリケーションであると識別され得るものであり、そのような識別は、スコアリングエンジン38に、インターネットからの将来のダウンロードに対してそれぞれのエンティティをスコアリングしないように示すべきものである。このことは、特別なフラグFの値を0に、それぞれのエンティティに対して設定することにより実現され得るものであり、フラグFは、スコアリングエンジン38に、エンティティがオブジェクトをインターネットからダウンロードするときに、それぞれのエンティティの評価スコアを更新するように示すものである。   [0064] At step 320, the scoring engine 38 may update the entity X flag (see discussion regarding the above flag relating to FIG. 8) with the evaluation indicator received at step 312. A flag may be set to activate and / or deactivate a score co-update mechanism, such as that described above with respect to equation [4]. In one such example, the entity being evaluated may be identified as a web browser application by the rating indicator (step 312), and such identification may be sent to the scoring engine 38 in the future from the Internet. Should be shown not to score each entity for downloads. This can be achieved by setting the value of a special flag F to 0 for each entity, and the flag F tells the scoring engine 38 when an entity downloads an object from the Internet. Figure 6 shows that the evaluation score of each entity is updated.

[0065]ステップ322でスコアリングエンジン38は、例えば次式の合計として、それぞれのプロセスに対して決定される個々の評価スコアを組み合わせることにより、エンティティXの集計スコアを決定し得る。   [0065] In step 322, scoring engine 38 may determine the aggregate score for entity X by combining the individual evaluation scores determined for each process, for example, as a sum of the following equations.

Figure 2016536667
Figure 2016536667

[0066]ステップ324でエンジン38は、集計スコアを、あらかじめ決定されたしきい値と比較し得る。集計スコアがしきい値を上回らないとき、スコアリングエンジン38は、下記で説明されるステップ326に進行し得る。一部の実施形態ではしきい値は、ユーザ入力によって決定される値に設定され得る。そのようなしきい値の値は、それぞれのユーザのセキュリティ選好を反映し得る。例えば、ユーザが、厳格なセキュリティを選ぶとき、しきい値は、比較的低い値に設定され得るものであり、ユーザが、より寛容なセキュリティ設定を選好するとき、しきい値は、比較的高い値に設定され得る。一部の実施形態ではしきい値の値は、図10〜11に関係して下記で説明されるように、リモートセキュリティサーバから受信され得る。   [0066] At step 324, the engine 38 may compare the aggregate score to a predetermined threshold. If the aggregate score does not exceed the threshold, the scoring engine 38 may proceed to step 326 described below. In some embodiments, the threshold may be set to a value determined by user input. Such threshold values may reflect the security preferences of each user. For example, when a user chooses strict security, the threshold can be set to a relatively low value, and when the user prefers a more permissive security setting, the threshold is relatively high Can be set to a value. In some embodiments, the threshold value may be received from a remote security server, as described below with respect to FIGS.

[0067]一部の実施形態では、ステップ322〜324でスコアリングエンジン38は、複数の集計スコアを決定し、各々の集計スコアを(場合によっては別個の)しきい値と比較し得る。各々のそのような集計スコアは、評価スコアの別個の部分集合によって決定され得る。例示的な実施形態では、スコアの各々のそのような部分集合、および、評価基準のそれらのスコアの対応する部分集合は、マルウェアの特定のクラスまたはタイプ(例えば、トロイの木馬、ルートキット、その他)を表し得る。このことによってエンジン38は、検出されるマルウェアの分類を実施することが可能となり得る。別の実施形態ではスコアリングエンジン38は、悪意あることの様々な程度(例えば、クリーン、疑わしい、危険、および、危機的)によって実行エンティティを分類するために、複数のしきい値の値を用いる。   [0067] In some embodiments, the scoring engine 38 may determine a plurality of aggregate scores at steps 322-324 and compare each aggregate score to a (possibly separate) threshold. Each such aggregate score may be determined by a separate subset of evaluation scores. In an exemplary embodiment, each such subset of scores, and the corresponding subset of those scores of the evaluation criteria, is a specific class or type of malware (eg, Trojan horse, rootkit, etc.) ). This may allow engine 38 to perform a classification of detected malware. In another embodiment, scoring engine 38 uses multiple threshold values to classify executing entities by varying degrees of maliciousness (eg, clean, suspicious, dangerous, and critical). .

[0068]集計スコアがしきい値を上回るとき、ステップ326でエンジン38は、評価されるプロセスが悪意あるものであると判断し得るものであり、アンチマルウェアアクションをとり得る。一部の実施形態では、そのようなアンチマルウェアアクションは、とりわけ、評価されるプロセスを終了させること、評価されるプロセスを検疫すること、および、評価されるプロセスのリソース(ファイル、または、メモリのセクションなど)を除去する、または不能にすることを含み得る。一部の実施形態ではアンチマルウェアアクションは、例えば、メッセージをシステムアドミニストレータに、ネットワークアダプタ22によってホストシステム10に接続されるコンピュータネットワークを介して送出することにより、ホストシステム10のユーザに警告すること、および/または、システムアドミニストレータに警告することをさらに含み得る。一部の実施形態ではアンチマルウェアアクションは、図10〜11に関係して下記で説明されるように、セキュリティ報告をリモートセキュリティサーバに送出することもまた含み得る。   [0068] When the aggregate score is above the threshold, at step 326, the engine 38 may determine that the process being evaluated is malicious and may take anti-malware actions. In some embodiments, such anti-malware actions may, among other things, terminate the evaluated process, quarantine the evaluated process, and resources (file or memory) of the evaluated process. Removing or disabling sections, etc.). In some embodiments, the anti-malware action alerts the user of the host system 10 by, for example, sending a message to the system administrator over a computer network connected to the host system 10 by the network adapter 22; And / or may further include alerting the system administrator. In some embodiments, the anti-malware action may also include sending a security report to a remote security server, as described below with respect to FIGS.

[0069]ステップ328〜330のシーケンスでエンジン38は、Xに関係付けられるエンティティXを識別し得るものであり、その場合Xのスコアは、Xの現在のスコア更新の後に続いて更新することを必要とする。例えばXは、Xの親または子のエンティティであり得る。一部の実施形態ではエンティティXは、エンティティXのESOのフィールド76g〜k(例えば、図8を確認されたい)によって識別され得る。そのようなエンティティXが現存しないとき、または、すべてのそのようなエンティティXがすでにスコア更新に対して考慮されているとき、エンジン38はステップ312に戻る。少なくともエンティティXが存在するとき、ステップ332でスコアリングエンジンは、Xを現在のエンティティとし、ステップ318に戻る。 [0069] In the sequence of steps 328-330, the engine 38 may identify the entity X * associated with X, in which case the score of X * is updated following the current score update of X. I need that. For example, X * may be a parent or child entity of X. In some embodiments, entity X * may be identified by the ESO fields 76g-k of entity X (eg, see FIG. 8). When no such entity X * exists, or when all such entities X * have already been considered for score update, the engine 38 returns to step 312. If at least the entity X * exists, in step 332, the scoring engine makes X * the current entity and returns to step 318.

[0070]図3〜4で図示される例示的なスコアリングエンジン38は、VM32の内部で、OSプロセッサ特権レベル(例えば、カーネルモード)で動作する。代替的実施形態ではスコアリングエンジン38は、VM32の内部で、ユーザモードで、または、VM32の外側で、ハイパーバイザ30のプロセッサ特権レベルでも実行し得る。   [0070] The example scoring engine 38 illustrated in FIGS. 3-4 operates within the VM 32 at an OS processor privilege level (eg, kernel mode). In alternative embodiments, the scoring engine 38 may run at the processor privilege level of the hypervisor 30 either inside the VM 32, in user mode, or outside the VM 32.

[0071]一部の実施形態ではイントロスペクションエンジン40は、実質的にハイパーバイザ30と同じ特権レベルで実行し、VM32(図3)などの仮想マシンのイントロスペクションを実施するように構成される。VMの、または、それぞれのVM上で実行するソフトウェアエンティティのイントロスペクションは、とりわけ、ソフトウェアエンティティの挙動を分析すること、そのようなエンティティのメモリアドレスを決定し、および/または、それらのメモリアドレスにアクセスすること、ある決まったプロセスのアクセスを、そのようなアドレスに配置されるメモリのコンテンツに制約すること、そのようなコンテンツを分析すること、ならびに、それぞれのエンティティの評価インジケータ(例えば、図5でのインジケータ52d)を決定することを含み得る。   [0071] In some embodiments, the introspection engine 40 runs at substantially the same privilege level as the hypervisor 30 and is configured to perform introspection of a virtual machine such as the VM 32 (FIG. 3). The Introspection of software entities executing on or on each VM, among other things, analyzing the behavior of software entities, determining the memory addresses of such entities and / or their memory addresses Access to certain processes, constrain access of certain processes to the contents of memory located at such addresses, analyze such contents, and evaluation indicators for each entity (e.g., figure Determining indicator 52d) at 5.

[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)を含み得る。   [0072] In some embodiments, the host system 10 may be configured to exchange security information, such as details regarding malware detection events, with a remote security server. FIG. 11 illustrates such an exemplary configuration in which multiple host systems 10a-c, such as system 10 discussed above, are connected to security server 110 via computer network 26. Connected. In the exemplary embodiment, host systems 10a-c are individual computers used by corporate employees, while security server 110 is generated on systems 10a-c by the respective corporate network administrator. May comprise a computer system configured to monitor malware threats or security events. In another embodiment, for example, in an infrastructure-as-a-service (IAAS) system where each host system 10a-c is a server that hosts tens or hundreds of virtual machines. The security server 110 may comprise a computer system configured to manage anti-malware operations for all such VMs from a central location. In yet another embodiment, the security server 110 may provide statistical and / or behavioral data regarding malware detected on various systems around the network 26 by an anti-malware software provider (eg, among other things, the provider of the security application 44). A computer system configured to receive the. Network 26 may include a wide area network such as the Internet, while portions of network 26 may include a local area network (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時間ごと、その他)送出するように構成され得る。   [0073] FIG. 12 illustrates an exemplary data exchange between the host system 10 and the security server 110 in an embodiment as shown in FIG. The host system 10 may be configured to send a security report 80 to the server 110 and receive a set of security settings 82 from the server 110. In some embodiments, the security report 80 includes, among other things, entity evaluation indicators 52a-d and / or scores determined by entity evaluators 50a-c and / or 40 executing on the host system 10, and / or The total score determined by the scoring engine 38 is included. Security report 80 includes data identifying each system 10 and the entity being evaluated (eg, entity ID, name, path, hash, or other type of entity identifier), as well as entity evaluation indicators / scores, An indicator associated with the host system and entity for which the indicator / score is determined may also be included. In some embodiments, the report 80 may further include statistical and / or behavioral data regarding entities executing on the host system 10. System 10 may be configured to send report 80 based on detection of malware and / or on schedule (eg, every few minutes, every hour, etc.).

[0074]一部の実施形態ではセキュリティ設定82は、エンティティ評価器の動作パラメータ(例えば、図5でのフィルタ50a〜cのパラメータ)、および/または、スコアリングエンジン38のパラメータを含み得る。エンジン38の例示的なパラメータは、とりわけ、評価されるプロセスが悪意あるものであるかどうかを判断するためのしきい値、ならびに、スコア値80および重み82a〜eを含む。   [0074] In some embodiments, security settings 82 may include entity evaluator operational parameters (eg, parameters of filters 50a-c in FIG. 5) and / or scoring engine 38 parameters. Exemplary parameters of engine 38 include, among other things, a threshold for determining whether the process being evaluated is malicious, as well as score value 80 and weights 82a-e.

[0075]一部の実施形態ではサーバ110は、最適化アルゴリズムを走らせて、そのようなパラメータを動的に調整して、マルウェア検出性能を最大にし、例えば検出率を増大し、一方で偽陽性を最小にする。最適化アルゴリズムは、様々なエンティティ評価器によりスコアリングエンジン38に報告されるエンティティ評価インジケータ/スコアを含む、複数のホストシステム10a〜c上で実行する様々なエンティティに関する統計および/または挙動データを受信し、パラメータに対する最適な値を決定し得る。次いで値は、それぞれのホストシステムにネットワーク26を介して送信される。   [0075] In some embodiments, the server 110 runs optimization algorithms to dynamically adjust such parameters to maximize malware detection performance, eg, increase detection rates, while false positives To minimize. The optimization algorithm receives statistical and / or behavioral data for various entities executing on the plurality of host systems 10a-c, including entity evaluation indicators / scores reported to the scoring engine 38 by various entity evaluators. The optimum value for the parameter can then be determined. The value is then transmitted over the network 26 to the respective host system.

[0076]最適化の1つのそのような例では、スコア値80を変化させることによって、それぞれの評価基準の関連性が、互いに対して効果的に変化し得る。マルウェア脅威は、典型的には次々と発生し、世界中の多数のコンピュータシステムが、同じマルウェアエージェントにより、短い時間間隔で影響を及ぼされる。セキュリティ報告80をリアルタイムで複数のホストシステムから受信することにより、セキュリティサーバ110は、現在のマルウェア脅威に、現在までのところで遅れずについてゆくようにされ得るものであり、最適なセキュリティ設定82を、それぞれのホストシステムに迅速に給送し得るものであり、設定82は例えば、現在のマルウェア脅威を検出するために最適化されるスコア値80の集合を含む。   [0076] In one such example of optimization, changing the score value 80 may effectively change the relevance of the respective metrics relative to each other. Malware threats typically occur one after another, and many computer systems around the world are affected by the same malware agent in a short time interval. By receiving security reports 80 from multiple host systems in real time, the security server 110 can be kept up to date with current malware threats, and the optimal security settings 82 Settings 82 can include a set of score values 80 that are optimized to detect current malware threats, for example, which can be quickly delivered to each host system.

[0077]上記で説明された例示的なシステムおよび方法によって、コンピュータシステムなどのホストシステムを、ウィルス、トロイの木馬、およびスパイウェアなどのマルウェアから保護することが可能となる。ホストシステム上で現在実行するプロセスおよびスレッドなどの複数の実行可能エンティティの各々に対して、スコアリングエンジンは、複数の評価スコアを記録し、各々のスコアは、別個の評価基準によって決定される。一部の実施形態では、評価されるソフトウェアエンティティは、実質的に範囲および複雑度において、例えば、オペレーティングシステムおよび/または仮想マシンの、個々の実行スレッドから、個々のアプリケーションまで、全体のインスタンスまで変動し得る。   [0077] The exemplary systems and methods described above allow host systems, such as computer systems, to be protected from malware, such as viruses, Trojan horses, and spyware. For each of a plurality of executable entities such as processes and threads currently executing on the host system, the scoring engine records a plurality of evaluation scores, each score being determined by a separate evaluation criterion. In some embodiments, the evaluated software entity varies substantially in scope and complexity, for example, from individual execution threads to individual applications, to entire instances of an operating system and / or virtual machine. Can do.

[0078]監視されるエンティティが、評価基準を満たす(例えば、アクションを実施する)たびに、エンティティのそれぞれのスコアが更新される。対象エンティティのスコアを更新することが、対象エンティティに関係付けられる他のエンティティのスコア更新をトリガし得る。そのような関係付けられるエンティティは、とりわけ、対象エンティティの子、対象エンティティの親、内に対象エンティティがコードを注入したエンティティ、および、コードを対象エンティティ内に注入したエンティティを含む。   [0078] Each time a monitored entity meets the evaluation criteria (eg, performs an action), the respective score of the entity is updated. Updating the score of the target entity may trigger a score update for other entities associated with the target entity. Such related entities include, among other things, the child of the target entity, the parent of the target entity, the entity into which the target entity injected code, and the entity that injected the code into the target entity.

[0079]従来のアンチマルウェアシステムは、典型的には、各々のエンティティを、他のエンティティとは別々にスコアリングする。一部のマルウェアは、悪意ある活動を、悪意あるプロセスの子プロセスなどの、いくつかの別個のエージェントの間で分割し、そのことによって、個々のエージェントのどれも、検出されるのに充分なマルウェアを示す活動を実施しないようにすることにより、検出を逃れることを試み得る。対照的に本発明の一部の実施形態は、スコアを1つのエンティティから、他の関係付けられるエンティティに伝搬させ、したがって、マルウェアを示すデータを、関係付けられるエンティティにわたって補強する。スコア伝搬によって、悪意ある活動に関与させられるエージェントの少なくとも1つが検出されることが確実になり得る。   [0079] Conventional anti-malware systems typically score each entity separately from other entities. Some malware divides the malicious activity among several separate agents, such as child processes of the malicious process, which is sufficient to detect any individual agent. By not performing any activities that indicate malware, one may attempt to escape detection. In contrast, some embodiments of the present invention propagate scores from one entity to other related entities, thus reinforcing data indicative of malware across the related entities. Score propagation may ensure that at least one agent involved in malicious activity is detected.

[0080]1つの例示的な逃れ戦略では、マルウェアエージェントは、複数の子プロセスを生み出し、閉止する場合がある。悪意ある活動は、子プロセスの間で分割され得るものであり、そのことによって、いかなる個々の子のアクションも、それらのアクション単独ではマルウェア警報をトリガしない場合がある。本発明の一部の実施形態ではスコアは、1つのエンティティから別のものに、後者が終了したものであるときでも伝搬し得る。そのような構成は、それが子プロセスの悪意あることを検出することに失敗し得る場合でも、親プロセスを悪意あるものとして検出し得る。一部の実施形態は、現在評価中のエンティティのリストを維持し、リストは、アクティブなエンティティ、および、終了したものであるエンティティの両方を含み得る。エンティティは、それぞれのエンティティのすべての子孫が終了したものであるときにのみ、リストから取り除かれ得る。   [0080] In one exemplary escape strategy, a malware agent may spawn and close multiple child processes. Malicious activity can be split between child processes, so that any individual child action may not trigger a malware alert by those actions alone. In some embodiments of the invention, the score may propagate from one entity to another, even when the latter is finished. Such a configuration may detect the parent process as malicious even if it may fail to detect that the child process is malicious. Some embodiments maintain a list of entities that are currently being evaluated, and the list may include both active entities and entities that have ended. Entities can be removed from the list only when all descendants of each entity are terminated.

[0081]従来のアンチマルウェアシステムでは、ただ1つのスコアが典型的には、各々のエンティティに対して記録される。各々がその別個の基準によって計算される、複数のエンティティごとのスコアを保つことにより、本発明の一部の実施形態によって、スコアは、関係付けられるエンティティの間で、基準ごとを基礎として伝搬させられることが可能となる。そのようなスコアは、伝搬を基にして増大するか、さもなければ減少し得るものであり、そのことによって、各々のエンティティのライフサイクルの全体を通しての、悪意あることのより精密な評定が、偽陽性検出がより少ない状態で可能となる。一部の実施形態では、1つのエンティティのスコアが、関係付けられるエンティティのスコアに影響を及ぼす度合いは、数値的な伝搬重みによって調整可能である。そのような重みは、エンティティによって、および/または、評価基準によって異なり得るものであり、そのことによって、スコア伝搬の柔軟および精密な調整作業が可能となる。重み値は、人間のオペレータにより決定され得るものであり、および/または、マルウェア検出性能を改善することに向けられた、自動化された最適化に左右される場合がある。   [0081] In conventional anti-malware systems, only one score is typically recorded for each entity. By keeping a score for each of a plurality of entities, each calculated by its separate criteria, according to some embodiments of the invention, the scores are propagated between the related entities on a per criteria basis. It becomes possible to be done. Such a score can increase or otherwise decrease based on propagation, thereby providing a more precise assessment of maliciousness throughout the life cycle of each entity, This is possible with fewer false positive detections. In some embodiments, the degree to which a single entity's score affects the associated entity's score can be adjusted by numerical propagation weights. Such weights may vary from entity to entity and / or from evaluation criteria, which allows for flexible and precise adjustment of score propagation. The weight value may be determined by a human operator and / or may depend on an automated optimization aimed at improving malware detection performance.

[0082]一部の従来のアンチマルウェアシステムは、評価されるエンティティが悪意あるものであるかどうかを決定することを、それぞれのエンティティが、マルウェアを示す挙動を実施するかどうか、および/または、エンティティが、コードのマルウェアを示すシーケンスなどの、マルウェアを示す特徴を有するかどうかを決定することにより行う。対照的に本発明の一部の実施形態では、エンティティ評価基準は、必ずしもそれらの基準単独ではマルウェアを示すものではない。例えば一部の基準は、エンティティが、ファイルを開くこと、または、IPアドレスにアクセスすることなどの良性のアクションを実施するかどうかを決定することを含む。それでもそのようなアクションは、他のアクションと組み合わされるときに悪意あるものになり得るものであり、それらの他のアクション自体は、それら単独ではマルウェアを示すものではない場合があるものである。多種多様のエンティティ挙動および/または特徴を監視し、多数の(場合によっては何百もの)評価スコアを記録し、そのようなスコアをエンティティごとの方式で集計することにより、本発明の一部の実施形態は、検出率を増大し、一方で偽陽性を最小にし得る。   [0082] Some conventional anti-malware systems determine whether an entity being evaluated is malicious, whether each entity performs a behavior indicative of malware, and / or This is done by determining whether the entity has characteristics indicative of malware, such as a sequence indicative of malware in the code. In contrast, in some embodiments of the present invention, entity metrics do not necessarily indicate malware by themselves. For example, some criteria include determining whether an entity performs a benign action such as opening a file or accessing an IP address. Nevertheless, such actions can be malicious when combined with other actions, and these other actions themselves may not be indicative of malware by themselves. By monitoring a wide variety of entity behaviors and / or features, recording a large number (sometimes hundreds) of evaluation scores, and summing up such scores in a per-entity manner, Embodiments can increase detection rates while minimizing false positives.

[0083]本発明の一部の実施形態は、仮想化される環境を保護し得る。仮想化をサポートするように構成された実施形態では、本発明の一部のコンポーネントは、仮想マシンの内部で実行し得るものであり、一方で他のものは、それぞれの仮想マシンの外側で、例えば、それぞれの仮想マシンをエクスポーズするハイパーバイザのレベルで実行し得る。ハイパーバイザレベルで実行するそのようなコンポーネントは、アンチマルウェア動作を、それぞれのホストシステム上で同時に実行する複数の仮想マシンに対して実施するように構成され得る。   [0083] Some embodiments of the present invention may protect a virtualized environment. In embodiments configured to support virtualization, some components of the present invention may be executed inside a virtual machine, while others are outside each virtual machine, For example, it can be executed at the level of a hypervisor that exposes each virtual machine. Such a component executing at the hypervisor level may be configured to perform anti-malware operations on multiple virtual machines executing simultaneously on each host system.

[0084]上記の実施形態が、多くの方途で、本発明の範囲から逸脱することなく改変され得ることは、当業者には明らかであろう。したがって本発明の範囲は、以下の特許請求の範囲、および、それらの法的均等物により決定されるべきである。   [0084] It will be apparent to those skilled in the art that the above embodiments can be modified in many ways without departing from the scope of the invention. Accordingly, the scope of the invention should be determined by the following claims and their legal equivalents.

Claims (22)

エンティティ管理モジュールと、エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを含むホストシステムであって、
前記エンティティ管理モジュールは、評価されるソフトウェアエンティティのコレクションを管理するように構成され、前記コレクションを管理することは、
前記コレクションの第1のエンティティの子孫エンティティの集合を識別することと、
前記第1のエンティティが終了したものであるかどうかを判定することと、
それに応じて、前記第1のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかどうかを判定することと、
それに応じて、子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第1のエンティティを前記コレクションから除去することと
を含み、
前記エンティティ評価器は、
前記第1のエンティティを評価基準によって評価することと、
それに応じて、前記第1のエンティティが前記評価基準を満たすときに、評価インジケータを前記スコアリングエンジンに送信することと
を行うように構成され、
前記スコアリングエンジンは、
前記第1のエンティティに対して決定された第1のスコア、および、前記コレクションの第2のエンティティに対して決定された第2のスコアを記録することであって、前記の第1および第2のスコアは前記評価基準によって決定される、記録することと、
前記の第1および第2のスコアを記録することに応じて、ならびに、前記評価インジケータを受信することに応じて、前記第2のスコアを前記評価インジケータによって更新することと、
それに応じて、前記第2のエンティティが悪意あるものであるかどうかを、更新された前記第2のスコアによって判定することと
を行うように構成された、
ホストシステム。
A host system including at least one processor configured to execute an entity management module, an entity evaluator, and a scoring engine,
The entity management module is configured to manage a collection of software entities to be evaluated, and managing the collection includes
Identifying a set of descendant entities of the first entity of the collection;
Determining whether the first entity is terminated;
Accordingly, determining whether all members of the set of descendent entities are terminated when the first entity is terminated;
In response, when all members of the set of descendent entities are terminated, removing the first entity from the collection;
The entity evaluator is
Evaluating the first entity according to an evaluation criterion;
Accordingly, the first entity is configured to send an evaluation indicator to the scoring engine when the first entity meets the evaluation criteria,
The scoring engine
Recording a first score determined for the first entity and a second score determined for a second entity of the collection, wherein the first and second The score of is determined by the evaluation criteria, recording;
In response to recording the first and second scores, and in response to receiving the evaluation indicator, updating the second score with the evaluation indicator;
In response, the second entity is configured to determine whether the second entity is malicious by determining the updated second score;
Host system.
請求項1に記載のホストシステムであって、前記スコアリングエンジンは、
前記評価インジケータを受信することに応じて、前記第1のスコアを前記評価インジケータによって更新することと、
それに応じて、前記第1のエンティティが悪意あるものであるかどうかを、更新された前記第1のスコアによって判定することと
を行うようにさらに構成された、ホストシステム。
The host system according to claim 1, wherein the scoring engine is
Responsive to receiving the rating indicator, updating the first score with the rating indicator;
In response, the host system further configured to determine whether the first entity is malicious by determining the updated first score.
請求項1に記載のホストシステムであって、前記第1のエンティティは、前記第2のエンティティの子である、ホストシステム。   The host system according to claim 1, wherein the first entity is a child of the second entity. 請求項1に記載のホストシステムであって、前記第2のエンティティは、前記第1のエンティティの子である、ホストシステム。   The host system according to claim 1, wherein the second entity is a child of the first entity. 請求項1に記載のホストシステムであって、前記第1のエンティティは、前記第2のエンティティにより注入されたコードのセクションを含む、ホストシステム。   The host system of claim 1, wherein the first entity includes a section of code injected by the second entity. 請求項1に記載のホストシステムであって、前記第2のエンティティは、前記第1のエンティティにより注入されたコードのセクションを含む、ホストシステム。   The host system of claim 1, wherein the second entity includes a section of code injected by the first entity. 請求項1に記載のホストシステムであって、前記第2のスコアを更新することは、前記第2のスコアを、w・Sによって決定された量だけ変化させることを含み、Sは前記第1のスコアであり、wは数値的な重みである、ホストシステム。   2. The host system according to claim 1, wherein updating the second score includes changing the second score by an amount determined by w · S, where S is the first score. The host system, where w is the numerical weight. 請求項1に記載のホストシステムであって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
新しいソフトウェアエンティティの起動をインターセプトすることと、
それに応じて、前記新しいソフトウェアエンティティを前記コレクションに追加することと
をさらに含む、ホストシステム。
The host system of claim 1, wherein managing the collection of software entities to be evaluated comprises
Intercepting the launch of a new software entity;
In response, the host system further comprising adding the new software entity to the collection.
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、実行されると、ホストシステムの少なくとも1つのプロセッサを、
評価されるソフトウェアエンティティのコレクションを管理することであって、
前記コレクションの第1のエンティティの子孫エンティティの集合を識別することと、
前記第1のエンティティが終了したものであるかどうかを判定することと、
それに応じて、前記第1のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかどうかを判定することと、
それに応じて、子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、選択された前記エンティティを前記コレクションから除去することと
を含む、管理することと、
前記第1のエンティティに対して決定された第1のスコア、および、前記コレクションの第2のエンティティに対して決定された第2のスコアを記録することであって、前記の第1および第2のスコアは評価基準によって決定された、記録することと、
前記の第1および第2のスコアを記録することに応じて、前記第1のエンティティを前記評価基準によって評価することと、
前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第2のスコアを更新することと、
前記第2のスコアを更新することに応じて、前記第2のエンティティが悪意あるものであるかどうかを、更新された前記第2のスコアによって決定することと
を行うように構成する、非一時的コンピュータ可読媒体。
A non-transitory computer readable medium for storing instructions that, when executed, cause at least one processor of a host system to
Managing a collection of evaluated software entities,
Identifying a set of descendant entities of the first entity of the collection;
Determining whether the first entity is terminated;
Accordingly, determining whether all members of the set of descendent entities are terminated when the first entity is terminated;
Accordingly, managing when all members of the set of descendant entities are terminated, removing the selected entity from the collection;
Recording a first score determined for the first entity and a second score determined for a second entity of the collection, wherein the first and second The score of is determined by the evaluation criteria,
In response to recording the first and second scores, evaluating the first entity according to the evaluation criteria;
In response to evaluating the first entity, updating the second score when the first entity meets the evaluation criteria;
Non-temporarily configured to determine whether the second entity is malicious in response to updating the second score, according to the updated second score. Computer-readable medium.
請求項9に記載のコンピュータ可読媒体であって、前記少なくとも1つのプロセッサは、
前記第1のエンティティを評価することに応じて、前記第1のエンティティが前記評価基準を満たすときに、前記第1のスコアを更新することと、
それに応じて、前記第1の実行可能エンティティが悪意あるものであるかどうかを、更新された前記第1のスコアによって判定することと
を行うようにさらに構成された、コンピュータ可読媒体。
The computer-readable medium of claim 9, wherein the at least one processor is
Responsive to evaluating the first entity, updating the first score when the first entity meets the evaluation criteria;
In response, the computer-readable medium further configured to determine whether the first executable entity is malicious by determining the updated first score.
請求項9に記載のコンピュータ可読媒体であって、前記第1のエンティティは、前記第2のエンティティの子である、コンピュータ可読媒体。   The computer readable medium of claim 9, wherein the first entity is a child of the second entity. 請求項9に記載のコンピュータ可読媒体であって、前記第2のエンティティは、前記第1のエンティティの子である、コンピュータ可読媒体。   The computer-readable medium of claim 9, wherein the second entity is a child of the first entity. 請求項9に記載のコンピュータ可読媒体であって、前記第1のエンティティは、前記第2のエンティティにより注入されたコードのセクションを含む、コンピュータ可読媒体。   The computer-readable medium of claim 9, wherein the first entity includes a section of code injected by the second entity. 請求項9に記載のコンピュータ可読媒体であって、前記第2のエンティティは、前記第1のエンティティにより注入されたコードのセクションを含む、コンピュータ可読媒体。   The computer-readable medium of claim 9, wherein the second entity includes a section of code injected by the first entity. 請求項9に記載のコンピュータ可読媒体であって、前記第2のスコアを更新することは、前記第2のスコアを、w・Sによって決定される量だけ変化させることを含み、Sは前記第1のスコアであり、wは数値的な重みである、コンピュータ可読媒体。   10. The computer readable medium of claim 9, wherein updating the second score includes changing the second score by an amount determined by w · S, where S is the first score. A computer readable medium with a score of 1 and w is a numerical weight. 請求項9に記載のコンピュータ可読媒体であって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
新しいソフトウェアエンティティの起動をインターセプトすることと、
それに応じて、前記新しいソフトウェアエンティティを前記コレクションに追加することと
をさらに含む、コンピュータ可読媒体。
The computer-readable medium of claim 9, wherein managing the collection of software entities to be evaluated is
Intercepting the launch of a new software entity;
In response, the computer-readable medium further comprising adding the new software entity to the collection.
エンティティ評価器と、スコアリングエンジンとを実行するように構成された少なくとも1つのプロセッサを含むホストシステムであって、
前記エンティティ評価器は、
前記第1のソフトウェアエンティティを評価基準によって評価することであって、前記第1のソフトウェアエンティティはクライアントシステム上で実行された、評価することと、
それに応じて、前記第1のソフトウェアエンティティが前記評価基準を満たすときに、評価インジケータを前記スコアリングエンジンに送信することと
を行うように構成され、
前記スコアリングエンジンは、
前記評価インジケータを受信することに応じて、スコアを前記評価インジケータによって更新することであって、前記スコアは、前に前記ホストシステム上で実行された第2のソフトウェアエンティティに対して決定され、前記第2のソフトウェアエンティティは、前記スコアを更新するときには終了したものである、更新することと、
それに応じて、前記第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された前記第2のスコアによって判定することと
を行うように構成された、
ホストシステム。
A host system including at least one processor configured to execute an entity evaluator and a scoring engine,
The entity evaluator is
Evaluating the first software entity according to an evaluation criterion, wherein the first software entity is executed on a client system;
In response, the first software entity is configured to send an evaluation indicator to the scoring engine when the first software entity meets the evaluation criteria;
The scoring engine
Responsive to receiving the evaluation indicator, updating a score with the evaluation indicator, the score being determined for a second software entity previously executed on the host system; The second software entity is finished when updating the score, updating;
In response thereto, the second software entity is configured to determine whether the second software entity is malicious by determining the updated second score;
Host system.
請求項17に記載のホストシステムであって、前記第1のソフトウェアエンティティは、前記第2のソフトウェアエンティティの子である、ホストシステム。   18. The host system according to claim 17, wherein the first software entity is a child of the second software entity. 請求項17に記載のホストシステムであって、前記第1のソフトウェアエンティティは、前記第2のソフトウェアエンティティにより注入されたコードのセクションを含む、ホストシステム。   18. The host system of claim 17, wherein the first software entity includes a section of code injected by the second software entity. ホストシステムの少なくとも1つのプロセッサを用いて、前記ホストシステム上で実行された第1のソフトウェアエンティティが評価基準を満たすかどうかを判定するステップと、
それに応じて、前記第1のソフトウェアエンティティが前記評価基準を満たすときに、前記少なくとも1つのプロセッサを用いて、前に前記ホストシステム上で実行された第2のソフトウェアエンティティに対して決定されたスコアを更新するステップであって、前記第2のソフトウェアエンティティは、前記スコアを更新するときには終了したものであり、前記スコアは前記評価基準によって決定された、更新するステップと、
前記第2のスコアを更新するステップに応じて、前記少なくとも1つのプロセッサを用いて、前記第2のソフトウェアエンティティが悪意あるものであるかどうかを、更新された前記第2のスコアによって決定するステップと
を含む、方法。
Determining, using at least one processor of the host system, whether a first software entity executed on the host system meets the evaluation criteria;
Accordingly, a score previously determined for a second software entity previously executed on the host system using the at least one processor when the first software entity meets the evaluation criteria. Updating the second software entity when the score is updated, the score being determined by the evaluation criteria; and
In response to updating the second score, using the at least one processor to determine whether the second software entity is malicious according to the updated second score. Including a method.
請求項20に記載の方法であって、前記第1のソフトウェアエンティティは、前記第2のソフトウェアエンティティの子エンティティである、方法。   21. The method of claim 20, wherein the first software entity is a child entity of the second software entity. 請求項20に記載の方法であって、前記第1のソフトウェアエンティティは、前記第2のソフトウェアエンティティにより注入されたコードのセクションを含む、方法。   21. The method of claim 20, wherein the first software entity includes a section of code injected by the second software entity.
JP2016520024A 2013-10-04 2014-09-25 Complex scoring for malware detection Active JP6317435B2 (en)

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 true JP2016536667A (en) 2016-11-24
JP2016536667A5 JP2016536667A5 (en) 2017-06-15
JP6317435B2 JP6317435B2 (en) 2018-04-25

Family

ID=52001042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016520024A Active JP6317435B2 (en) 2013-10-04 2014-09-25 Complex scoring for malware detection

Country Status (12)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020502638A (en) * 2016-12-19 2020-01-23 ビットディフェンダー アイピーアール マネジメント リミテッド Event filtering for virtual machine security applications
JP2020509511A (en) * 2017-02-14 2020-03-26 シマンテック コーポレーションSymantec Corporation System and method for detecting malicious computing events

Families Citing this family (41)

* 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
US9977895B2 (en) * 2014-03-27 2018-05-22 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9733976B2 (en) * 2014-03-27 2017-08-15 Barkly Protects, Inc. Method and apparatus for SYSRET monitoring of system interactions
JP6370098B2 (en) * 2014-05-16 2018-08-08 杉中 順子 Information processing apparatus, information processing monitoring method, program, and recording medium
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
US9646159B2 (en) * 2015-03-31 2017-05-09 Juniper Networks, Inc. Multi-file malware analysis
US9798878B1 (en) 2015-03-31 2017-10-24 Symantec Corporation Systems and methods for detecting text display manipulation attacks
WO2016193831A1 (en) * 2015-06-04 2016-12-08 Accenture Global Services Limited Process categorization for computer security
US9703961B2 (en) 2015-06-05 2017-07-11 Accenture Global Services Limited Process risk classification
US9798877B2 (en) 2015-06-04 2017-10-24 Accenture Global Services Limited Security risk-based resource allocation
US9767285B2 (en) 2015-06-04 2017-09-19 Accenture Global Services Limited Process categorization using crowdsourcing
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 (en) * 2015-06-30 2017-05-11 Закрытое акционерное общество "Лаборатория Касперского" Method of preventing program operation comprising functional undesirable for user
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
WO2017040957A1 (en) * 2015-09-02 2017-03-09 Nehemiah Security Process launch, monitoring and execution control
RU2634175C2 (en) * 2015-12-18 2017-10-24 Акционерное общество "Лаборатория Касперского" Method for implementation of anti-virus checks
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
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
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 (en) * 2018-06-29 2019-12-05 Акционерное общество "Лаборатория Касперского" System and method for two-stage classification of files
US11017083B2 (en) 2018-10-17 2021-05-25 International Business Machines Corporation Multiple phase graph partitioning for malware entity detection
KR102023746B1 (en) * 2019-03-26 2019-09-20 넷마블 주식회사 Method and apparatus for detecting malicious codes
RU2739833C1 (en) * 2019-06-28 2020-12-28 Акционерное общество "Лаборатория Касперского" System and method for reducing load on malware detection service
CN111191226B (en) * 2019-07-04 2023-12-01 腾讯科技(深圳)有限公司 Method, device, equipment and storage medium for determining program by utilizing right-raising loopholes
US11238154B2 (en) * 2019-07-05 2022-02-01 Mcafee, Llc Multi-lateral process trees for malware remediation
CN110598410B (en) * 2019-09-16 2021-11-16 腾讯科技(深圳)有限公司 Malicious process determination method and device, electronic device and storage medium
US10754506B1 (en) * 2019-10-07 2020-08-25 Cyberark Software Ltd. Monitoring and controlling risk compliance in network environments
CN111224942B (en) * 2019-11-20 2021-11-16 重庆邮电大学 Malicious software propagation control method and device based on ternary association diagram detection
WO2021106172A1 (en) * 2019-11-28 2021-06-03 日本電信電話株式会社 Rule generation device and rule generation program
RU2752241C2 (en) * 2019-12-25 2021-07-23 Общество С Ограниченной Ответственностью «Яндекс» Method and system for identifying malicious activity of predetermined type in local network
CA3201355A1 (en) 2020-12-17 2022-06-23 Satya V. Gupta Runtime memory protection (rmp) engine

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193186A (en) * 1990-02-05 1993-03-09 Hitachi, Ltd. Processor system for executing processes in parallel under multitask, control method of waiting for event of process
JP2002215256A (en) * 2000-11-14 2002-07-31 Lucent Technol Inc Method, system and medium to prevent unauthorized use of software program
JP2003186687A (en) * 2001-12-17 2003-07-04 Kanazawa Inst Of Technology Method and apparatus for virus detection
JP2006526193A (en) * 2003-05-17 2006-11-16 マイクロソフト コーポレーション Mechanism for assessing security risks
US20090165131A1 (en) * 2007-12-20 2009-06-25 Treadwell William S Detection and prevention of malicious code execution using risk scoring
US8042186B1 (en) * 2011-04-28 2011-10-18 Kaspersky Lab Zao System and method for detection of complex malware
JP2011233126A (en) * 2010-04-28 2011-11-17 Electronics And Telecommunications Research Institute Device, system and method for detecting malignant code which is disguised as normal and inserted to normal process
JP2012501028A (en) * 2008-08-28 2012-01-12 エーブイジー テクノロジーズ シーゼット、エス.アール.オー. Heuristics for code analysis
JP2012008777A (en) * 2010-06-24 2012-01-12 Kddi Corp Application determination system and program
JP2013016000A (en) * 2011-07-04 2013-01-24 Hitachi Ltd Multiplex controller system and operating method therefor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7748039B2 (en) 2002-08-30 2010-06-29 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
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 (en) 2007-10-15 2010-11-03 北京瑞星信息技术有限公司 Method and apparatus for discovering malignancy of computer program
US8037536B2 (en) 2007-11-14 2011-10-11 Bank Of America Corporation Risk scoring system for the prevention of malware
US8615805B1 (en) * 2008-09-03 2013-12-24 Symantec Corporation Systems and methods for determining if a process is a malicious process
US20120101970A1 (en) * 2009-06-22 2012-04-26 United Parents Online Ltd. Method and system of monitoring a network based communication among users
KR101057432B1 (en) 2010-02-23 2011-08-22 주식회사 이세정보 System, method, program and recording medium for detection and blocking the harmful program in a real-time throught behavior analysis of the process
US8578345B1 (en) * 2010-04-15 2013-11-05 Symantec Corporation Malware detection efficacy by identifying installation and uninstallation scenarios
RU2454714C1 (en) * 2010-12-30 2012-06-27 Закрытое акционерное общество "Лаборатория Касперского" System and method of increasing efficiency of detecting unknown harmful objects
AU2012236739A1 (en) * 2011-03-28 2013-10-03 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9323928B2 (en) 2011-06-01 2016-04-26 Mcafee, Inc. System and method for non-signature based detection of malicious processes
US9081959B2 (en) * 2011-12-02 2015-07-14 Invincea, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
WO2015035559A1 (en) * 2013-09-10 2015-03-19 Symantec Corporation Systems and methods for using event-correlation graphs to detect attacks on computing systems

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193186A (en) * 1990-02-05 1993-03-09 Hitachi, Ltd. Processor system for executing processes in parallel under multitask, control method of waiting for event of process
JP2002215256A (en) * 2000-11-14 2002-07-31 Lucent Technol Inc Method, system and medium to prevent unauthorized use of software program
JP2003186687A (en) * 2001-12-17 2003-07-04 Kanazawa Inst Of Technology Method and apparatus for virus detection
JP2006526193A (en) * 2003-05-17 2006-11-16 マイクロソフト コーポレーション Mechanism for assessing security risks
US20090165131A1 (en) * 2007-12-20 2009-06-25 Treadwell William S Detection and prevention of malicious code execution using risk scoring
JP2012501028A (en) * 2008-08-28 2012-01-12 エーブイジー テクノロジーズ シーゼット、エス.アール.オー. Heuristics for code analysis
JP2011233126A (en) * 2010-04-28 2011-11-17 Electronics And Telecommunications Research Institute Device, system and method for detecting malignant code which is disguised as normal and inserted to normal process
JP2012008777A (en) * 2010-06-24 2012-01-12 Kddi Corp Application determination system and program
US8042186B1 (en) * 2011-04-28 2011-10-18 Kaspersky Lab Zao System and method for detection of complex malware
JP2013016000A (en) * 2011-07-04 2013-01-24 Hitachi Ltd Multiplex controller system and operating method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020502638A (en) * 2016-12-19 2020-01-23 ビットディフェンダー アイピーアール マネジメント リミテッド Event filtering for virtual machine security applications
JP7036821B2 (en) 2016-12-19 2022-03-15 ビットディフェンダー アイピーアール マネジメント リミテッド Event filtering for virtual machine security application examples
JP2020509511A (en) * 2017-02-14 2020-03-26 シマンテック コーポレーションSymantec Corporation System and method for detecting malicious computing events

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6317435B2 (en) Complex scoring for malware detection
AU2014330136A1 (en) Complex scoring for malware detection
KR102301721B1 (en) Dual memory introspection to protect multiple network endpoints
KR101946982B1 (en) Process Evaluation for Malware Detection in Virtual Machines
JP6706273B2 (en) Behavioral Malware Detection Using Interpreted Virtual Machines
JP6829718B2 (en) Systems and methods for tracking malicious behavior across multiple software entities
US9251343B1 (en) Detecting bootkits resident on compromised computers
JP2017527931A (en) Malware detection method and system
KR101086203B1 (en) A proactive system against malicious processes by investigating the process behaviors and the method thereof
CN102799817A (en) System and method for malware protection using virtualization

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