(57)【特許請求の範囲】
【請求項１】
コンピュータオブジェクトをマルウェアとして分類する方法であって、
前記方法は、ベースコンピュータにおいて、コンピュータオブジェクト又は類似のコンピュータオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々から前記オブジェクトに関するデータを受信することを含んでおり、
前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び／又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、
前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている方法。
【請求項２】
少なくとも一つの脅威サーバは、それが付随する複数のリモートコンピュータから受信する情報を保持するための少なくとも一つのデータベースを備え、
前記方法は、
前記脅威サーバにおいて、少なくとも一つのデータベースに前記データを格納し、
周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去する
ことを含む請求項１に記載の方法。
【請求項３】
タイムスタンプが記録されたデータのブロックの全てを中央サーバにおいて受信し且つこれらをそのデータベースに組み込むことで、バックアップ中央サーバを構築することを含む請求項２に記載の方法。
【請求項４】
一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように、前記一定期間は中央サーバをオフラインにし、
前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、
前記中央サーバを再度オンラインに戻す
ことを含む請求項２又は３に記載の方法。
【請求項５】
中央サーバの前記データベースを、過去のある時点の状態に戻し、
タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、
前記中央サーバを再度オンラインに戻す
ことを含む請求項２又は３に記載の方法。
【請求項６】
前記中央サーバは、
ａ）オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、
ｂ）オブジェクトの行動パターン、及び
ｃ）どのリモートコンピュータにどのオブジェクトが存在しているかについての情報
のうちのいずれか一つ以上を含むデータベースを有している請求項２から５のいずれか一項に記載の方法。
【請求項７】
前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている請求項１から６のいずれか一項に記載の方法。
【請求項８】
脅威サーバにおいて、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持し、
オブジェクトが以前に確認されていない場合には、前記オブジェクトについてのデータを中央サーバに送信し、
オブジェクトが以前に確認されている場合には、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させる
ことを含む請求項１から７のいずれか一項に記載の方法。
【請求項９】
コンピュータオブジェクトをマルウェアとして分類する装置であって、
前記装置は、コンピュータオブジェクト又は類似のコンピュータオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々から前記オブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、
前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び／又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、
前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数のサーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている装置。
【請求項１０】
少なくとも一つのデータベースを備えており、
前記複数の脅威サーバは、リモートコンピュータから受信する前記データ情報を前記データベースに格納するように構成されており、
前記装置は、ストレージを備えており、
前記複数の脅威サーバは、周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去するように構成されている請求項９に記載の装置。
【請求項１１】
データベースを有するバックアップ中央サーバを備えており、
前記バックアップ中央サーバの前記データベースは、タイムスタンプが記録されたデータのブロックの全てを前記バックアップ中央サーバにおいて前記ストレージから受信し且つこれらを前記データベースに組み込むことで入力される請求項１０に記載の装置。
【請求項１２】
一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように前記一定期間は中央サーバがオフラインになる場合には、前記中央サーバは、前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、そのデータベースを更新するように構成されている請求項１０又は１１に記載の装置。
【請求項１３】
中央サーバの前記データベースが過去のある時点の状態に戻される場合には、前記中央サーバは、タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、そのデータベースを更新するように構成されている請求項１０又は１１に記載の装置。
【請求項１４】
前記中央サーバは、
ａ）オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、
ｂ）オブジェクトの行動パターン、及び
ｃ）どのリモートコンピュータにどのオブジェクトが存在しているかについての情報
のうちのいずれか一つ以上を含むデータベースを有している請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている請求項９から１４のいずれか一項に記載の装置。
【請求項１６】
脅威サーバは、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持するように構成されており、
オブジェクトが以前に確認されていない場合には、前記脅威サーバは、前記オブジェクトについてのデータを中央サーバに送信するように構成されており、
オブジェクトが以前に確認されている場合には、前記脅威サーバは、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させるように構成されている請求項９から１４のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般的には、マルウェアに対処するための方法及び装置に関する。
【背景技術】
【０００２】
ある面においては、本出願は、リモートコンピュータを複数のサーバのうちの一つに接続するための方法及びコンピュータプログラム、マルウェアからの保護を提供するための方法及びコンピュータプログラム、コンピュータオブジェクトをマルウェアとして分類するための方法及び装置、コンピュータ上でセキュリティプログラムを実行するための方法、並びに、マルウェアに対抗するためのコンピュータプログラムに関する。
【０００３】
「マルウェア」という文言は、ここでは、一般的には、悪意のあるコードである又は悪意のあるコードを含む実行可能なあらゆるコンピュータファイル（より一般的には、オブジェクト）を言及するために用いられている。従って、「マルウェア」という文言は、ウイルスや、トロイの木馬や、ワームや、スパイウェアや、アドウェア等を含んでいる。
【０００４】
ウイルススキャンソフトウェアのような典型的なアンチマルウェア製品は、マルウェアの存在を示すものとして知られているシグナチャーをオブジェクトの中から探すために、オブジェクト若しくはオブジェクトに適用されるアルゴリズムの結果又はその一部をスキャンする。一般的に、マルウェアに対処するための方法によれば、例えばインターネットを介して新しいタイプのマルウェアがリリースされた時点で初めて、当該新しいタイプのマルウェアが検出される。新しい種目のマルウェアが一度検出されると、その分野のサービスプロバイダは、当該新しい種目のマルウェアに対処しようと試みるシグナチャーを生成する。これらのシグナチャーは、アップデート情報として、サービスプロバイダのアンチマルウェアプログラムにリリースされる。発見的方法（ヒューリスティクな方法）もまた採用されてきた。
【０００５】
これらのシステムは、既知の悪意のあるコードから保護するために使用されると効果がある。しかしながら、これらのシステムは、生成される及び／又は更新されるシグナチャーファイルに依存しているがゆえに、新たに誕生した若しくはリリースされた新しい種類のマルウェアとそのようなマルウェアを識別するために生成される若しくは更新され且つユーザに提供されるシグナチャーとの間に遅れが生ずることは避けられない。従って、ユーザは、１週間又はそれ以上の期間に及ぶかもしれない一定期間は、新しいマルウェアからのリスクにさらされることになる。
【０００６】
更に近年では、マルウェア／ウイルスに対抗するためのいわゆるクラウドベースの技術が開発されている。この技術では、クラウド上に、つまりリモートコンピュータが接続する中央サーバ上に格納されたシグナチャーによる保護が提供される。従って、リモートコンピュータは、新しいマルウェアオブジェクトが識別され且つそのシグナチャーが中央サーバに格納されると同時に保護される。その結果、最新のシグナチャーがリモートコンピュータにダウンロードされる又はインストールされることを待つことなく、リモートコンピュータは、新しいマルウェアオブジェクトから保護される。この技術はまた、リモートコンピュータから中央サーバへと処理負荷をシフトさせることができるという利点を有している。しかしながら、この技術は、オブジェクトについてのシグナチャー情報のみを又はとても基本的な情報のみを中央サーバに送信することによって制限される。従って、未知のオブジェクトがマルウェアであるか否かを解析するために、通常はそのオブジェクトのコピーが中央サーバへと送信される。中央サーバでは、人である解析者によって、オブジェクトが調査される。これは、時間がかかると共に骨の折れるタスクであり、マルウェアが安全であるか又は安全でないかを分類する際に無視できない遅延を引き起こしてしまう。また、コミュニティーにおいて日々発見される新しいオブジェクトの膨大な量を考慮すれば、熟練した解析者に新しいオブジェクトの夫々を完全に調査させることは現実的ではない。従って、悪意のあるオブジェクトは、かなりの期間に渡って調査及び検出の手から逃れるかもしれず、その間、コミュニティー内で悪意のある活動を実行できてしまう。
【０００７】
出願人は、以下で、２００７年１月１８日に公開された、「マルウェアに対処するための方法及び装置」という発明の名称を有している出願人の過去の出願（米国特許出願公開第２００７／００１６９５３号明細書）に言及する。当該出願の全ては、参照によって本願に援用される。この出願には、マルウェアに対抗するための新規で且つ優れたクラウドベースの方策が開示されている。具体的には、クラウドベースのアプローチの概要は、中央サーバが、オブジェクト及びコミュニティー内のあらゆる場所に位置するリモートコンピュータ上でのオブジェクトの行動パターンに関する情報を受信し、オブジェクト及びコミュニティー内のあらゆる場所で見られるオブジェクトの行動パターンの図を作り上げるというものである。この情報は、新たに発見されたオブジェクトがマルウェアであるか否かを判定するための様々な発見的方法及びルールを開発し且つ採用する際に、コミュニティーの全域に渡ってこのデータと比較するために用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
マルウェアに対抗するためのこのアプローチは、中央サーバにおける膨大な量のデータのやり取り、格納及び管理を伴うが、それは中央サーバ自身において困難な問題となる。コミュニティー内で発見されたオブジェクトについて集められる膨大な量のデータ及び検出を逃れるためのマルウェアの作者による絶え間ない進化の方策を考慮すれば、より正確に且つより効率的にマルウェアを検出するための新しい手法を開発することもまた困難である。人としてのマルウェア解析者の専門的なスキル及び時間を最大限活用するためには、データを解析するプロセスを改善することもまた望まれる。
【０００９】
マルウェアはまた、コンピュータにインストールされているセキュリティプログラムの動作を妨げることで、次第に自己防衛が上手になってきている。これは、セキュリティソフトウェアが取り組まなければならない他の問題である。
【００１０】
本開示は、以下の開示を考慮すれば明らかになるであろうが、これらの問題及び他の問題を解決するために、米国特許出願公開第２００７／００１６９５３号明細書に開示された技術を基礎としている。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信することを含んでおり、前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び／又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている方法が提供される。
【００１２】
好ましい態様では、脅威サーバは、リモートコンピュータから送信される当該オブジェクトの詳細情報に基づいて、オブジェクトが無害であるか又は悪意があるか否かについてのリアルタイム判定を行う。各脅威サーバは、ベースコンピュータに知られているオブジェクトの全てのエントリー及びオブジェクトが安全か若しくは安全でないかの分類結果を含むデータベースに接続されている。データベースは、リモートコンピュータから受信する情報に基づいて未知のオブジェクトが安全か又は安全でないかを決定するためのルールを格納している。中央サーバは、全てのオブジェクトについての受信されたデータの全てのマスターデータベースを提供する。これは、マルウェアの脅威を調査する際に、人としての解析者又はコンピュータ解析によって使用される。
【００１３】
好ましくは、少なくとも一つの脅威サーバは、それが付随する複数のリモートコンピュータから受信する情報を保持するための少なくとも一つのデータベースを備え、前記方法は、前記脅威サーバにおいて、少なくとも一つのデータベースに前記データを格納し、周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去することを含む。前記周期は、予め決定されていてもよいし、動的に設定されてもよい。このデータ構造は、安全で、拡張性があって且つ信頼できるデータの更新を提供する際に多くの利点を有する。このスキームは、脅威サーバによって受信されるデータの各断片が、当該データを保持するべきシステム内の他の全ての脅威サーバに即座に伝搬される従来のスキームと比較して、特筆すべき要因によってネットワークにおける処理負荷及びトラフィックを低減する。
【００１４】
好ましくは、前記方法は、タイムスタンプが記録されたデータのブロックの全てを中央サーバにおいて受信し且つこれらをそのデータベースに組み込むことで、バックアップ中央サーバを構築する。従って、現在活動中のサーバの動作を妨げることなく、最新のデータセットを用いて迅速にバックアップサーバが構築される。現在活動中のサーバは、オフラインになる必要はなく、バックアップサーバが構築されている間も機能し続けることができる。
【００１５】
一態様において、前記方法は、一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように、前記一定期間は中央サーバをオフラインにし、前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、前記中央サーバを再度オンラインに戻すことを含む。これにより、中央サーバは、例えばメンテナンスやソフトウェアの更新のためにオフラインになることができ、最新のデータを有するように迅速に且つ容易に更新される。その他のサーバはオフラインにならなくてもよく、そうでなければ、このプロセスによって影響を受けてなくてもよい。
【００１６】
一態様において、前記方法は、中央サーバの前記データベースを、過去のある時点の状態に戻し、タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、前記中央サーバを再度オンラインに戻すことを含む。従って、データベースが何らかの理由で破損してしまった場合には、データベースを破損が発生する前の時点の状態に戻すことができる。それから、紛失してしまったデータと共にデータベースを更新することができる。この場合もやはり、その他のサーバはオフラインにならなくてもよく、そうでなければ、このプロセスによって影響を受けてなくてもよい。
【００１７】
好ましくは、前記中央サーバは、ａ）オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、ｂ）オブジェクトの行動パターン、及びｃ）どのリモートコンピュータにどのオブジェクトが存在しているかについての情報のうちのいずれか一つ以上を含むデータベースを有している。これにより、ベースコンピュータは、オブジェクトの活動態様、それらの属性及びコミュニティーにおける行動パターンの全体図を構築することができる。その結果、マルウェア並びにデータにおける傾向及び変更を識別するための深い解析の実行が可能となる。
【００１８】
好ましい態様では、前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている。これにより、システム管理者が必要に応じてサーバインスタンスを構築し、起動し且つ停止することができるという融通の利くコンピュータ処理、使用されているコンピュータリソースのみに対する対価の支払い、並びに、待ち時間の最適化及び高度な冗長性を考慮に入れたインスタンスの地理的な配置の管理が可能となる。
【００１９】
好ましくは、前記方法は、脅威サーバにおいて、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持し、オブジェクトが以前に確認されていない場合には、前記オブジェクトについてのデータを中央サーバに送信し、オブジェクトが以前に確認されている場合には、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させることを含む。これにより、ネットワーク上及びサーバ上におけるネットワークトラフィック及び負荷が劇的に低減する。
【００２０】
本発明の第２の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記装置は、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び／又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている装置が提供される。
【００２１】
本発明の第３の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信し、一又は複数の共通する属性若しくは行動パターンを有するオブジェクトを前記複数のリモートコンピュータが所定期間中に確認した回数をカウントし、前記カウントした回数を、過去の観測に基づく予測回数と比較し、比較結果がある所定閾値を超過している場合には、前記オブジェクトが安全でない又は疑わしいものであるとフラグを立てることを含む方法が提供される。
【００２２】
好ましくは、リモートコンピュータ上で動作するエージェントプログラムから受信するデータの量は、膨大なものとなり得るため、コンピュータによる処理に適している。マルウェアを判定するために、人としてのオペレータがこのデータの全てを調べることは現実的ではない。この態様は、これらアウトライナー（アウトラインプロセッサ）の調査に、より多くの関心を置いている。調査に必要な負荷を自動的にグルーピングし、識別し若しくは優先順位を付けるために、更には、マルウェアの判定を行うために、このアウトライナーに関する情報を使用することが可能なプロセスは、迅速に発展させることができる。マルウェアを識別するために自動化されたルールが使用されている場合には、この情報は、アウトライナーとして識別されたグループ内のオブジェクトに適用される際のこれらのルールの感応性を自動的に高めるために使用可能である。
【００２３】
前記オブジェクトの前記属性は、ファイル名、ファイルタイプ、ファイル位置、ファイルに含まれるベンダー情報、ファイルサイズ、当該ファイルに関連するレジストリキー及びその他のシステムに由来する任意のデータ並びに前記オブジェクトに関連するイベントデータのうちの一つ又は任意の組み合わせである。
【００２４】
本発明の第４の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記装置は、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、前記ベースコンピュータは、一又は複数の共通する属性若しくは行動パターンを有するオブジェクトを前記複数のリモートコンピュータが所定期間中に確認した回数をカウントし、前記カウントした回数を、過去の観測に基づく予測回数と比較し、比較結果がある所定閾値を超過している場合には、前記オブジェクトが安全でない又は疑わしいものであるとフラグを立てるように構成されている装置が提供される。
【００２５】
本発明の第５の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信し、前記データをデータベースに格納し、複数のオブジェクトのグループ及びこれら複数のオブジェクトの様々な属性に関連する情報の表示をもってユーザに提示することを含み、前記表示は、複数のオブジェクトの間での共通性が示されるように構成されており、表示される複数のオブジェクトの前記グループは、前記データベースのユーザクエリに対応する方法が提供される。
【００２６】
従って、オブジェクトを確認した全てのリモートコンピュータの全てにおいてオブジェクトの統一的な表示物（即ち、そのメタデータ及び行動パターン）にクエリを実行し且つ解析することが可能であることにより、人によるものであろうがコンピュータによるものであろうが、より情報量のあるオブジェクトの表示物を得ることができる。加えて、オブジェクトの任意の基準、即ち、メタデータ及び行動パターンに基づいて、オブジェクトを横断的にグルーピングすることができる。
【００２７】
このスキームに応じてオブジェクトをグルーピングすることに従事するユーザは、熟練したマルウェアの解析者である必要はない。ユーザは、ツールを使用すること並びにクエリを実行し且つ共通性を探索することでオブジェクトをグルーピングすることに対する基本的な訓練のみを必要とする。熟練したマルウェアの解析者は、クエリによって対象に含められたオブジェクトの最終解析者となることができる。このシステムの主たる利点は、人としてのオペレータが完了させるにはタスク量が多すぎて現実的ではない原データの処理にコンピュータが使用されるという点である。データをグルーピングする人としてのオペレータは、熟練者である必要はなく、その結果、ビジネスとしてのコストの低減につながる。これは、コストの低減につながると共に、更なる調査の有力な候補になると判明したクエリに対して熟練したマルウェア解析者を集中させることができる。従って、これらオペレータのスキルは、マルウェアを識別する彼らの経験を使用する際に、最も効果的に配置される。
【００２８】
ある態様では、前記情報は、テーブルの行が複数のオブジェクトに対応し且つテーブルの列が前記複数のオブジェクトの属性に対応する表形式で表示される。とはいえ、その他の形式での表示、例えば、グラフ、チャート、３Ｄ表示化等が使用されてもよい。
【００２９】
好ましくは、前記複数のオブジェクトの少なくとも一つの属性は、共通の属性を有する複数のオブジェクトに対して同一の絵入り表現が付与されるように、絵を用いてユーザに提示される。好ましい態様では、前記絵入りの表現は、異なる形状及び／又は色を有する複数のシンボルを備えている。これにより、ユーザは、一目見ただけで属性の共通性を見分けることができる。これは、共通性が重要である一方で実際の属性の値が相対的には重要でない属性に対して特に有効である。
【００３０】
好ましくは、前記方法は、複数のオブジェクトの間での一又は複数の属性についての共通性を識別し、前記識別された共通性に応じて、クエリを改善することを含む。発見された共通性に応じてクエリを改善することで、ユーザは、迅速に且つ容易にマルウェアを調査することができる。クエリをグルーピングしたデータには、人としての解析者による更なる調査が必要なものであるとフラグが立てられるか、又は、無害であるか若しくは悪意があるものであると即座にフラグが立てられることが可能である。
【００３１】
好ましくは、前記方法は、マルウェアを識別する際に前記クエリが決定性のクエリであると判定される場合には、ユーザクエリからルールを生成することを含む。
【００３２】
好ましい態様では、前記グループの前記複数のオブジェクトを安全である又は安全でないものとして分類するような任意の又は全てのユーザアクションと共に、複数のオブジェクトのユーザグルーピングを監視し、複数のオブジェクトをマルウェアとして分類するための新たなルールを生成する際に、前記グルーピング及びアクションを自動的に適用することを含む。従って、これらのアクションを追っていくことで、サーバは、人としての解析者から、オブジェクトをどのように自動的に識別し且つ判定するかを学習することができる。好ましくは、アプリケーションは、ユーザによって実行されたクエリを覚えることができる。同じクエリがユーザによって繰り返し実行されており且つマルウェアオブジェクトに対して返答している場合には、又は、オブジェクトがマルウェアであると判定するアクションを調査者が絶えず行っている場合には、システムは、この状態を自動的に認識すると共に対象となるオブジェクトをマルウェアとして判定するための基準及びアクションのルールを生成することができる。
【００３３】
好ましくは、前記方法は、前記オブジェクトを安全である又は安全でないものとして分類するために、前記ベースコンピュータにおけるオブジェクトに対して前記ルールを適用し、及び／又は、リモートコンピュータに前記ルールを送信し且つ前記リモートコンピュータにおけるオブジェクトに対して前記ルールを適用することを含む。従って、ルールをオブジェクトに適用することで、未確認のオブジェクトに対するリアルタイムでの保護が提供される。リモートコンピュータで動作しているエージェントソフトウェアは、例えば、ベースコンピュータとの連絡が途絶えた場合に、オブジェクトに対してルールを適用することができる。その結果、エージェントソフトウェアは、ベースコンピュータがオフラインとなっている場合であっても、新たなマルウェアからの保護を継続して提供することができる。
【００３４】
好ましくは、前記方法は、前記ルールに応じて、前記ベースコンピュータにおける前記データベースに、オブジェクトが安全である又は安全でないという分類結果を格納する。この情報は、ルールの実績を評価する際に及び新しいルールを策定する際に考慮可能である。
【００３５】
好ましい態様では、前記方法は、前記ルールによればマルウェアであると分類されたオブジェクトがマルウェアでないと考えられるという情報を、リモートコンピュータから受信し、前記情報に応じて、前記ルールを修正する又は消去することを含む。これにより、中央サーバに対して、ルールの実績のフィードバックが可能となる。フィードバックは、必要に応じてルールを修正する又は消去する際に考慮可能であり、且つ、将来のルールを決定する際に考慮可能である。
【００３６】
本発明の第６の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備え、前記ベースコンピュータは、前記データをデータベースに格納し、複数のオブジェクトのグループ及びこれら複数のオブジェクトの様々な属性に関連する情報の表示をもってユーザに提示するように構成されており、前記表示は、複数のオブジェクトの間での共通性が示されるように構成されており、表示される複数のオブジェクトの前記グループは、前記データベースのユーザクエリに対応する装置が提供される。
【００３７】
本発明の第７の態様によれば、コンピュータ上でセキュリティプログラムを動作させる方法であって、前記コンピュータ上で動作するオブジェクトを監視する際に、オペレーティングシステムの機能のまねをする又は使用するように前記セキュリティプログラムを操作することを含み、前記監視は、前記オブジェクトがマルウェアであるかを判定することである方法が提供される。
【００３８】
これにより、プログラムは、悪意のあるオブジェクトからの攻撃に耐えることができる。プログラムは、標準的なシステムコールに依存する必要がある場合には、システムのコンテキストをまねすることで、又は、ディスク上に格納されている原データレベルのデータへのアクセスによってあらゆるシステムコールを回避することで、動作してもよい。そのように動作することで、マルウェアは、プロセスがオペレーティングシステムである間は、プロセスを終了するというアクションを起こすことができない。オペレーティングシステムの終了は、マルウェアの動作をも止めてしまうかもしれないからである。
【００３９】
本発明の第８の態様によれば、マルウェアに対抗するコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータプログラム上で動作する際に、コンピュータ上で動作するオブジェクトを監視することで前記オブジェクトがマルウェアであるか否かを判定するようにコンピュータを動作させるプログラム指令を含み、前記監視は、前記プログラムがオペレーティングシステムの機能のまねをする又は使用するように行われるコンピュータプログラムが提供される。
【００４０】
本発明の第９の態様によれば、コンピュータ上でセキュリティプログラムを動作させる方法であって、前記セキュリティプログラムの第１構成要素を前記コンピュータ上にロードし、前記第１構成要素とは異なる属性を有し且つ悪意のある活動に起因して前記第１構成要素がロードできない場合に自動的にロードされる前記セキュリティプログラムの第２構成要素を前記コンピュータ上で動的に生成することを含む方法が提供される。
【００４１】
好ましくは、第２構成要素は、同一の機能を有している一方で、名称及び形式が異なるように改変されている。主としてマルウェアによって終了させられることに起因して主たる実行ファイルがロードできない場合には、第２構成要素がその機能を実行するようにロードされる。主たる実行ファイルがロードできる場合には、第２実行ファイルは、主たる実行ファイルの存在を識別することで、コンフリクトを避けるために単に停止する。
【００４２】
好ましくは、前記第２構成要素は、それ自身のデジタルシグナチャを除去するように構成されている。
【００４３】
本発明の第１０の態様によれば、マルウェアに対抗するコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータプログラム上で動作する際に、セキュリティプログラムの第１構成要素を前記コンピュータ上にロードし、前記第１構成要素とは異なる属性を有し且つ悪意のある活動に起因して前記第１構成要素がロードできない場合に自動的にロードされる前記セキュリティプログラムの第２構成要素を前記コンピュータ上で動的に生成するようにコンピュータを動作させるプログラム指令を含むコンピュータプログラムが提供される。
【００４４】
本発明の第１１の態様によれば、搬送波上に記録されている上述したコンピュータプログラムが提供される。
【００４５】
本発明の第１２の態様によれば、リモートコンピュータを複数のサーバのうちの一つに接続する方法であって、前記方法は、当該エージェントプログラムがインストールされた時までに決定されたサーバに対して前記リモートコンピュータを割り当てるためのアルゴリズムを有するエージェントプログラムを、前記リモートコンピュータにインストールし、前記エージェントプログラムを前記割り当てられたサーバに接続することを含む方法が提供される。
【００４６】
好ましい態様は、数千ものリモートコンピュータが同時に実装されている場合であっても、リモートコンピュータをサーバにマッピングするための簡易で、疑似的で且つランダムな手段であって且つサーバ間で負荷を均等に分配する手段を提供する。これは、サーバ間での負荷を分配するために専用のハードウェアが使用される従来技術のスキームと肩を並べる。
【００４７】
好ましくは、前記アルゴリズムは、前記複数のサーバへの前記リモートコンピュータの近接によっても決定されるサーバに前記リモートコンピュータを割り当てる。位置に基づいて割り当てることで、待ち時間が最小化される。
【００４８】
好ましくは、前記方法は、当初割り当てられていたサーバから前記エージェントプログラムによって受信される情報に応じて、異なるサーバに前記リモートコンピュータを接続する。
【００４９】
好ましくは、前記方法は、リモートコンピュータを、ＤＮＳ分配ネットワークを使用するサーバに接続することを含む。これにより、サーバ名をサーバの物理アドレスにマッピングするための便利な手段が提供される。
【００５０】
好ましくは、前記エージェントプログラムは、当初割り当てられていたサーバにアクセスできない場合に、前記リモートコンピュータのための二次的なサーバを決定する二次的なアルゴリズムを有する。これにより、当初割り当てられていたサーバが動作していない場合に、又は、サーバを物理アドレスにマッピングするために使用されるメカニズム、例えばＤＮＳネットワークの動作をマルウェアが妨害している場合に、有益なバックアップが提供される。好ましくは、前記方法は、当初割り当てられていたサーバからエージェントプログラムが受信する情報に応じて、リモートコンピュータを異なるサーバに接続することを含んでいる。これらの技術により、リモートコンピュータをサーバに再度割り当てるためのより柔軟で且つ中央集中型の制御が実現される。
【００５１】
本発明の第１３の態様によれば、プログラムがリモートコンピュータにインストールされた時までに決定された複数のサーバのうちの一つに対して前記リモートコンピュータを割り当てるためであって、且つ、前記エージェントプログラムを前記割り当てられたサーバに接続するためのプログラム指令を含むコンピュータプログラムが提供される。
【００５２】
本発明の第１４の態様によれば、搬送波上に記録されている上述のコンピュータプログラムが提供される。搬送波は、任意の物理的な媒体、例えば、ディスク、ＵＳＢストレージ、ハードドライブ、光媒体等であってもよい。
【００５３】
本発明の第１５の態様によれば、マルウェアからの保護を提供する方法であって、前記方法は、ネットワークに接続されたリモートコンピュータ上で、前記ネットワークを介してベースコンピュータと通信するように構成され且つ前記リモートコンピュータと前記ネットワーク上のエンティティとの間の通信を所定のルールに応じてブロックするように構成されたファイアウォールを含むエージェントプログラムを実行し、前記ベースコンピュータから受信するルールに応じて、前記ファイアウォールを設定することを含む方法が提供される。
【００５４】
設定可能なファイアウォールの好ましい態様は、マルウェアの通信を遮断することでマルウェアに対抗する次の防御方法を提供するために、リモートコンピュータによって保持されている悪意のあるオブジェクト及びネットワークＵＲＬについて展開されたルール及び知識にレバレッジをかけることができる。既知のファイアウォールにおいては、典型的には、ユーザは、手作業でファイアフォールを設定しなければならない。
【００５５】
好ましくは、前記方法は、前記リモートコンピュータにおいて、前記ベースコンピュータから、前記リモートコンピュータ上のオブジェクト及び／又は前記ネットワーク上のエンティティが安全でないという情報を受信し、安全でないオブジェクト及び／又は安全でないエンティティに関連する所望のネットワーク通信が前記ファイアウォールによってブロックされるように、前記リモートコンピュータにおいてルールを含めることを含む。従って、ファイアウォールは、ネットワーク上のエンティティ（例えば、第三者のサーバ）と通信しようとしているリモートコンピュータ上の悪意のあるオブジェクトとの間の通信を停止するように、又は、リモートコンピュータ上の任意のオブジェクトと悪意のある活動に関連していると知られているネットワーク位置（例えば、既知の犯罪者によって運営されているＵＲＬ）との間の通信を停止するように構成されることができる。
【００５６】
好ましくは、前記方法は、前記リモートコンピュータにおいて、前記ベースコンピュータから、前記リモートコンピュータ上の及び／又は前記ネットワーク上のエンティティ上のオブジェクトが安全でないという情報を受信し、安全でないオブジェクト及び／又は安全でないエンティティに関する所望のネットワーク通信の詳細を第三者と共有することについて、前記リモートコンピュータのユーザから許可を求め、安全でないオブジェクト及び／又は安全でないエンティティに関する所望のネットワーク通信を妨害し、第三者とそれらを共有することを含む。
【００５７】
これは、従来技術でのサイバー犯罪に対処するための努力の多くが、マルウェアの背後にある犯罪を認識し且つ停止しようと試みるよりはマルウェアの影響を停止することに集中しているという事実に対処する。一つの困難は、アンチマルウェア又は警察でさえも、犯罪に関わるデータを探すために犯罪者のサーバに侵入することが違法であるということである。実際、マルウェアの影響を受けているがゆえに犯罪者の制御下にある合法なユーザのコンピュータの“ゾンビネットワーク”であるいわゆる“ボットネット”を犯罪者が使用しているというのはよく知られた策略である。好ましい態様は、どこデータが犯罪者によって盗まれたかを当局が確認できるように、マルウェアに関連する通信の記録を保持する。法的な理由のため、第三者に任意のデータを送信する前にユーザの同意が得られる。これは、１）常に問い合わせる（アプリケーションが検知される都度）、２）マルウェアのタイプ毎の一律の許可を得る、及び３）マルウェアのタイプに関わらない一律の許可を得るという様々な方法によって実装可能である。
【００５８】
本発明の第１６の態様では、マルウェアからの保護を提供するコンピュータプログラムであって、前記コンピュータプログラムは、ネットワークに接続されたリモートコンピュータと前記ネットワーク上のエンティティとの間の通信を所定のルールに応じてブロックするように構成されたファイアウォールを含み、前記コンピュータプログラムは、前記リモートコンピュータ上で実行された場合に、前記ネットワークを介してベースコンピュータと通信し、前記ベースコンピュータから受信するルールに応じて、前記ファイアウォールを構成するプログラム指令を含むコンピュータプログラムが提供される。
【００５９】
以降の開示を考慮すれば明らかになるように、上述した任意の実施形態の特徴は、上述した本発明の任意の態様のその他の実施形態の特徴のいずれとも組み合わせることができる。
【００６０】
本発明の実施形態は、付随する図面を参照する例を用いて以下に記載される。
【図面の簡単な説明】
【００６１】
【図１】図１は、本発明の実施形態が実装された装置を概略的に示す。
【図２】図２は、本発明の実施形態に応じた方法の動作例を概略的に示すフローチャートである。
【図３】図３は、本発明の実施形態に応じたベースコンピュータ３の例のより詳細な図面を示す
【図４】図４は、ウェブサーバが異なる地理的位置に配置される例を示す。
【図５】図５は、図３の装置をより詳細に概略的に示すと共に、特に、実施形態においてＦＸレイヤからＥＮＺＯレイヤにデータが移動する方法を概略的に示す。
【図６】図６は、本発明の実施形態に応じてＥＮＺＯサーバの新たなインスタンスが生成される例を概略的に示す。
【図７】図７は、本発明の実施形態に応じてＥＮＺＯサーバをしてその処理負荷を複数のサーバの間で分配せしめる装置の例を概略的に示す。
【図８】図８は、本発明の実施形態に応じた、オブジェクトについてのデータを解析するためのスキームの例を示すチャートである。
【図９】図９は、本発明の実施形態に応じた、オブジェクトについてのデータを処理するためのスキームの例を示すチャートである。
【図１０】図１０は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
【図１１】図１１は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
【図１２】図１２は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
【図１３】図１３は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
【図１４】図１４は、本発明の実施形態に応じた、リモートコンピュータ上のエージェントプログラムの例を示す。
【図１５】図１５は、コンピュータシステム上の階層を示す。
【発明を実施するための形態】
【００６２】
図１を参照すると、インターネット１のような分散型のネットワークに基づくものとしてのコンピュータネットワークが大まかに示されている。しかしながら、本発明は、ＬＡＮのようなその他のタイプのネットワークに渡って又は用途で実装されてもよい。複数のローカル又は“リモート”コンピュータ２は、インターネット１を介して、“中央”又は“ベース”コンピュータ３に接続されている。コンピュータ２は、夫々、パーソナルコンピュータ、任意のタイプのサーバ、ＰＤＡ、携帯電話、双方向性のテレビ又はコンピュータオブジェクトをロードし且つ動作させることが可能なその他のデバイスであってもよい。ここでのコンピュータオブジェクトは、コンピュータファイル、ファイルの一部、サブプログラム、マクロ、ウェブページ、コンピュータによって若しくはコンピュータ上で動作するその他の任意のコードの断片、又は、実行される、エミュレートされる、シミュレートされる若しくは解釈されるその他の任意のイベントであってもよい。オブジェクト４は、図面中では概略的に示されており、例えば、ライン５によって示されるようにインターネット１を介して又はライン６によって示されるように直接的にリモートコンピュータ２にダウンロードされる。オブジェクト４は、コンピュータＲＡＭ内、コンピュータのハードディスクドライブ上、ＵＳＢペンドライブやＥメールの添付等のようなコンピュータに接続されるリムーバブルストレージ上に存在していてもよい。
【００６３】
一つの好ましい実施形態では、ベースコンピュータ３は、オブジェクト４が安全であるか又は安全でないかを判定するためにリモートコンピュータ２がオブジェクト４を実行する際にリモートコンピュータ２が情報をやり取りすることが可能なデータベース７と通信する。コミュニティデータベース７には、接続されたリモートコンピュータ２の全ての上で動作する各オブジェクトに関連する情報が徐々に入力される。後に議論されるように、各オブジェクト４を示すデータは、オブジェクト並びにその属性及び行動パターンに関するいわゆるシグナチャー又はキーの形式を有している。
【００６４】
図２を参照すると、開始点２１において、プロセス（処理）等のコンピュータオブジェクト４はリモートコンピュータ２において実行される。ステップＳ２２において、リモートコンピュータ２上におけるローカル“エージェント”プログラム又はソフトウェアの動作により、特定のプロセス、その関連するオブジェクト及び／又はイベントを示すシグナチャー若しくはキーを検索するためにエージェントプログラムがリモートコンピュータ２に格納されているローカルデータベースを調査することができるように、プロセスの動作がフックされる。ローカルシグナチャーが存在する場合には、プロセスが安全であるとみなされるということを示すか、又は、プロセスが安全でないとみなされるということを示す。安全でないプロセスは、マルウェアである又は実行されることで予測し得ない若しくは既知の安全でないか若しくは悪意がある結果を引き起こすと確認されたプロセスであるかもしれない。プロセスが安全であることをシグナチャーが示している場合には、ステップＳ２３において、リモートコンピュータ２上のローカルエージェントプログラムによって、そのプロセス又はイベントの実行が許可される。プロセスが安全でないことをシグナチャーが示している場合には、ステップＳ２４において、そのプロセス又はイベントが停止される。
【００６５】
“安全である”又は“安全でない”という２つの状態よりも多くの状態が存在していてもよいことは理解できるであろう。選択は、ユーザに委ねられてもよい。例えば、オブジェクトがローカル的に安全でないとみなされる場合において、その場合であっても関連するプロセスの実行の許可という選択肢がユーザに提示されてもよい。各リモートコンピュータ２に対して、異なる状態が提示されてもよい。この状態は、リモートコンピュータの位置、ステータス若しくは所有状態、又は、時間枠を考慮するベースコンピュータによって変更可能である。
【００６６】
更に、リモートコンピュータ２におけるエージェントソフトウェアは、オブジェクトを安全である又は安全でないものとして分類するために、ベースコンピュータ３から、ルール又は発見的方法を受信するように構成されていてもよい。オブジェクトがローカル的に知られていない場合には、エージェンソフトウェアは、オブジェクトを安全である又は安全でないものとして分類しようと試みるために、オブジェクトの詳細情報に対してルール又は発見的方法を適用してもよい。分類がなされると、オブジェクトの詳細情報と分類結果は、ベースコンピュータ３を介してコミュニティデータベース７に格納される。これは、エージェントソフトウェアは、オフラインである場合であっても（例えば、何らかの理由によりベースコンピュータと接続されない場合であっても）、未確認のオブジェクトからの保護を提供可能であるということを意味する。このメカニズムは、以下の開示でより詳細に説明される。
【００６７】
オブジェクトがローカル的にまだ分類されていない場合には、オブジェクトの詳細情報は、コミュニティデータベース７に格納するために、好ましくはベースコンピュータ３での更なる解析のために、インターネット１又はその他のネットワークを介してベースコンピュータ３へと送信される。この場合、コミュニティデータベース７に既に格納されているオブジェクトのシグナチャーのために、ステップＳ２５において、コミュニティデータベース７が検索されてもよい。コミュニティデータベース７は、プログラムやプロセスのような監視中の各リモートコンピュータによって実行されているオブジェクトを示すシグナチャーを含んでいる。この分野での典型的な実装では、ベースコンピュータ３に接続されている又は接続可能なリモートコンピュータ２の数は、数千から数百万にも及ぶかもしれない。このため、インターネット１上に新たにリリースされた又はそうでなければこれらのリモートコンピュータ２のいずれかによって発見されるオブジェクトはすぐに発見されると共に、夫々のリモートコンピュータ２によってシグナチャーが生成され且つベースコンピュータ３に送信される。
【００６８】
該当するリモートコンピュータ２によって未だ確認されていないオブジェクトのシグナチャーのためにコミュニティデータベース７が検索される際に、シグナチャーが発見され且つ当該オブジェクトが安全であることを示している場合には、ステップＳ２６において、シグナチャーのコピー又は少なくともオブジェクトが安全であるというメッセージが、該当するリモートコンピュータ２のローカルデータベースに送信され且つローカルデータベースに入力される。このようにして、リモートコンピュータ２は、オブジェクト４に遭遇する次の機会に対処するために、この情報を即座に入手する。現在のインスタンスでのオブジェクトの実行を許可するために、別個のメッセージがリモートコンピュータ２に対して返送されてもよい。
【００６９】
シグナチャーがコミュニティデータベース７において発見され且つ何らかの理由でオブジェクトが安全でないことを示している場合には、ステップＳ２７において、シグナチャーは、再度ローカルデータベースにコピーされ且つ安全でないものとしてマークされる。及び／又は、オブジェクトの実行が停止される（又は、実行が許可されない）ようにメッセージがリモートコンピュータ２に送信される。及び／又は、ユーザには、オブジェクトを実行するか否かについての情報に基づく選択肢が提示される。
【００７０】
コミュニティデータベース７の全体が検索された後も未知のオブジェクトが存在する場合には、これは、その分野において確認されたことのない完全に新たなオブジェクトであると推測される。従って、ステップＳ２８において、オブジェクトを示すシグナチャーが生成され、又は、リモートコンピュータ２によって送信されたシグナチャーがこの目的で使用される。
【００７１】
このとき、オブジェクトを安全である又は安全でないものとして分類しようと試みるために、ベースコンピュータ３によって、オブジェクトの詳細情報に対してルール又は発見的手法が適用されてもよい。分類がなされた場合には、それに応じて、シグナチャーは、コミュニティデータベース７内で安全である又は安全でないものとしてマークされる。シグナチャーは、最初にオブジェクトを実行していたリモートコンピュータ２のローカルデータベースにコピーされる。このメカニズムは、後の開示でより詳細に説明される。
【００７２】
オブジェクトが未だ分類されていない場合には、ステップＳ２９において、シグナチャーは、コミュニティデータベース７内において当初は悪意のある又は安全でないものとしてマークされてもよい。シグナチャーは、ステップＳ３０において、最初にオブジェクトを実行していたリモートコンピュータ２のローカルデータベースにコピーされる。オブジェクトを実行しないようにリモートコンピュータ２を指示するために、メッセージがリモートコンピュータ２に送信されてもよい。代わりに、状況を説明した上で、オブジェクトの実行を許可するか否かについての同意を、ユーザから受けてもよい。加えて、ステップＳ３１において、コミュニティデータベース７によって、リモートコンピュータ２からのオブジェクトそのもののコピーが要求されてもよい。
【００７３】
リモートコンピュータ２において、新し過ぎるがゆえに安全でないとみなされているプロセスを実行することをユーザが選択する場合には、そのプロセスは、リモートコンピュータ２及び／又はコミュニティデータベース７によって監視されていてもよい。そして、例えばｎ日等の所定期間後の何ら悪影響が発生しない又は現れていない場合には、当該プロセスは安全であるものとしてみなされてもよい。代わりに、コミュニティデータベース７は、ネットワークの一部を形成する多くのリモートコンピュータ２によって発見されたプロセスの各インスタンスのログを保持してもよい。可能であれば、実行が許可され且つ安全に実行されている他の特定数のインスタンス又はプロセスと共に特定数のインスタンスが記録された後、コミュニティデータベース７内のシグナチャーは、安全でないというよりもむしろ安全であるものとしてマークされてもよい。安全性を監視するためのその他多くの改変がこの思想の範囲内で行われてもよい。
【００７４】
データベース７は、オブジェクトのパフォーマンス及び動作のパラメータを設定する、オブジェクト４のための行動パターンのマスクを含んでいてもよい。リモートコンピュータ２上でオブジェクトを実行することが許可されている場合には、オブジェクトが安全であると初期のシグナチャー検索２２が示している場合であっても、オブジェクトの動作は、マスクのパラメータの範囲内で監視されてもよい。マスクによって許可されている範囲を超えるあらゆる行動パターンは、識別され且つオブジェクトが安全であり続けるか否かを継続的に評価するために使用される。
【００７５】
ベースコンピュータ３に送信されたオブジェクト４の詳細情報は、好ましくは、オブジェクト４を一意に識別するシグナチャー又はキーの形式を有している。これは、主として、データストレージ及び伝送要求をできるだけ小さくしておくためである。このキーは、リモートコンピュータ２におけるオブジェクトの上で動作するハッシュ関数によって生成されてもよい。
【００７６】
好ましい実施形態でのキーは、特に、少なくとも３つの分断可能な構成要素を有するように構成されている。当該構成要素のうちの第１は、オブジェクト内に含まれる又はオブジェクトによって構成される実行可能な指示を示す。当該構成要素のうちの第２は、オブジェクトについてのデータを示す。当該構成要素のうちの第３は、オブジェクトの物理サイズを示す。第２の構成要素におけるオブジェクトについてのデータは、固有性を示すその他の形式のいずれか又は全てであってもよい。固有性を示すその他の形式は、例えば、ファイル名、ディスク上での物理的なフォルダ位置、当初のファイル名、生成及び修正日時、ベンダー、製品及びバージョン等のリソース情報、オブジェクト内に格納されているその他の任意の情報、それについてリモートコンピュータ２が保持しているファイルヘッダ若しくはヘッダ、並びに、リモートコンピュータ上でオブジェクトが生成、構成若しくは実行された時にオブジェクトによって開始された又はオブジェクトに関するイベントである。概して、キーに含まれる情報は、これらの要素のうちの少なくとも一つ又は２以上の任意の組み合わせを含んでいてもよい。
【００７７】
一つの好ましい実施形態では、タイプＰＥ（マイクロソフトによって定義されているように、Ｐｏｒｔａｂｌｅ  Ｅｘｅｃｕｔａｂｌｅファイル）のファイルである．ｅｘｅ又は．ｄｌｌファイルのような全ての実行可能なファイルに対してチェックサムが生成される。ファイルの性質に依存して、３種類のチェックサムが生成される。
【００７８】
タイプ１：ファイルの５つの異なるセクションがチェックサムされる。これらは、インポートテーブル、コードセクションの開始位置におけるセクション及び終了位置におけるセクション、並びにファイル全体の開始位置におけるセクション及び終了位置におけるセクションを含む。このタイプは、解析されるファイルの大部分に適用される。
【００７９】
タイプ２：旧タイプのＤＯＳ又は１６ビットの実行可能なファイルのために、ファイル全体がチェックサムされる。
【００８０】
タイプ３：ある所定サイズを超えるファイルのために、ファイルが大きな塊毎にサンプリングされ、当該塊がチェックサムされる。ある所定サイズを下回るファイルについては、ファイル全体がチェックサムされる。
【００８１】
チェックサムプロセスのために、原則としては、任意の技術が利用可能である。ＭＤ５（Ｍｅｓｓａｇｅ−Ｄｉｇｅｓｔ  ａｌｇｏｒｉｇｈｍ  ５）は、この目的のために使用されてもよい暗号化ハッシュ関数であり、広く使用されている。
【００８２】
これにより、チェックサムの実行可能な要素のみを観察すると共に実行可能な共通のコードを共用している２つの実行可能な要素を比較することで、核となるチェックサムが生成される。
【００８３】
上述したタイプ１のチェックサムについて言えば、３つのシグナチャープロセスが使用されてもよい。第１のプロセスは、ファイル全体を定義しており、ファイルの内容に対するほとんど全ての変更と共に変化する。特に、第１のプロセスは、プログラムの内容のサンプリングの代表例を定義している。そこでは、任意の根本的な変更がプログラムに対してなされた場合にチェックサムが変わるが、些細な変化しか識別されない場合には当初のプログラムの本体との相関が認められる。第２のプロセスは、ほとんど変化しないプロセスのプロセス指示のみを定義している。第３のプロセスは、ファイルサイズを利用し、これにより、異なるサイズのオブジェクトの不一致の可能性が大いに低減される。異なる同等物と共に個別に現れる全てのシグナチャーの発生を追跡することで、変更された又は共通点から生成された一方で新たな悪意のある機能を実行するように編集されたプロセスを識別することができる。
【００８４】
チェックサムデータと共に、オブジェクトについてのメタデータがキャプチャされ且つベースコンピュータ３に送信されることが好ましい。その他のタイプのうちキャプチャされ且つベースコンピュータ３に送信されるメタデータのタイプは、以下であってもよい。
【００８５】
“イベント：Ｅｖｅｎｔｓ”：これらは、その他のオブジェクト又はその他のエンティティの上で活動するオブジェクトの活動態様又は行動パターンを定義する。イベントは、活動を実行するオブジェクトのキー（“アクター：Ａｃｔｏｒ”）、実行されている活動（“イベントタイプ：Ｅｖｅｎｔ  Ｔｙｐｅ”）及びその上で活動が実行されているオブジェクトのキー若しくはその他のエンティティの固有性（“ビクティム：Ｖｉｃｔｉｍ”）という３つの原理的な構成要素を有する。例えば、イベントデータは、オブジェクトが通信しているネットワークエンティティ、オブジェクト上で活動する又はオブジェクトによって活動されているその他のプログラム、データベース又はオブジェクトによって記述されたＩＰレジストリキーの固有性、例えば、ＩＰアドレス又はＵＲＬをキャプチャしてもよい。この構造は、簡易である一方で、一連の行動パターン及び関連性を制限なく定義することができる。イベントの３つの構成要素の一例は、以下であってもよい。
【００８６】
【表１】
0005967107.tif 000002
【００８７】
“固有性（アイデンティティ：Ｉｄｅｎｔｉｔｙ）”：これらは、オブジェクトの属性を定義する。これらは、例えば、ファイル名、ディスク上での物理的な位置、ファイルシステム内におけるディスク上での論理的な位置（パス）、ファイルが生成されたのはいつか、最後にアクセスされたのはいつか、最後に修正されたのはいつか、ベンダー、ファイルの一部である製品及びファイルのバージョン番号として格納されている情報を含むファイルヘッダの詳細情報、当初のファイル名、並びにファイルサイズを含む。
【００８８】
“ジェネシスアクター（Ｇｅｎｅｓｉｓａｃｔｏｒ）”：イベントの直接的なアクターではないものの実行されているイベントの根本的な原因であるオブジェクトのキーである。例えば、ソフトウェアがインストールされる場合には、これは、ユーザ又はシステムが最初に実行し且つソフトウェアのインストールプロセス（例えば、Ｓｅｔｕｐ．ｅｘｅ）を起動したオブジェクトのキーであり得る。
【００８９】
“補助的データ（アンサレリデータ：Ａｎｃｉｌｌａｒｙ  ｄａｔａ）”：、多くのイベント、例えば、レジストリランキーを記録するために使用されるイベントのようなイベントは、補助的データを要求してもよい。この場合、“イベント”は、レジストリランキーを生成するアクターオブジェクト、イベントタイプそのもの（例えば、“レグランキー：ｒｅｇｒｕｎｋｅｙ”）並びにレジストリランキーのビクティム若しくは対象者を識別してもよい。この場合の補助的データは、ランキーエントリーそのもの、ハイブ、キー名及び値を定義し得る。
【００９０】
“イベントチェックサム：Ｅｖｅｎｔ  Ｃｈｅｃｋｓｕｍｓ）”：イベントデータは、単一のイベント、アクター及びビクティム並びに任意の補助的データに対するその固有性のために数百バイトの情報に及ぶ極めて大きなサイズとなり得るがゆえに、システムは、このデータ自身がイベントチェックサムによってまとめられることを許可している。ＣＲＣやＡＤｌｅｒのような各種アルゴリズムを利用する２つのイベントチェックサムが使用される。チェックサムは、イベントのためのコアデータのチェックサムである。これにより、リモートコンピュータ２は、データのチェックサムを、格納されているこれらチェックサムに関するデータを既に有している可能性のある中央コンピュータ３に対して送信することができる。この場合、リモートコンピュータ２に更なる情報を要求することはない。中央サーバ３がチェックサムを受信していない場合に限って、中央サーバ３は、リモートコンピュータ２に関連するデータを要求する。これにより、リモート及び中央コンピュータ２、３の双方のパフォーマンスの劇的な向上が実現され、結果、ずっと効率的なスケーリングが可能となる。
【００９１】
従って、リモートコンピュータ２から取得されるメタデータは、コミュニティーに跨るプロセスの行動パターンを定義するために、コミュニティデータベース７において使用され得る。上述したように、データは、上述した要素（ファイルサイズ、位置等）の少なくとも一つ、２つ、３つ、４つ、５つ又は７つ全て（または、ここでは具体的に言及されていないさらに多くの要素）を含んでいてもよい。コミュニティデータベース７に格納されているデータは、オブジェクトの生成、オブジェクトの構成、オブジェクトの実行、オブジェクトの行動パターン、オブジェクトの固有性、並びに、オブジェクト上で活動する又はオブジェクトによって活動する他のオブジェクト若しくはエンティティとオブジェクトとの関係性についての広範囲に及ぶ推論を提供する。これは、コミュニティデータベース７内で使用するためであって且つ既に保持されているルールに追加されてもよいルールとしての新たな自動化されたルール及び発見的手法をモデリングし、テストし且つ生成する際に適宜使用されてもよいし、未知のプロセス及びプロセス活動に対するリモートコンピュータ２の反応を識別し且つ判定するためにリモートコンピュータ２のローカルデータベース内で使用されてもよい。
【００９２】
更に、同種のエンティティとしての任意の選択可能なサブプロセスと共にプロセスを監視し、コミュニティーの全域に渡ってトップレベルのプロセスの活動を比較し、一又は複数の特定のサブプロセスがロードされている時にある潜在的で悪意ある活動が発生していることを推定することができる。これにより、今日では当然に悪意あるコードの主要源となっているインターネットからユーザが取得するダウンロード可能なオプションコードによって容易に修正されるプログラム（例えば、インターネットエクスプローラーやその他のブラウザ）に対する効果的な監視（不必要なブロックを伴うことなく）が可能となる。
【００９３】
分散型アーキテクチャ
これまで説明したシステムは、概して、出願人の過去の出願（米国特許出願公開第２００７／００１６９５３号明細書）で説明されている。以降は、そのようなシステムを動作させる際の新しいより有益なスキームの説明を進める。当然のことながら、図１及び図２に関連する説明中では、中央コンピュータ及びコミュニティデータベースは、便宜上単一のエンティティであるものとして示される。以降の説明から明らかになるように、ベースコンピュータ３は、複数のコンピュータ及びサーバ等から構成可能であり、コミュニティデータベース７は、この中央システムに沿って分布する複数のデータベース及びストレージから構成可能である。
【００９４】
図３は、ベースコンピュータ３の好ましい配置例を示す。リモートコンピュータ２は、図１及び図２を参照して説明したエージェントプログラムと同様の機能を一般的に含むエージェントプログラム１０を有している。つまり、エージェントプログラム１０は、コンピュータ２上におけるオブジェクト及びその行動パターンを監視する。エージェントプログラム１０は、リモートコンピュータ２上で発見された新たなオブジェクトの詳細情報及びその行動パターンを送信し且つオブジェクトが安全であるか否かの判定結果を受信するためにベースコンピュータ３と通信する。エージェントプログラム１０は、オプションとして、リモートコンピュータ２上で発見されたオブジェクトに関するシグナチャーのローカルコピーを保持するローカルデータベース１１と通信する。
【００９５】
エージェントプログラム１０は、その他の商用利用可能なアンチマルウェアソフトウェアと比較して、比較的小さい。エージェントプログラムのダウンロードサイズは、１ＭＢよりも小さく、実行時には約３ＭＢしかメモリを占有せず、スキャンしているファイルのイメージを一時的に保持するためだけにより多くのメモリを使用する。比較すれば、その他のアンチマルウェアパッケージは、典型的には、５０ＭＢのダウンロードサイズを有し、ファイルをスキャンする際に５０ＭＢから２００ＭＢもコンピュータメモリを占有する。従って、好ましいアーキテクチャは、その他の製品と比較して、２％未満のシステムリソースしか占有しない。
【００９６】
これは、主として、システムリソース（例えば、ビデオディスプレイ、ディスク、メモリ、ネットワーク）に直接アクセスし且つこれらの機能を実行するために多くの標準コード若しくは動的リンクライブラリと協業しなくともよい低水準言語で開発されている好ましいエージェントプログラム１０によって実現されている。メモリの使用方法は、ファイル名又はシグナチャー全体を要求するというよりはむしろ固有の識別子によってオブジェクトを参照するための能力を提供するローカルデータベース構造にデータを格納することで、最適化されている。全ての不必要な動的リンクライブラリは、それらがもはや使用されていないものとして認識されているように、プロセスから即座にロードされることはない。そして、ＣＰＵ使用率を低減するために、バックグラウンドスレッドがマージされる。小さく且つ効率的なエージェントは、コンピュータのパフォーマンスに与える負荷又は影響を小さくしながら、より迅速に配置可能であり且つその他のセキュリティプログラムを含むその他のプログラムと並行して使用可能である。このアプローチは、マルウェアによる攻撃の対象となる表面の領域を小さくし且つそれを本質的により安全なものにするという利点を有する。
【００９７】
エージェントプログラム１０は、インターネットのドメインネーム解決システム（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｒｅｓｏｌｕｔｉｏｎ  Ｓｙｓｔｅｍ：ＤＮＳ）５０を介して、インターネット１を超えてベースコンピュータ３と通信する。
【００９８】
ベースコンピュータ３は、一又は複数のサーバ（この例では、ウェブサーバ）を備える第１レイヤを有する。本開示では、ウェブサーバ６１を“ＦＸサーバ”又は“脅威サーバ”と称し、第１レイヤを“ＦＸレイヤ”と称する。しかしながら、当然のことながら、必要に応じて任意のタイプの適切なサーバが必要に応じて使用されてもよい。リモートコンピュータ２は、後に詳述するように、ウェブサーバ６１のうちの一つに割り当てられる。
【００９９】
ＦＸレイヤ６０は、リモートコンピュータ２から送信されるオブジェクトの詳細情報に基づいて、オブジェクトが無害であるか又は悪意があるか否かについてのリアルタイム判定を行う。ＦＸレイヤ６０の各ウェブサーバ６１は、ベースコンピュータ３に知られているオブジェクトの全てについてのエントリー及びオブジェクトが安全であるか若しくは安全でないかについての分類結果を含むデータベース６２に接続されている。データベース６２は、リモートコンピュータ２から送信される情報に基づいて未知のオブジェクトが安全であるか又は安全でないかを決定するためのルールを格納している。ウェブサーバ６１は、シグナチャーを照合することでオブジェクトが安全であるか若しくは安全でないか又は未知のものであるかを判定するために、データベース６２を最初に検索する。上述したように、シグナチャーは、ファイルそのもの、オブジェクトに関するイベントデータ及び／又はオブジェクトについてのメタデータの任意の組み合わせに由来するハッシュ関数（チェックサムデータ）となり得る。オブジェクトが未知のものである場合には、ウェブサーバ６１は、ルールのいずれかによってオブジェクトが安全でないものとして分類されるかどうかを判定する。それから、ウェブサーバ６１は、オブジェクトが、安全であり且つ実行が許可可能かどうか、安全でなく且つ実行が禁止されるかどうか、又は未知のものであり且つユーザの好みに応じて実行が許可されるか若しくは許可されないかどうかを、リモートコンピュータ２に返答する。
【０１００】
従って、ＦＸレイヤ６０は、リモートコンピュータ２上におけるマルウェアの実行が許可可能か否かを判定するために、脅威に対してリアルタイムに反応（作用）する。
【０１０１】
ＦＸレイヤ６０の下層には、第２レイヤ（ここでは、“ＥＮＺＯレイヤ”７０と称する）が位置している。リモートコンピュータ２からＦＸレイヤ６０によって受信されたオブジェクトについての情報は、全てのリモートコンピュータ２から受信した全てのデータのマスターレコードがＥＮＺＯレイヤ７０において保持されるように、ＥＮＺＯレイヤ７０に送信される。このプロセスは、後に詳述される。
【０１０２】
ＥＮＺＯレイヤ７０は、全てのリモートコンピュータ２から全てのウェブサーバ６１から受信した情報の全てを集約する一又は複数の“マスター”データベースに接続されている一又は複数のサーバ７４（本開示では、“中央サーバ”又は“ＥＮＺＯサーバ”と称する）を有する。データベースは、以下の３つのデータベースの任意の組み合わせを備えていてもよく、このましい実施形態では３つのデータベースの全てを備えている。
【０１０３】
１）オブジェクトのシグナチャー（例えば、それらのＭＤ５チェックサム）を含み且つオブジェクトについて受信したメタデータ（例えば、ファイル名、ファイル位置、又は、上述したようにシステムによって収集されたその他のメタデータ）を含むエントリーを有するオブジェクトデータベース７１。
【０１０４】
２）リモートコンピュータ２において観測されたオブジェクトの行動パターンの詳細情報を収集するための行動パターンデータベース７２。このデータベース７２は、リモートコンピュータ２から送信されたイベントデータによって入力され、このデータベース７２により、行動パターン及びオブジェクトがコミュニティーの全域に渡って有する関係性を示す図を作り上げることができる。
【０１０５】
３）オブジェクトの詳細情報が送信されている間にリモートコンピュータ２から送信される識別コードをオブジェクトと関連付けることで、コミュニティー内のリモートコンピュータ２とそれらリモートコンピュータ２上で観測されるオブジェクトとを関連付けるコンピュータ−オブジェクトデータベース７３。好ましくは、コンピュータは、リモートコンピュータから送信される次の少なくとも３つの識別子：物理システムに関連する識別子；オペレーティングシステムのインスタンスに関連する識別子；及びログインしたユーザに関連する識別子によって識別される。
【０１０６】
当然のことながら、夫々が平均して数百から数千のオブジェクト（これらオブジェクトの夫々は、多数の行動パターンを有すると共に他のオブジェクトと関連している）を有する例えば１０００万台以上のリモートコンピュータ２を有するコミュニティーにおいては、データベース７１、７２、７３において保持されるデータ量は膨大である。
【０１０７】
コミュニティーの全体に渡ってオブジェクトの行動パターンを監視すると共にオブジェクトを調査し且つ対象となるマルウェアに対してルールを展開する際には、ＥＮＺＯサーバ７４は、自動的に又は人としてのアナリストからの入力に従って、データベース７１、７２、７３に対してクエリ（問い合わせ）を行い且つ動作可能である。これらのルールは、ＦＸレイヤ６０及び／又はリモートコンピュータ１０上で動作しているエージェントプログラム１０にフィードバックされ、この書面の中のどこかで述べたように、リモートコンピュータ２上でのマルウェアの実行を停止するためにウェブブラウザ６１又はエージェントプログラム１０によってリアルタイムに使用される。マルウェアを正確に停止させるこれらのルールのパフォーマンス（実績）は、ＥＮＺＯレイヤ７０にフィードバックされ、ルールを改善するために用いられる。ここで用いられる技術は、以降の開示において更に記載されている。
【０１０８】
好ましい実施形態では、ＦＸ及びＥＮＺＯレイヤ６０、７０におけるサーバ６１、７４及びデータベース６２、７１、７２、７３のいくつか又は全ては、クラウドコンピューティングを用いて実装される。クラウドコンピューティングは、位置依存がなく、それゆえに、コンピュータ及び他のデバイスに対して、共用されるサーバがリソース、ソフトウェア及びデータを適宜提供するコンピューティングを提供する方法である。一般的に、クラウドコンピューティングの顧客は、物理的なインフラストラクチャを保有することなく、代わりに、第三者たる提供者から借り受けて使用することで資金的な支出を避ける。クラウドコンピューティングのユーザは、使用したもののみを対象として提供者に対価を支払うので、ハードウェア、ソフトウェア及びサービスに対する資金的な支出を避ける。新たなリソースは、迅速に配置可能である。これにより、ユーザにとっての柔軟性の度合いが大きくなる。
【０１０９】
クラウドコンピューティングの一例は、Ａｍａｚｏｎ．ｃｏｍクラウドコンピューティングプラットフォームであるＡＷＳ（Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅ：アマゾンウェブサービス）の中核になるアマゾンＥＣ２（Ａｍａｚｏｎ  ＥＣ２：Ａｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｃｏｍｐｕｔｅ  Ｃｌｏｕｄ）である。その他の一例は、アプリケーション及びデータを顧客がクラウド上に展開することを可能にするマイクロソフトクラウドプラットフォームであるＷｉｎｄｏｗｓ（登録商標）  Ａｚｕｒｅ  Ｐｌａｔｆｏｒｍ（マイクロソフトアズールプラットフォーム）である。ＥＣ２は、本例においてクラウドコンピューティングを提供するために使用されている。とはいえ、原理的には、その他の適切なクラウドアーキテクチャがベースコンピュータ３を実装するために使用可能であることは当然である。或いは、従来のデータセンターがベースコンピュータ３を実装するために使用可能である。または、従来のデータセンターとクラウドに基づくアーキテクチャとの組み合わせが使用可能である。
【０１１０】
ＥＣ２によれば、ユーザは、ユーザ自身のコンピュータアプリケーションを実行するための仮想的なコンピュータをレンタルすることができる。ＥＣ２によれば、任意の所望のソフトウェアを含む仮想マシン（アマゾンはそれを“インスタンス”と称する）の生成のためにＡｍａｚｏｎ  Ｍａｃｈｉｎｅ  Ｉｍａｇｅ（アマゾンマシンイメージ）をユーザが起動可能なウェブサービスを提供することで、アプリケーションの拡張性のある配置が可能となる。
【０１１１】
ユーザは、アクティブなサーバに対して時間単位で対価を支払うことで必要に応じてサーバインスタンスを生成し、起動し且つ停止することができる。結果、弾性的なコンピューティングが提供される。ＥＣ２によれば、ユーザは、待ち時間の最適化及び高いレベルでの冗長性を考慮したインスタンスの地理的位置を管理することができる。例えば、故障時間を最小化するために、ユーザは、故障の大部分の原因に対処するべく、互いに分離した複数のゾーンにサーバインスタンスを配置することができる。その結果、一のサーバインスタンスが他のサーバインスタンスをバックアップする。このように、クラウドは、ユーザのコンピューティングリソース及びその構成（例えば、リソースにインストールされたオペレーティングシステム及びソフトウェアパッケージ）の完全な管理を提供する。アマゾンＥＣ２によれば、ユーザは、オペレーティングシステム及びアプリケーションに最適なメモリ、ＣＰＵ、インスタンスストレージ及び起動用のパーティションサイズの構成（設定）を選択することができる。ＥＣ２は、新しいサーバインスタンスを取得し且つ起動するために必要な時間を数分に低減し、その結果、ユーザは、彼らのコンピューティングリソースの変化に合わせて迅速に容量を増減する（つまり、増加させ且つ減らす）ことができる。
【０１１２】
ＥＣ２は、多くのデータセンターを、米国東海岸（ＵＳ  Ｅａｓｔ  Ｃｏａｓｔ）、米国西海岸（ＵＳ  Ｗｅｓｔ  Ｃｏａｓｔ）、ヨーロッパ（ＥＵ、アイルランド）及びアジア太平洋（ＡＰＡＣ：Ａｓｉａ  Ｐａｃｉｆｉｃ）（シンガポール）を含む地理的に異なる地域に保持する。図４に示すように、好ましい実施形態では、サーバ及びベースコンピュータ３のデータベースは、これら複数の地理的位置８０に実装される。
【０１１３】
それゆえに、ＦＸレイヤ６０におけるウェブサーバ６１の特定のインスタンスに対してリモートコンピュータ２をどのように割り当てるかという重要な疑問点が生ずる。この決定に対する重要な考察点は、待ち時間を最小にすると共にウェブサーバ全体に渡って負荷を均等に分担するという点である。理想的には、使用されているウェブサーバを避け且つ要求されるウェブサーバの数を最小化するために、リソース上の負荷は、ウェブサーバの全てのインスタンスに渡って概ね均等に分配される。リモートコンピュータ上のエージェントプログラム１０の速度及びサイズを著しく増大させることがない又はベースコンピュータ３に対してオーバーヘッドを発生させることのないシンプルな解決法を実装することもまた望まれる。
【０１１４】
１）好ましい実施形態では、エージェントプログラム１０は、リモートコンピュータ２をウェブサーバ６１に割り当てる際に、リモートコンピュータ２の地理的位置を使用する（、即ち、クラウドの地理的位置８０に対する近接性に基づく）。リモートコンピュータの位置は、任意の都合のよい方法、例えば、既に知られている位置範囲のデータベースに対してリモートコンピュータ２のＩＰアドレスを調査する方法又は目的とするサーバに到達するまでに必要とされる“ホップ数”を特定するためにネットワーク経路解析を行う方法によって特定されてもよい。この機能は、リモートコンピュータ２上で実行されているエージェントプログラム１０によって、コンピュータ２に最初にインストールされた時に実行される。位置に基づいて割り当てることで、待ち時間が最小化される。
【０１１５】
２）好ましい実施形態では、エージェントプログラム１０は、どのウェブサーバ６１にリモートコンピュータがマッピングされるべきかを決定するために、リモートコンピュータ２の固有の識別子と共に行われるインストールの日時に基づいて、ランダムな数を生成する。これにより、数千ものリモートコンピュータが同時に実装されている場合であっても、ウェブサーバ６１の間で負荷を均等に分担するような、リモートコンピュータ２をウェブサーバ６１にマッピングするためのシンプルで、疑似的で且つランダムな方法が提供される。
【０１１６】
３）ＤＮＳ分散レイヤは、ＵＲＬを物理的なデータセンターにマッピングする。ドメインネームシステム（ＤＮＳ：Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）は、インターネット又はプライベートネットワークに接続されるコンピュータ、サービス又は任意のリソースのための分散型データベース上に構築される階層的なネーミングシステムである。それは、様々な情報を、参加しているエンティティの夫々に割り当てられているドメインネームに関連付ける。ＤＮＳ分散ネットワーク５０により、ＦＸレイヤ６０を構成する複数のサーバ６１間での負荷バランスが実現される。
【０１１７】
リモートコンピュータ２をウェブサーバ６１に割り当てるために、これらの技術の任意の組み合わせがエージェントプログラム１０によって使用されてもよい。好ましくは、これら３つの技術の全てが組み合わされて使用される。
【０１１８】
エージェントプログラム１０は、好ましくは、主たるＵＲＬが何らかの理由（例えば、サーバの故障）によって利用可能でない場合にリモートコンピュータ２を異なるＵＲＬに再度マッピングするための二次的なアルゴリズムを有している。また、マルウェアがＤＮＳメカニズムを動作不能に陥れてきた場合には、エージェントプログラム１０は、この目的のために確保されていた一連のダイレクトＩＰアドレスを直接的に参照することで、ＦＸサーバ６１と直接的に通信可能である。
【０１１９】
オプションとして、エージェントプログラム１０は、コンピュータが既に接続されているサーバ６１からのフィードバック／指示を受信することで、リモートコンピュータ２を異なるサーバ６１に再度割り当てることができるように構成される。これは、エージェントプログラム１０のサーバ６１に対する割り当てに対して中央での集中制御を行うために使用可能であり、結果、システムにおける柔軟性が増す。
【０１２０】
従って、このスキームによれば、地理的位置を取り扱いつつも、サーバ間で動的に負荷バランスを図り且つ柔軟性を付加するためのシンプルで且つエージェントによって管理された方法が実現される。既に公知の従来の構成では、負荷を他のサーバに分配するための特別なハードウェア負荷バランサがネットワーク中に配置されているか、又は、エージェントプログラム１０がインストールされた時点でエージェントがウェブサーバ６１に対して手動で割り当てられている。
【０１２１】
クラウドベースの分散アーキテクチャをベースコンピュータ３のために使用することは、全てのサーバに渡ってデータの統一性を維持しようと試み且つ多くのサーバの全てに渡ってデータの更新を管理する際に、課題を生み出す。これまでの記載で明らかなように、典型的な実装例としてのウェブサーバ６１は、多くのデータを取り扱っている。データ中には、どのオブジェクトがマルウェアであるかについてのルールを決定するために使用可能な多くの共通性があるはずである。しかしながら、全ての地域の全てのウェブサーバ６１に全てのデータを格納することは現実的ではない。これは、データがリアルタイムで共通化されているか否かを判定するという課題を生み出す。
【０１２２】
この問題を解決するために、好ましい実施形態は、次のスキームを採用する。ＦＸレイヤ６０の各ウェブサーバ６１は、リモートコンピュータ２上で確認されたオブジェクトについてリモートコンピュータ２から受け取るデータのパケットを調査する。エージェントプログラム１０は、データパケットのチェックサムを生成し、それをウェブサーバ６１に送信する。ウェブサーバ６１は、既に確認されており且つ既にＥＮＺＯサーバ７４に送信されたオブジェクトのデータベース６２を有している。ウェブサーバ６１は、受け取ったデータのチェックサムがそのデータベース６２に存在しないかを確認する。チェックサムが見つかった場合には、そのデータは、既にＥＮＺＯサーバ７４によって確認されている。この場合、ウェブサーバ６１は、ソフトウェアの断片の評判又は特定のイベントの発生頻度の判定を支援するために、そのデータベース内でチェックサムに関連付けられ且つデータが確認された回数のカウント数を増加させればよい。この情報は、それからＥＮＺＯサーバ７４に転送可能である。チェックサムがＦＸデータベース６２内に見つからなければ、ウェブサーバは、リモートコンピュータからのデータパケット全体を要求し、これをＥＮＺＯサーバ７４に転送する。ＥＮＺＯサーバ７４は、適切なデータベース７１、７２、７３にこのデータを格納する。従って、ＥＮＺＯレイヤ７０は、オブジェクトデータベース７１内に、全てのデータオブジェクト、リモートコンピュータの全てにおいて確認されたそれらのメタデータ及び行動パターンのマスターリストを保持する。このマスターリストは、全ての地理的位置８０内の全てのウェブサーバ６１に返送される。従って、全てのウェブサーバ６１は、コミュニティーによってどのオブジェクトが確認されたかについての情報を用いて更新される。
【０１２３】
このスキームは、典型的にはウェブサーバによって受信されたデータの各断片がシステム内の他の全てのウェブサーバに即座に伝搬する従来のスキームと比較して、ネットワーク内の処理負荷及びトラフィックを概ね１／５０倍に低減すると認められている。
【０１２４】
ＥＮＺＯレイヤ７０内のマスターデータベース７１，７２、７３に保持されるデータにより、ユーザのためのデータに対して、拡張性、アクセス性及び柔軟性が付加される。当然ながら、ただ一つの活動中のＥＮＺＯサーバ７４が使用されている場合には、仮のそのサーバがアクセス不可能になるとすれば、全ての活動中のデータが失われてしまう。このため、各地域８０の少なくとも１つのＥＮＺＯサーバ７４に冗長性を持たせることが好ましい。これは、ウェブサーバ６１が全て同じＥＮＺＯサーバ７４に直接的に接続されていない一方で、ウェブサーバ６１が自身の地域８０のＥＮＺＯサーバ７４のみに接続されていることを意味する。このため、データを複数のデータベースサーバに提供する拡張的な方法が必要となる。
【０１２５】
図５は、ウェブサーバ６１からＥＮＺＯサーバ７４へのデータの更新スキームを概略的に示す。各ウェブサーバ６１は、各ウェブサーバ６１に接続された２つの一時的なデータベース６３ａ、６３ｂを有している。初期の開始点においては、一方のデータベース６３ａは、部分的にいっぱいの６３ｂ（アクティブ）であり、他方は空（非アクティブ）である。オブジェクトについての情報がリモートコンピュータ２からウェブサーバ６１によって受信される間に、ウェブサーバ６１は、アクティブなデータベース６３ａにそれを格納する。この情報は、リモートコンピュータ２によって受信された、リモートコンピュータにおいて確認されたオブジェクト又はイベントについてのチェックサム情報であろう。ウェブサーバにおいてチェックサムが以前に確認されたことがない場合には、チェックサムと共に、オブジェクト又はイベントについての関連するデータがデータベースに格納される。
【０１２６】
アクティブなデータベース６３ａが所定サイズになると又は何らかのその他の基準が満たされると、この状態になった時点でのタイムスタンプと共に、アクティブなデータベース６３ａの内容が、長期保存可能なストレージに移動される。これが発生している間、非アクティブなデータベース６３ｂがアクティブになり且つ新たなデータが来るたびに当該新たなデータで満たされ始める。そして、以前アクティブであったデータベース６３ａは消去され且つ非アクティブになる。再びこのデータベースがいっぱいになると、タイムスタンプと共にデータベースの内容を長期間保存可能なストレージに移動させるプロセスが繰り返され、データベースが取り替えられる。好ましい実施形態では、ＦＸレイヤ６０は、長期保存可能なストレージに対する入力／出力を管理する責任を負うＳ３サブレイヤ６５を有する。Ｓ３（Ｓｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ：シンプルストレージサービス）は、アマゾンウェブサービスによって提供されているオンラインストレージウェブサービスである。Ｓ３は、シンプルなウェブサービスインタフェースを介して安全で且つ揮発性でない環境下で大量のデータを格納するためのアマゾンのサービスである。Ｓ３は、ＦＸサーバからＥＮＺＯサーバに送信されるＦＸサーバデータの履歴を格納するために使用される。データのブロックが長期保存可能なストレージ６６に移動すると、Ｓ３レイヤ６６は、ＥＮＺＯサーバがそのデータベースをアップデートできるように、このデータをＥＮＺＯサーバ７４又はサーバに転送する。全てのＦＸサーバは、Ｓ３ストレージサービスを介して、全てのＥＮＺＯサーバにデータを入力する。
【０１２７】
データベース６３ａ、６３ｂは、例えば数分又は数秒毎に長期保存可能なストレージ６６にデータを移動することで空になってもよい。しかしながら、当然の如く、実際に使用される期間は、データベースの負荷及びサイズに応じて選択可能であり、例えばデータベースの負荷又はデータのサイズに基づいて動的に選択されてもよい。
【０１２８】
従って、Ｓ３レイヤ６５は、コミュニティー内の全てのウェブサーバ６１によって受信されたデータの全てを保持する。これは、図６に示すように、多くの利点を有している。
【０１２９】
まず、これは、例えばＥＮＺＯサーバ７４に問題が生じた場合にマスターＥＮＺＯデータベース７１、７２、７３の再構築を許容するために使用可能である。また、例えばＥＮＺＯサーバにおけるソフトウェアのアップグレード等の問題によってＥＮＺＯサーバ７４が保持しているデータがいくらか破損してしまった場合には、ＥＮＺＯサーバ７４におけるデータベースの状態を、破損が発生する前の時点の状態に戻すことができる。Ｓ３レイヤ６５におけるデータのブロックに関連付けられたタイムスタンプを使用することで、ＥＮＺＯサーバ７４は、Ｓ３レイヤ６５における長期保存可能なストレージ６６内のデータブロックのＥＮＺＯサーバ７４への再送信を要求することができる。その結果、サーバのデータベース７１、７２、７３は、最新のものになる。
【０１３０】
更に、このスキームを用いて、複数の地域８０のＥＮＺＯサーバ７４は、Ｓ３レイヤからデータを受信することで、ＥＮＺＯデータベースのバックアップデータベースを生成することができる。これは、活動中のＥＮＺＯデータベース７４に影響を与えることなく実行可能であり、これらデータベースはシームレスに機能し続けることができる。
【０１３１】
代替方法として、マスターサーバに指定された単一のＥＮＺＯサーバにおけるデータベースにデータを移動すると共に、マスターサーバからコミュニティー内のその他のサーバにデータを伝搬する方法がある。しかしながら、この方法は、実質的には、一つの“活動中の”サーバ及び一若しくは複数のバックアップを生成している。従って、バックアップサーバが使用されているものの、活動中のサーバは、タスクの大部分、例えば、エージェントから受信したデータの前処理、データベースの更新及び脅威のためのデータの解析を実行する。従って、活動中のサーバは、バックアップサーバよりも高性能でなければならない。これは、どちらかと言えば、リソースの無駄であり且つ非効率である。対して、好ましい実施形態は、サーバ間で均等に負荷を分担する。
【０１３２】
オペレータ、人としてのマルウェアの解析者等は、調査等のために、活動中のサーバからのデータのコピーを保有していることが好ましい。活動中のサーバ及びバックアップサーバと同様な方法でイメージサーバが生成されてもよい。システムのユーザは、オフラインでの使用のためにイメージを取得する必要がある場合に、イメージサーバをオフラインにする。イメージが取得されると、イメージデータベースは、Ｓ３レイヤからのデータのブロックを用いて最新のものになる。
【０１３３】
クラウドコンピューティングは、ウェブサーバのインスタンスを極めて迅速に（例えばほんの数分のうちに）再生成することができる。従って、クラウドコンピューティングは、トランザクションの量が増える（又は減る）実装環境下で有益である。この場合、新たなサーバインスタンスは、新たな負荷を処理するために迅速に生成可能である。しかしながら、イメージを生成するためには、活動中のサーバのイメージを取得する必要がある。これは、イメージングの間にそのインスタンス上で実行されているプロセスを破壊につながりかねない。従って、この期間中に活動中のサーバを使用不可能にすることは、明らかに受け入れ可能なことではない。従って、活動中のサーバ及びバックアップサーバと同様の態様で更新されるＥＮＺＯサーバを支援するべく、特別の専用のイメージサーバが配置される。この場合、イメージサーバは、オフラインになった上でイメージが取得される。このプロセスは、例えば３０分かかるかもしれない。この間、イメージサーバは、Ｓ３サーバからの更新を受信せず、それゆれに最新の状態にはない。しかしながら、サーバがオフラインになった正確な時間が分かっているがゆえに、オフラインになった時点よりも後のタイムスタンプを有するデータブロックをＳ３サーバに要求することで更新可能である。従って、更新されたサーバのイメージがオフラインでの使用のために取得可能であり、システムの実行に影響を与えることなくイメージが最新のものになる。
【０１３４】
ＥＮＺＯレイヤ７０のアーキテクチャはスケールアウト可能であることが好ましい。例えば、活動中のサーバは、ウェブサーバ６１又はエージェントプログラム１０から見れば、トラフィックの増加に起因して全能力を使用してしまうかもしれない。例えば、ＥＮＺＯレイヤ７０に送信される大量の新たなデータに繋がるものの、より多くのリモートコンピュータ２がシステムに接続されるかもしれないし又は共通のソフトウェアパッケージが更新されるかもしれず、これらの現象は、ＥＮＺＯレイヤ７０に送信される大量の新たなデータを生み出し得る。この場合、水平的にスケールアウトするために（既存のサーバにより多くのＣＰＵ／メモリを追加することとは対照的に）、二次的な又は更なる活動中のサーバインスタンスがＥＮＺＯレイヤ７０において生成可能である。上述したように、クラウドコンピューティング環境化でＥＮＺＯサーバ７４のイメージを生成することは、相対的に容易である。図７に見られるように、各サーバ７４のデータは、複数のセクションに分割されている。この場合、サーバ７４上のデータは、８つのセクション０−７に分割されている。各セクションは、サーバ上のプロセスを分担する。サーバが分割される時、様々なセクションが各サーバに割り当てられてもよい。例えば、図７に示す例では、オリジナルなサーバＬ１がデータ０−３を処理し、新たに生成されたサーバＬ２がデータ４−７を処理する。各サーバは、前処理及び自身のデータの格納を取り扱う。データを解析する目的のために、これら複数のサーバからのデータは、人としての解析者がマルウェアを調査する際に完全なデータのセットを検討できるように（後に詳述する）、好ましくは、サーバによって集約される。もちろん、データは、必要に応じてサーバの間で異なる方法で分割可能である。
【０１３５】
単一のデータベースを保持し且つ複数のサーバの全体に渡って負荷を分散する必要があるかどうかを分析しなければならない代わりに、好ましい実施形態では、データベースは、予め分析されている。複数のサーバの全体に渡ってデータベースの処理負荷の更なる分散を図るように移行することはずっと容易である。
【０１３６】
データセクションの数は、好ましくは、８になると選択される。なぜならば、これは、適切な柔軟性及び拡張性を付与するために十分だからである。しかしながら、８００％を超える拡張を常に必要とするビジネスは珍しい。とはいえ、その他の複数の数のデータセクションが適宜使用可能である。
【０１３７】
このアーキテクチャによれば、複数の位置及びサーバの全体に渡って、大量のデータを管理することができる。アーキテクチャはスケールアウト可能であり、サーバは、余分な仕事を増やすことなく又はシステムの実行に影響を与えることなくコピー可能である。データは、動的に変化可能なサーバの全体に渡ってやりとり可能である。
【０１３８】
傾向データの使用
マルウェアは、かなりのペースで進化する。歴史的に、マルウェアは、単一の感染物（モジュール又はプログラム）を利用して多くのコンピュータに感染していた。これによりマルウェアの調査者が感染に迅速に気付くことができ、脅威を識別し且つ抑止するためにシグナチャーが迅速に展開された。直近の１０年において、マルウェアの作者は、共通の目的を共用する多くの可変モジュールを含む脅威を作成してきた。これらの脅威を検出し且つ抑止することは、マルウェアの調査者にとって、並びに、任意の一つが一又は複数に感染し得る全てのバリエーションを識別し且つ抑止するために必要なシグナチャーの生成及び配布にとって、ずっと大きな困難である。このような可変で分散するという現代の脅威の性質に起因して、マルウェアの調査者は、脅威が存在することを識別する際に遅れをとっている。
【０１３９】
パス及びファイルの詳細によって相関がある新しいプログラム及びモジュールのハッシュ値、シグナチャー及び統計データを収集し且つこの情報を中央位置に集約することで、新たな脅威をより迅速に識別可能な解析方法を使用することができる。
【０１４０】
生成される新たな商用プログラム及びモジュールの量は、日によらずにおおよそ一定であると考えられる。このデータは、オブジェクトについて収集されたメタデータ又はイベントデータのいずれでも評価可能である。一つの例において、データは、新たに生成されるファイルのパス（フォルダ）位置で評価可能である。データはまた、ベンダー、製品及びバージョン情報、レジストリキー又はベースコンピュータに転送されるデータに由来するその他の任意のシステムのような詳細な情報と共に、ファイル名及びファイルタイプ（例えば、．ｅｘｅ、．ｄｌｌ、．ｄｒｖ等）で評価可能である。これらの要素のうちの任意の組み合わせも利用可能である。データをグルーピングするためにどの方法が選択されても、グループの全体に渡ってこのデータの分布及びパターンのためのベースライン（基準ライン）を確立することで、アウトライナーを迅速に識別することができる。
【０１４１】
図８は、ある時間に渡って収集されたデータがファイルシステム内のフォルダに応じてグルーピングされた例を、確立された通常の分布（ベースライン）と比較しながら示す。ｗｉｎｄｏｗｓ  ｓｙｓｔｅｍ３２サブフォルダ内の新たなプログラムの数が任意の所望期間ｔ中（例えば、所望日）は通常はｘになり且つ考慮されている特定の期間ｔ１中は１．４ｘになる（又は、その他のいくらかの所定率を超える）場合には、それは、マルウェアである可能性がある活動を意味する新たなファイルの数の異常な増加を示している。この識別により、これらのアウトライナーに大きく着目することができる。自動的にグルーピングし、識別し又は調査能力を優先付けると共にマルウェアの判定を行うこのアウトライナー情報を使用可能なプロセスは、容易に開発可能である。マルウェアを識別するために自動化されたルールが使用される場合には、この情報は、アウトライナーとして識別されたグループ内のオブジェクトに適用される際のこれらのルールの感応性を自動的に高めるために使用可能である。
【０１４２】
この技術の他の例は、ファイル名に着目し且つその名称を利用する新たなオブジェクトの数若しくは全てが新たな名称を有する新たなオブジェクトの数を比較することである。これは、製品の管理容易性を実現するために整合性を必要とする大部分の商用ソフトウェアの一般的な原則に反している。大部分の商用ソフトウェアは、２つから３つの名称のみを有し、各ファイル名は、新たな製品が利用可能になるにつれて２つから３つの異なる変名のみを有する。対して、いくつかのマルウェアは、同一の、同様の又は同様の構造の名称を利用する数千もの変名を有しており、それらは、極めて短い猶予時間（数秒から数週間）の間だけしか関連する名称を使用しないとコミュニティーによって確認されている。
【０１４３】
原則として、猶予時間の長さはいずれも選択可能である。実際、これは、１週間毎のような長い期間というよりはむしろ、１５分毎、２時間から３時間毎又は１日という桁の期間になりやすい。
【０１４４】
好ましい実施形態では、調査者に対して文脈（コンテキスト）を提供する技術が提供される。マルウェアを検出する際に、人としての解析者及びコンピュータによって自動化された解析は、異なる強みを有しており、双方の能力を生かすためにある程度は一緒に使用されることがしばしばある。コンピュータは、大量のデータに対してルールを適用し且つ処理すること得意である。本願では、リモートコンピュータ２上で実行されているエージェントプログラム１０から受信されるデータの量は膨大であり、コンピュータによる処理が適している。マルウェアを判定するためにこのデータの全てを人としてのオペレータに見分けさせることは現実的ではない。他方で、経験豊富な人としての解析者は、オブジェクト及び同様のオブジェクト並びにそれらの内容についての適切に注目されたデータを前提として、マルウェアを見分けることに長けている。人としての解析者は、ルールのセットを減らし且つ機械に教え込むことが難しい方法で、しばしば、“直感的に”マルウェアを見分けることができる。例えば、ｋｅｒｎｅｌ３２．ｄｌｌはウインドウズオペレーティングシステム（Ｗｉｎｄｏｗｓ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に関連付けられたファイルである。マルウェアプログラムは、ユーザにとって即座に疑わしいことが明らかでありつつも見分け方を機械に教えることが難しい類似の名称、例えばｋｅｒｎｅｌ６４．ｄｌｌと言う名称を有しているかもしれない。
【０１４５】
関係性のあるデータがユーザに提示されている場合には、後から考えるとそのパターンが自明なものであるかもしれない。しかしながら、これは、リアビューミラーアプローチ（ｒｅａｒ  ｖｉｅｗ  ｍｉｒｒｏｒ  ａｐｐｒｏａｃｈ）である。その問題は、解析者が自分の時間を重要なデータに集中させることができるように、ベースコンピュータ３において受信された大量のデータの中に関係性のあるデータを見つけることである。図９に示すように、必要なことは、マルウェアの調査者が調査し且つ必要な動作１０２を行うことで悪意があるか若しくは安全１０３であるかというフラグをオブジェクトに立てるために着目するべき開始点を提供するために、原データ１００から不必要な要素を取り除いて関連するデータ１０１のグループを生成することである。
【０１４６】
当然ながら、コミュニティーの全体に渡ってリモートコンピュータ２上の単一のオブジェクトは、リモートコンピュータ２上の他のオブジェクトと強い関連性を有することが可能である。関連性のネットワークを生成するために、エンティティの間の繋がりをマッピング可能ないくつかのツールが現存する。しかしながら、マルウェアオブジェクト及びそれの他のオブジェクトに対する関連性のために使用されると、高密度で且つ複雑すぎるがゆえに人としての解析者がマルウェアを識別するという目的にとっては役に立たない図表が得られるに過ぎない。問題は、解析者にとって役に立つデータが抽出されることでマルウェアである可能性がある候補に迅速意着目することができるように、このデータをふるいにかけることである。
【０１４７】
図１０から図１３に示す好ましい実施形態は、ＥＮＺＯサーバ７４上で実行され且つデータベースに対してクエリを行うための視覚に基づくツールをユーザに対して付与するソフトウェアプログラムを提供する。ＴＳＱＬのようなクエリ言語は、例えば、ユーザの入力に基づいてデータベースに対してクエリを行うために使用されてもよい。上述したように、ＥＮＺＯレイヤ７０は、全てのリモートコンピュータ２上で確認された全てのオブジェクトの特性及び活動の記録を、それらのデータベース内に有している。図１０は、オンスクリーン表示の例を示しており、現在のクエリの結果に合致しているオブジェクト（そのシグナチャーによって判定されている）が行によって示されているテーブル１０５を含むユーザインタフェースを示している。ユーザインタフェースは、新たなクエリ１０６を生成するための、現在の及び最近のクエリ１０７を表示するための、並びに、現在のクエリ１０８のためのテーブル内に表示されたデータをソートするためのツールを提供する。一つの画面に収まるよりも多くの結果があってもよいことは明らかである。従って、ユーザインタフェースによって提供される適切な制御１０９を介してユーザがアクセス可能な、結果を示す複数のページがあってもよい。
【０１４８】
テーブル１０５は、オブジェクトについての情報を示す複数のデータ列を有している。この情報は、リモートコンピュータ２によってベースコンピュータ３に送信されたオブジェクトについて収集された任意のデータ、そのメタデータ又はその行動パターンを含んでいてもよい。これは、例えば、ファイルの名称、ファイルの位置（パス）、オブジェクトに最初に遭遇した国、オブジェクトに遭遇したリモートコンピュータの識別子、そのオペレーティングシステム及びバージョン番号、ウェブブラウザ及びコンピュータにインストールされているその他の任意のセキュリティ製品の詳細情報、ファイルの作成者、ファイルに関連付けられたアイコン等のいずれかを含んでいてもよい。この情報は、ファイルについてのメタデータ、例えば、オブジェクトの作成者若しくはサイズ又はオブジェクト内の実行可能な指示に関連する情報を含んでいてもよい。このデータは、“アクター”及び“ビクティム”情報及びそのレジストリキーの詳細情報を含んでいてもよい。この情報は、オブジェクトが安全であるものとして又は安全でないものとしてリモートコンピュータ２又はＦＸサーバ６１において識別されたか否かについての情報を含んでいてもよい。
【０１４９】
表示される情報は、クエリによって返答された又はコミュニティーの全体に渡る全てのオブジェクトの中で、特定の属性がどれぐらいの頻度で現れたかを示すカウント数を含んでいてもよい。加えて、この情報は、容易に理解される情報をあまり含んでいなくてもよい。上述したように、オブジェクトについて収集された情報は、実行可能な部分（例えば、ファイルの実行可能な部分の最初の５００バイト）のチェックサムを含むことが可能である。多くの場合、チェックサム又はその他のデータの実際の値は、ユーザにとって殆ど又は全く興味のないものである。従って、好ましくは、この情報のいくつか又は全ては、色、形状及び／又は異なるシンボルを使用する図表態様でユーザに提示され、結果、ユーザは、より直感的に且つより迅速に、データ中のパターンを見分けることができる。
【０１５０】
好ましくは、少なくとも一つのデータ列が、以下のスキームに応じて提示される。
【０１５１】
１）オブジェクトを示すデータ行の間においてその列の値が固有である場合には、数値“１”が提示される。
【０１５２】
２）画面上のデータ行の間において又はクエリに合致する全てのデータ行の間において値が複製される場合には、色付けされたシンボル（例えば、緑色の三角形又は青い四角の中の“Ｐ”という赤文字）がその値のために割り当てられ、且つ、その値を共有する全ての行におけるその列に表示される。従って、シンボルが何を示しているかを知る必要なく、ユーザは、一見しただけで画面上の行が属性の共通性を有していることを認識可能である。
【０１５３】
これは、更なるクエリを実行するための開始点を提供する。例えば、ユーザは、興味を引くオブジェクトの間の共通性を迅速に認識することができる。この開示のどこかで説明したように、典型的なマルウェアの痕跡は、オブジェクトが多数のファイル名、ファイル位置、類似のファイルサイズ、類似のコード部分等を使用しているということである。このプログラムにより、ユーザは、例えば、クエリの述部に特定の属性値を追加するために又は述部におけるこの列の値と共に新たなクエリを開始する等のために、テーブル内の列をクリックし且つクエリ生成ツール１０６を使用することで、クエリを改善することができる。
【０１５４】
このプロセスの最終的な目的は、共通性を有する最大数の行に返答するクエリをユーザが見出すことである。このプロセスにより、ユーザは、基準を要求する類似のオブジェクトを正確に識別するために使用されるハッシュ値及びその他のメタデータ定義からなる基準のセットを識別する。例えば、図１１は、共通性を有するオブジェクトを示し且つ高度な共通性を有する行に返答するユーザクエリを示している。ソフトウェアはまた、好ましくは、クエリから返答を受けたオブジェクトのための統計画面をユーザが持ち出すことを許可する。特に、図１２に示すように、インタフェースは、ユーザに対して、クエリから返答を受け、マルウェアであるとしてデータベースに登録されている（知られている）オブジェクトの数、マルウェアでないと登録されている数、及び、オブジェクトがマルウェアか否かがまだ知られていない数（図１２においては、異なる影／色が付されたバーによって示されている）を表示可能である。クエリの結果又はユーザによって選択されたある属性を有するオブジェクトについての他のデータは、図１３に示すように、図表の形式、例えば、バーグラフ又はパイグラフ（円グラフ）で提示可能である。ユーザは、クエリの結果がマルウェアを判定するか否かを決定する際に、テーブル１０５に示されている情報に加えて、この情報を考慮可能である。ユーザはそれから、例えばクエリによって返答を受けたオブジェクトをマルウェアであるとして、マルウェアでないとして又は疑わしいものとしてタグ付けし且つ更なる調査を要求するという適切な動作を行うことができる。従って、オブジェクトを確認した全てのエージェント１０においてオブジェクトの統一的な表示物（即ち、そのメタデータ及び行動パターン）にクエリを実行し且つ解析することが可能であることにより、人によるものであろうがコンピュータによるものであろうが、より情報量のあるオブジェクトの表示物を得ることができる。加えて、オブジェクトの任意の基準、即ち、メタデータ及び行動パターンに基づいて、オブジェクトを横断的にグルーピングすることができる。
【０１５５】
一例をあげると、悪意のあるオブジェクトがオペレーティングシステムの“ごみ箱（ｒｅｃｙｃｌｅ  ｂｉｎ）”に位置していることは、ある種のマルウェアの、以前に認識済みの痕跡かもしれない。これは、ユーザにとって、パス属性を確認することでごみ箱に位置する全てのオブジェクト（又は、ユーザによって指定された特定の時間フレーム中に遭遇する全てのオブジェクト）を見つけるクエリを実行するための開始点となる。これは、ユーザに対して、確認された異なるオブジェクトに対応する行（例えば、異なるＭＤ５シグナチャーに対応する行）を表示する。ユーザは、列内の値をクリックすることで興味ある属性を選択し、結果、行を通して掘り下げることができる。例えば、ユーザは、オブジェクトのアイコンがノートパッドプログラム（それは、マイクロソフトウインドウズ（ＲＭＴ）オペレーティングシステムに搭載されている）に使用されているアイコンと同一であることをその属性が示しているものの、マイクロソフトのオリジナルのプログラムではないオブジェクトを選択してもよい。システムは、好ましくは、クエリを改善する際にブール演算を適用することをユーザに許可する。クエリがオブジェクトを分類する際により多くの有用な情報をユーザに与えるために、システムは、悪意がある又は無害であるとシステムが知っているオブジェクトをクエリがどの程度包含しているかについての統計をユーザが持ち出すことを許可する。
【０１５６】
このスキームに応じてオブジェクトをグルーピングすることに従事するユーザは、熟練したマルウェアの解析者である必要はない。ユーザは、ツールを使用すること並びにクエリを実行し且つ共通性を探索することでオブジェクトをグルーピングすることに対する基本的な訓練のみを必要とする。熟練したマルウェアの解析者は、クエリによって対象に含められたオブジェクトの最終解析者となることができる。このシステムの利点は、人としてのオペレータが完了させるにはタスク量が多すぎて現実的ではない原データの処理にコンピュータが使用されるという点である。データをグルーピングする人としてのオペレータは、熟練者である必要はなく、その結果、ビジネスとしてのコストの低減につながる。これは、コストの低減につながると共に、更なる調査の有力な候補になると判明したクエリに対して熟練したマルウェア解析者を集中させることができる。従って、これらオペレータのスキルは、マルウェアを識別する彼らの経験を使用する際に、最も効果的に配置される。
【０１５７】
図９に関して、ステージ１０３において、クエリによって返答を受けたオブジェクトを安全である又は安全でないものとして分類する際にクエリ（Ｑ５）が決定性のクエリであるとユーザが決定する場合には、ウェブサーバ６１及び／又はリモートコンピュータ２におけるエージェントプログラム１０に対してルールが返送され、ウェブサーバ６１又はリモートコンピュータ２において確認された新たなオブジェクトが安全であるか又は安全でないかをリアルタイムに決定する際に使用される。
【０１５８】
コミュニティーによって以前に確認されていない新たなオブジェクトがリモートコンピュータ２若しくはウェブサーバによって取得され、且つ、リモートコンピュータ２若しくはウェブサーバ６１によって実行されているルールの一つによって安全でないとみなされる場合には、リモートコンピュータ２上でオブジェクトの実行がリアルタイムに停止されるか又はリモートコンピュータ２のユーザに警告が発せられると共に継続するか否かの選択肢が与えられる。更に、リモートコンピュータ２（それが割り当てられているウェブサーバ６１を介して）又はウェブサーバ６１は、ルールによって新たなオブジェクトが安全である又は安全でないと判定されたことをＥＮＺＯサーバ７４に報告可能である。ＥＮＺＯサーバ７４は、この新たな発見を用いてそのマスターデータベースを更新可能である。この新たな発見は、他のリモートコンピュータ２及び／又はウェブサーバ６１に送信可能であると共に、そのシグナチャーを有するオブジェクトは安全でなく将来阻止されるべきである又は安全であり実行が許可されるべきであるとそれらのデータベースを更新するために使用可能である。
【０１５９】
或いは、ルールは、疑わしいオブジェクトを監視するために、ＥＮＺＯレイヤにおいて人としての解析者によって使用可能である。ルールに包含されるオブジェクトは、人としての解析者に対して表示可能である。解析者は、各オブジェクトに対して順番に、それが悪意があるか又は無害であるかを決定すると共に、オブジェクトをマーキングすることができる。各オブジェクトに対するこれらの判定は、ウェブサーバ６１及び／又はエージェントソフトウェア１０に返送され、リモートコンピュータにおいて遭遇した際にオブジェクトの実行が許可されるか否かをリアルタイムで決定するために使用される。この方法は、ウェブサーバ６１及び／又はエージェントソフトウェア１０においてリアルタイムでルールを適用する動作と比較して、新たな脅威に対してそれほど迅速に対応することはない。しかしながら、“誤った肯定判断”の数を少なくすることが望まれる場合又はそれらがマルウェアであると確定的な判定がなされる前に更なる調査を必要とする疑わしいオブジェクトを識別することが得意なルールであると判明する場合には好ましいかもしれない。
【０１６０】
更に、この動作は、半自動化可能である。アプリケーションは、全ての又は任意の動作と並行して、悪意がある又は無害であると判定されたグループ等のグルーピングを監視する。これらの動作を追跡することで、ＥＮＺＯサーバ７４は、人としての解析者から、どのようにしてオブジェクトを自動的に識別し且つ判定するかを学習することができる。アプリケーションは、好ましくは、ユーザによって実行されたクエリを記憶可能である。同じクエリがユーザによって繰り返し実行されており且つマルウェアオブジェクトに対して返答している場合には、又は、オブジェクトがマルウェアであると判定するアクションを調査者が絶えず行っている場合には、システムは、この状態を自動的に認識すると共に対象となるオブジェクトをマルウェアとして判定するための基準及びアクションのルールを生成することができる。このルールは、ルールに合致するオブジェクトをとらえ且つそれらを悪意のあるものとして判定するためにリアルタイムの動作を行うことができるように、ＦＸサーバレイヤ６０に送信可能である。これらのルール及びルールによって適用されるマルウェアのグルーピングの固有性は、エージェント及びＥＮＺＯサーバ７４の双方にフィードバック可能である。このようにして、ＦＸサーバ６１は、ＥＮＺＯサーバ７４によって認められ且つ分配されたアクションを、それに代わって実行することができる。同様に、これら同様のプロセスは、無害のオブジェクトのグループに適用可能であり、“悪意のある”オブジェクト用のルールと同様の方法でＦＸレイヤ６０に返送可能なオブジェクトを“良い”ものであるとして判定するためのルールが生成される。従って、ＥＮＺＯレイヤ７０によれば、ユーザは、これらのグルーピングを容易に識別することができる。ＥＮＺＯレイヤは、全ての又は任意の動作と並行して、悪意がある又は無害であると判定されたグループ等のグルーピングを監視する。これらの動作を追跡することで、ＥＮＺＯレイヤ７０は、人から、どのようにしてオブジェクトを自動的に識別し且つ判定するかを学習することができる。
【０１６１】
ＥＮＺＯレイヤ７０は、傾向を監視可能であり、人としての解析者の注意を、以前はよいものとして知られていたプログラムの行動パターンの進化等の情報に向けることができる。例えば、合法なバージョンのソリティアというゲームは、ある期間に渡ってリモートコンピュータ上のプログラムによって実行される動作から、特定の行動パターンのプロファイルを有しているとＥＮＺＯサーバ７４によって観測される。ある期間が経過した後にそのプログラムが新しくて疑わしい行動パターン（例えば、ドライバをインストールしようと試みる又は他国のウェブサーバにアクセスするパターン）を示し始める場合には、このプログラムに対して調査を要するフラグが立てられる。
【０１６２】
更に、好ましくは、リモートコンピュータにおけるエージェントプログラム１０は、“誤った肯定判断”、即ち、合法なソフトウェアであるとユーザが信じているオブジェクトに対してマルウェアであるというフラグが立てられたことをユーザがシステムに報告することが可能なインタフェースを提供する。システムは、この情報をＥＮＺＯサーバ７４にフィードバックするように構成される。このとき、システムは、マルウェアを見つける際のルールがもはや信頼できる程度に決定的ではないと判定可能であり、このルールを使用不可にすることができる。或いは、システムは、このルールに対して、人としての解析者による手作業での検討及び／又は修正に付されることを示すフラグを立てることが可能である。或いは、誤った肯定判断にも関わらずルールは殆どの場合に有用であり且つ誤った肯定判断はアウトライナーであると決定可能である。矛盾している無害なオブジェクトは、それをホワイトリストに載せることで、ＦＸレイヤ７０におけるルールから特別に除外可能である。
【０１６３】
注目すべきは、ルールは優先順位を付けることが可能（優先度に応じて順に適用可能）であり、特定の判定結果、位置、評判、年齢又はデータベースによって知られている若しくは由来するその他の任意の基準を有するオブジェクトに対してのみ適用するように構築可能であるという点である。例えば、オブジェクトがマイクロソフトから出ていると第１のルールが判定する場合には、その他のルールを適用しないと決定されてもよい。対して、オブジェクトが疑わしいと第１のルールが判定する場合には、その他のルールを適宜適用すると決定されてもよい。
【０１６４】
従って、ＥＮＺＯサーバ７４上で実行されている好ましいソフトウェアアプリケーションは、オブジェクト行動パターンを強固に監視し且つ評価する。このソフトウェアによって、強固なデータ可視化技術が提供されることもあって、ユーザは、リモートコンピュータ上及びそれが観測される文脈的環境上でのオブジェクトの振舞いを完全に理解することができる。このソフトウェアによれば、大規模な調査チームが協働してより一層作業を行うことができ、熟達したシステムの自動化を通して、人による調査のスキル及び経験にレバレッジをかけることができる。
【０１６５】
設定可能なファイアウォール
コンピュータが感染する前に、例えば、感染したファイルがＥメールによって受信された若しくはダウンロードされた又はインストールされた若しくは初めて実行された時点で、マルウェアを停止させることが望まれる。
【０１６６】
マルウェアプログラムのよく知られた例は、“Ｚｅｕｓ”というトロイの木馬である。このプログラムは、感染したコンピュータのバックグラウンドで実行され、ユーザが画面上でログインに関する詳細な情報を入力している間にユーザのキー操作を監視することで当該ログインに関する詳細な情報を盗み出す。この情報は、感染したコンピュータを制御するために使用可能な犯罪者のサーバに送信される。オンライン銀行のウェブサイト上におけるログイン情報の入力をマルウェアプログラムが検知した時には、ネットワークを介してインスタントメッセージが犯罪者に送信される。その結果、犯罪者は、この情報をほぼリアルタイムに受信する。トロイの木馬は、遠隔ユーザがコンピュータにリモートアクセスし且つリモート管理することを許可するプロトコルであるバーチャルネットワークコンピューティングプロトコル（Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｃｏｍｐｕｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）を用いて、ユーザのコンピュータをリモート管理可能である。犯罪者は、犠牲者の銀行口座から金銭を盗むことができる。
【０１６７】
大部分のアンチマルウェアソフトウェアが、マルウェアがホストコンピュータに感染することを妨げる又はできるだけ早くマルウェアとの通信を停止しようと試みる一方で、犯罪者の責任を見出し且つ訴求することにあまり注目がおかれることはなかった。一つの困難性は、アンチマルウェア又は警察でさえも、犯罪に関わるデータを探すために犯罪者のサーバに侵入することが違法であるということである。実際、マルウェアの影響を受けているがゆえに犯罪者の制御下にある合法なユーザのコンピュータの“ゾンビネットワーク”であるいわゆる“ボットネット”を犯罪者が使用しているというのはよく知られた策略である。
【０１６８】
図１４に示すように、好ましい実施形態は、エージェントプログラム１０と共にファイアウォール９５をリモートコンピュータ２に実装している。ファイアウォール自体はよく知られている。しかしながら、ファイアウォールは、通常、受信／送信トラフィックのためのネットワークにアクセスする許可をどのプログラムが有しているかを管理するために、ユーザによって入力されたルールによって設定されている。好ましい実施形態では、リモートコンピュータ２上のいずれのオブジェクトがファイアウォールを超えてネットワーク上のいずれのエンティティ９６、９７と通信可能かを制限するために、追加的に、ベースコンピュータ３からルールを取得する。例えば、リモートコンピュータ２上の全てのオブジェクトからやり取りされるメッセージからＺｅｕｓサーバ９７の既知の有効なＵＲＬがブロックされるということについての情報が、ベースコンピュータ３からファイアウォール９５に送信可能である。従って、ファイアウォール９５は、犯罪者のサーバとの通信をブロックするルールを実装可能である。
【０１６９】
これにより、マルウェアに対抗する価値ある二次的な防御方法が提供される。一般的には、マルウェアがコンピュータに感染することを防ぐことで、感染位置においてマルウェアを停止させることが望ましい。次の防御方法は、マルウェアが通信することを妨げることである。設定可能なファイアウォール９５は、マルウェアに対抗する次の防御方法を提供するために、リモートコンピュータによって保持されている悪意のあるオブジェクト及びネットワークＵＲＬについて展開されたルール及び知識にレバレッジをかけることができる。
【０１７０】
更に、好ましい実施形態では、エージェントプログラム１０は、悪意のあるインターネットトラフィックが検出された場合に、例えば法執行機関等の当局９８と連絡をとるために使用可能である。感染したコンピュータ２と犯罪者のサーバ９７との間のＩＰトラフィックは、ファイアウォール９５によって傍受可能であり、格納可能であり、当局のサーバ９８に送信可能である。その結果、当局は、マルウェアを介してどの情報を犯罪者が盗み出しているかを確認可能である。この情報は、更なる安全性のために、暗号化された形式で当局のサーバ９８に送信可能である。好ましい実施形態では、遵守するべき鑑識データの取り扱い及び証拠の保持のために極めて厳密なプロセスが実施されている間は、当局９８に送信されたデータのチェックサムが生成され且つ格納される。
【０１７１】
法的な制約は、大抵の場合、この情報が収集され且つ第三者に送信される前に、感染したコンピュータ２のユーザから許可を得る必要があるという点にある。この場合、エージェントプログラム１０は、処理を開始する前に許可をユーザから得るためのダイアログを開く。場合によっては、ユーザは、マルウェアプログラム又はマルウェアの特定のクラスが彼のコンピュータ２上で検出された時にはいつでもデータが送信される包括的許可を喜んで与えてくれるかもしれない。この場合、悪意のあるオブジェクト又は通信が検出される都度特別な許可を得る必要はない。
【０１７２】
自己防御
マルウェアは、コンピュータにインストールされているセキュリティ製品を攻撃し、使用不可能にし、さもなければ破壊する状態に向かって進化してきた。
【０１７３】
考慮するべき２つの原理的なベクトルがある。
【０１７４】
第１のアプローチは、セキュリティ製品を識別するために、マルウェアによって使用される方法に的を絞ることである。この特別な場合において、マルウェアは、リモートコンピュータ上で実行されている行動パターンを監視するプロセスであって、マルウェアコードの任意の態様を眺め、観察し、記録し、調査し、さもなければ干渉するプロセスを利用する。一例として、その操作を設定し、制御し若しくは記録するためにマルウェアが使用していたレジストリキーを調べるプロセス又はタスクを見守るマルウェアエンティティがあげられる。当然ながら、マルウェアは、その本質から秘密である。マルウェアの目線から見れば、ローカルコンピュータ上のマルウェアオブジェクトの存在が知られていない以上、マルウェアオブジェクトを監視し又は干渉するべきリモートコンピュータ上のプロセスは存在しないはずである。仮に何らかのプロセスがマルウェアを関している場合には、それは、セキュリティソフトウェア又はシステム監視ツール若しくはコンピュータ２から感染を取り除くためにコンピュータ２のユーザによって使用されるシステムツールである可能性がある。
【０１７５】
従って、この動作を行っているプロセスを見つけることで、マルウェアプロセスは、プロセスの固有性及びその位置又はディスク上の位置を認識可能である。この識別により、潜在的な脅威であると識別された一又は複数のプロセスを消去し、使用不可にし又は干渉することができる。多くの場合、これらは実際には、共に脅威であるとみなされるセキュリティプログラム又はシステム監視ツールである。
【０１７６】
本発明の好ましい実施形態は、マルウェアを調査している時にセキュリティプログラムの行動パターン検出を止めることで、マルウェアプログラムによるこの起こり得る干渉を防ぐ。これは、マルウェアの状態及び構成要素を調査するための核となるオペレーティングシステムの構成要素の後ろに隠れ、当該構成要素になりすまし、及び／又は当該構成要素にレバレッジをかけることで実現される。特に、エージェントプログラム１０は、標準的なシステムコールに依存する必要がある場合には、システムのコンテキストをまねすることで、又は、ディスク上に格納されている原データレベルのデータへのアクセスによってあらゆるシステムコールを回避することで、動作してもよい。例えば、エージェントプログラム１０は、悪意のあるプロセスを停止さえるためにＡｚＴｅｒｍｉｎａｔｅＰｒｏｃｅｓｓ機能を呼び出す際に、オペレーティングシステムのカーネルを直接的にまねることができる。そうすることで、マルウェアは、エージェントプログラムに対するコールバックを追跡することができなくなる。マルウェアは、オペレーティングシステムがそれに反応することを予期する（例えば、コンピュータがシャットダウンする際に、オペレーティングシステムがプロセスを停止する必要がある）間は、この行動パターンが通常のものであると考える。その結果、マルウェアは、エージェントプログラムプロセスを停止使用と試みることはない。更に、マルウェアは、プロセスがオペレーティングシステムそのものであるとのみ識別されている間は、プロセスを終了させるという反応を示すことができない。オペレーティングシステムの終了は、マルウェアの動作をも止めてしまうかもしれないからである。
【０１７７】
図１５は、最下層におけるカーネルレベル９２から始まって、オペレーティングシステムレベル９１及びオペレーティングシステム９１上のウェブブラウザ実行９２に続く、コンピュータシステム２上における制御の階層を示す。二番目の考慮すべき点は、コンピュータの操作に対する最大限の支配的制御を主張するマルウェアが、実行されるプロセス及び動作を完全に支配的制御するドライバ、例えばカーネルモードドライバをインストールしようとしばしば試みる点である。“ｒｏｏｔｋｉｔ”として一般的に知られているある種のマルウェアは、このように動作し、その他のものの中からその他のマルウェア、特にパスワード盗難キーロガー及びコンピュータウイルスを隠すために使用可能である。特定の場合には、マルウェアは、悪意のあるドライバをロードし、ウインドウズが起動したときからセキュリティアプリケーション及びドライバを動作不可能にするために当該ドライバを使用する。特に、マルウェアは、セキュリティプログラムに相当すると知っているドライバ又はプログラムの構成要素のリストを有している。
【０１７８】
セキュリティアプリケーションを使用不可能にするこのアプローチをマルウェアが使用することを阻止するために、エージェントプログラム１０は、主たる構成要素９３にアクセスできない場合のインストール又は起動中に主たる構成要素９３のバックアップとしてロードされる、二次的な又はバックアップのドライバ又は構成要素９４を動的に生成する（図１４に示すように）。それは、同一の機能を有している一方で、名称及び形式が異なるように改変されている。これは、マルウェアがセキュリティプログラムを識別する方法を学習できないように、ランダム化可能である。この場合、主としてマルウェアによって終了させられることに起因して主たる構成要素がロードできない場合には、二次的ドライバ９４がその機能を実行するようにロードされる。主たる構成要素９３がロードできる場合には、二次的構成要素９４は、主たる構成要素の存在を識別することで、コンフリクトを避けるために単に停止する。エージェントプログラム１０を備えるインストールされたオブジェクトの名称及びチェックサムをランダム化することで、エージェントプログラム１０は、重要なエージェント構成要素を停止又は排除しようとするアクティブな脅威によって行われる、発見的方法を利用した検出を逃れることができる。
【０１７９】
マイクロソフトウインドウズオペレーティングシステムの最近のバージョンは、システム及びローレベルドライバの署名を要求することで、改良されたセキュリティを提供する。このカーネルモードコード署名ポリシー（ｋｅｒｎｅｌ  ｍｏｄｅ  ｃｏｄｅ  ｓｉｇｎｉｎｇ  ｐｏｌｉｃｙ）と称されるポリシーは、認証されていない又は悪意のある任意のドライバがロードされることを許可していない。いくつかのマルウェア生成物は、ドライバ認証チェックを無効化するために、マスターブートレコードを修正する。感染したマスターブートレコードによって実行されるマルウェアは、署名されていないドライバのロードを許可するマイクロソフトのブートプログラムのブートオプションを変更することで、ドライバ署名ポリシーをバイパスする。
【０１８０】
その結果、これらの状況では、二次的ドライバ又は構成要素は、マルウェアによる検出を回避するために、それ自身のデジタル署名を取り除くことができる。これは、ドライバの認証を使用不可にするようにマスターブートレコードが修正されていなければ二次的ドライバ又は構成要素がロードできないということを意味する。それで、二次的ドライバ又は構成要素は感染していないシステムに対しては脅威とならず、システムが感染しておらず且つマスターブートレコードが修正されていなければ決してロードされない。
【０１８１】
本発明の実施形態は、示されている例を特に参照しながら説明されてきた。しかしながら、本発明の範囲の中で説明された例が変更又は改変されてもよいことは当然である。
【０１８２】
本出願は、２０１１年２月１５日に出願された米国出願番号６１／４４３，０９５の優先権の利益を主張しており、参照によって当該米国出願の内容は本願に援用される。
【図１】
0005967107.tif 000003
【図２】
0005967107.tif 000004
【図３】
0005967107.tif 000005
【図４】
0005967107.tif 000006
【図５】
0005967107.tif 000007
【図６】
0005967107.tif 000008
【図７】
0005967107.tif 000009
【図８】
0005967107.tif 000010
【図９】
0005967107.tif 000011
【図１０】
0005967107.tif 000012
【図１１】
0005967107.tif 000013
【図１２】
0005967107.tif 000014
【図１３】
0005967107.tif 000015
【図１４】
0005967107.tif 000016
【図１５】
0005967107.tif 000017