(57)【要約】  説明されるシステムおよび方法は、コンピュータシステムを悪意あるソフトウェアから保護することを可能にする。いくつかの実施形態において、セキュリティアプリケーションは、監視される実行可能なエンティティ（例えば、プロセス）のセットを複数のグループに分割し、グループのすべてのメンバは、親子関係またはコードインジェクションによって関係付けられる。セキュリティアプリケーションは、スコアのセットをそれぞれのエンティティグループとさらに関連付けてよい。このようなグループスコアは、個々のグループのメンバが一定のアクションを実施するときに増やされてよい。このように、個別のメンバによって実施されるアクションが、それ自体はマルウェアを示さないにも関わらず、グループスコアは、集合的な悪意あるビヘイビアを捕え、マルウェア検出をトリガすることができる。いくつかの実施形態において、グループのメンバシップルールは、エンティティが、一定のＯＳのプロセス、ブラウザ、およびファイルマネージャを含む、エンティティの選択されたサブセットの一部であるかどうかに従って変化する。エンティティが悪意あるものと判定されるとき、アンチマルウェア措置は、関連したエンティティの全グループに対して行われてよい。
2018524756.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのハードウェアプロセッサおよびメモリユニットを備えるホストシステムであって、前記少なくとも１つのハードウェアプロセッサは、エンティティマネージャおよびヒューリスティックエンジンを実行するように構成され、
前記エンティティマネージャは、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するように構成され、前記集まりを編成することは、
前記集まりの第１のエンティティが子エンティティをスポーンしたことを検出するのに応答して、前記第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定することと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属するときに、
新しいエンティティグループを前記複数のエンティティグループに追加し、
前記子エンティティを前記新しいエンティティグループに割り当てる
ことと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属さないときに、
前記第１のエンティティが第１のエンティティグループのメンバになるように、前記第１のエンティティグループを前記複数のエンティティグループから選択し、
前記子エンティティを前記第１のエンティティグループに割り当てる
ことと
を含み、
前記ヒューリスティックエンジンは、前記子エンティティによって実施される第１のアクションに応答して、
前記子エンティティが第２のエンティティグループのメンバになるように、前記第２のエンティティグループを前記複数のエンティティグループから選択し、
前記第２のエンティティグループを選択するのに応答して、前記第１のアクションがマルウェア攻撃を示すかどうかを、前記第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定する
ように構成される、
ホストシステム。
【請求項２】
請求項１に記載のホストシステムであって、前記集まりを編成することは、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属さないときに、
前記第１のエンティティが第３のエンティティグループのメンバになるように、前記第３のエンティティグループを前記複数のエンティティグループから選択することと、
前記子エンティティを前記第３のエンティティグループに割り当てることと
をさらに含む、ホストシステム。
【請求項３】
請求項１に記載のホストシステムであって、前記集まりを編成することは、前記子エンティティが前記集まりの第３のエンティティにコードをインジェクトしたことを検出するのに応答して、
前記子エンティティが第３のエンティティグループのメンバになるように、前記第３のエンティティグループを前記複数のエンティティグループから選択することと、
それに応じて、前記第３のエンティティを前記第３のエンティティグループに割り当てることと
をさらに含む、ホストシステム。
【請求項４】
請求項１に記載のホストシステムであって、前記集まりを編成することは、前記第１のエンティティが前記子エンティティをスポーンしたことを検出するのに応答して、
前記子エンティティが前記グループ作成者のカテゴリに属するかどうかを判定することと、
それに応じて、前記子エンティティが前記グループ作成者のカテゴリに属するときに、前記子エンティティを前記グループ作成者のカテゴリから除去することと
をさらに含む、ホストシステム。
【請求項５】
請求項１に記載のホストシステムであって、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定することは、前記第１のエンティティが、前記ホストシステム上で実行されるウェブブラウザのコンポーネントであるかどうかを判定することを含む、ホストシステム。
【請求項６】
請求項１に記載のホストシステムであって、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定することは、前記第１のエンティティが、前記ホストシステム上で実行されるオペレーティングシステムのコンポーネントであるかどうかを判定することを含む、ホストシステム。
【請求項７】
請求項１に記載のホストシステムであって、前記第１のアクションが前記マルウェア攻撃を示すかどうかを判定することは、前記第１のアクションが前記第２のアクションの前に発生したかどうかを判定することを含む、ホストシステム。
【請求項８】
請求項１に記載のホストシステムであって、前記ヒューリスティックエンジンは、前記第１のアクションが前記マルウェア攻撃を示すかどうかを、前記第２のエンティティグループの第３のエンティティによって実施される第３のアクションにさらに従って判定するように構成される、ホストシステム。
【請求項９】
請求項１に記載のホストシステムであって、前記第１のアクションが前記マルウェア攻撃を示すかどうかを判定することは、前記第１のアクションが、マルウェアを示すアクションのセットの一部であるかどうかを判定することを含み、前記マルウェアを示すアクションのセットのすべてのアクションは、前記第２のエンティティグループのメンバによって実施される、ホストシステム。
【請求項１０】
請求項９に記載のホストシステムであって、前記第１のアクションが、前記マルウェアを示すアクションのセットの一部であるかどうかを判定することは、前記マルウェアを示すアクションのセットのサブセットが特定の順序で発生したかどうかを判定することを含む、ホストシステム。
【請求項１１】
請求項１に記載のホストシステムであって、前記少なくとも１つのハードウェアプロセッサは、前記第１のアクションがマルウェア攻撃を示すという判定に応答して、前記第２のエンティティグループの複数のメンバを終了するように構成されたクリーンアップモジュールを実行するようにさらに構成される、ホストシステム。
【請求項１２】
請求項１１に記載のホストシステムであって、前記複数のメンバは、前記第２のエンティティグループのすべてのメンバを含む、ホストシステム。
【請求項１３】
請求項１１に記載のホストシステムであって、前記クリーンアップモジュールは、前記複数のメンバを終了することに備えて、
前記第２のエンティティグループが、前記子エンティティをメンバとして有する唯一のエンティティグループであるかどうかを判定し、
それに応じて、前記第２のエンティティグループが、前記子エンティティをメンバとして有する唯一のエンティティグループであるときに、前記複数のメンバを終了する
ように構成される、ホストシステム。
【請求項１４】
請求項１に記載のホストシステムであって、前記少なくとも１つのハードウェアプロセッサは、前記第１のアクションがマルウェア攻撃を示すという判定に応答して、前記第２のエンティティグループのメンバの実行によって前記ホストシステムに対して引き起こされた変更のセットを元に戻すように構成されたクリーンアップモジュールを実行するようにさらに構成される、ホストシステム。
【請求項１５】
ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するステップであって、前記集まりを編成するステップは、
前記集まりの第１のエンティティが子エンティティをスポーンしたことを検出するのに応答して、前記第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定するステップと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属するときに、
新しいエンティティグループを前記複数のエンティティグループに追加し、
前記子エンティティを前記新しいエンティティグループに割り当てる
ステップと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属さないときに、
前記第１のエンティティが第１のエンティティグループのメンバになるように、前記第１のエンティティグループを前記複数のエンティティグループから選択し、
前記子エンティティを前記第１のエンティティグループに割り当てる
ステップと
を含むステップと、
前記子エンティティによって実施される第１のアクションに応答して、前記子エンティティが第２のエンティティグループのメンバになるように、前記ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、前記第２のエンティティグループを前記複数のエンティティグループから選択するステップと、
前記第２のエンティティグループを選択するのに応答して、前記ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、前記第１のアクションがマルウェア攻撃を示すかどうかを、前記第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定するステップと
を含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記集まりを編成するステップは、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属さないときに、
前記第１のエンティティが第３のエンティティグループのメンバになるように、前記第３のエンティティグループを前記複数のエンティティグループから選択するステップと、
前記子エンティティを前記第３のエンティティグループに割り当てるステップと
をさらに含む、方法。
【請求項１７】
請求項１５に記載の方法であって、前記集まりを編成するステップは、前記子エンティティが前記集まりの第３のエンティティにコードをインジェクトしたことを検出するのに応答して、
前記子エンティティが第３のエンティティグループのメンバになるように、前記第３のエンティティグループを前記複数のエンティティグループから選択するステップと、
それに応じて、前記第３のエンティティを前記第３のエンティティグループに割り当てるステップと
をさらに含む、方法。
【請求項１８】
請求項１５に記載の方法であって、前記集まりを編成するステップは、前記第１のエンティティが前記子エンティティをスポーンしたことを検出するのに応答して、
前記子エンティティが前記グループ作成者のカテゴリに属するかどうかを判定するステップと、
それに応じて、前記子エンティティが前記グループ作成者のカテゴリに属するときに、前記子エンティティを前記グループ作成者のカテゴリから除去するステップと
をさらに含む、方法。
【請求項１９】
請求項１５に記載の方法であって、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するステップは、前記第１のエンティティが、前記ホストシステム上で実行されるウェブブラウザのコンポーネントであるかどうかを判定するステップを含む、方法。
【請求項２０】
請求項１５に記載の方法であって、前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するステップは、前記第１のエンティティが、前記ホストシステム上で実行されるオペレーティングシステムのコンポーネントであるかどうかを判定するステップを含む、方法。
【請求項２１】
請求項１５に記載の方法であって、前記第１のアクションが前記マルウェア攻撃を示すかどうかを判定するステップは、前記第１のアクションが前記第２のアクションの前に発生したかどうかを判定するステップを含む、方法。
【請求項２２】
請求項１５に記載の方法であって、前記第１のアクションが前記マルウェア攻撃を示すかどうかを、前記第２のエンティティグループの第３のエンティティによって実施される第３のアクションに従って判定するステップをさらに含む、方法。
【請求項２３】
請求項１５に記載の方法であって、前記第１のアクションが前記マルウェア攻撃を示すかどうかを判定するステップは、前記第１のアクションが、マルウェアを示すアクションのセットの一部であるかどうかを判定するステップを含み、前記マルウェアを示すアクションのセットのすべてのアクションは、前記第２のエンティティグループのメンバによって実施される、方法。
【請求項２４】
請求項２３に記載の方法であって、前記第１のアクションが、前記マルウェアを示すアクションのセットの一部であるかどうかを判定するステップは、前記マルウェアを示すアクションのセットのサブセットが、特定の順序で発生したかどうかを判定するステップを含む、方法。
【請求項２５】
請求項１５に記載の方法であって、前記第１のアクションがマルウェア攻撃を示すという判定に応答して、前記ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、前記第２のエンティティグループの複数のメンバを終了するステップをさらに含む方法。
【請求項２６】
請求項２５に記載の方法であって、前記複数のメンバは、前記第２のエンティティグループのすべてのメンバを含む、方法。
【請求項２７】
請求項２５に記載の方法であって、
前記ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、前記第２のエンティティグループが、前記子エンティティをメンバとして有する唯一のエンティティグループであるかどうかを判定するステップと、
それに応じて、前記第２のエンティティグループが、前記子エンティティをメンバとして有する唯一のエンティティグループであるときに、前記複数のメンバを終了するステップと
をさらに含む方法。
【請求項２８】
請求項１５に記載の方法であって、前記第１のアクションがマルウェア攻撃を示すという判定に応答して、前記ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、前記第２のエンティティグループのメンバの実行によって前記ホストシステムに対して引き起こされた変更のセットを元に戻すステップをさらに含む方法。
【請求項２９】
ホストシステムの少なくとも１つのハードウェアプロセッサによって実行されるときに、前記ホストシステムにエンティティマネージャおよびヒューリスティックエンジンを形成させる命令を格納した非一時的コンピュータ可読媒体であって、
前記エンティティマネージャは、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するように構成され、前記集まりを編成することは、
前記集まりの第１のエンティティが子エンティティをスポーンしたことを検出するのに応答して、前記第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定することと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属するときに、
新しいエンティティグループを前記複数のエンティティグループに追加し、
前記子エンティティを前記新しいエンティティグループに割り当てる
ことと、
前記第１のエンティティが前記グループ作成者のカテゴリに属するかどうかを判定するのに応答して、前記第１のエンティティが前記グループ作成者のカテゴリに属さないときに、
前記第１のエンティティが第１のエンティティグループのメンバになるように、前記第１のエンティティグループを前記複数のエンティティグループから選択し、
前記子エンティティを前記第１のエンティティグループに割り当てる
ことと
を含み、
前記ヒューリスティックエンジンは、前記子エンティティによって実施される第１のアクションに応答して、
前記子エンティティが第２のエンティティグループのメンバになるように、前記第２のエンティティグループを前記複数のエンティティグループから選択し、
前記第２のエンティティグループを選択するのに応答して、前記第１のアクションがマルウェア攻撃を示すかどうかを、前記第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定する
ように構成される、非一時的コンピュータ可読媒体。
【請求項３０】
少なくとも１つのハードウェアプロセッサおよびメモリユニットを備えるホストシステムであって、前記少なくとも１つのハードウェアプロセッサは、エンティティマネージャおよびヒューリスティックエンジンを実行するように構成され、
前記エンティティマネージャは、エンティティ間の関係のセットに従って、監視される実行可能なエンティティの集まりを複数のエンティティグループに、前記集まりのうち少なくとも１つのエンティティが、同時に複数のエンティティグループに属するように編成するように構成され、エンティティ間の関係の前記セットは、親子の関係およびコードインジェクションの関係を含む関係のグループから選択され、
前記ヒューリスティックエンジンは、前記少なくとも１つのエンティティによって実施される第１のアクションに応答して、
前記少なくとも１つのエンティティが前記エンティティグループのメンバになるように、エンティティグループを前記複数のエンティティグループから選択し、
前記エンティティグループを選択するのに応答して、前記第１のアクションがマルウェア攻撃を示すかどうかを、前記エンティティグループの別のメンバによって実施される第２のアクションに従って判定する
ように構成される、
ホストシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、コンピュータシステムを悪意あるソフトウェアから保護するためのシステムおよび方法に関する。
【背景技術】
【０００２】
[0002]マルウェアとしても知られる悪意あるソフトウェアは、世界中の非常に多くのコンピュータシステムに影響を及ぼす。コンピュータウイルス、ワーム、ルートキット、未承諾のアドウェア、ランサムウェア、およびスパイウェアなどの多くの形式で、マルウェアは、何百万ものコンピュータユーザに深刻なリスクをもたらし、コンピュータユーザを、中でも、データおよび機密情報の喪失、個人情報の盗難、ならびに生産性の喪失に対して脆弱にする。マルウェアはさらに、ユーザによっては、わいせつである、過度に攻撃的である、迷惑である、または他の理由で不快であるとみなされる素材を表示することがある。
【０００３】
[0003]セキュリティソフトウェアは、ユーザのコンピュータシステムに感染するマルウェアを検出するため、および追加として、このようなマルウェアを除去するか、またはこのようなマルウェアの実行を防ぐために使用されることがある。いくつかのマルウェア検出技法が当技術分野で知られる。ある技法は、マルウェアエージェントのコード片を、マルウェアを示す署名のライブラリにマッチさせることに依存する。他の従来の方法は、マルウェアエージェントによって実施されるアクションのセットなどの、マルウェアを示すビヘイビア（ｂｅｈａｖｉｏｒ；振る舞い、挙動、行動）を検出する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]悪意あるソフトウェアは、様々な方策に依存して検出を逃れる。１つのこのような方策は、難読化技法、例えば、悪意あるコードを暗号化すること、またはそれぞれの感染されたコンピュータに対してわずかに異なるコードのバージョンを使用すること（通常、ポリモルフィズムとして知られる特性）を伴う。別の例示的な検出回避方法は、複数のエージェント間に悪意ある活動を分割し、それぞれのエージェントは、他のエージェントによって実施されるアクションから孤立して行われる場合にはマルウェアを示すとみなされることがない別々のセットのアクションを実施する。
【０００５】
[0005]このような先進的なマルウェアを検出するシステムおよび方法を開発することに強い関心がある。
【課題を解決するための手段】
【０００６】
[0006]１つの態様によれば、ホストシステムは、少なくとも１つのハードウェアプロセッサおよびメモリユニットを備え、少なくとも１つのハードウェアプロセッサは、エンティティマネージャおよびヒューリスティック（ｈｅｕｒｉｓｔｉｃ；発見法）エンジンを実行するように構成される。エンティティマネージャは、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するように構成され、集まりを編成することは、集まりの第１のエンティティが子エンティティをスポーンした（ｓｐａｗｎｅｄ；作った、産んだ）ことを検出するのに応答して、第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定することを含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属するとき、新しいエンティティグループを複数のエンティティグループに追加すること、および子エンティティを新しいエンティティグループに割り当てることをさらに含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属さないとき、第１のエンティティが第１のエンティティグループのメンバになるように、第１のエンティティグループを複数のエンティティグループから選択すること、および子エンティティを第１のエンティティグループに割り当てることをさらに含む。ヒューリスティックエンジンは、子エンティティによって実施される第１のアクションに応答して、子エンティティが第２のエンティティグループのメンバになるように、第２のエンティティグループを複数のエンティティグループから選択し、第２のエンティティグループを選択するのに応答して、第１のアクションがマルウェア攻撃を示すかどうかを、第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定するように構成される。
【０００７】
[0007]別の態様によれば、方法は、ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成することを含む。集まりを編成することは、集まりの第１のエンティティが子エンティティをスポーンしたことを検出するのに応答して、第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定することを含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属するとき、新しいエンティティグループを複数のエンティティグループに追加すること、および子エンティティを新しいエンティティグループに割り当てることをさらに含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属さないとき、第１のエンティティが第１のエンティティグループのメンバになるように、第１のエンティティグループを複数のエンティティグループから選択すること、および子エンティティを第１のエンティティグループに割り当てることをさらに含む。方法は、子エンティティによって実施される第１のアクションに応答して、子エンティティが第２のエンティティグループのメンバになるように、ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、第２のエンティティグループを複数のエンティティグループから選択することをさらに含む。方法は、第２のエンティティグループを選択するのに応答して、ホストシステムの少なくとも１つのハードウェアプロセッサを用いて、第１のアクションがマルウェア攻撃を示すかどうかを、第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定することをさらに含む。
【０００８】
[0008]別の態様によれば、非一時的コンピュータ可読媒体は、ホストシステムの少なくとも１つのハードウェアプロセッサによって実行されるとき、ホストシステムに、エンティティマネージャおよびヒューリスティックエンジンを形成させる命令を格納する。エンティティマネージャは、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するように構成され、集まりを編成することは、集まりの第１のエンティティが子エンティティをスポーンしたことを検出するのに応答して、第１のエンティティがエンティティのグループ作成者のカテゴリに属するかどうかを判定することを含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属するとき、新しいエンティティグループを複数のエンティティグループに追加すること、および子エンティティを新しいエンティティグループに割り当てることをさらに含む。集まりを編成することは、第１のエンティティがグループ作成者のカテゴリに属するかどうかを判定するのに応答して、第１のエンティティがグループ作成者のカテゴリに属さないとき、第１のエンティティが、第１のエンティティグループのメンバになるように、第１のエンティティグループを複数のエンティティグループから選択すること、および子エンティティを第１のエンティティグループに割り当てることをさらに含む。ヒューリスティックエンジンは、子エンティティによって実施される第１のアクションに応答して、子エンティティが第２のエンティティグループのメンバになるように、第２のエンティティグループを複数のエンティティグループから選択し、第２のエンティティグループを選択するのに応答して、第１のアクションがマルウェア攻撃を示すかどうかを、第２のエンティティグループの別のメンバによって実施される第２のアクションに従って判定するように構成される。
【０００９】
[0009]別の態様によれば、ホストシステムは、少なくとも１つのハードウェアプロセッサおよびメモリユニットを備え、少なくとも１つのハードウェアプロセッサは、エンティティマネージャおよびヒューリスティックエンジンを実行するように構成される。エンティティマネージャは、エンティティ間の関係のセットに従って、監視される実行可能なエンティティの集まりを複数のエンティティグループに編成するように構成され、その結果、集まりのうち少なくとも１つのエンティティが、同時に複数のエンティティグループに属し、エンティティ間の関係のセットは、親子関係の関係およびコードインジェクション（ｉｎｊｅｃｔｉｏｎ；投入、注入）の関係からなる関係のグループから選択される。ヒューリスティックエンジンは、少なくとも１つのエンティティによって実施される第１のアクションに応答して、少なくとも１つのエンティティがエンティティグループのメンバになるように、エンティティグループを複数のエンティティグループから選択し、エンティティグループを選択するのに応答して、第１のアクションがマルウェア攻撃を示すかどうかを、エンティティグループの別のメンバによって実施される第２のアクションに従って判定するように構成される。
【００１０】
[0010]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照すると、よりよく理解されるようになろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]本発明のいくつかの実施形態による、クライアントシステム上で実行するセキュリティアプリケーションを含むソフトウェアオブジェクトの例示的なセットを示す図である。
【図２】[0012]本発明のいくつかの実施形態による、クライアントコンピュータシステムの例示的なハードウェア構成を示す図である。
【図３】[0013]本発明のいくつかの実施形態による、セキュリティアプリケーションの例示的な構造を示す図である。
【図４】[0014]Ｗｉｎｄｏｗｓ（登録商標）環境におけるプロセスのセットの例示的な実行フローを示す図である。実線矢印は、セキュリティアプリケーションがない典型的なフローを指示する。破線矢印は、実行フローに対する変更を指示し、変更は、本発明のいくつかの実施形態に従って動作する複数のイベントインターセプタによって導入される。
【図５−Ａ】[0015]図５−Ａは、本発明のいくつかの実施形態による、悪意あるビヘイビアがないか監視される実行可能なエンティティを含む、エンティティグループのセットを示す図である。実線矢印はエンティティ作成を表し、破線矢印はコードインジェクションを表す。
【図５−Ｂ】[0016]図５−Ｂは、本発明のいくつかの実施形態による、エンティティグループの別のセットを示す図である。
【図６】[0017]本発明のいくつかの実施形態による、エンティティマネージャ（図３）によって実施される例示的な一連のステップを示す図である。
【図７】[0018]本発明のいくつかの実施形態による、逃避的なマルウェアによって実施される例示的な時系列のアクション、および例示的なビヘイビアの（ｂｅｈａｖｉｏｒａｌ）署名を示す図である。
【図８−Ａ】[0019]図８−Ａは、本発明のいくつかの実施形態による、別の例示的なビヘイビアの署名を示す図である。
【図８−Ｂ】[0020]図８−Ｂは、本発明のいくつかの実施形態による、さらに別の例示的なビヘイビアの署名を示す図である。
【図９】[0021]本発明のいくつかの実施形態による、ヒューリスティックエンジン（図３）によって実施される例示的な一連のステップを示す図である。
【図１０−Ａ】[0022]複数の例示的なエンティティ・スコアリング・オブジェクト（ＥＳＯ）であって、それぞれのＥＳＯは、本発明のいくつかの実施形態による、個々の実行可能なエンティティに対して決定されることを示す図である。
【図１０−Ｂ】[0023]複数の例示的なグループ・スコアリング・オブジェクト（ＧＳＯ）であって、それぞれのＧＳＯは、本発明のいくつかの実施形態による、実行可能なエンティティの個々のグループに対して決定されることを示す図である。
【図１１−Ａ】[0024]図１１−Ａは、本発明のいくつかの実施形態による、エンティティスコア値および関連付けられたエンティティスコア増加量の例示的なセットを示す図である。
【図１１−Ｂ】[0025]図１１−Ｂは、本発明のいくつかの実施形態による、グループスコア値および関連付けられたグループスコア増加量の例示的なセットを示す図である。
【図１２−Ａ】[0026]本発明のいくつかの実施形態による、スコアリングエンジン（図３）によって実施される例示的な一連のステップを示す図である。
【図１２−Ｂ】[0027]本発明のいくつかの実施形態による、スコアリングエンジンによって実施される代替の一連のステップを示す図である。
【図１２−Ｃ】[0028]本発明のいくつかの実施形態による、スコアリングエンジンによって実施されるさらに別の代替の一連のステップを示す図である。
【図１３】[0029]本発明のいくつかの実施形態による、クリーンアップモジュール（図３）によって実施される例示的な一連のステップを示す図である。
【発明を実施するための形態】
【００１２】
[0030]以下の説明において、構造間のすべての列挙された接続は、直接の動作的な接続、または中間体構造を通じた間接の動作的な接続であってよいことが理解される。要素のセットは、１つまたは複数の要素を含む。要素の任意の列挙は、少なくとも１つの要素を指すと理解される。複数の要素は、少なくとも２つの要素を含む。別段の要求がない限り、任意の説明された方法ステップは、必ずしも特定の示された順序で実施される必要はない。第２の要素から導き出された第１の要素（例えば、データ）は、第２の要素に等しい第１の要素、ならびに第２の要素および任意選択で他のデータを処理することによって生成された第１の要素を包含する。パラメータに従って決定または判定することは、パラメータに従って、および任意選択で他のデータに従って決定または判定することを包含する。別段の定めがない限り、いくつかの量／データの指標は、量／データ自体、または量／データ自体とは異なる指標であってよい。コンピュータセキュリティは、データおよび／またはハードウェアへの非意図的なまたは不正なアクセスに対して、データおよび／またはハードウェアの非意図的なまたは不正な修正に対して、ならびにデータおよび／またはハードウェアの破壊に対して、ユーザおよび機器を保護すること包含する。コンピュータプログラムは、タスクを行う一連のプロセッサ命令である。本発明のいくつかの実施形態において説明されるコンピュータプログラムは、他のコンピュータプログラムのスタンドアロンのソフトウェアエンティティまたはサブエンティティ（例えば、サブルーチン、ライブラリ）であってよい。別段の定めがない限り、プロセスは、アプリケーション、またはオペレーティングシステムの一部などのコンピュータプログラムのインスタンスであり、少なくとも実行スレッドおよび実行スレッドに割り当てられた仮想メモリ空間を有することによって特徴付けられ、個々の仮想メモリ空間の内容は、実行可能なコードを含む。別段の定めがない限り、ヒューリスティックは、イベントのセットの発生が、コンピュータセキュリティの脅威を示すかどうかを判定するために実行される手順である。コンピュータ可読媒体は、磁気、光、および半導体の記憶媒体などの非一時的媒体（例えば、ハードドライブ、光ディスク、フラッシュメモリ、ＤＲＡＭ）、ならびに導電性ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書で説明される方法を実施するためにプログラムされたハードウェア（例えば、１つまたは複数のマイクロプロセッサ）、ならびに本明細書で説明される方法を実施するために、命令をエンコードするコンピュータ可読媒体を備えるコンピュータシステムを提供する。
【００１３】
[0031]以下の説明は、本発明の実施形態を例として示し、必ずしも限定のために示すものではない。
[0032]図１は、本発明のいくつかの実施形態による、コンピュータセキュリティの脅威から保護されたクライアントシステム１０上で実行するソフトウェアオブジェクトの例示的なセットを示す。クライアントシステム１０は、コンピュータシステム（例えば、エンドユーザコンピュータ、企業のサーバ、他）を表してよい。他の例示的なクライアントシステム１０は、モバイルコンピューティングデバイス（例えば、ラップトップ、タブレットＰＣ）、テレコミュニケーションデバイス（例えば、スマートフォン）、デジタルエンターテイメント用品（テレビ、ゲーム機、他）、ウェアラブルコンピューティングデバイス（例えば、スマートウォッチ）、またはプロセッサおよびメモリを有し、コンピュータセキュリティ保護を要する任意の他の電子デバイスを含む。
【００１４】
[0033]いくつかの実施形態において、オペレーティングシステム（ＯＳ）３０は、クライアントシステム１０のハードウェアにインターフェースを提供し、ソフトウェアアプリケーション３２ａ〜３２ｃ、および３６のセットに対してホストとしてふるまうソフトウェアを含む。ＯＳ３０は、中でも、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、ｉＯＳ（登録商標）、またはＡｎｄｒｏｉｄ（登録商標）などの、広く利用可能な任意のオペレーティングシステムを含んでよい。アプリケーション３２ａ〜３２ｃは、例えば、中でも、文書処理、画像処理、データベース、ブラウザ、および電子通信アプリケーションを含むことがある、ユーザソフトウェアを総称的に表す。いくつかの実施形態において、セキュリティアプリケーション３６は、アプリケーション３２ａ〜３２ｃと並行して実行され、クライアントシステム１０上で実行する（アプリケーション３２ａ〜３２ｃおよびＯＳ３０を含む）任意のソフトウェアがコンピュータセキュリティの脅威をもたらすかどうかを判定するように構成される。例えば、アプリケーション３６は、マルウェアおよび／またはスパイウェアを検出することがある。アプリケーション３６は、このような悪意あるソフトウェアを消去するかまたはそれ以外の方法で無能力化し、クライアントシステム１０のユーザまたはシステムアドミニストレータに警告するようにさらに構成されることがある。セキュリティアプリケーション３６は、スタンドアロンのプログラムであってよく、または、中でも、アンチマルウェア、アンチスパム、および反不正行為のコンポーネントを含むソフトウェアスイートの一部を形成してもよい。セキュリティアプリケーション３６の動作は、以下で詳細に説明される。
【００１５】
[0034]図２は、クライアントシステム１０の例示的なハードウェア構成を示し、クライアントシステム１０は、コンピュータシステムである。当業者は、タブレットＰＣ、携帯電話、スマートウォッチ、他などの、他のデバイスのハードウェア構成は、図示された構成と相違することがあるが、本説明は、このようなデバイスに適応されてよいことを理解するであろう。クライアントシステム１０は、ハードウェアプロセッサ１２、メモリユニット１４、入力デバイス１６のセット、出力デバイス１８のセット、ストレージデバイス２０のセット、およびネットワークアダプタ２２のセットを含む物理デバイスのセットを備え、すべてが、コントローラハブ２４によって相互接続される。
【００１６】
[0035]いくつかの実施形態において、プロセッサ１２は、計算的および／または論理的演算を信号および／またはデータのセットで実行するように構成された物理デバイス（例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコアの集積回路）を備える。いくつかの実施形態において、このような論理的演算は、メモリユニット１４からプロセッサ１２に、一連のプロセッサ命令（例えば、機械語または他のタイプのソフトウェア）の形で送信される。メモリユニット１４は、命令を行う過程でプロセッサ１２によって、アクセスまたは生成されるデータ／信号を格納する揮発性のコンピュータ可読媒体（例えば、ＲＡＭ）を備えることがある。入力デバイス１６は、ユーザがデータおよび／または命令をクライアントシステム１０に導入することを可能にする、個々のハードウェアのインターフェースおよび／またはアダプタを含む、中でも、コンピュータキーボード、マウス、およびマイクロフォンを含むことがある。出力デバイス１８は、中でも、モニタなどのディスプレイデバイスおよびスピーカ、ならびにクライアントシステム１０がデータをユーザに通信することを可能にする、グラフィックカードなどのハードウェアインターフェース／アダプタを含むことがある。いくつかの実施形態において、入力デバイス１６および出力デバイス１８は、タッチスクリーンデバイスのケースでそうであるように、共通の１つのハードウェアを共有することがある。ストレージデバイス２０は、プロセッサ命令および／またはデータの不揮発性の保存、読取り、および書込みをできるようにするコンピュータ可読媒体を含む。例示的なストレージデバイス２０は、磁気ディスクおよび光ディスクとフラッシュメモリデバイス、ならびにＣＤおよび／またはＤＶＤのディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ２２のセットは、クライアントシステム１０が、ネットワーク（例えば、ローカルエリアネットワーク、ワイヤレスネットワーク、他）に、および／または他のデバイス／コンピュータシステムに接続できるようにする。コントローラハブ２４は、複数のシステム、周辺機器、および／もしくはチップセットバス、ならびに／またはプロセッサ１２と、デバイス１４、１６、１８、２０、および２２との間の通信をできるようにするすべての他の回路機器を総称的に表す。例えば、コントローラハブ２４は、プロセッサ１２をメモリ１４に接続するノースブリッジ、ならびに／またはプロセッサ１２を、デバイス１６、１８、２０、および２２に接続するサウスブリッジを備えることがある。
【００１７】
[0036]図３は、本発明のいくつかの実施形態による、セキュリティアプリケーション３６の例示的なコンポーネントを示す。セキュリティアプリケーション３６は、スコアリングエンジン４８およびクリーンアップモジュール５６を含み、両方はビヘイビアマネージャ４２に接続される。ビヘイビアマネージャ４２は、ヒューリスティックエンジン４６に連結されたエンティティマネージャ４４をさらに含む。
【００１８】
[0037]いくつかの実施形態において、ビヘイビアマネージャ４２は、クライアントシステム１０上で実行する様々なソフトウェアオブジェクトの内部にインストールされたイベントインターセプタ２８ａ〜２８ｃのセットからイベント通知４０のセットを受け取る。イベント通知４０は、このように、ソフトウェアの実行中の様々なイベントの発生についてビヘイビアマネージャ４２に通告することがある。例示的な通知されたイベントは、中でも、プロセスまたはスレッドの作成、コードインジェクション、システムコール、新しいディスクファイルを作成する試み、既存のディスクファイルに書き込む試み、システムのレジスタキーを編集する試み、および特定のメモリ区画に書き込む試みを含んでよい。通知されたイベントのうちのいくつかは、マルウェアを示すことがある。他のイベントは、それ自身がセキュリティ脅威を示すことはないが、他のイベントと一緒に発生するときに潜在的な脅威の兆候を示すことがある。通知４０を受け取るのに応答して、ビヘイビアマネージャ４２のいくつかの実施形態は、ヒューリスティックデータベース２６にアクセスし、通知４０の詳細に従って検出ルーチンを選択してよく、選択されたルーチンは特定のヒューリスティックを実装する。ビヘイビアマネージャ４２は、個々の検出ルーチンを実行のためにヒューリスティックエンジン４６にさらに送ってよい。個々のルーチンの実行は、スコアリングアラート５０をスコアリングエンジン４８に供給してよい。エンジン４８は、複数のこのような評価指標（例えば、スコア）を維持してよく、少なくとも１つのこのような指標がコンピュータセキュリティの脅威を指示するときにアラートを発してよい。コンポーネント４４、４６、４８、および５６の動作は、以下で詳細に説明される。
【００１９】
[0038]イベントインターセプタ２８ａ〜２８ｃの動作を示すために、図４は、本発明のいくつかの実施形態による、ソフトウェアエンティティ６０ａ〜６０ｂのセットの例示的な実行フローを示す。簡潔さのために、選ばれたエンティティ６０ａ〜６０ｂは、Ｗｉｎｄｏｗｓ（登録商標）ＯＳのインスタンスにおいて実行するプロセスであり、類似の図が、例えばＬｉｎｕｘなどの他のオペレーティングシステムに関して描画されてよい。実線矢印は、イベントインターセプタがない実行フローを表す。破線矢印は、本発明のいくつかの実施形態に従って実行するイベントインターセプタ２８ａ〜２８ｃが存在することによる、フローに対する変更を表す。
【００２０】
[0039]例示的なプロセス６０ａは、複数のダイナミックリンクライブラリ（ＤＬＬ）６２ａ〜６２ｃをロードし、図４の例において、ＤＬＬ６２ｃは、（場合によっては悪意ある）プロセス６０ｂによってプロセス６０ａにインジェクトされる（ｉｎｊｅｃｔｅｄ；投入される、注入される）。プロセス６０ａ（または、プロセス６０ａのロードされたＤＬＬのうちの１つ）が、いくつかのシステムの機能性、例えば、何かをディスクファイルに書き込むこと、またはレジストリのキーを編集することをコールする命令を実行するとき、個々の命令は、ＫＥＲＮＥＬ３２．ＤＬＬまたはＮＴＤＬＬ．ＤＬＬなどの、ユーザモードのアプリケーションプログラミングインターフェース（ＡＰＩ）をコールする。図４の例において、個々のユーザモードのＡＰＩコールは、ユーザレベルのイベントインターセプタ２８ａによってインターセプトされる。このようなインターセプトは、中でも、ＤＬＬインジェクションまたはフッキングなどの方法によって実現されることがある。フッキングは、ソフトウェアコンポーネント間で受け渡されるファンクションコール、メッセージ、またはイベントをインターセプトする方法に対して当技術分野で使用される総称である。１つの例示的なフッキング方法は、実行を第２の機能にリダイレクトする命令（このケースにおいては、イベントインターセプタ２８ａ）を挿入することによって対象機能のエントリポイントを変えることを含む。このようなフッキングに続いて、第２の機能は、対象機能の代わりに、または対象機能の前に実行されてよい。図４の例において、セキュリティアプリケーション３６は、ＫＥＲＮＥＬ３２．ＤＬＬおよび／またはＮＴＤＬＬ．ＤＬＬライブラリの一定の機能の中にフックして、個々の機能に、実行をアプリケーション３６のコンポーネントにリダイレクトすることを命令してよい。このように、アプリケーション３６は、プロセス６０ａが特定のアクションを実施することを試みているときはいつでも通知され、フックされた機能に従って識別されてよい。
【００２１】
[0040]実行の典型的なフローにおいて、エンティティ６０ａによってコールされるユーザモードのＡＰＩファンクションは、オペレーティングシステムのカーネルからのサービスをリクエストしてよい。いくつかの実施形態において、このような動作は、ｘ８６プラットフォーム上のＳＹＳＣＡＬＬおよびＳＹＳＥＮＴＥＲなどのシステムコールを発行することによって行われる。図４の例において、このようなシステムコールは、イベントインターセプタ２８ｂによってインターセプトされる。いくつかの実施形態において、このようなインターセプトは、例えば、プロセッサ１２のモデル固有レジスタ（ＭＳＲ：ｍｏｄｅｌ−ｓｐｅｃｉｆｉｃ  ｒｅｇｉｓｔｅｒ）内に格納された値を変更することによって、システムコールのハンドラルーチンを修正することを含み、これは、個々のハンドラルーチンの実行をインターセプタ２８ｂに、または直接的にアプリケーション３６のコンポーネントに効果的にリダイレクトする。このような技法は、ＭＳＲのフッキングとして当技術分野で知られ、ソフトウェアエンティティが一定のシステムコールを実施することを試みているときはいつでも、セキュリティアプリケーション３６が通知されることを可能にすることができる。
【００２２】
[0041]システムコールに続いて、プロセッサの制御は、典型的にはＯＳ３０のカーネルに引き渡される。いくつかの実施形態において、カーネルレベルのイベントインターセプタ２８ｃは、ＯＳカーネルの一定のアクションをインターセプトし、したがって、査定されたプロセスが、マルウェアを示すことがある一定の動作を実施することを試みていることを判定するように構成される。このようなアクションをインターセプトするために、いくつかの実施形態は、ＯＳ３０に内蔵され、ＯＳ３０によって公開されるフィルタリングメカニズムのセットを用いてよい。例えば、Ｗｉｎｄｏｗｓ（登録商標）ＯＳにおいて、ＦｌｔＲｅｇｉｓｔｅｒＦｉｌｔｅｒは、ファイルを作成すること、ファイルを開くこと、ファイルに書き込むこと、およびファイルを削除することのような動作をインターセプトするために使用されてよい。別の例において、イベントインターセプタ２８ｃは、ＯｂＲｅｇｉｓｔｅｒＣａｌｌｂａｃｋを使用して、オブジェクトを扱う動作の作成もしくは複製をインターセプトするか、またはＰｓＳｅｔＣｒｅａｔｅＰｒｏｃｅｓｓＮｏｔｉｆｙＲｏｕｔｉｎｅを使用して、新しいプロセスの作成をインターセプトしてよい。さらに別の例において、レジストリのキー／値を作成すること、およびセットすることなどのＷｉｎｄｏｗｓのレジストリ動作は、ＣｍＲｅｇｉｓｔｅｒＣａｌｌｂａｃｋＥｘを使用してインターセプトされてよい。類似のイベントフィルタリングメカニズムは、Ｌｉｎｕｘ（登録商標）などの他のオペレーティングシステムに対する当技術分野で知られる。特定のイベント／アクションの発生を検出するのに応答して、イベントインターセプタ２８は、通知４０をセキュリティアプリケーション３６に送信してよい。
【００２３】
[0042]いくつかの実施形態において、セキュリティアプリケーション３６は、複数のソフトウェアエンティティを、悪意あるビヘイビアがないか監視する。監視されるソフトウェアエンティティは、個別の実行スレッドから、プロセス、全アプリケーション、フレームワーク、および仮想マシンへと、複雑さが変化することがある。簡潔さのために、以下の説明では、監視されるエンティティがプロセスであると仮定するが、この仮定は、本発明の範囲を限定すべきではない。当業者は、説明されるシステムおよび方法は、個別のプロセスと同等に、実行可能なエンティティの他のタイプに拡大されてよいことを理解するであろう。
【００２４】
[0043]本発明のいくつかの実施形態は、悪意あるビヘイビアを監視する観点から、実行可能なエンティティ（例えば、プロセス）をいくつかの別個のカテゴリに分割する。このようなカテゴリは、中でも、グループ作成者、グループ継承者、および監視されないエンティティを含んでよい。いくつかの実施形態において、グループ作成者は、Ｗｉｎｄｏｗｓ（登録商標）におけるＷｉｎｌｏｇｏｎおよびＳｅｒｖｉｃｅ  Ｈｏｓｔ（ｓｖｃｈｏｓｔ．ｅｘｅ）などの、オペレーティングシステムの一定のプロセス、コンポーネント、およびサービスを含む。他のグループ作成者エンティティは、中でも、ファイルマネージャのプロセスおよび／もしくはコンポーネント（例えば、Ｗｉｎｄｏｗｓ  Ｅｘｐｌｏｒｅｒ（登録商標）、Ｆｉｌｅ  Ｅｘｐｌｏｒｅｒ（登録商標）、Ｔｏｔａｌ  Ｃｏｍｍａｎｄｅｒ（登録商標）、他）、ならびに、またはブラウザのプロセスおよびコンポーネント（例えば、Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）、Ｆｉｒｅｆｏｘ（登録商標）、Ｃｈｒｏｍｅ（登録商標）、他）を含んでよい。グループ継承者のカテゴリは、大多数のユーザプロセス、ならびに未知のエンティティ、またはグループ作成者として識別されることがないエンティティを含んでよい。さらなるカテゴリは、監視から免除されたエンティティを表してよい。このような非監視のエンティティは、例えば、オペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）プラットフォーム上のｃｓｒｓｓ．ｅｘｅおよびｓｍｓｓ．ｅｘｅ）、ならびにセキュリティアプリケーション３６の一部を形成するエンティティによって保護される一定のプロセスを含んでよい。いくつかの実施形態において、エンティティのカテゴリは、その存続期間中に変更してよい。例えば、グループ作成者エンティティは、以下に示すようにグループ継承者になってよい。
【００２５】
[0044]セキュリティアプリケーション３６のいくつかの実施形態は、どのカテゴリにそれぞれのエンティティが属するかを、パス、ファイル名、リソースのセット（例えば、立ち上げ時にロードされるライブラリ）、ＯＳのレジストリのエントリ、デジタル署名、および個々のエンティティの記憶域などの、個々のエンティティの一定の特性に従って判定してよい。エンティティが特定のカテゴリに属するかどうかを示す他のデータは、個々のエンティティが一定のハードウェアデバイス（例えば、ネットワークアダプタ２２）を使用するかどうかの指標を含む。例示的な実施形態において、セキュリティアプリケーションは、クライアントシステム１０の、および／またはＯＳ３０の検査を実施し、ＯＳサービス、ブラウザ、およびファイルマネージャなどの、グループ作成者エンティティに関連付けられたリソースのセットを配置し、このような情報を後で使用して、実行エンティティがなんらかのカテゴリに属するかどうかを判定してよい。セキュリティアプリケーション３６は、エンティティをさらに識別し、個々のエンティティのハッシュのセットを既知のエンティティのハッシュのデータベースと比較することによって、そのカテゴリを確立してよい。
【００２６】
[0045]いくつかの実施形態において、エンティティマネージャ４４は、クライアントシステム１０上で実行するエンティティのデータ構造（例えば、リスト）を維持し、個々のデータ構造を動的に更新し、（例えば、プロセスの作成に応答して）新しいエンティティの追加を、および（例えば、プロセスの終了に応答して）他のエンティティの除去を反映する。簡潔さのために、実行エンティティのリスト上に現在あるエンティティは、以下で、現在のエンティティとみなされる。いくつかの実施形態において、現在のエンティティのリスト上のそれぞれのエンティティは、実行可能なオブジェクトの別個のインスタンスを表す。現在のエンティティのリストは、したがって、同じ実行可能なオブジェクトの複数のインスタンスを含んでよい。ウェブブラウザアプリケーションがそれぞれのブラウザのタブを別々のプロセスとして実行するこのような１つの例において、それぞれのこのようなプロセスは、別々の監視されるエンティティであってよい。
【００２７】
[0046]エンティティマネージャ４４は、現在のエンティティを複数のグループにさらに分割し、それぞれのグループは、相互に関連したエンティティだけを含み、例えば、どのエンティティがどのグループの一部であるかを指示する関連付けのセットを維持する。エンティティ同士は、中でも親子関係および／またはコードインジェクションを介して関係付けられてよい。親子関係は、本明細書で、別のエンティティの子または親であるグループの１つのエンティティを指す。子プロセスは、例えば、（Ｗｉｎｄｏｗｓ（登録商標）における）スポーニング（ｓｐａｗｎｉｎｇ）、または（Ｕｎｉｘから派生したＯＳにおける）フォーキング（ｆｏｒｋｉｎｇ）を介して作成されてよい。いくつかの実施形態において、同じエンティティは、同時に複数の別個のグループに属してよい。このような１つの例において、エンティティは、エンティティが第１のグループの別のメンバの子または親のどちらかであるので、第１のグループの一部であり、同時に、第２のグループの別のメンバがコードをエンティティにインジェクトしたため、第２のグループの一部である。
【００２８】
[0047]図５−Ａ〜図５−Ｂは、本発明のいくつかの実施形態による、エンティティマネージャ４４によって維持される様々な例示的なエンティティグループを示す。例証は、三角形を使用してグループ作成者エンティティを表し、円を使用してグループ継承者エンティティを表し、正方形を使用して非監視のエンティティを表す。実線矢印は親子関係を指示するのに対して、破線矢印はコードインジェクションを指示する。それぞれの矢印の方向は、個々の接続されたエンティティ間の関連性の方向を指示してよい。例えば、図５−Ａにおいて、エンティティＥ６はエンティティＥ５の子であるが、エンティティＥ７は、コードをエンティティＥ１４にインジェクトした。
【００２９】
[0048]グループ作成者は、グループに属してもよく、属さなくてもよい。いくつかの実施形態は、別個のグループを、それぞれのグループ作成者エンティティ（例えば、図５−ＡにおけるＧ１およびＧ６のようなグループ）に割り当てる。このようなグループは、１つのメンバ、すなわち、個々のグループ作成者エンティティだけを有してよい。いくつかの実施形態において、グループ作成者は、グループ作成者が新しいエンティティをスポーンする（ｓｐａｗｎ；作る、産む）とき、新しいグループを作成する。図５−Ａの例において、グループ作成者Ｅ１は、グループ作成者Ｅ１が子エンティティＥ５をスポーンするとき、グループＧ５を作成する。いくつかの実施形態において、グループ継承者エンティティが別のエンティティをスポーンするか、またはコードを別のエンティティにインジェクトするとき、他のエンティティは、グループ継承者エンティティと同じグループに含められる。図５−Ａの例において、エンティティＥ６は、エンティティＥ６の親エンティティＥ５と同じグループに含められる。同様に、エンティティＥ１４は、インジェクトされたコードをＥ７から受け取るのに応答して、エンティティＥ７と同じグループに含められる。
【００３０】
[0049]いくつかの実施形態において、エンティティのカテゴリは、一定のイベントに応答して、および／またはグループの一部になるのに応答して変更してよい。図５−Ａの例において、エンティティＥ１４は、初めはグループ作成者エンティティであった（グループＧ１１参照）。後に、インジェクトされたコードをグループＧ５のメンバから受け取るのに応答して、エンティティＥ１４は、グループＧ５の一部になり、グループ継承者として再びマークされた。同じ処置を、図５−ＢにおけるエンティティＥ１に適用してよい。
【００３１】
[0050]エンティティは、同時に複数のグループに属してよい。図５−Ｂの例において、エンティティＥ５（グループ継承者）は、同時にグループＧ３、Ｇ５、およびＧ６のメンバである。Ｅ５は、エンティティＥ３からのインジェクトされたコードの受け手であるので、Ｇ３の一部である。同様に、Ｅ５は、インジェクトされたコードをＥ６から受け取ったので、Ｅ５はＧ６の一部である。エンティティＥ５は、グループ作成者Ｅ２によってスポーンされた（ｓｐａｗｎｅｄ；作られた、産まれた）ので、エンティティＥ５は、グループＧ５のさらなる一部である。エンティティＥ５が子エンティティＥ９をスポーンするとき、Ｅ９は、グループＧ３とＧ５両方のメンバになる。同様に、図５−Ａにおいて、エンティティＥ１４（今はグループ継承者、上記の議論を参照）が新しいエンティティＥ１５をスポーンするとき、エンティティＥ１５は、グループＧ５とＧ１１両方に含まれてよい。
【００３２】
[0051]図６は、本発明のいくつかの実施形態による、現在のエンティティのリストを管理するために、エンティティマネージャ４４（図３）によって実施される例示的な一連のステップを示す。一連のステップ１５０〜１５２において、エンティティマネージャ４４は、エンティティのライフサイクルイベントをインターセプトし、このようなイベントが発生したとき、一連のステップ１５４〜１５５は、イベントおよび影響を受けたエンティティのタイプを識別する。いくつかの実施形態において、ライフサイクルイベントは、中でも、プロセス作成、コードインジェクション、およびプロセスの終了を含む。このようなイベントを検出することは、妥当なイベントインターセプタ、例えば、図４におけるインターセプタ２８ｃからイベント通知４０を受け取ることを含んでよい。エンティティマネージャ４４は、ＯＳ３０によって使用されるデータ構造を解析することによって、現在のライフサイクルイベント（例えば、スポーニングするケースにおける親および子プロセス）の影響を受けるエンティティを識別して、現在実行中のプロセスを管理する。Ｗｉｎｄｏｗｓ（登録商標）ＯＳでは、それぞれのプロセスは、エグゼクティブプロセスブロック（ＥＰＲＯＣＥＳＳ）として表わされ、これは、中でも、個々のプロセスのスレッドのそれぞれに対するハンドル、およびＯＳ３０が、個々のプロセスを複数の実行プロセスから識別することを可能にする一意のプロセスＩＤを含む。類似のプロセス／スレッド表現が、Ｌｉｎｕｘなどの他のＯＳに利用可能である。
【００３３】
[0052]ステップ１５６は、イベントが新しいエンティティ（例えば、新しいプロセス）の作成を含むかどうかを判定し、いいえのとき、エンティティマネージャ４４は、以下で説明されるステップ１７０に進む。イベントがエンティティ作成を含むとき、ステップ１５８において、マネージャ４４は、親エンティティがグループ継承者であるかどうかを判定し、いいえのとき、マネージャ４４は、ステップ１６４に進む。はいのとき、一連のステップ１６０〜１６２において、マネージャ４４は、子エンティティを親エンティティグループに追加し、子エンティティをグループ継承者としてマークしてよい。ステップ１６４において、マネージャ４４は、親エンティティがグループ作成者であるかどうかを判定する。はいのとき、一連のステップ１６６〜１６８において、マネージャ４４は、新しいグループを作成し、子エンティティを新たに作成されたグループに追加してよい。
【００３４】
[0053]いくつかの実施形態において、ステップ１７０は、検出されたライフサイクルイベントがコードのインジェクションを含むかどうかを判定し、いいえのとき、マネージャ４４は、ステップ１７４に進んでよい。一般的なルールとして、セキュリティアプリケーション３６は、疑わしい、場合によっては悪意ある活動を指示するものとして、それぞれのコードインジェクションイベントを解釈してよい。しかし、ＯＳのいくつかのエンティティは、非常に特殊な状況においては、コードを他のエンティティに合法的にインジェクトする。このような状況は通常、セキュリティコミュニティにおいて例外として知られ、偽陽性検出を偶発的に発生させないように、通例はアンチマルウェア処理から免除される。いくつかの実施形態において、ステップ１７１は、インジェクションが合法的であると信頼されてよいかどうかを、例えば、個々のインジェクションイベントの詳細を例外のリストにマッチさせることを試みることによってチェックする。個々のコードインジェクションが既知の種類の合法的なインジェクションとして認識されないとき、ステップ１７２において、マネージャ４４は、インジェクトされたコードを受け取るエンティティを、コードインジェクションを実施するエンティティのグループに追加してよい。いくつかの実施形態において、さらなるステップ１７３は、受け手のエンティティをグループ継承者としてマークする。
【００３５】
[0054]ステップ１７４において、マネージャ４４は、イベントがエンティティの終了を含むかどうかを判定し、いいえのとき、マネージャ４４は、ステップ１５０に戻る。例えば、プロセスは、個々のプロセスのスレッドすべてが実行を終えたときに終了する。いくつかの実施形態は、終了したエンティティをグループの一部として、例えば、終了したエンティティの子エンティティすべてが終了するまで、または個々のグループのすべてのメンバが終了するまで保持してよい。このような実施形態において、終了したエンティティは、機能停止したものとしてマークされてよい（ステップ１７６）。この方策は、逃避的なマルウェアの効果、例えば、悪意ある子をスポーンし、その後終了（ｑｕｉｔｓ）するエンティティの効果を、クライアントシステム１０から駆除すること（ｃｌｅａｎｉｎｇ；抹消すること、きれいにすること）を可能にすることがある。他の実施形態において、検出されたライフサイクルイベントがエンティティ終了を含むとき、マネージャ４４は、終了したエンティティをすべてのグループから除去してよい。
【００３６】
[0055]いくつかの実施形態において、ヒューリスティックエンジン４６（図３）は、本明細書で総称的にヒューリスティックと呼ばれるテストまたは手順のセットを実施して、クライアントシステム１０の内部のイベントのセットの発生がセキュリティ脅威を示すかどうか、例えば、マルウェアを示すかどうかを判定する。個々のヒューリスティックが、イベントのセットがマルウェアを示すと結論したとき、エンジン４６は、スコアリングアラート５０をスコアリングエンジン４８に送信してよく、エンジン４６は、クライアントシステム１０がマルウェアを含むかどうかをさらに判定してよい。ヒューリスティックエンジン４６は、イベントインターセプタ２８ａ〜２８ｃによって、イベントの発生について通知される。
【００３７】
[0056]いくつかのヒューリスティックは、イベントの発生が個別のエンティティが悪意あるものであることを示すかどうかをヒューリスティックが判定するという意味で、エンティティ関連であってよい。このようなヒューリスティックは、本明細書でエンティティヒューリスティックと呼ばれる。他のヒューリスティックは、イベントの発生が、全エンティティグループが悪意あるものであることを示すかどうかを、他のヒューリスティックが判定するという意味で、グループ関連であってよい（本明細書ではグループヒューリスティックと呼ばれる）。
【００３８】
[0057]それぞれのヒューリスティックは、別個のマルウェア検出方法を取り入れることがある。いくつかの実施形態において、それぞれのヒューリスティックは、悪意あるエージェントの特定のカテゴリ、ファミリ、タイプ、または変形物の存在を検出するように構成されることがある。いくつかの別個のヒューリスティックは、悪意あるエージェントの単一のカテゴリ、ファミリ、タイプ、または変形物を共同して検出することがある。いくつかの実施形態において、単一のヒューリスティックは、マルウェアのいくつかのカテゴリ、タイプ、ファミリ、または変形物を検出することに関与することがある。ヒューリスティックの特定の例は、クライアントシステム１０上の特定の一連のイベント（ビヘイビアの署名）の発生がないかチェックする。一連のすべてのイベントが、同じエンティティによって引き起こされる必要があるわけではない。しかし、このような一連のイベントの発生は、マルウェアを示すことがある。図７に示されたこのような１つの例において、悪意ある活動は、エンティティＥ１〜Ｅ４のグループ間に分割され、グループのそれぞれのメンバは、悪意ある活動のわずかな部分を行う。特定の一連のアクションＡ１〜Ａ６は、特定のマルウェアの攻撃を識別するビヘイビアの署名６８に達する。
【００３９】
[0058]図７は、ランサムウェアの攻撃と関連付けられた例示的なビヘイビアの署名を示す。ランサムウェアは、特定タイプのマルウェアであり、ユーザのコンピュータ上のファイルのセットを暗号化し、次に、個々のファイルを回復させるために、ユーザに支払いを求める。エンティティ作成は、ジグザグの矢印として図示される。それぞれの実線の垂直線は、それぞれのエンティティの存在履歴（ｌｉｆｅ  ｈｉｓｔｏｒｙ）を示す。例えば、エンティティＥ１は、エンティティＥ２をスポーンした後に機能停止する。エンティティＥ３は、インジェクトされたコードをＥ２から受け取るのに応答して、図示されたグループの一部になる。個々のエンティティのアクションには、署名６８の一部でないものもある。例えば、エンティティＥ３の、エンティティＥ４のスポーニングは、署名６８に含まれない。
【００４０】
[0059]図８Ａ〜図８Ｂは、このような例示的なビヘイビアの署名を示す。署名６８ａは、アクションＡ１〜Ａ６が正確な指示された順序で行われることを要求する。対照的に、例示的な署名６８ｂは、いくつかのアクション（Ａ３、Ａ４、およびＡ５）がＡ２とＡ６との間に起こる限り、いくつかのアクション（Ａ３、Ａ４、およびＡ５）が任意の順序で実施されることを可能にする。６８ｂなどの署名によって提供される柔軟性は、悪意あるエージェントの様々なバージョン、変形物、または全ファミリを検出することを可能にすることがある。いくつかの実施形態において、特定のビヘイビアの署名を使用するヒューリスティックは、個々のビヘイビアの署名によって指示される特定の一連のイベント（またはアクション）の発生を検出するように構成される。個々のヒューリスティックは、アクションを実施するエンティティの間の関連性をさらに照合してよい（例えば、すべての関与するエンティティが同じグループの一部であることを照合してよい）。いくつかの実施形態において、このような照合は暗黙的である。例えば、特定のビヘイビアの署名を実装するように構成されるグループのヒューリスティックは、選択されたエンティティグループに対して一度初期化されてよい。そして、個々のグループのヒューリスティックは、個々のグループのメンバがアクションを実施するときだけにトリガされてよい。グループのヒューリスティックのさらなる議論および例は、以下で与えられる。
【００４１】
[0060]いくつかの実施形態において、ヒューリスティックエンジン４６は、ヒューリスティックデータベース２６とインターフェースし、クライアントシステム１０のストレージデバイス２０上、またはクライアントシステム１０に通信連結されたコンピュータ可読媒体上に常駐してよい。データベース２６は、利用可能なヒューリスティックの集まり、およびヒューリスティックと、個々のヒューリスティックの使用をトリガするイベントのタイプとの間の関連付けの指標を含んでよい。このような関連付けは、特定のタイプのイベントの発生について通知されるのに応答して、ヒューリスティックエンジン４６がヒューリスティックを選択的に取り出すことを可能にする。データベース２６の例示的な実施形態は、ソフトウェアライブラリ、例えば、ＤＬＬである。
【００４２】
[0061]いくつかの実施形態において、ヒューリスティックは、バイトコード（クロスプラットフォームの命令セット）にコード化される。バイトコードの例は、Ｊａｖａ（登録商標）およびＬｕａ（登録商標）プログラミング言語を含む。それぞれのヒューリスティックは、コード化され、別々のバイトコードルーチンとして配信されてよい。このような実施形態において、ヒューリスティックエンジン４６は、バイトコードを一連のネイティブなプロセッサ命令に翻訳し、個々のシーケンスを実行する、バイトコード翻訳仮想マシン（例えば、インタープリタまたはジャストインタイムコンパイラ）を含んでよい。このような実施形態は、開発を容易にし、セキュリティアプリケーション３６の市場投入までの時間をかなり短くすることがある。
【００４３】
[0062]図９は、本発明のいくつかの実施形態による、ヒューリスティックエンジン４６によって実施される例示的な一連のステップを示す。一連のステップ２００〜２０２は、インターセプタ２８ａ〜２８ｃからのイベント通知を（がないか）リッスンする。イベント通知４０を受け取るのに応答して、ステップ２０４は、個々の通知されたイベントのイベントパラメータのタイプおよびセットを決定する。例示的なイベントタイプは、中でも、コードインジェクション、特定のシステムコール、ディスクファイルの作成、およびＨＴＴＰリクエストを含む。イベントパラメータは、通知されたイベントのそれぞれのタイプに固有であってよい。いくつかの例示的なイベントパラメータは、中でも、通知されたアクションを実施するプロセスまたはスレッドの識別子（例えば、プロセスＩＤ）、ファイル名、パス、メモリアドレス、およびプロセッサ命令のオペランドを含む。イベントパラメータは、インターセプタ２８ａ〜２８ｃによって決定され、イベント通知４０に含まれてよく、または通知４０を受け取るのに応答して、ヒューリスティックエンジン４６によって決定されてよい。通知されたイベントが、新しいディスクファイルを作成する試みである１つの例において、イベントパラメータは、ファイルの名前が作成されることを含んでよい。個々のファイル名は、イベントインターセプタによって決定され、ヒューリスティックエンジン４６に通知４０の一部として送信されてよい。いくつかの実施形態において、イベントパラメータは、個々のイベントが発生したか、または検出された瞬間を指示するタイムスタンプを含む。タイムスタンプは、ヒューリスティックエンジン４６によってさらに使用され、一定のイベントが順番に発生するかどうかを判定してよい（例えば、ビヘイビアの署名に関連する上記の説明を参照）。
【００４４】
[0063]一連のステップ２０６〜２０８において、エンジン４６は、ヒューリスティックデータベース２６にアクセスし、通知されたイベントのタイプおよびパラメータに従って、ヒューリスティックのセットを選択的に取り出してよい。さらなるステップ２０９は、選択されたヒューリスティックを適用し、通知されたイベントがマルウェアを示すかどうかを判定する。個々のヒューリスティックが悪意の疑いを指示するとき、ステップ２１２において、エンジン４６は、スコアリングアラート５０をスコアリングエンジン４８に送る。スコアリングアラート５０は、個々のヒューリスティックの識別子を含んでよく、疑わしいエンティティおよび／またはグループの識別子をさらに含んでよい。
【００４５】
[0064]ヒューリスティックエンジン４６のいくつかの実施形態は、中でも、ＬＯＣＡＬ、ＳＴＡＴＩＣ、ＥＮＴＩＴＹ、ＧＲＯＵＰ、およびＧＬＯＢＡＬなどの、いくつかの別個のタイプ変数で動作する。ＬＯＣＡＬタイプ変数は、ヒューリスティックのそれぞれのインスタンスに対して一意であってよい。ＳＴＡＴＩＣタイプ変数は、変数の値が同じヒューリスティックの複数のインスタンスにわたって共有されてよいという意味で、それぞれのヒューリスティックに固有であってよい。ＧＬＯＢＡＬタイプ変数は、すべてのヒューリスティックおよびすべてのヒューリスティックのインスタンスにわたって共有されてよい。ＥＮＴＩＴＹタイプ変数は、＜ヒューリスティック、エンティティ＞のタプルに一意に付加され、同じヒューリスティックの複数のインスタンスにわたって共有されてよいが、エンティティごとに相違する。ＥＮＴＩＴＹタイプ変数は、あらゆる監視されるエンティティに対して一度初期化され、個々のエンティティの終了時に消去されてよい。ＧＲＯＵＰタイプ変数は、＜ヒューリスティック、グループ＞のタプルに一意に付加され、同じヒューリスティックの複数のインスタンスにわたって共有されてよいが、エンティティグループごとに相違する。ＧＲＯＵＰタイプ変数は、エンティティのあらゆるグループに対して一度初期化されてよい。このような実施形態は、一定のヒューリスティックが、例えば、悪意ある活動が複数のエンティティにわたって分散される複雑なビヘイビアの署名がないかチェックすることを可能にする。
【００４６】
[0065]いくつかの実施形態において、スコアリングエンジン４８は、クライアントシステム１０上で実行する複数の監視されるエンティティおよび／またはエンティティのグループに対して決定された複数の悪意度のスコアを維持し、更新する。スコアリングエンジン４８は、クライアントシステム１０が悪意あるソフトウェアを含むかどうかを、個々のスコアに従ってさらに判定してよい。いくつかの実施形態において、スコアリングエンジン４８は、特定のイベントの発生が悪意を示すことをエンジン４６が判定すると、ヒューリスティックエンジン４６からスコアリングアラート５０を受け取る。マルウェアを検出するのに応答して、スコアリングエンジン４８は、悪意指標５８をクリーンアップモジュール５６にさらに送ってよい。
【００４７】
[0066]図１０−Ａは、複数の例示的なエンティティ・スコアリング・オブジェクト（ＥＳＯ）７４ａ〜７４ｃを示し、それぞれのＥＳＯは、本発明のいくつかの実施形態による、個々のソフトウェアエンティティ７０ａ〜７０ｃに対してスコアリングエンジン４８によって決定される。それぞれのＥＳＯは、複数のデータフィールドを含んでよく、複数のデータフィールドのうちのいくつかが図１０−Ａに示される。このようなフィールドは、一意のエンティティ識別子ＥＩＤ７６ａ、複数の現在のエンティティ査定スコア７６ｂ、および現在のエンティティ総計スコア７６ｄを含む。いくつかの実施形態において、エンティティ査定スコア７６ｂは、ヒューリスティックエンジン４６から受け取られたスコアリングアラート５０に従って、エンジン４８によって決定される。それぞれのスコア７６ｂは、別個の尺度に従って決定されてよい。例えば、スコア７６ｂは、ヒューリスティックのセット７６ｃと１対１の対応関係を有してよく、その結果、それぞれのエンティティ査定スコアは、個々のヒューリスティックに起因すると考えられる。このような１つの例では、特定のヒューリスティックＨｋは、監視されるエンティティがインターネットなどのコンピュータネットワークからファイルをダウンロードするかどうかを判定することを含む。そして、個々のスコアＳｋは、個々の査定されたエンティティがダウンロードを試みるときだけ付与されるか、または増加される。いくつかの実施形態において、エンティティ総計スコア７６ｄは、現在のエンティティ査定スコア７６ｂの合計として計算される（以下のさらなる詳細を参照）。
【００４８】
[0067]いくつかの実施形態において、それぞれのＥＳＯは、個々のエンティティと、個々のエンティティが属するグループとの間の関連付けの指標をさらに含んでよい。例えば、図１０−Ａの例において、項目７６ｆは、エンティティグループのこのようなリストを示す。代替実施形態において、スコアリングエンジン４８は、メンバとして一定のエンティティを有するグループのリストを、エンティティマネージャ４４から動的に取り出してよい。
【００４９】
[0068]スコアリングエンジン４８のいくつかの実施形態は、それぞれのエンティティグループと関連付けられたスコアのセットをさらに維持する。図１０−Ｂは、複数の例示的なグループ・スコアリング・オブジェクト（ＧＳＯ）７５ａ〜７５ｃを示し、それぞれのＧＳＯは、ソフトウェアエンティティの別個のグループに対して決定される。それぞれの図示されたＧＳＯは、一意のグループ識別子ＧＩＤ７７ａ、複数の現在のグループ査定スコア７７ｂ、および現在のグループ総計スコア７７ｄを含む（上付き文字Ｇは、個々の項目が、単一のエンティティではなくエンティティのグループと関連付けられることを指示する）。いくつかの実施形態において、それぞれのグループ査定スコアは、別個の尺度（例えば、別個のヒューリスティック）に従って付与され、および／または増やされる。グループ査定スコアをセットし、および／または増やす例示的なヒューリスティックは、図７に示されるようなビヘイビアの署名を実装する。この例を使用して、エンティティＥ１、Ｅ２、およびＥ３を含むグループに対応するグループ査定スコアは、エンティティＥ１、Ｅ２、およびＥ３がアクションＡ１〜Ａ６を図示された順序で実施するときに増やされてよい。それぞれのグループ査定スコアに対応するグループのヒューリスティックは、項目７７ｃとして図１０−Ｂに示される。
【００５０】
[0069]いくつかの実施形態において、それぞれのＧＳＯは、個々のグループとそのメンバのエンティティとの間の関連付けの指標をさらに含んでよい。図１０−Ｂの例において、エンティティＥ１（Ｇ１）、Ｅ２（Ｇ１）、他は、グループＧ１のメンバである。代替として、スコアリングエンジン４８は、エンティティマネージャ４４にグループのメンバシップデータをいつでもリクエストしてよい。いくつかの実施形態において、グループ総計スコア７７ｄは、以下にさらに詳しく述べるように、グループ査定スコア７７ｂを合計することによって計算される。
【００５１】
[0070]スコアリングエンジン４８のいくつかの実施形態は、個々のスコアに対応するヒューリスティックに固有の量だけ、それぞれのエンティティおよび／またはグループ査定スコアを増加させる。図１１−Ａ〜図１１−Ｂは、このようなスコア増加量を示し、エンティティスコアおよびグループスコアにそれぞれ対応する。スコアリングエンジン４８が、特定のヒューリスティックを実行するのに応答して生成されたスコアリングアラート５０を受け取るとき、個々のヒューリスティックに対応するエンティティおよび／またはグループ査定スコアは、個々の増加量の値だけ増加されてよい。いくつかのエンティティのヒューリスティックは、グループのヒューリスティックであってもよく、例えば、ヒューリスティックＨ１は、グループのヒューリスティックＨ１（Ｇ）と一致してよい。いくつかの実施形態において、このようなヒューリスティックによって生成されたスコアリングアラートは、個々のエンティティのエンティティ査定スコアおよび／または個々のエンティティをメンバとして有するグループのグループ査定スコアを更新する結果になってよい。
【００５２】
[0071]図１２−Ａは、本発明のいくつかの実施形態による、スコアリングエンジン４８（図３）によって実施される例示的な一連のステップを示す。一連のステップ３００〜３０２は、ヒューリスティックエンジン４６からのスコアリングアラートをリッスンする。いくつかの実施形態において、スコアリングアラート５０は、個々のアラートを生成したヒューリスティックの指標、ならびに個々のアラートが生成されたエンティティおよび／またはエンティティのグループの指標を含む。スコアリングアラート５０を受け取るのに応答して、ステップ３０４は、アラート５０がエンティティのヒューリスティックによって生成されたかどうかを判定する（すなわち、ヒューリスティックは、イベントが、個別のエンティティが悪意あるものであることを示すかどうかを判定するように構成される）。いいえのとき、スコアリングエンジン４８はステップ３１０に進む。はいのとき、ステップ３０６において、スコアリングエンジン４８は、アラート５０に従って個々のエンティティを識別し、アラートを生成したヒューリスティックに従って個々のエンティティの査定スコアを更新する。例えば、アラート５０がヒューリスティックＨｋによって生成されたとき、スコアリングエンジン４８は、ヒューリスティックＨｋに対応するスコアＳｋを妥当な増加量だけ増加させてよい（例えば、図１１−Ａを参照）。さらなるステップ３０８は、個々のエンティティの総計スコアを、例えば、個々のエンティティのすべてのエンティティ査定スコアを合計することによって計算する。
【００５３】
[0072]ステップ３１０は、スコアリングアラート５０がグループのヒューリスティックによって生成されたかどうかを判定する（すなわち、ヒューリスティックは、イベントが、エンティティのグループが悪意あるものであることを示すかどうかを判定するように構成される）。いいえのとき、スコアリングエンジン４８はステップ３１６に進む。はいのとき、ステップ３１２において、スコアリングエンジン４８は、アラート５０に従ってグループのセットを識別し、アラートを生成したヒューリスティックに従って個々のグループのグループ査定スコアを更新する。ステップ３１４において、エンジン４８は、個々のグループの総計スコアを、例えば、グループ査定スコアの合計として計算する。
【００５４】
[0073]ステップ３１６において、スコアリングエンジン４８は、個々のエンティティおよび／またはグループの総計スコアが所定の閾値を超過するかどうかを判定する。いいえのとき、エンジン４８はステップ３００に戻る。はいのとき、エンジン４８は、悪意指標５８をクリーンアップモジュール５６に送る。
【００５５】
[0074]図１２−Ｂは、スコアリングエンジン４８によって実施される代替の一連のステップを示す。アラート５０を受け取るのに応答して、ステップ３２６は、エンティティおよび個々のアラートを生成するヒューリスティックを識別する。次に、査定および総計スコアは、アラート５０に従って個々のエンティティに対して決定される。ステップ３３２において、スコアリングエンジン４８は、個々のエンティティをメンバとして有する少なくとも１つのグループを識別する。ステップ３３６は、次に、個々のグループの総計スコアを増やす。エンティティまたはグループのどちらか（または両方）の総計スコアが所定の閾値を超過するとき、ステップ３４０は、悪意指標５８をクリーンアップモジュール５６に送る。図１２−Ｂに示された例示的な実施形態は、個々のグループのメンバがマルウェアを示すアクションを実施するたびに、グループスコアを増やしてよい。したがって、悪意ある活動がグループのいくつかのメンバの間で分割されるとき、およびそれぞれの個別のメンバに対応する総計スコアが悪意を指示するのに十分でないときでさえ、グループ全体のスコアは、マルウェア検出の閾値を超過することがある。
【００５６】
[0075]図１２−Ｃは、本発明のいくつかの実施形態による、スコアリングエンジン４８によって実施されるさらに別の例示的な代替の一連のステップを示す。図１２−Ａ〜図１２−Ｂと対比して、図１２−Ｃは、グループスコアを計算せず、その代わり排他的にエンティティスコアに依存する実施形態の動作を説明することがある。しかし、このような実施形態は、グループのヒューリスティックを使用することによって逃避的なマルウェアをさらに検出することがある。図７におけるビヘイビアの署名６８の例を使用して、一連のイベントＡ１〜Ａ６の発生を検出するヒューリスティックは、エンティティＥ４がアクションＡ６を実施したことを検出するのに応答して、スコアリングアラート５０を生成してよく、したがってビヘイビアの署名６８によって指示されるマルウェアを示す一連のアクションを完了させる。このようなアラートを受け取るのに応答して、ステップ３４８は、エンティティＥ４のエンティティ査定スコアを増やしてよく、スコアは、個々のヒューリスティックに対応する。個々のヒューリスティックに関連付けられた増加量が十分大きくなるように選ばれる場合、個々のエンティティ査定スコアの増加は、エンティティＥ４に対して計算された総計スコアがマルウェア検出の閾値を超過するように、十分大きくてよい。
【００５７】
[0076]図１３は、本発明のいくつかの実施形態による、クリーンアップモジュール５６（図３）によって実施される例示的な一連のステップを示す。ステップ４０２において、モジュール５６は、悪意指標５８をスコアリングエンジン４８から受け取る。いくつかの実施形態において、悪意指標５８は、疑わしいエンティティの指標、および／または疑わしいエンティティグループの指標、例えば、総計スコアがマルウェア検出の閾値を超過したエンティティおよび／またはグループの指標を含む（上記を参照）。ステップ４０４において、モジュール５６は、スコアリングエンジン４８が悪意指標５８を送ることをトリガした疑わしいエンティティを識別する。
【００５８】
[0077]いくつかの実施形態において、ステップ４０６は、個々の疑わしいエンティティが単一のグループのメンバであるかどうかをチェックする。いいえのとき、モジュール５６は、ステップ４１０に進む。はいのとき、ステップ４０８において、クリーンアップモジュール５６は、疑わしいエンティティのグループ全体を駆除する。いくつかの実施形態において、エンティティグループを駆除することは、個々のグループのあらゆるメンバのエンティティを駆除することを含む。クリーンアップは、コンピュータセキュリティの当技術分野で知られた任意の方法を伴ってよい。いくつかの実施形態において、エンティティを駆除することは、個々のエンティティの実行を一時中断することまたは終了すること含む。エンティティを駆除することは、個々のエンティティのコードを含むディスクファイルを削除することをさらに含んでよい。エンティティを駆除することは、個々のエンティティの存続期間中に個々のエンティティによって実施された変更のセットを元に戻すことまたはロールバックすることをさらに含んでよい（このような変更は、ＯＳのレジストリへの変更、ファイルシステムへの変更、他を含んでよい）。エンティティを駆除することは、追加の、別々のマルウェアスキャナを使用して個々のエンティティを分析することを含んでよい。いくつかの実施形態において、クリーンアップは、クライアントシステム１０のユーザおよび／またはシステムアドミニストレータに警告することをさらに含む。
【００５９】
[0078]駆除の１つの例において、悪意ある活動がコードインジェクションイベントに至るまで追跡されたとき、クリーンアップモジュール５６は、受け手のエンティティを終了し、個々のインジェクションイベントの後で発生したメモリおよび／またはファイルシステムへのすべての変更をロールバックする。可能であれば、クリーンアップモジュール５６は、個々のインジェクションイベントの結果として生み出された変更だけをロールバックしてよい。駆除の別の例において、悪意あるエンティティがクリーンなエンティティ（ｃｍｄ．ｅｘｅ、ｒｅｇｅｄｉｔ．ｅｘｅ、合法的なブラウザのプロセス、他など）を使用して悪意ある攻撃の一部を行うとき、クリーンアップモジュール５６は、個々のクリーンなエンティティを終了するが、そのエンティティの実行可能ファイルは削除しなくてよい。
【００６０】
[0079]いくつかの実施形態において、疑わしいエンティティが複数のエンティティグループに属するとき、ステップ４１０は、個々のグループのどれが悪意あるものであり得るかを識別することを試みる。ステップ４１０は、どのように疑わしいエンティティが、（例えば、コードインジェクションに対するエンティティ作成に応答して）それぞれの個々のグループのメンバになったかを判定することを含んでよい。ステップ４１０は、スコアリングエンジンに、クライアントシステム１０が攻撃されていたという結論を出させたスコアリングアラートを、ヒューリスティックがトリガすることをさらに決定してよい。マルウェア検出をトリガするヒューリスティックを識別することは、個々のスコアリングアラートをトリガした、疑わしいエンティティが実施していたアクションを決定することを可能にすることがある。ステップ４１０を行うために、クリーンアップモジュール５８は、個々のスコアリングアラートがトリガされたときに、疑わしいエンティティのどのコンポーネントが実行していたかをさらに判定してよい。
【００６１】
[0080]１つの例示的なシナリオにおいて、疑わしいエンティティは、エンティティ作成を介して第１のグループのメンバになり、コードインジェクションを介して第２のグループのメンバになった。ステップ４１０は、疑わしいエンティティの主な実行可能なモジュールからのコードが実行されていた間に、マルウェア検出を引き起こすスコアリングアラートがトリガされたことを判定した。その場合、クリーンアップモジュール５８は、第１のグループが悪意あるものであるという結論を出してよい。対照的に、スコアリングアラートがトリガされたそのときに、疑わしいエンティティがインジェクトされたコードを実行していた場合には、クリーンアップモジュール５８は、第２のグループが悪意あるものであるという結論を出した可能性がある。
【００６２】
[0081]ステップ４１２において、モジュール５６は、悪意あるグループの識別が成功だったかどうかを判定する。はいのとき、ステップ４１４において、モジュール５６は、識別された悪意あるグループを駆除する。ステップ４１０が、悪意あるエンティティのグループを識別できなかったとき、ステップ４１６において、モジュール５６は、疑わしいエンティティだけを駆除する。ステップ４１６は、このように、ユーザにとってデータ喪失につながることがある、誤った陽性のマルウェアの識別、すなわち、良性のエンティティを悪意のあるものとして誤って識別することを防ぐことがある。
【００６３】
[0082]上記で説明された例示的なシステムおよび方法は、ウイルス、トロイの木馬、およびスパイウェアなどの悪意あるソフトウェアからコンピュータシステムを保護することを可能にする。本発明のいくつかの実施形態において、セキュリティアプリケーションは、クライアントシステム上で現在実行するエンティティ（例えば、プロセス）のセットのビヘイビアを監視する。セキュリティアプリケーションは、イベントインターセプタのセットによって、クライアントシステムの内部の様々なイベントの発生について通知される。このような例示的なイベントは、中でも、プロセスまたはスレッドの作成、コードインジェクション、システムコール、新しいディスクファイルを作成する試み、既存のディスクファイルへ書き込む試み、ＯＳのレジストリのキーを編集する試み、および特定のメモリ区画に書き込む試みを含んでよい。通知されたイベントのうちのいくつかはマルウェアを示すことがあり、他のイベントは、それ自体はセキュリティ脅威を示さないが、他のイベントと一緒に発生するときに潜在的な脅威の兆候を示すことがある。
【００６４】
[0083]イベント通知を受け取るのに応答して、セキュリティアプリケーションは、検出手順のセット（例えば、ヒューリスティック）を実行して、個々のイベントがマルウェアを示すかどうかを判定してよい。イベントがマルウェアを示すことを判定するのに応答して、ヒューリスティックは、マルウェアを示すスコアを増大させてよい。スコアリングエンジンは、クライアントシステムが攻撃されているかどうかを、増やされたマルウェアを示すスコアに従ってさらに判定してよい。クリーンアップモジュールは、悪意があるとみなされるエンティティまたはエンティティのグループに対して、アンチマルウェアアクションをさらにとってよい。
【００６５】
[0084]従来のアンチマルウェアシステムは、典型的には、スコアをそれぞれの個別のエンティティに関連付け、個々のエンティティがマルウェアを示すような形で振る舞う（ｂｅｈａｖｅ）ときはいつでもこのようなスコアを増やす。このような従来のシステムは、典型的には、複数のエンティティ間で悪意ある活動を分割する逃避的なマルウェアを検出することに失敗する。単独で見たときにそれぞれの関与するエンティティのビヘイビアがマルウェアを示さない場合、このようなビヘイビアは、個別のスコアに基づいた検出につながることはない。対照的に、本発明のいくつかの実施形態は、複数の関連したエンティティにわたってビヘイビアを相関させることによって、逃避的なマルウェアに明示的に対処する。
【００６６】
[0085]いくつかの実施形態において、セキュリティアプリケーションは、監視されるエンティティを複数のエンティティグループに分割し、グループのすべてのメンバは、親子関係またはコードインジェクションによって関係付けられる。エンティティは、同時に複数のエンティティグループに属してよい。セキュリティアプリケーションは、スコアのセットをそれぞれのエンティティグループとさらに関連付けてよい。このようなグループスコアは、個々のグループのメンバが一定のアクションを実施するとき、増やされてよい。このように、個別のメンバによって実施されるアクションが、それ自体はマルウェアを示さないにも関わらず、グループスコアは、集合的な悪意あるビヘイビアを捕え、検出をトリガすることができる。
【００６７】
[0086]本発明のいくつかの実施形態において、実行可能なエンティティは、少なくとも２つの主要なカテゴリ、すなわち、グループ作成者およびグループ継承者に分割される。グループ作成者のカテゴリは、オペレーティングシステムのプロセス、ファイルマネージャ、およびブラウザなどのエンティティを含んでよく、これらは、しばしば、合法的な手法でエンティティ作成などの活動を実施することがある。いくつかの実施形態において、グループ作成者エンティティが子エンティティをスポーンするとき、グループ作成者エンティティは、新しいグループを作成する。グループ継承者のカテゴリは、ユーザプロセスおよび未知のプロセスを含んでよい。グループ継承者エンティティは、グループ継承者エンティティの親エンティティのグループのメンバになることがあり、またはグループ継承者エンティティの親エンティティがグループ作成者であるとき、グループの第１のエンティティであってよい。グループ作成者および継承者エンティティに対する別個のグループのメンバシップルールを有することは、本発明のいくつかの実施形態が、別個のマルウェア検出の方策を使用して、２つのカテゴリのエンティティを監視することを可能にする。
【００６８】
[0087]本発明のいくつかの実施形態による、逃避的なマルウェアに対処する別の手法は、個別のエンティティによって実施される孤立したアクションとは対照的に、関連したエンティティのグループによって実施される、アクションの特定のシーケンスまたは組合せを検出するマルウェア検出のヒューリスティックを使用すること含む。個々のヒューリスティックは、個々のシーケンスまたは組合せのすべてのアクションが実施されたときだけ、スコアの増加をトリガしてよい。
【００６９】
[0088]従来のコンピュータセキュリティシステムは、個別の悪意あるエンティティを検出することがあり、他のエンティティから孤立して、それぞれのこのようなエンティティに対してアンチマルウェアアクションをとることがある。検出された悪意あるエンティティが、悪意あるエンティティの協調されたネットワークのわずかな部分であるとき、単一のエンティティを無能力化することは、さらに、クライアントシステムをマルウェアに対して脆弱な状態に、またはマルウェアで感染された状態にさえすることがある。対照的に、悪意あるエンティティのグループを検出するのに応答して、本発明のいくつかの実施形態は、悪意あるエンティティの全グループをクリーンアップするか、またはその他の形で無能力化してよい。疑わしいエンティティが複数のエンティティグループの一部であるが、セキュリティアプリケーションが、個々のグループのどれが悪意ある活動を行っているかを判定できないとき、本発明のいくつかの実施形態は、個々の疑わしいエンティティに対してのみ、アンチマルウェアアクションをとり、偽陽性のマルウェアの識別を防ぐ。
【００７０】
[0089]上記の実施形態は、本発明の範囲を逸脱することなく、多くの方式で変えられてよいことが当業者には明らかであろう。それに応じて、本発明の範囲は、以下の特許請求の範囲およびこれらの法的均等物によって決定されるべきである。
【図１】
2018524756.tif 000003
【図２】
2018524756.tif 000004
【図３】
2018524756.tif 000005
【図４】
2018524756.tif 000006
【図５−Ａ】
2018524756.tif 000007
【図５−Ｂ】
2018524756.tif 000008
【図６】
2018524756.tif 000009
【図７】
2018524756.tif 000010
【図８−Ａ】
2018524756.tif 000011
【図８−Ｂ】
2018524756.tif 000012
【図９】
2018524756.tif 000013
【図１０−Ａ】
2018524756.tif 000014
【図１０−Ｂ】
2018524756.tif 000015
【図１１−Ａ】
2018524756.tif 000016
【図１１−Ｂ】
2018524756.tif 000017
【図１２−Ａ】
2018524756.tif 000018
【図１２−Ｂ】
2018524756.tif 000019
【図１２−Ｃ】
2018524756.tif 000020
【図１３】
2018524756.tif 000021
【国際調査報告】
2018524756.tif 000022
2018524756.tif 000023
2018524756.tif 000024