特許第5967107号(P5967107)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウェブルート インク.の特許一覧

特許5967107マルウェアに対処するための方法及び装置
<>
  • 特許5967107-マルウェアに対処するための方法及び装置 図000003
  • 特許5967107-マルウェアに対処するための方法及び装置 図000004
  • 特許5967107-マルウェアに対処するための方法及び装置 図000005
  • 特許5967107-マルウェアに対処するための方法及び装置 図000006
  • 特許5967107-マルウェアに対処するための方法及び装置 図000007
  • 特許5967107-マルウェアに対処するための方法及び装置 図000008
  • 特許5967107-マルウェアに対処するための方法及び装置 図000009
  • 特許5967107-マルウェアに対処するための方法及び装置 図000010
  • 特許5967107-マルウェアに対処するための方法及び装置 図000011
  • 特許5967107-マルウェアに対処するための方法及び装置 図000012
  • 特許5967107-マルウェアに対処するための方法及び装置 図000013
  • 特許5967107-マルウェアに対処するための方法及び装置 図000014
  • 特許5967107-マルウェアに対処するための方法及び装置 図000015
  • 特許5967107-マルウェアに対処するための方法及び装置 図000016
  • 特許5967107-マルウェアに対処するための方法及び装置 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5967107
(24)【登録日】2016年7月15日
(45)【発行日】2016年8月10日
(54)【発明の名称】マルウェアに対処するための方法及び装置
(51)【国際特許分類】
   G06F 21/56 20130101AFI20160728BHJP
【FI】
   G06F21/56
【請求項の数】16
【全頁数】41
(21)【出願番号】特願2013-553909(P2013-553909)
(86)(22)【出願日】2012年2月14日
(65)【公表番号】特表2014-509007(P2014-509007A)
(43)【公表日】2014年4月10日
(86)【国際出願番号】EP2012052497
(87)【国際公開番号】WO2012110501
(87)【国際公開日】20120823
【審査請求日】2015年1月8日
(31)【優先権主張番号】61/443,095
(32)【優先日】2011年2月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】511247231
【氏名又は名称】ウェブルート インク.
(74)【代理人】
【識別番号】100104765
【弁理士】
【氏名又は名称】江上 達夫
(74)【代理人】
【識別番号】100107331
【弁理士】
【氏名又は名称】中村 聡延
(72)【発明者】
【氏名】モリス,メルヴィン
(72)【発明者】
【氏名】ヤロフ,ジョセフ
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 特表2009−500706(JP,A)
【文献】 特開平08−044677(JP,A)
【文献】 特開2009−037545(JP,A)
【文献】 特開2007−094803(JP,A)
【文献】 特開2010−268368(JP,A)
【文献】 米国特許出願公開第2005/0149749(US,A1)
【文献】 米国特許出願公開第2010/0169972(US,A1)
【文献】 米国特許出願公開第2008/0250018(US,A1)
【文献】 国際公開第2009/141812(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
コンピュータオブジェクトをマルウェアとして分類する方法であって、
前記方法は、ベースコンピュータにおいて、コンピュータオブジェクト又は類似のコンピュータオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々から前記オブジェクトに関するデータを受信することを含んでおり、
前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び/又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、
前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている方法。
【請求項2】
少なくとも一つの脅威サーバは、それが付随する複数のリモートコンピュータから受信する情報を保持するための少なくとも一つのデータベースを備え、
前記方法は、
前記脅威サーバにおいて、少なくとも一つのデータベースに前記データを格納し、
周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去する
ことを含む請求項1に記載の方法。
【請求項3】
タイムスタンプが記録されたデータのブロックの全てを中央サーバにおいて受信し且つこれらをそのデータベースに組み込むことで、バックアップ中央サーバを構築することを含む請求項2に記載の方法。
【請求項4】
一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように、前記一定期間は中央サーバをオフラインにし、
前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、
前記中央サーバを再度オンラインに戻す
ことを含む請求項2又は3に記載の方法。
【請求項5】
中央サーバの前記データベースを、過去のある時点の状態に戻し、
タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、
前記中央サーバを再度オンラインに戻す
ことを含む請求項2又は3に記載の方法。
【請求項6】
前記中央サーバは、
a)オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、
b)オブジェクトの行動パターン、及び
c)どのリモートコンピュータにどのオブジェクトが存在しているかについての情報
のうちのいずれか一つ以上を含むデータベースを有している請求項2から5のいずれか一項に記載の方法。
【請求項7】
前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている請求項1から6のいずれか一項に記載の方法。
【請求項8】
脅威サーバにおいて、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持し、
オブジェクトが以前に確認されていない場合には、前記オブジェクトについてのデータを中央サーバに送信し、
オブジェクトが以前に確認されている場合には、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させる
ことを含む請求項1から7のいずれか一項に記載の方法。
【請求項9】
コンピュータオブジェクトをマルウェアとして分類する装置であって、
前記装置は、コンピュータオブジェクト又は類似のコンピュータオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々から前記オブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、
前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び/又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、
前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数のサーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている装置。
【請求項10】
少なくとも一つのデータベースを備えており、
前記複数の脅威サーバは、リモートコンピュータから受信する前記データ情報を前記データベースに格納するように構成されており、
前記装置は、ストレージを備えており、
前記複数の脅威サーバは、周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去するように構成されている請求項9に記載の装置。
【請求項11】
データベースを有するバックアップ中央サーバを備えており、
前記バックアップ中央サーバの前記データベースは、タイムスタンプが記録されたデータのブロックの全てを前記バックアップ中央サーバにおいて前記ストレージから受信し且つこれらを前記データベースに組み込むことで入力される請求項10に記載の装置。
【請求項12】
一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように前記一定期間は中央サーバがオフラインになる場合には、前記中央サーバは、前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、そのデータベースを更新するように構成されている請求項10又は11に記載の装置。
【請求項13】
中央サーバの前記データベースが過去のある時点の状態に戻される場合には、前記中央サーバは、タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、そのデータベースを更新するように構成されている請求項10又は11に記載の装置。
【請求項14】
前記中央サーバは、
a)オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、
b)オブジェクトの行動パターン、及び
c)どのリモートコンピュータにどのオブジェクトが存在しているかについての情報
のうちのいずれか一つ以上を含むデータベースを有している請求項9から13のいずれか一項に記載の装置。
【請求項15】
前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている請求項9から14のいずれか一項に記載の装置。
【請求項16】
脅威サーバは、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持するように構成されており、
オブジェクトが以前に確認されていない場合には、前記脅威サーバは、前記オブジェクトについてのデータを中央サーバに送信するように構成されており、
オブジェクトが以前に確認されている場合には、前記脅威サーバは、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させるように構成されている請求項9から14のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般的には、マルウェアに対処するための方法及び装置に関する。
【背景技術】
【0002】
ある面においては、本出願は、リモートコンピュータを複数のサーバのうちの一つに接続するための方法及びコンピュータプログラム、マルウェアからの保護を提供するための方法及びコンピュータプログラム、コンピュータオブジェクトをマルウェアとして分類するための方法及び装置、コンピュータ上でセキュリティプログラムを実行するための方法、並びに、マルウェアに対抗するためのコンピュータプログラムに関する。
【0003】
「マルウェア」という文言は、ここでは、一般的には、悪意のあるコードである又は悪意のあるコードを含む実行可能なあらゆるコンピュータファイル(より一般的には、オブジェクト)を言及するために用いられている。従って、「マルウェア」という文言は、ウイルスや、トロイの木馬や、ワームや、スパイウェアや、アドウェア等を含んでいる。
【0004】
ウイルススキャンソフトウェアのような典型的なアンチマルウェア製品は、マルウェアの存在を示すものとして知られているシグナチャーをオブジェクトの中から探すために、オブジェクト若しくはオブジェクトに適用されるアルゴリズムの結果又はその一部をスキャンする。一般的に、マルウェアに対処するための方法によれば、例えばインターネットを介して新しいタイプのマルウェアがリリースされた時点で初めて、当該新しいタイプのマルウェアが検出される。新しい種目のマルウェアが一度検出されると、その分野のサービスプロバイダは、当該新しい種目のマルウェアに対処しようと試みるシグナチャーを生成する。これらのシグナチャーは、アップデート情報として、サービスプロバイダのアンチマルウェアプログラムにリリースされる。発見的方法(ヒューリスティクな方法)もまた採用されてきた。
【0005】
これらのシステムは、既知の悪意のあるコードから保護するために使用されると効果がある。しかしながら、これらのシステムは、生成される及び/又は更新されるシグナチャーファイルに依存しているがゆえに、新たに誕生した若しくはリリースされた新しい種類のマルウェアとそのようなマルウェアを識別するために生成される若しくは更新され且つユーザに提供されるシグナチャーとの間に遅れが生ずることは避けられない。従って、ユーザは、1週間又はそれ以上の期間に及ぶかもしれない一定期間は、新しいマルウェアからのリスクにさらされることになる。
【0006】
更に近年では、マルウェア/ウイルスに対抗するためのいわゆるクラウドベースの技術が開発されている。この技術では、クラウド上に、つまりリモートコンピュータが接続する中央サーバ上に格納されたシグナチャーによる保護が提供される。従って、リモートコンピュータは、新しいマルウェアオブジェクトが識別され且つそのシグナチャーが中央サーバに格納されると同時に保護される。その結果、最新のシグナチャーがリモートコンピュータにダウンロードされる又はインストールされることを待つことなく、リモートコンピュータは、新しいマルウェアオブジェクトから保護される。この技術はまた、リモートコンピュータから中央サーバへと処理負荷をシフトさせることができるという利点を有している。しかしながら、この技術は、オブジェクトについてのシグナチャー情報のみを又はとても基本的な情報のみを中央サーバに送信することによって制限される。従って、未知のオブジェクトがマルウェアであるか否かを解析するために、通常はそのオブジェクトのコピーが中央サーバへと送信される。中央サーバでは、人である解析者によって、オブジェクトが調査される。これは、時間がかかると共に骨の折れるタスクであり、マルウェアが安全であるか又は安全でないかを分類する際に無視できない遅延を引き起こしてしまう。また、コミュニティーにおいて日々発見される新しいオブジェクトの膨大な量を考慮すれば、熟練した解析者に新しいオブジェクトの夫々を完全に調査させることは現実的ではない。従って、悪意のあるオブジェクトは、かなりの期間に渡って調査及び検出の手から逃れるかもしれず、その間、コミュニティー内で悪意のある活動を実行できてしまう。
【0007】
出願人は、以下で、2007年1月18日に公開された、「マルウェアに対処するための方法及び装置」という発明の名称を有している出願人の過去の出願(米国特許出願公開第2007/0016953号明細書)に言及する。当該出願の全ては、参照によって本願に援用される。この出願には、マルウェアに対抗するための新規で且つ優れたクラウドベースの方策が開示されている。具体的には、クラウドベースのアプローチの概要は、中央サーバが、オブジェクト及びコミュニティー内のあらゆる場所に位置するリモートコンピュータ上でのオブジェクトの行動パターンに関する情報を受信し、オブジェクト及びコミュニティー内のあらゆる場所で見られるオブジェクトの行動パターンの図を作り上げるというものである。この情報は、新たに発見されたオブジェクトがマルウェアであるか否かを判定するための様々な発見的方法及びルールを開発し且つ採用する際に、コミュニティーの全域に渡ってこのデータと比較するために用いられる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
マルウェアに対抗するためのこのアプローチは、中央サーバにおける膨大な量のデータのやり取り、格納及び管理を伴うが、それは中央サーバ自身において困難な問題となる。コミュニティー内で発見されたオブジェクトについて集められる膨大な量のデータ及び検出を逃れるためのマルウェアの作者による絶え間ない進化の方策を考慮すれば、より正確に且つより効率的にマルウェアを検出するための新しい手法を開発することもまた困難である。人としてのマルウェア解析者の専門的なスキル及び時間を最大限活用するためには、データを解析するプロセスを改善することもまた望まれる。
【0009】
マルウェアはまた、コンピュータにインストールされているセキュリティプログラムの動作を妨げることで、次第に自己防衛が上手になってきている。これは、セキュリティソフトウェアが取り組まなければならない他の問題である。
【0010】
本開示は、以下の開示を考慮すれば明らかになるであろうが、これらの問題及び他の問題を解決するために、米国特許出願公開第2007/0016953号明細書に開示された技術を基礎としている。
【課題を解決するための手段】
【0011】
本発明の第1の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信することを含んでおり、前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び/又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている方法が提供される。
【0012】
好ましい態様では、脅威サーバは、リモートコンピュータから送信される当該オブジェクトの詳細情報に基づいて、オブジェクトが無害であるか又は悪意があるか否かについてのリアルタイム判定を行う。各脅威サーバは、ベースコンピュータに知られているオブジェクトの全てのエントリー及びオブジェクトが安全か若しくは安全でないかの分類結果を含むデータベースに接続されている。データベースは、リモートコンピュータから受信する情報に基づいて未知のオブジェクトが安全か又は安全でないかを決定するためのルールを格納している。中央サーバは、全てのオブジェクトについての受信されたデータの全てのマスターデータベースを提供する。これは、マルウェアの脅威を調査する際に、人としての解析者又はコンピュータ解析によって使用される。
【0013】
好ましくは、少なくとも一つの脅威サーバは、それが付随する複数のリモートコンピュータから受信する情報を保持するための少なくとも一つのデータベースを備え、前記方法は、前記脅威サーバにおいて、少なくとも一つのデータベースに前記データを格納し、周期的に、タイムスタンプと共にストレージにデータベースの内容を格納し、データベースを消去することを含む。前記周期は、予め決定されていてもよいし、動的に設定されてもよい。このデータ構造は、安全で、拡張性があって且つ信頼できるデータの更新を提供する際に多くの利点を有する。このスキームは、脅威サーバによって受信されるデータの各断片が、当該データを保持するべきシステム内の他の全ての脅威サーバに即座に伝搬される従来のスキームと比較して、特筆すべき要因によってネットワークにおける処理負荷及びトラフィックを低減する。
【0014】
好ましくは、前記方法は、タイムスタンプが記録されたデータのブロックの全てを中央サーバにおいて受信し且つこれらをそのデータベースに組み込むことで、バックアップ中央サーバを構築する。従って、現在活動中のサーバの動作を妨げることなく、最新のデータセットを用いて迅速にバックアップサーバが構築される。現在活動中のサーバは、オフラインになる必要はなく、バックアップサーバが構築されている間も機能し続けることができる。
【0015】
一態様において、前記方法は、一定期間中は前記複数の脅威サーバからのデータの更新を中央サーバが受信しないように、前記一定期間は中央サーバをオフラインにし、前記一定期間が経過した後に、タイムスタンプが記録された前記ストレージからのデータのブロックであって且つ前記中央サーバがオフラインになった後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、前記中央サーバを再度オンラインに戻すことを含む。これにより、中央サーバは、例えばメンテナンスやソフトウェアの更新のためにオフラインになることができ、最新のデータを有するように迅速に且つ容易に更新される。その他のサーバはオフラインにならなくてもよく、そうでなければ、このプロセスによって影響を受けてなくてもよい。
【0016】
一態様において、前記方法は、中央サーバの前記データベースを、過去のある時点の状態に戻し、タイムスタンプが記録されたストレージからのデータのブロックであって且つ前記過去のある時点よりも後のタイムスタンプを有するデータのブロックの全てと共に、前記中央サーバの前記データベースを更新し、前記中央サーバを再度オンラインに戻すことを含む。従って、データベースが何らかの理由で破損してしまった場合には、データベースを破損が発生する前の時点の状態に戻すことができる。それから、紛失してしまったデータと共にデータベースを更新することができる。この場合もやはり、その他のサーバはオフラインにならなくてもよく、そうでなければ、このプロセスによって影響を受けてなくてもよい。
【0017】
好ましくは、前記中央サーバは、a)オブジェクトのシグナチャー及び当該オブジェクトについてのメタデータ、b)オブジェクトの行動パターン、及びc)どのリモートコンピュータにどのオブジェクトが存在しているかについての情報のうちのいずれか一つ以上を含むデータベースを有している。これにより、ベースコンピュータは、オブジェクトの活動態様、それらの属性及びコミュニティーにおける行動パターンの全体図を構築することができる。その結果、マルウェア並びにデータにおける傾向及び変更を識別するための深い解析の実行が可能となる。
【0018】
好ましい態様では、前記複数の脅威サーバ及び前記中央サーバはクラウドコンピューティングを用いて実装されている。これにより、システム管理者が必要に応じてサーバインスタンスを構築し、起動し且つ停止することができるという融通の利くコンピュータ処理、使用されているコンピュータリソースのみに対する対価の支払い、並びに、待ち時間の最適化及び高度な冗長性を考慮に入れたインスタンスの地理的な配置の管理が可能となる。
【0019】
好ましくは、前記方法は、脅威サーバにおいて、当該脅威サーバで過去に確認され且つ前記中央サーバに転送されたオブジェクトのリストを維持し、オブジェクトが以前に確認されていない場合には、前記オブジェクトについてのデータを中央サーバに送信し、オブジェクトが以前に確認されている場合には、前記データを送信する代わりに、当該オブジェクトのカウント数を増加させることを含む。これにより、ネットワーク上及びサーバ上におけるネットワークトラフィック及び負荷が劇的に低減する。
【0020】
本発明の第2の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記装置は、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、前記ベースコンピュータは、前記複数のリモートコンピュータから前記データを受信するように構成されている複数の脅威サーバであって、前記オブジェクトがマルウェアであるか否かを判定し且つ前記判定結果を前記複数のリモートコンピュータに伝えるためのルール及び/又は発見的手法をリアルタイムで当該データに対して適用するように構成されている複数の脅威サーバを備えており、前記ベースコンピュータは、更に、前記複数の脅威サーバと通信する少なくとも一つの中央サーバであって、前記複数の脅威サーバの全てから受信するオブジェクトに関するデータのマスターデータベースを維持するために、前記複数の脅威サーバからオブジェクトに関する前記データを受信するように構成されている少なくとも一つの中央サーバを備えている装置が提供される。
【0021】
本発明の第3の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信し、一又は複数の共通する属性若しくは行動パターンを有するオブジェクトを前記複数のリモートコンピュータが所定期間中に確認した回数をカウントし、前記カウントした回数を、過去の観測に基づく予測回数と比較し、比較結果がある所定閾値を超過している場合には、前記オブジェクトが安全でない又は疑わしいものであるとフラグを立てることを含む方法が提供される。
【0022】
好ましくは、リモートコンピュータ上で動作するエージェントプログラムから受信するデータの量は、膨大なものとなり得るため、コンピュータによる処理に適している。マルウェアを判定するために、人としてのオペレータがこのデータの全てを調べることは現実的ではない。この態様は、これらアウトライナー(アウトラインプロセッサ)の調査に、より多くの関心を置いている。調査に必要な負荷を自動的にグルーピングし、識別し若しくは優先順位を付けるために、更には、マルウェアの判定を行うために、このアウトライナーに関する情報を使用することが可能なプロセスは、迅速に発展させることができる。マルウェアを識別するために自動化されたルールが使用されている場合には、この情報は、アウトライナーとして識別されたグループ内のオブジェクトに適用される際のこれらのルールの感応性を自動的に高めるために使用可能である。
【0023】
前記オブジェクトの前記属性は、ファイル名、ファイルタイプ、ファイル位置、ファイルに含まれるベンダー情報、ファイルサイズ、当該ファイルに関連するレジストリキー及びその他のシステムに由来する任意のデータ並びに前記オブジェクトに関連するイベントデータのうちの一つ又は任意の組み合わせである。
【0024】
本発明の第4の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記装置は、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備えており、前記ベースコンピュータは、一又は複数の共通する属性若しくは行動パターンを有するオブジェクトを前記複数のリモートコンピュータが所定期間中に確認した回数をカウントし、前記カウントした回数を、過去の観測に基づく予測回数と比較し、比較結果がある所定閾値を超過している場合には、前記オブジェクトが安全でない又は疑わしいものであるとフラグを立てるように構成されている装置が提供される。
【0025】
本発明の第5の態様によれば、コンピュータオブジェクトをマルウェアとして分類する方法であって、前記方法は、ベースコンピュータにおいて、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信し、前記データをデータベースに格納し、複数のオブジェクトのグループ及びこれら複数のオブジェクトの様々な属性に関連する情報の表示をもってユーザに提示することを含み、前記表示は、複数のオブジェクトの間での共通性が示されるように構成されており、表示される複数のオブジェクトの前記グループは、前記データベースのユーザクエリに対応する方法が提供される。
【0026】
従って、オブジェクトを確認した全てのリモートコンピュータの全てにおいてオブジェクトの統一的な表示物(即ち、そのメタデータ及び行動パターン)にクエリを実行し且つ解析することが可能であることにより、人によるものであろうがコンピュータによるものであろうが、より情報量のあるオブジェクトの表示物を得ることができる。加えて、オブジェクトの任意の基準、即ち、メタデータ及び行動パターンに基づいて、オブジェクトを横断的にグルーピングすることができる。
【0027】
このスキームに応じてオブジェクトをグルーピングすることに従事するユーザは、熟練したマルウェアの解析者である必要はない。ユーザは、ツールを使用すること並びにクエリを実行し且つ共通性を探索することでオブジェクトをグルーピングすることに対する基本的な訓練のみを必要とする。熟練したマルウェアの解析者は、クエリによって対象に含められたオブジェクトの最終解析者となることができる。このシステムの主たる利点は、人としてのオペレータが完了させるにはタスク量が多すぎて現実的ではない原データの処理にコンピュータが使用されるという点である。データをグルーピングする人としてのオペレータは、熟練者である必要はなく、その結果、ビジネスとしてのコストの低減につながる。これは、コストの低減につながると共に、更なる調査の有力な候補になると判明したクエリに対して熟練したマルウェア解析者を集中させることができる。従って、これらオペレータのスキルは、マルウェアを識別する彼らの経験を使用する際に、最も効果的に配置される。
【0028】
ある態様では、前記情報は、テーブルの行が複数のオブジェクトに対応し且つテーブルの列が前記複数のオブジェクトの属性に対応する表形式で表示される。とはいえ、その他の形式での表示、例えば、グラフ、チャート、3D表示化等が使用されてもよい。
【0029】
好ましくは、前記複数のオブジェクトの少なくとも一つの属性は、共通の属性を有する複数のオブジェクトに対して同一の絵入り表現が付与されるように、絵を用いてユーザに提示される。好ましい態様では、前記絵入りの表現は、異なる形状及び/又は色を有する複数のシンボルを備えている。これにより、ユーザは、一目見ただけで属性の共通性を見分けることができる。これは、共通性が重要である一方で実際の属性の値が相対的には重要でない属性に対して特に有効である。
【0030】
好ましくは、前記方法は、複数のオブジェクトの間での一又は複数の属性についての共通性を識別し、前記識別された共通性に応じて、クエリを改善することを含む。発見された共通性に応じてクエリを改善することで、ユーザは、迅速に且つ容易にマルウェアを調査することができる。クエリをグルーピングしたデータには、人としての解析者による更なる調査が必要なものであるとフラグが立てられるか、又は、無害であるか若しくは悪意があるものであると即座にフラグが立てられることが可能である。
【0031】
好ましくは、前記方法は、マルウェアを識別する際に前記クエリが決定性のクエリであると判定される場合には、ユーザクエリからルールを生成することを含む。
【0032】
好ましい態様では、前記グループの前記複数のオブジェクトを安全である又は安全でないものとして分類するような任意の又は全てのユーザアクションと共に、複数のオブジェクトのユーザグルーピングを監視し、複数のオブジェクトをマルウェアとして分類するための新たなルールを生成する際に、前記グルーピング及びアクションを自動的に適用することを含む。従って、これらのアクションを追っていくことで、サーバは、人としての解析者から、オブジェクトをどのように自動的に識別し且つ判定するかを学習することができる。好ましくは、アプリケーションは、ユーザによって実行されたクエリを覚えることができる。同じクエリがユーザによって繰り返し実行されており且つマルウェアオブジェクトに対して返答している場合には、又は、オブジェクトがマルウェアであると判定するアクションを調査者が絶えず行っている場合には、システムは、この状態を自動的に認識すると共に対象となるオブジェクトをマルウェアとして判定するための基準及びアクションのルールを生成することができる。
【0033】
好ましくは、前記方法は、前記オブジェクトを安全である又は安全でないものとして分類するために、前記ベースコンピュータにおけるオブジェクトに対して前記ルールを適用し、及び/又は、リモートコンピュータに前記ルールを送信し且つ前記リモートコンピュータにおけるオブジェクトに対して前記ルールを適用することを含む。従って、ルールをオブジェクトに適用することで、未確認のオブジェクトに対するリアルタイムでの保護が提供される。リモートコンピュータで動作しているエージェントソフトウェアは、例えば、ベースコンピュータとの連絡が途絶えた場合に、オブジェクトに対してルールを適用することができる。その結果、エージェントソフトウェアは、ベースコンピュータがオフラインとなっている場合であっても、新たなマルウェアからの保護を継続して提供することができる。
【0034】
好ましくは、前記方法は、前記ルールに応じて、前記ベースコンピュータにおける前記データベースに、オブジェクトが安全である又は安全でないという分類結果を格納する。この情報は、ルールの実績を評価する際に及び新しいルールを策定する際に考慮可能である。
【0035】
好ましい態様では、前記方法は、前記ルールによればマルウェアであると分類されたオブジェクトがマルウェアでないと考えられるという情報を、リモートコンピュータから受信し、前記情報に応じて、前記ルールを修正する又は消去することを含む。これにより、中央サーバに対して、ルールの実績のフィードバックが可能となる。フィードバックは、必要に応じてルールを修正する又は消去する際に考慮可能であり、且つ、将来のルールを決定する際に考慮可能である。
【0036】
本発明の第6の態様によれば、コンピュータオブジェクトをマルウェアとして分類する装置であって、前記オブジェクト又は類似のオブジェクトを格納し且つ処理する複数のリモートコンピュータの夫々からコンピュータオブジェクトに関するデータを受信するように構成されているベースコンピュータを備え、前記ベースコンピュータは、前記データをデータベースに格納し、複数のオブジェクトのグループ及びこれら複数のオブジェクトの様々な属性に関連する情報の表示をもってユーザに提示するように構成されており、前記表示は、複数のオブジェクトの間での共通性が示されるように構成されており、表示される複数のオブジェクトの前記グループは、前記データベースのユーザクエリに対応する装置が提供される。
【0037】
本発明の第7の態様によれば、コンピュータ上でセキュリティプログラムを動作させる方法であって、前記コンピュータ上で動作するオブジェクトを監視する際に、オペレーティングシステムの機能のまねをする又は使用するように前記セキュリティプログラムを操作することを含み、前記監視は、前記オブジェクトがマルウェアであるかを判定することである方法が提供される。
【0038】
これにより、プログラムは、悪意のあるオブジェクトからの攻撃に耐えることができる。プログラムは、標準的なシステムコールに依存する必要がある場合には、システムのコンテキストをまねすることで、又は、ディスク上に格納されている原データレベルのデータへのアクセスによってあらゆるシステムコールを回避することで、動作してもよい。そのように動作することで、マルウェアは、プロセスがオペレーティングシステムである間は、プロセスを終了するというアクションを起こすことができない。オペレーティングシステムの終了は、マルウェアの動作をも止めてしまうかもしれないからである。
【0039】
本発明の第8の態様によれば、マルウェアに対抗するコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータプログラム上で動作する際に、コンピュータ上で動作するオブジェクトを監視することで前記オブジェクトがマルウェアであるか否かを判定するようにコンピュータを動作させるプログラム指令を含み、前記監視は、前記プログラムがオペレーティングシステムの機能のまねをする又は使用するように行われるコンピュータプログラムが提供される。
【0040】
本発明の第9の態様によれば、コンピュータ上でセキュリティプログラムを動作させる方法であって、前記セキュリティプログラムの第1構成要素を前記コンピュータ上にロードし、前記第1構成要素とは異なる属性を有し且つ悪意のある活動に起因して前記第1構成要素がロードできない場合に自動的にロードされる前記セキュリティプログラムの第2構成要素を前記コンピュータ上で動的に生成することを含む方法が提供される。
【0041】
好ましくは、第2構成要素は、同一の機能を有している一方で、名称及び形式が異なるように改変されている。主としてマルウェアによって終了させられることに起因して主たる実行ファイルがロードできない場合には、第2構成要素がその機能を実行するようにロードされる。主たる実行ファイルがロードできる場合には、第2実行ファイルは、主たる実行ファイルの存在を識別することで、コンフリクトを避けるために単に停止する。
【0042】
好ましくは、前記第2構成要素は、それ自身のデジタルシグナチャを除去するように構成されている。
【0043】
本発明の第10の態様によれば、マルウェアに対抗するコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータプログラム上で動作する際に、セキュリティプログラムの第1構成要素を前記コンピュータ上にロードし、前記第1構成要素とは異なる属性を有し且つ悪意のある活動に起因して前記第1構成要素がロードできない場合に自動的にロードされる前記セキュリティプログラムの第2構成要素を前記コンピュータ上で動的に生成するようにコンピュータを動作させるプログラム指令を含むコンピュータプログラムが提供される。
【0044】
本発明の第11の態様によれば、搬送波上に記録されている上述したコンピュータプログラムが提供される。
【0045】
本発明の第12の態様によれば、リモートコンピュータを複数のサーバのうちの一つに接続する方法であって、前記方法は、当該エージェントプログラムがインストールされた時までに決定されたサーバに対して前記リモートコンピュータを割り当てるためのアルゴリズムを有するエージェントプログラムを、前記リモートコンピュータにインストールし、前記エージェントプログラムを前記割り当てられたサーバに接続することを含む方法が提供される。
【0046】
好ましい態様は、数千ものリモートコンピュータが同時に実装されている場合であっても、リモートコンピュータをサーバにマッピングするための簡易で、疑似的で且つランダムな手段であって且つサーバ間で負荷を均等に分配する手段を提供する。これは、サーバ間での負荷を分配するために専用のハードウェアが使用される従来技術のスキームと肩を並べる。
【0047】
好ましくは、前記アルゴリズムは、前記複数のサーバへの前記リモートコンピュータの近接によっても決定されるサーバに前記リモートコンピュータを割り当てる。位置に基づいて割り当てることで、待ち時間が最小化される。
【0048】
好ましくは、前記方法は、当初割り当てられていたサーバから前記エージェントプログラムによって受信される情報に応じて、異なるサーバに前記リモートコンピュータを接続する。
【0049】
好ましくは、前記方法は、リモートコンピュータを、DNS分配ネットワークを使用するサーバに接続することを含む。これにより、サーバ名をサーバの物理アドレスにマッピングするための便利な手段が提供される。
【0050】
好ましくは、前記エージェントプログラムは、当初割り当てられていたサーバにアクセスできない場合に、前記リモートコンピュータのための二次的なサーバを決定する二次的なアルゴリズムを有する。これにより、当初割り当てられていたサーバが動作していない場合に、又は、サーバを物理アドレスにマッピングするために使用されるメカニズム、例えばDNSネットワークの動作をマルウェアが妨害している場合に、有益なバックアップが提供される。好ましくは、前記方法は、当初割り当てられていたサーバからエージェントプログラムが受信する情報に応じて、リモートコンピュータを異なるサーバに接続することを含んでいる。これらの技術により、リモートコンピュータをサーバに再度割り当てるためのより柔軟で且つ中央集中型の制御が実現される。
【0051】
本発明の第13の態様によれば、プログラムがリモートコンピュータにインストールされた時までに決定された複数のサーバのうちの一つに対して前記リモートコンピュータを割り当てるためであって、且つ、前記エージェントプログラムを前記割り当てられたサーバに接続するためのプログラム指令を含むコンピュータプログラムが提供される。
【0052】
本発明の第14の態様によれば、搬送波上に記録されている上述のコンピュータプログラムが提供される。搬送波は、任意の物理的な媒体、例えば、ディスク、USBストレージ、ハードドライブ、光媒体等であってもよい。
【0053】
本発明の第15の態様によれば、マルウェアからの保護を提供する方法であって、前記方法は、ネットワークに接続されたリモートコンピュータ上で、前記ネットワークを介してベースコンピュータと通信するように構成され且つ前記リモートコンピュータと前記ネットワーク上のエンティティとの間の通信を所定のルールに応じてブロックするように構成されたファイアウォールを含むエージェントプログラムを実行し、前記ベースコンピュータから受信するルールに応じて、前記ファイアウォールを設定することを含む方法が提供される。
【0054】
設定可能なファイアウォールの好ましい態様は、マルウェアの通信を遮断することでマルウェアに対抗する次の防御方法を提供するために、リモートコンピュータによって保持されている悪意のあるオブジェクト及びネットワークURLについて展開されたルール及び知識にレバレッジをかけることができる。既知のファイアウォールにおいては、典型的には、ユーザは、手作業でファイアフォールを設定しなければならない。
【0055】
好ましくは、前記方法は、前記リモートコンピュータにおいて、前記ベースコンピュータから、前記リモートコンピュータ上のオブジェクト及び/又は前記ネットワーク上のエンティティが安全でないという情報を受信し、安全でないオブジェクト及び/又は安全でないエンティティに関連する所望のネットワーク通信が前記ファイアウォールによってブロックされるように、前記リモートコンピュータにおいてルールを含めることを含む。従って、ファイアウォールは、ネットワーク上のエンティティ(例えば、第三者のサーバ)と通信しようとしているリモートコンピュータ上の悪意のあるオブジェクトとの間の通信を停止するように、又は、リモートコンピュータ上の任意のオブジェクトと悪意のある活動に関連していると知られているネットワーク位置(例えば、既知の犯罪者によって運営されているURL)との間の通信を停止するように構成されることができる。
【0056】
好ましくは、前記方法は、前記リモートコンピュータにおいて、前記ベースコンピュータから、前記リモートコンピュータ上の及び/又は前記ネットワーク上のエンティティ上のオブジェクトが安全でないという情報を受信し、安全でないオブジェクト及び/又は安全でないエンティティに関する所望のネットワーク通信の詳細を第三者と共有することについて、前記リモートコンピュータのユーザから許可を求め、安全でないオブジェクト及び/又は安全でないエンティティに関する所望のネットワーク通信を妨害し、第三者とそれらを共有することを含む。
【0057】
これは、従来技術でのサイバー犯罪に対処するための努力の多くが、マルウェアの背後にある犯罪を認識し且つ停止しようと試みるよりはマルウェアの影響を停止することに集中しているという事実に対処する。一つの困難は、アンチマルウェア又は警察でさえも、犯罪に関わるデータを探すために犯罪者のサーバに侵入することが違法であるということである。実際、マルウェアの影響を受けているがゆえに犯罪者の制御下にある合法なユーザのコンピュータの“ゾンビネットワーク”であるいわゆる“ボットネット”を犯罪者が使用しているというのはよく知られた策略である。好ましい態様は、どこデータが犯罪者によって盗まれたかを当局が確認できるように、マルウェアに関連する通信の記録を保持する。法的な理由のため、第三者に任意のデータを送信する前にユーザの同意が得られる。これは、1)常に問い合わせる(アプリケーションが検知される都度)、2)マルウェアのタイプ毎の一律の許可を得る、及び3)マルウェアのタイプに関わらない一律の許可を得るという様々な方法によって実装可能である。
【0058】
本発明の第16の態様では、マルウェアからの保護を提供するコンピュータプログラムであって、前記コンピュータプログラムは、ネットワークに接続されたリモートコンピュータと前記ネットワーク上のエンティティとの間の通信を所定のルールに応じてブロックするように構成されたファイアウォールを含み、前記コンピュータプログラムは、前記リモートコンピュータ上で実行された場合に、前記ネットワークを介してベースコンピュータと通信し、前記ベースコンピュータから受信するルールに応じて、前記ファイアウォールを構成するプログラム指令を含むコンピュータプログラムが提供される。
【0059】
以降の開示を考慮すれば明らかになるように、上述した任意の実施形態の特徴は、上述した本発明の任意の態様のその他の実施形態の特徴のいずれとも組み合わせることができる。
【0060】
本発明の実施形態は、付随する図面を参照する例を用いて以下に記載される。
【図面の簡単な説明】
【0061】
図1図1は、本発明の実施形態が実装された装置を概略的に示す。
図2図2は、本発明の実施形態に応じた方法の動作例を概略的に示すフローチャートである。
図3図3は、本発明の実施形態に応じたベースコンピュータ3の例のより詳細な図面を示す
図4図4は、ウェブサーバが異なる地理的位置に配置される例を示す。
図5図5は、図3の装置をより詳細に概略的に示すと共に、特に、実施形態においてFXレイヤからENZOレイヤにデータが移動する方法を概略的に示す。
図6図6は、本発明の実施形態に応じてENZOサーバの新たなインスタンスが生成される例を概略的に示す。
図7図7は、本発明の実施形態に応じてENZOサーバをしてその処理負荷を複数のサーバの間で分配せしめる装置の例を概略的に示す。
図8図8は、本発明の実施形態に応じた、オブジェクトについてのデータを解析するためのスキームの例を示すチャートである。
図9図9は、本発明の実施形態に応じた、オブジェクトについてのデータを処理するためのスキームの例を示すチャートである。
図10図10は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
図11図11は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
図12図12は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
図13図13は、本発明の実施形態に応じた、オブジェクトを調査するためのコンピュータプログラムの例のグラフィカルユーザインタフェースを示す。
図14図14は、本発明の実施形態に応じた、リモートコンピュータ上のエージェントプログラムの例を示す。
図15図15は、コンピュータシステム上の階層を示す。
【発明を実施するための形態】
【0062】
図1を参照すると、インターネット1のような分散型のネットワークに基づくものとしてのコンピュータネットワークが大まかに示されている。しかしながら、本発明は、LANのようなその他のタイプのネットワークに渡って又は用途で実装されてもよい。複数のローカル又は“リモート”コンピュータ2は、インターネット1を介して、“中央”又は“ベース”コンピュータ3に接続されている。コンピュータ2は、夫々、パーソナルコンピュータ、任意のタイプのサーバ、PDA、携帯電話、双方向性のテレビ又はコンピュータオブジェクトをロードし且つ動作させることが可能なその他のデバイスであってもよい。ここでのコンピュータオブジェクトは、コンピュータファイル、ファイルの一部、サブプログラム、マクロ、ウェブページ、コンピュータによって若しくはコンピュータ上で動作するその他の任意のコードの断片、又は、実行される、エミュレートされる、シミュレートされる若しくは解釈されるその他の任意のイベントであってもよい。オブジェクト4は、図面中では概略的に示されており、例えば、ライン5によって示されるようにインターネット1を介して又はライン6によって示されるように直接的にリモートコンピュータ2にダウンロードされる。オブジェクト4は、コンピュータRAM内、コンピュータのハードディスクドライブ上、USBペンドライブやEメールの添付等のようなコンピュータに接続されるリムーバブルストレージ上に存在していてもよい。
【0063】
一つの好ましい実施形態では、ベースコンピュータ3は、オブジェクト4が安全であるか又は安全でないかを判定するためにリモートコンピュータ2がオブジェクト4を実行する際にリモートコンピュータ2が情報をやり取りすることが可能なデータベース7と通信する。コミュニティデータベース7には、接続されたリモートコンピュータ2の全ての上で動作する各オブジェクトに関連する情報が徐々に入力される。後に議論されるように、各オブジェクト4を示すデータは、オブジェクト並びにその属性及び行動パターンに関するいわゆるシグナチャー又はキーの形式を有している。
【0064】
図2を参照すると、開始点21において、プロセス(処理)等のコンピュータオブジェクト4はリモートコンピュータ2において実行される。ステップS22において、リモートコンピュータ2上におけるローカル“エージェント”プログラム又はソフトウェアの動作により、特定のプロセス、その関連するオブジェクト及び/又はイベントを示すシグナチャー若しくはキーを検索するためにエージェントプログラムがリモートコンピュータ2に格納されているローカルデータベースを調査することができるように、プロセスの動作がフックされる。ローカルシグナチャーが存在する場合には、プロセスが安全であるとみなされるということを示すか、又は、プロセスが安全でないとみなされるということを示す。安全でないプロセスは、マルウェアである又は実行されることで予測し得ない若しくは既知の安全でないか若しくは悪意がある結果を引き起こすと確認されたプロセスであるかもしれない。プロセスが安全であることをシグナチャーが示している場合には、ステップS23において、リモートコンピュータ2上のローカルエージェントプログラムによって、そのプロセス又はイベントの実行が許可される。プロセスが安全でないことをシグナチャーが示している場合には、ステップS24において、そのプロセス又はイベントが停止される。
【0065】
“安全である”又は“安全でない”という2つの状態よりも多くの状態が存在していてもよいことは理解できるであろう。選択は、ユーザに委ねられてもよい。例えば、オブジェクトがローカル的に安全でないとみなされる場合において、その場合であっても関連するプロセスの実行の許可という選択肢がユーザに提示されてもよい。各リモートコンピュータ2に対して、異なる状態が提示されてもよい。この状態は、リモートコンピュータの位置、ステータス若しくは所有状態、又は、時間枠を考慮するベースコンピュータによって変更可能である。
【0066】
更に、リモートコンピュータ2におけるエージェントソフトウェアは、オブジェクトを安全である又は安全でないものとして分類するために、ベースコンピュータ3から、ルール又は発見的方法を受信するように構成されていてもよい。オブジェクトがローカル的に知られていない場合には、エージェンソフトウェアは、オブジェクトを安全である又は安全でないものとして分類しようと試みるために、オブジェクトの詳細情報に対してルール又は発見的方法を適用してもよい。分類がなされると、オブジェクトの詳細情報と分類結果は、ベースコンピュータ3を介してコミュニティデータベース7に格納される。これは、エージェントソフトウェアは、オフラインである場合であっても(例えば、何らかの理由によりベースコンピュータと接続されない場合であっても)、未確認のオブジェクトからの保護を提供可能であるということを意味する。このメカニズムは、以下の開示でより詳細に説明される。
【0067】
オブジェクトがローカル的にまだ分類されていない場合には、オブジェクトの詳細情報は、コミュニティデータベース7に格納するために、好ましくはベースコンピュータ3での更なる解析のために、インターネット1又はその他のネットワークを介してベースコンピュータ3へと送信される。この場合、コミュニティデータベース7に既に格納されているオブジェクトのシグナチャーのために、ステップS25において、コミュニティデータベース7が検索されてもよい。コミュニティデータベース7は、プログラムやプロセスのような監視中の各リモートコンピュータによって実行されているオブジェクトを示すシグナチャーを含んでいる。この分野での典型的な実装では、ベースコンピュータ3に接続されている又は接続可能なリモートコンピュータ2の数は、数千から数百万にも及ぶかもしれない。このため、インターネット1上に新たにリリースされた又はそうでなければこれらのリモートコンピュータ2のいずれかによって発見されるオブジェクトはすぐに発見されると共に、夫々のリモートコンピュータ2によってシグナチャーが生成され且つベースコンピュータ3に送信される。
【0068】
該当するリモートコンピュータ2によって未だ確認されていないオブジェクトのシグナチャーのためにコミュニティデータベース7が検索される際に、シグナチャーが発見され且つ当該オブジェクトが安全であることを示している場合には、ステップS26において、シグナチャーのコピー又は少なくともオブジェクトが安全であるというメッセージが、該当するリモートコンピュータ2のローカルデータベースに送信され且つローカルデータベースに入力される。このようにして、リモートコンピュータ2は、オブジェクト4に遭遇する次の機会に対処するために、この情報を即座に入手する。現在のインスタンスでのオブジェクトの実行を許可するために、別個のメッセージがリモートコンピュータ2に対して返送されてもよい。
【0069】
シグナチャーがコミュニティデータベース7において発見され且つ何らかの理由でオブジェクトが安全でないことを示している場合には、ステップS27において、シグナチャーは、再度ローカルデータベースにコピーされ且つ安全でないものとしてマークされる。及び/又は、オブジェクトの実行が停止される(又は、実行が許可されない)ようにメッセージがリモートコンピュータ2に送信される。及び/又は、ユーザには、オブジェクトを実行するか否かについての情報に基づく選択肢が提示される。
【0070】
コミュニティデータベース7の全体が検索された後も未知のオブジェクトが存在する場合には、これは、その分野において確認されたことのない完全に新たなオブジェクトであると推測される。従って、ステップS28において、オブジェクトを示すシグナチャーが生成され、又は、リモートコンピュータ2によって送信されたシグナチャーがこの目的で使用される。
【0071】
このとき、オブジェクトを安全である又は安全でないものとして分類しようと試みるために、ベースコンピュータ3によって、オブジェクトの詳細情報に対してルール又は発見的手法が適用されてもよい。分類がなされた場合には、それに応じて、シグナチャーは、コミュニティデータベース7内で安全である又は安全でないものとしてマークされる。シグナチャーは、最初にオブジェクトを実行していたリモートコンピュータ2のローカルデータベースにコピーされる。このメカニズムは、後の開示でより詳細に説明される。
【0072】
オブジェクトが未だ分類されていない場合には、ステップS29において、シグナチャーは、コミュニティデータベース7内において当初は悪意のある又は安全でないものとしてマークされてもよい。シグナチャーは、ステップS30において、最初にオブジェクトを実行していたリモートコンピュータ2のローカルデータベースにコピーされる。オブジェクトを実行しないようにリモートコンピュータ2を指示するために、メッセージがリモートコンピュータ2に送信されてもよい。代わりに、状況を説明した上で、オブジェクトの実行を許可するか否かについての同意を、ユーザから受けてもよい。加えて、ステップS31において、コミュニティデータベース7によって、リモートコンピュータ2からのオブジェクトそのもののコピーが要求されてもよい。
【0073】
リモートコンピュータ2において、新し過ぎるがゆえに安全でないとみなされているプロセスを実行することをユーザが選択する場合には、そのプロセスは、リモートコンピュータ2及び/又はコミュニティデータベース7によって監視されていてもよい。そして、例えばn日等の所定期間後の何ら悪影響が発生しない又は現れていない場合には、当該プロセスは安全であるものとしてみなされてもよい。代わりに、コミュニティデータベース7は、ネットワークの一部を形成する多くのリモートコンピュータ2によって発見されたプロセスの各インスタンスのログを保持してもよい。可能であれば、実行が許可され且つ安全に実行されている他の特定数のインスタンス又はプロセスと共に特定数のインスタンスが記録された後、コミュニティデータベース7内のシグナチャーは、安全でないというよりもむしろ安全であるものとしてマークされてもよい。安全性を監視するためのその他多くの改変がこの思想の範囲内で行われてもよい。
【0074】
データベース7は、オブジェクトのパフォーマンス及び動作のパラメータを設定する、オブジェクト4のための行動パターンのマスクを含んでいてもよい。リモートコンピュータ2上でオブジェクトを実行することが許可されている場合には、オブジェクトが安全であると初期のシグナチャー検索22が示している場合であっても、オブジェクトの動作は、マスクのパラメータの範囲内で監視されてもよい。マスクによって許可されている範囲を超えるあらゆる行動パターンは、識別され且つオブジェクトが安全であり続けるか否かを継続的に評価するために使用される。
【0075】
ベースコンピュータ3に送信されたオブジェクト4の詳細情報は、好ましくは、オブジェクト4を一意に識別するシグナチャー又はキーの形式を有している。これは、主として、データストレージ及び伝送要求をできるだけ小さくしておくためである。このキーは、リモートコンピュータ2におけるオブジェクトの上で動作するハッシュ関数によって生成されてもよい。
【0076】
好ましい実施形態でのキーは、特に、少なくとも3つの分断可能な構成要素を有するように構成されている。当該構成要素のうちの第1は、オブジェクト内に含まれる又はオブジェクトによって構成される実行可能な指示を示す。当該構成要素のうちの第2は、オブジェクトについてのデータを示す。当該構成要素のうちの第3は、オブジェクトの物理サイズを示す。第2の構成要素におけるオブジェクトについてのデータは、固有性を示すその他の形式のいずれか又は全てであってもよい。固有性を示すその他の形式は、例えば、ファイル名、ディスク上での物理的なフォルダ位置、当初のファイル名、生成及び修正日時、ベンダー、製品及びバージョン等のリソース情報、オブジェクト内に格納されているその他の任意の情報、それについてリモートコンピュータ2が保持しているファイルヘッダ若しくはヘッダ、並びに、リモートコンピュータ上でオブジェクトが生成、構成若しくは実行された時にオブジェクトによって開始された又はオブジェクトに関するイベントである。概して、キーに含まれる情報は、これらの要素のうちの少なくとも一つ又は2以上の任意の組み合わせを含んでいてもよい。
【0077】
一つの好ましい実施形態では、タイプPE(マイクロソフトによって定義されているように、Portable Executableファイル)のファイルである.exe又は.dllファイルのような全ての実行可能なファイルに対してチェックサムが生成される。ファイルの性質に依存して、3種類のチェックサムが生成される。
【0078】
タイプ1:ファイルの5つの異なるセクションがチェックサムされる。これらは、インポートテーブル、コードセクションの開始位置におけるセクション及び終了位置におけるセクション、並びにファイル全体の開始位置におけるセクション及び終了位置におけるセクションを含む。このタイプは、解析されるファイルの大部分に適用される。
【0079】
タイプ2:旧タイプのDOS又は16ビットの実行可能なファイルのために、ファイル全体がチェックサムされる。
【0080】
タイプ3:ある所定サイズを超えるファイルのために、ファイルが大きな塊毎にサンプリングされ、当該塊がチェックサムされる。ある所定サイズを下回るファイルについては、ファイル全体がチェックサムされる。
【0081】
チェックサムプロセスのために、原則としては、任意の技術が利用可能である。MD5(Message−Digest algorighm 5)は、この目的のために使用されてもよい暗号化ハッシュ関数であり、広く使用されている。
【0082】
これにより、チェックサムの実行可能な要素のみを観察すると共に実行可能な共通のコードを共用している2つの実行可能な要素を比較することで、核となるチェックサムが生成される。
【0083】
上述したタイプ1のチェックサムについて言えば、3つのシグナチャープロセスが使用されてもよい。第1のプロセスは、ファイル全体を定義しており、ファイルの内容に対するほとんど全ての変更と共に変化する。特に、第1のプロセスは、プログラムの内容のサンプリングの代表例を定義している。そこでは、任意の根本的な変更がプログラムに対してなされた場合にチェックサムが変わるが、些細な変化しか識別されない場合には当初のプログラムの本体との相関が認められる。第2のプロセスは、ほとんど変化しないプロセスのプロセス指示のみを定義している。第3のプロセスは、ファイルサイズを利用し、これにより、異なるサイズのオブジェクトの不一致の可能性が大いに低減される。異なる同等物と共に個別に現れる全てのシグナチャーの発生を追跡することで、変更された又は共通点から生成された一方で新たな悪意のある機能を実行するように編集されたプロセスを識別することができる。
【0084】
チェックサムデータと共に、オブジェクトについてのメタデータがキャプチャされ且つベースコンピュータ3に送信されることが好ましい。その他のタイプのうちキャプチャされ且つベースコンピュータ3に送信されるメタデータのタイプは、以下であってもよい。
【0085】
“イベント:Events”:これらは、その他のオブジェクト又はその他のエンティティの上で活動するオブジェクトの活動態様又は行動パターンを定義する。イベントは、活動を実行するオブジェクトのキー(“アクター:Actor”)、実行されている活動(“イベントタイプ:Event Type”)及びその上で活動が実行されているオブジェクトのキー若しくはその他のエンティティの固有性(“ビクティム:Victim”)という3つの原理的な構成要素を有する。例えば、イベントデータは、オブジェクトが通信しているネットワークエンティティ、オブジェクト上で活動する又はオブジェクトによって活動されているその他のプログラム、データベース又はオブジェクトによって記述されたIPレジストリキーの固有性、例えば、IPアドレス又はURLをキャプチャしてもよい。この構造は、簡易である一方で、一連の行動パターン及び関連性を制限なく定義することができる。イベントの3つの構成要素の一例は、以下であってもよい。
【0086】
【表1】
【0087】
“固有性(アイデンティティ:Identity)”:これらは、オブジェクトの属性を定義する。これらは、例えば、ファイル名、ディスク上での物理的な位置、ファイルシステム内におけるディスク上での論理的な位置(パス)、ファイルが生成されたのはいつか、最後にアクセスされたのはいつか、最後に修正されたのはいつか、ベンダー、ファイルの一部である製品及びファイルのバージョン番号として格納されている情報を含むファイルヘッダの詳細情報、当初のファイル名、並びにファイルサイズを含む。
【0088】
“ジェネシスアクター(Genesisactor)”:イベントの直接的なアクターではないものの実行されているイベントの根本的な原因であるオブジェクトのキーである。例えば、ソフトウェアがインストールされる場合には、これは、ユーザ又はシステムが最初に実行し且つソフトウェアのインストールプロセス(例えば、Setup.exe)を起動したオブジェクトのキーであり得る。
【0089】
“補助的データ(アンサレリデータ:Ancillary data)”:、多くのイベント、例えば、レジストリランキーを記録するために使用されるイベントのようなイベントは、補助的データを要求してもよい。この場合、“イベント”は、レジストリランキーを生成するアクターオブジェクト、イベントタイプそのもの(例えば、“レグランキー:regrunkey”)並びにレジストリランキーのビクティム若しくは対象者を識別してもよい。この場合の補助的データは、ランキーエントリーそのもの、ハイブ、キー名及び値を定義し得る。
【0090】
“イベントチェックサム:Event Checksums)”:イベントデータは、単一のイベント、アクター及びビクティム並びに任意の補助的データに対するその固有性のために数百バイトの情報に及ぶ極めて大きなサイズとなり得るがゆえに、システムは、このデータ自身がイベントチェックサムによってまとめられることを許可している。CRCやADlerのような各種アルゴリズムを利用する2つのイベントチェックサムが使用される。チェックサムは、イベントのためのコアデータのチェックサムである。これにより、リモートコンピュータ2は、データのチェックサムを、格納されているこれらチェックサムに関するデータを既に有している可能性のある中央コンピュータ3に対して送信することができる。この場合、リモートコンピュータ2に更なる情報を要求することはない。中央サーバ3がチェックサムを受信していない場合に限って、中央サーバ3は、リモートコンピュータ2に関連するデータを要求する。これにより、リモート及び中央コンピュータ2、3の双方のパフォーマンスの劇的な向上が実現され、結果、ずっと効率的なスケーリングが可能となる。
【0091】
従って、リモートコンピュータ2から取得されるメタデータは、コミュニティーに跨るプロセスの行動パターンを定義するために、コミュニティデータベース7において使用され得る。上述したように、データは、上述した要素(ファイルサイズ、位置等)の少なくとも一つ、2つ、3つ、4つ、5つ又は7つ全て(または、ここでは具体的に言及されていないさらに多くの要素)を含んでいてもよい。コミュニティデータベース7に格納されているデータは、オブジェクトの生成、オブジェクトの構成、オブジェクトの実行、オブジェクトの行動パターン、オブジェクトの固有性、並びに、オブジェクト上で活動する又はオブジェクトによって活動する他のオブジェクト若しくはエンティティとオブジェクトとの関係性についての広範囲に及ぶ推論を提供する。これは、コミュニティデータベース7内で使用するためであって且つ既に保持されているルールに追加されてもよいルールとしての新たな自動化されたルール及び発見的手法をモデリングし、テストし且つ生成する際に適宜使用されてもよいし、未知のプロセス及びプロセス活動に対するリモートコンピュータ2の反応を識別し且つ判定するためにリモートコンピュータ2のローカルデータベース内で使用されてもよい。
【0092】
更に、同種のエンティティとしての任意の選択可能なサブプロセスと共にプロセスを監視し、コミュニティーの全域に渡ってトップレベルのプロセスの活動を比較し、一又は複数の特定のサブプロセスがロードされている時にある潜在的で悪意ある活動が発生していることを推定することができる。これにより、今日では当然に悪意あるコードの主要源となっているインターネットからユーザが取得するダウンロード可能なオプションコードによって容易に修正されるプログラム(例えば、インターネットエクスプローラーやその他のブラウザ)に対する効果的な監視(不必要なブロックを伴うことなく)が可能となる。
【0093】
分散型アーキテクチャ
これまで説明したシステムは、概して、出願人の過去の出願(米国特許出願公開第2007/0016953号明細書)で説明されている。以降は、そのようなシステムを動作させる際の新しいより有益なスキームの説明を進める。当然のことながら、図1及び図2に関連する説明中では、中央コンピュータ及びコミュニティデータベースは、便宜上単一のエンティティであるものとして示される。以降の説明から明らかになるように、ベースコンピュータ3は、複数のコンピュータ及びサーバ等から構成可能であり、コミュニティデータベース7は、この中央システムに沿って分布する複数のデータベース及びストレージから構成可能である。
【0094】
図3は、ベースコンピュータ3の好ましい配置例を示す。リモートコンピュータ2は、図1及び図2を参照して説明したエージェントプログラムと同様の機能を一般的に含むエージェントプログラム10を有している。つまり、エージェントプログラム10は、コンピュータ2上におけるオブジェクト及びその行動パターンを監視する。エージェントプログラム10は、リモートコンピュータ2上で発見された新たなオブジェクトの詳細情報及びその行動パターンを送信し且つオブジェクトが安全であるか否かの判定結果を受信するためにベースコンピュータ3と通信する。エージェントプログラム10は、オプションとして、リモートコンピュータ2上で発見されたオブジェクトに関するシグナチャーのローカルコピーを保持するローカルデータベース11と通信する。
【0095】
エージェントプログラム10は、その他の商用利用可能なアンチマルウェアソフトウェアと比較して、比較的小さい。エージェントプログラムのダウンロードサイズは、1MBよりも小さく、実行時には約3MBしかメモリを占有せず、スキャンしているファイルのイメージを一時的に保持するためだけにより多くのメモリを使用する。比較すれば、その他のアンチマルウェアパッケージは、典型的には、50MBのダウンロードサイズを有し、ファイルをスキャンする際に50MBから200MBもコンピュータメモリを占有する。従って、好ましいアーキテクチャは、その他の製品と比較して、2%未満のシステムリソースしか占有しない。
【0096】
これは、主として、システムリソース(例えば、ビデオディスプレイ、ディスク、メモリ、ネットワーク)に直接アクセスし且つこれらの機能を実行するために多くの標準コード若しくは動的リンクライブラリと協業しなくともよい低水準言語で開発されている好ましいエージェントプログラム10によって実現されている。メモリの使用方法は、ファイル名又はシグナチャー全体を要求するというよりはむしろ固有の識別子によってオブジェクトを参照するための能力を提供するローカルデータベース構造にデータを格納することで、最適化されている。全ての不必要な動的リンクライブラリは、それらがもはや使用されていないものとして認識されているように、プロセスから即座にロードされることはない。そして、CPU使用率を低減するために、バックグラウンドスレッドがマージされる。小さく且つ効率的なエージェントは、コンピュータのパフォーマンスに与える負荷又は影響を小さくしながら、より迅速に配置可能であり且つその他のセキュリティプログラムを含むその他のプログラムと並行して使用可能である。このアプローチは、マルウェアによる攻撃の対象となる表面の領域を小さくし且つそれを本質的により安全なものにするという利点を有する。
【0097】
エージェントプログラム10は、インターネットのドメインネーム解決システム(Domain Name Resolution System:DNS)50を介して、インターネット1を超えてベースコンピュータ3と通信する。
【0098】
ベースコンピュータ3は、一又は複数のサーバ(この例では、ウェブサーバ)を備える第1レイヤを有する。本開示では、ウェブサーバ61を“FXサーバ”又は“脅威サーバ”と称し、第1レイヤを“FXレイヤ”と称する。しかしながら、当然のことながら、必要に応じて任意のタイプの適切なサーバが必要に応じて使用されてもよい。リモートコンピュータ2は、後に詳述するように、ウェブサーバ61のうちの一つに割り当てられる。
【0099】
FXレイヤ60は、リモートコンピュータ2から送信されるオブジェクトの詳細情報に基づいて、オブジェクトが無害であるか又は悪意があるか否かについてのリアルタイム判定を行う。FXレイヤ60の各ウェブサーバ61は、ベースコンピュータ3に知られているオブジェクトの全てについてのエントリー及びオブジェクトが安全であるか若しくは安全でないかについての分類結果を含むデータベース62に接続されている。データベース62は、リモートコンピュータ2から送信される情報に基づいて未知のオブジェクトが安全であるか又は安全でないかを決定するためのルールを格納している。ウェブサーバ61は、シグナチャーを照合することでオブジェクトが安全であるか若しくは安全でないか又は未知のものであるかを判定するために、データベース62を最初に検索する。上述したように、シグナチャーは、ファイルそのもの、オブジェクトに関するイベントデータ及び/又はオブジェクトについてのメタデータの任意の組み合わせに由来するハッシュ関数(チェックサムデータ)となり得る。オブジェクトが未知のものである場合には、ウェブサーバ61は、ルールのいずれかによってオブジェクトが安全でないものとして分類されるかどうかを判定する。それから、ウェブサーバ61は、オブジェクトが、安全であり且つ実行が許可可能かどうか、安全でなく且つ実行が禁止されるかどうか、又は未知のものであり且つユーザの好みに応じて実行が許可されるか若しくは許可されないかどうかを、リモートコンピュータ2に返答する。
【0100】
従って、FXレイヤ60は、リモートコンピュータ2上におけるマルウェアの実行が許可可能か否かを判定するために、脅威に対してリアルタイムに反応(作用)する。
【0101】
FXレイヤ60の下層には、第2レイヤ(ここでは、“ENZOレイヤ”70と称する)が位置している。リモートコンピュータ2からFXレイヤ60によって受信されたオブジェクトについての情報は、全てのリモートコンピュータ2から受信した全てのデータのマスターレコードがENZOレイヤ70において保持されるように、ENZOレイヤ70に送信される。このプロセスは、後に詳述される。
【0102】
ENZOレイヤ70は、全てのリモートコンピュータ2から全てのウェブサーバ61から受信した情報の全てを集約する一又は複数の“マスター”データベースに接続されている一又は複数のサーバ74(本開示では、“中央サーバ”又は“ENZOサーバ”と称する)を有する。データベースは、以下の3つのデータベースの任意の組み合わせを備えていてもよく、このましい実施形態では3つのデータベースの全てを備えている。
【0103】
1)オブジェクトのシグナチャー(例えば、それらのMD5チェックサム)を含み且つオブジェクトについて受信したメタデータ(例えば、ファイル名、ファイル位置、又は、上述したようにシステムによって収集されたその他のメタデータ)を含むエントリーを有するオブジェクトデータベース71。
【0104】
2)リモートコンピュータ2において観測されたオブジェクトの行動パターンの詳細情報を収集するための行動パターンデータベース72。このデータベース72は、リモートコンピュータ2から送信されたイベントデータによって入力され、このデータベース72により、行動パターン及びオブジェクトがコミュニティーの全域に渡って有する関係性を示す図を作り上げることができる。
【0105】
3)オブジェクトの詳細情報が送信されている間にリモートコンピュータ2から送信される識別コードをオブジェクトと関連付けることで、コミュニティー内のリモートコンピュータ2とそれらリモートコンピュータ2上で観測されるオブジェクトとを関連付けるコンピュータ−オブジェクトデータベース73。好ましくは、コンピュータは、リモートコンピュータから送信される次の少なくとも3つの識別子:物理システムに関連する識別子;オペレーティングシステムのインスタンスに関連する識別子;及びログインしたユーザに関連する識別子によって識別される。
【0106】
当然のことながら、夫々が平均して数百から数千のオブジェクト(これらオブジェクトの夫々は、多数の行動パターンを有すると共に他のオブジェクトと関連している)を有する例えば1000万台以上のリモートコンピュータ2を有するコミュニティーにおいては、データベース71、72、73において保持されるデータ量は膨大である。
【0107】
コミュニティーの全体に渡ってオブジェクトの行動パターンを監視すると共にオブジェクトを調査し且つ対象となるマルウェアに対してルールを展開する際には、ENZOサーバ74は、自動的に又は人としてのアナリストからの入力に従って、データベース71、72、73に対してクエリ(問い合わせ)を行い且つ動作可能である。これらのルールは、FXレイヤ60及び/又はリモートコンピュータ10上で動作しているエージェントプログラム10にフィードバックされ、この書面の中のどこかで述べたように、リモートコンピュータ2上でのマルウェアの実行を停止するためにウェブブラウザ61又はエージェントプログラム10によってリアルタイムに使用される。マルウェアを正確に停止させるこれらのルールのパフォーマンス(実績)は、ENZOレイヤ70にフィードバックされ、ルールを改善するために用いられる。ここで用いられる技術は、以降の開示において更に記載されている。
【0108】
好ましい実施形態では、FX及びENZOレイヤ60、70におけるサーバ61、74及びデータベース62、71、72、73のいくつか又は全ては、クラウドコンピューティングを用いて実装される。クラウドコンピューティングは、位置依存がなく、それゆえに、コンピュータ及び他のデバイスに対して、共用されるサーバがリソース、ソフトウェア及びデータを適宜提供するコンピューティングを提供する方法である。一般的に、クラウドコンピューティングの顧客は、物理的なインフラストラクチャを保有することなく、代わりに、第三者たる提供者から借り受けて使用することで資金的な支出を避ける。クラウドコンピューティングのユーザは、使用したもののみを対象として提供者に対価を支払うので、ハードウェア、ソフトウェア及びサービスに対する資金的な支出を避ける。新たなリソースは、迅速に配置可能である。これにより、ユーザにとっての柔軟性の度合いが大きくなる。
【0109】
クラウドコンピューティングの一例は、Amazon.comクラウドコンピューティングプラットフォームであるAWS(Amazon Web Service:アマゾンウェブサービス)の中核になるアマゾンEC2(Amazon EC2:Amazon Elastic Compute Cloud)である。その他の一例は、アプリケーション及びデータを顧客がクラウド上に展開することを可能にするマイクロソフトクラウドプラットフォームであるWindows(登録商標) Azure Platform(マイクロソフトアズールプラットフォーム)である。EC2は、本例においてクラウドコンピューティングを提供するために使用されている。とはいえ、原理的には、その他の適切なクラウドアーキテクチャがベースコンピュータ3を実装するために使用可能であることは当然である。或いは、従来のデータセンターがベースコンピュータ3を実装するために使用可能である。または、従来のデータセンターとクラウドに基づくアーキテクチャとの組み合わせが使用可能である。
【0110】
EC2によれば、ユーザは、ユーザ自身のコンピュータアプリケーションを実行するための仮想的なコンピュータをレンタルすることができる。EC2によれば、任意の所望のソフトウェアを含む仮想マシン(アマゾンはそれを“インスタンス”と称する)の生成のためにAmazon Machine Image(アマゾンマシンイメージ)をユーザが起動可能なウェブサービスを提供することで、アプリケーションの拡張性のある配置が可能となる。
【0111】
ユーザは、アクティブなサーバに対して時間単位で対価を支払うことで必要に応じてサーバインスタンスを生成し、起動し且つ停止することができる。結果、弾性的なコンピューティングが提供される。EC2によれば、ユーザは、待ち時間の最適化及び高いレベルでの冗長性を考慮したインスタンスの地理的位置を管理することができる。例えば、故障時間を最小化するために、ユーザは、故障の大部分の原因に対処するべく、互いに分離した複数のゾーンにサーバインスタンスを配置することができる。その結果、一のサーバインスタンスが他のサーバインスタンスをバックアップする。このように、クラウドは、ユーザのコンピューティングリソース及びその構成(例えば、リソースにインストールされたオペレーティングシステム及びソフトウェアパッケージ)の完全な管理を提供する。アマゾンEC2によれば、ユーザは、オペレーティングシステム及びアプリケーションに最適なメモリ、CPU、インスタンスストレージ及び起動用のパーティションサイズの構成(設定)を選択することができる。EC2は、新しいサーバインスタンスを取得し且つ起動するために必要な時間を数分に低減し、その結果、ユーザは、彼らのコンピューティングリソースの変化に合わせて迅速に容量を増減する(つまり、増加させ且つ減らす)ことができる。
【0112】
EC2は、多くのデータセンターを、米国東海岸(US East Coast)、米国西海岸(US West Coast)、ヨーロッパ(EU、アイルランド)及びアジア太平洋(APAC:Asia Pacific)(シンガポール)を含む地理的に異なる地域に保持する。図4に示すように、好ましい実施形態では、サーバ及びベースコンピュータ3のデータベースは、これら複数の地理的位置80に実装される。
【0113】
それゆえに、FXレイヤ60におけるウェブサーバ61の特定のインスタンスに対してリモートコンピュータ2をどのように割り当てるかという重要な疑問点が生ずる。この決定に対する重要な考察点は、待ち時間を最小にすると共にウェブサーバ全体に渡って負荷を均等に分担するという点である。理想的には、使用されているウェブサーバを避け且つ要求されるウェブサーバの数を最小化するために、リソース上の負荷は、ウェブサーバの全てのインスタンスに渡って概ね均等に分配される。リモートコンピュータ上のエージェントプログラム10の速度及びサイズを著しく増大させることがない又はベースコンピュータ3に対してオーバーヘッドを発生させることのないシンプルな解決法を実装することもまた望まれる。
【0114】
1)好ましい実施形態では、エージェントプログラム10は、リモートコンピュータ2をウェブサーバ61に割り当てる際に、リモートコンピュータ2の地理的位置を使用する(、即ち、クラウドの地理的位置80に対する近接性に基づく)。リモートコンピュータの位置は、任意の都合のよい方法、例えば、既に知られている位置範囲のデータベースに対してリモートコンピュータ2のIPアドレスを調査する方法又は目的とするサーバに到達するまでに必要とされる“ホップ数”を特定するためにネットワーク経路解析を行う方法によって特定されてもよい。この機能は、リモートコンピュータ2上で実行されているエージェントプログラム10によって、コンピュータ2に最初にインストールされた時に実行される。位置に基づいて割り当てることで、待ち時間が最小化される。
【0115】
2)好ましい実施形態では、エージェントプログラム10は、どのウェブサーバ61にリモートコンピュータがマッピングされるべきかを決定するために、リモートコンピュータ2の固有の識別子と共に行われるインストールの日時に基づいて、ランダムな数を生成する。これにより、数千ものリモートコンピュータが同時に実装されている場合であっても、ウェブサーバ61の間で負荷を均等に分担するような、リモートコンピュータ2をウェブサーバ61にマッピングするためのシンプルで、疑似的で且つランダムな方法が提供される。
【0116】
3)DNS分散レイヤは、URLを物理的なデータセンターにマッピングする。ドメインネームシステム(DNS:Domain Name System)は、インターネット又はプライベートネットワークに接続されるコンピュータ、サービス又は任意のリソースのための分散型データベース上に構築される階層的なネーミングシステムである。それは、様々な情報を、参加しているエンティティの夫々に割り当てられているドメインネームに関連付ける。DNS分散ネットワーク50により、FXレイヤ60を構成する複数のサーバ61間での負荷バランスが実現される。
【0117】
リモートコンピュータ2をウェブサーバ61に割り当てるために、これらの技術の任意の組み合わせがエージェントプログラム10によって使用されてもよい。好ましくは、これら3つの技術の全てが組み合わされて使用される。
【0118】
エージェントプログラム10は、好ましくは、主たるURLが何らかの理由(例えば、サーバの故障)によって利用可能でない場合にリモートコンピュータ2を異なるURLに再度マッピングするための二次的なアルゴリズムを有している。また、マルウェアがDNSメカニズムを動作不能に陥れてきた場合には、エージェントプログラム10は、この目的のために確保されていた一連のダイレクトIPアドレスを直接的に参照することで、FXサーバ61と直接的に通信可能である。
【0119】
オプションとして、エージェントプログラム10は、コンピュータが既に接続されているサーバ61からのフィードバック/指示を受信することで、リモートコンピュータ2を異なるサーバ61に再度割り当てることができるように構成される。これは、エージェントプログラム10のサーバ61に対する割り当てに対して中央での集中制御を行うために使用可能であり、結果、システムにおける柔軟性が増す。
【0120】
従って、このスキームによれば、地理的位置を取り扱いつつも、サーバ間で動的に負荷バランスを図り且つ柔軟性を付加するためのシンプルで且つエージェントによって管理された方法が実現される。既に公知の従来の構成では、負荷を他のサーバに分配するための特別なハードウェア負荷バランサがネットワーク中に配置されているか、又は、エージェントプログラム10がインストールされた時点でエージェントがウェブサーバ61に対して手動で割り当てられている。
【0121】
クラウドベースの分散アーキテクチャをベースコンピュータ3のために使用することは、全てのサーバに渡ってデータの統一性を維持しようと試み且つ多くのサーバの全てに渡ってデータの更新を管理する際に、課題を生み出す。これまでの記載で明らかなように、典型的な実装例としてのウェブサーバ61は、多くのデータを取り扱っている。データ中には、どのオブジェクトがマルウェアであるかについてのルールを決定するために使用可能な多くの共通性があるはずである。しかしながら、全ての地域の全てのウェブサーバ61に全てのデータを格納することは現実的ではない。これは、データがリアルタイムで共通化されているか否かを判定するという課題を生み出す。
【0122】
この問題を解決するために、好ましい実施形態は、次のスキームを採用する。FXレイヤ60の各ウェブサーバ61は、リモートコンピュータ2上で確認されたオブジェクトについてリモートコンピュータ2から受け取るデータのパケットを調査する。エージェントプログラム10は、データパケットのチェックサムを生成し、それをウェブサーバ61に送信する。ウェブサーバ61は、既に確認されており且つ既にENZOサーバ74に送信されたオブジェクトのデータベース62を有している。ウェブサーバ61は、受け取ったデータのチェックサムがそのデータベース62に存在しないかを確認する。チェックサムが見つかった場合には、そのデータは、既にENZOサーバ74によって確認されている。この場合、ウェブサーバ61は、ソフトウェアの断片の評判又は特定のイベントの発生頻度の判定を支援するために、そのデータベース内でチェックサムに関連付けられ且つデータが確認された回数のカウント数を増加させればよい。この情報は、それからENZOサーバ74に転送可能である。チェックサムがFXデータベース62内に見つからなければ、ウェブサーバは、リモートコンピュータからのデータパケット全体を要求し、これをENZOサーバ74に転送する。ENZOサーバ74は、適切なデータベース71、72、73にこのデータを格納する。従って、ENZOレイヤ70は、オブジェクトデータベース71内に、全てのデータオブジェクト、リモートコンピュータの全てにおいて確認されたそれらのメタデータ及び行動パターンのマスターリストを保持する。このマスターリストは、全ての地理的位置80内の全てのウェブサーバ61に返送される。従って、全てのウェブサーバ61は、コミュニティーによってどのオブジェクトが確認されたかについての情報を用いて更新される。
【0123】
このスキームは、典型的にはウェブサーバによって受信されたデータの各断片がシステム内の他の全てのウェブサーバに即座に伝搬する従来のスキームと比較して、ネットワーク内の処理負荷及びトラフィックを概ね1/50倍に低減すると認められている。
【0124】
ENZOレイヤ70内のマスターデータベース71,72、73に保持されるデータにより、ユーザのためのデータに対して、拡張性、アクセス性及び柔軟性が付加される。当然ながら、ただ一つの活動中のENZOサーバ74が使用されている場合には、仮のそのサーバがアクセス不可能になるとすれば、全ての活動中のデータが失われてしまう。このため、各地域80の少なくとも1つのENZOサーバ74に冗長性を持たせることが好ましい。これは、ウェブサーバ61が全て同じENZOサーバ74に直接的に接続されていない一方で、ウェブサーバ61が自身の地域80のENZOサーバ74のみに接続されていることを意味する。このため、データを複数のデータベースサーバに提供する拡張的な方法が必要となる。
【0125】
図5は、ウェブサーバ61からENZOサーバ74へのデータの更新スキームを概略的に示す。各ウェブサーバ61は、各ウェブサーバ61に接続された2つの一時的なデータベース63a、63bを有している。初期の開始点においては、一方のデータベース63aは、部分的にいっぱいの63b(アクティブ)であり、他方は空(非アクティブ)である。オブジェクトについての情報がリモートコンピュータ2からウェブサーバ61によって受信される間に、ウェブサーバ61は、アクティブなデータベース63aにそれを格納する。この情報は、リモートコンピュータ2によって受信された、リモートコンピュータにおいて確認されたオブジェクト又はイベントについてのチェックサム情報であろう。ウェブサーバにおいてチェックサムが以前に確認されたことがない場合には、チェックサムと共に、オブジェクト又はイベントについての関連するデータがデータベースに格納される。
【0126】
アクティブなデータベース63aが所定サイズになると又は何らかのその他の基準が満たされると、この状態になった時点でのタイムスタンプと共に、アクティブなデータベース63aの内容が、長期保存可能なストレージに移動される。これが発生している間、非アクティブなデータベース63bがアクティブになり且つ新たなデータが来るたびに当該新たなデータで満たされ始める。そして、以前アクティブであったデータベース63aは消去され且つ非アクティブになる。再びこのデータベースがいっぱいになると、タイムスタンプと共にデータベースの内容を長期間保存可能なストレージに移動させるプロセスが繰り返され、データベースが取り替えられる。好ましい実施形態では、FXレイヤ60は、長期保存可能なストレージに対する入力/出力を管理する責任を負うS3サブレイヤ65を有する。S3(Simple Storage Service:シンプルストレージサービス)は、アマゾンウェブサービスによって提供されているオンラインストレージウェブサービスである。S3は、シンプルなウェブサービスインタフェースを介して安全で且つ揮発性でない環境下で大量のデータを格納するためのアマゾンのサービスである。S3は、FXサーバからENZOサーバに送信されるFXサーバデータの履歴を格納するために使用される。データのブロックが長期保存可能なストレージ66に移動すると、S3レイヤ66は、ENZOサーバがそのデータベースをアップデートできるように、このデータをENZOサーバ74又はサーバに転送する。全てのFXサーバは、S3ストレージサービスを介して、全てのENZOサーバにデータを入力する。
【0127】
データベース63a、63bは、例えば数分又は数秒毎に長期保存可能なストレージ66にデータを移動することで空になってもよい。しかしながら、当然の如く、実際に使用される期間は、データベースの負荷及びサイズに応じて選択可能であり、例えばデータベースの負荷又はデータのサイズに基づいて動的に選択されてもよい。
【0128】
従って、S3レイヤ65は、コミュニティー内の全てのウェブサーバ61によって受信されたデータの全てを保持する。これは、図6に示すように、多くの利点を有している。
【0129】
まず、これは、例えばENZOサーバ74に問題が生じた場合にマスターENZOデータベース71、72、73の再構築を許容するために使用可能である。また、例えばENZOサーバにおけるソフトウェアのアップグレード等の問題によってENZOサーバ74が保持しているデータがいくらか破損してしまった場合には、ENZOサーバ74におけるデータベースの状態を、破損が発生する前の時点の状態に戻すことができる。S3レイヤ65におけるデータのブロックに関連付けられたタイムスタンプを使用することで、ENZOサーバ74は、S3レイヤ65における長期保存可能なストレージ66内のデータブロックのENZOサーバ74への再送信を要求することができる。その結果、サーバのデータベース71、72、73は、最新のものになる。
【0130】
更に、このスキームを用いて、複数の地域80のENZOサーバ74は、S3レイヤからデータを受信することで、ENZOデータベースのバックアップデータベースを生成することができる。これは、活動中のENZOデータベース74に影響を与えることなく実行可能であり、これらデータベースはシームレスに機能し続けることができる。
【0131】
代替方法として、マスターサーバに指定された単一のENZOサーバにおけるデータベースにデータを移動すると共に、マスターサーバからコミュニティー内のその他のサーバにデータを伝搬する方法がある。しかしながら、この方法は、実質的には、一つの“活動中の”サーバ及び一若しくは複数のバックアップを生成している。従って、バックアップサーバが使用されているものの、活動中のサーバは、タスクの大部分、例えば、エージェントから受信したデータの前処理、データベースの更新及び脅威のためのデータの解析を実行する。従って、活動中のサーバは、バックアップサーバよりも高性能でなければならない。これは、どちらかと言えば、リソースの無駄であり且つ非効率である。対して、好ましい実施形態は、サーバ間で均等に負荷を分担する。
【0132】
オペレータ、人としてのマルウェアの解析者等は、調査等のために、活動中のサーバからのデータのコピーを保有していることが好ましい。活動中のサーバ及びバックアップサーバと同様な方法でイメージサーバが生成されてもよい。システムのユーザは、オフラインでの使用のためにイメージを取得する必要がある場合に、イメージサーバをオフラインにする。イメージが取得されると、イメージデータベースは、S3レイヤからのデータのブロックを用いて最新のものになる。
【0133】
クラウドコンピューティングは、ウェブサーバのインスタンスを極めて迅速に(例えばほんの数分のうちに)再生成することができる。従って、クラウドコンピューティングは、トランザクションの量が増える(又は減る)実装環境下で有益である。この場合、新たなサーバインスタンスは、新たな負荷を処理するために迅速に生成可能である。しかしながら、イメージを生成するためには、活動中のサーバのイメージを取得する必要がある。これは、イメージングの間にそのインスタンス上で実行されているプロセスを破壊につながりかねない。従って、この期間中に活動中のサーバを使用不可能にすることは、明らかに受け入れ可能なことではない。従って、活動中のサーバ及びバックアップサーバと同様の態様で更新されるENZOサーバを支援するべく、特別の専用のイメージサーバが配置される。この場合、イメージサーバは、オフラインになった上でイメージが取得される。このプロセスは、例えば30分かかるかもしれない。この間、イメージサーバは、S3サーバからの更新を受信せず、それゆれに最新の状態にはない。しかしながら、サーバがオフラインになった正確な時間が分かっているがゆえに、オフラインになった時点よりも後のタイムスタンプを有するデータブロックをS3サーバに要求することで更新可能である。従って、更新されたサーバのイメージがオフラインでの使用のために取得可能であり、システムの実行に影響を与えることなくイメージが最新のものになる。
【0134】
ENZOレイヤ70のアーキテクチャはスケールアウト可能であることが好ましい。例えば、活動中のサーバは、ウェブサーバ61又はエージェントプログラム10から見れば、トラフィックの増加に起因して全能力を使用してしまうかもしれない。例えば、ENZOレイヤ70に送信される大量の新たなデータに繋がるものの、より多くのリモートコンピュータ2がシステムに接続されるかもしれないし又は共通のソフトウェアパッケージが更新されるかもしれず、これらの現象は、ENZOレイヤ70に送信される大量の新たなデータを生み出し得る。この場合、水平的にスケールアウトするために(既存のサーバにより多くのCPU/メモリを追加することとは対照的に)、二次的な又は更なる活動中のサーバインスタンスがENZOレイヤ70において生成可能である。上述したように、クラウドコンピューティング環境化でENZOサーバ74のイメージを生成することは、相対的に容易である。図7に見られるように、各サーバ74のデータは、複数のセクションに分割されている。この場合、サーバ74上のデータは、8つのセクション0−7に分割されている。各セクションは、サーバ上のプロセスを分担する。サーバが分割される時、様々なセクションが各サーバに割り当てられてもよい。例えば、図7に示す例では、オリジナルなサーバL1がデータ0−3を処理し、新たに生成されたサーバL2がデータ4−7を処理する。各サーバは、前処理及び自身のデータの格納を取り扱う。データを解析する目的のために、これら複数のサーバからのデータは、人としての解析者がマルウェアを調査する際に完全なデータのセットを検討できるように(後に詳述する)、好ましくは、サーバによって集約される。もちろん、データは、必要に応じてサーバの間で異なる方法で分割可能である。
【0135】
単一のデータベースを保持し且つ複数のサーバの全体に渡って負荷を分散する必要があるかどうかを分析しなければならない代わりに、好ましい実施形態では、データベースは、予め分析されている。複数のサーバの全体に渡ってデータベースの処理負荷の更なる分散を図るように移行することはずっと容易である。
【0136】
データセクションの数は、好ましくは、8になると選択される。なぜならば、これは、適切な柔軟性及び拡張性を付与するために十分だからである。しかしながら、800%を超える拡張を常に必要とするビジネスは珍しい。とはいえ、その他の複数の数のデータセクションが適宜使用可能である。
【0137】
このアーキテクチャによれば、複数の位置及びサーバの全体に渡って、大量のデータを管理することができる。アーキテクチャはスケールアウト可能であり、サーバは、余分な仕事を増やすことなく又はシステムの実行に影響を与えることなくコピー可能である。データは、動的に変化可能なサーバの全体に渡ってやりとり可能である。
【0138】
傾向データの使用
マルウェアは、かなりのペースで進化する。歴史的に、マルウェアは、単一の感染物(モジュール又はプログラム)を利用して多くのコンピュータに感染していた。これによりマルウェアの調査者が感染に迅速に気付くことができ、脅威を識別し且つ抑止するためにシグナチャーが迅速に展開された。直近の10年において、マルウェアの作者は、共通の目的を共用する多くの可変モジュールを含む脅威を作成してきた。これらの脅威を検出し且つ抑止することは、マルウェアの調査者にとって、並びに、任意の一つが一又は複数に感染し得る全てのバリエーションを識別し且つ抑止するために必要なシグナチャーの生成及び配布にとって、ずっと大きな困難である。このような可変で分散するという現代の脅威の性質に起因して、マルウェアの調査者は、脅威が存在することを識別する際に遅れをとっている。
【0139】
パス及びファイルの詳細によって相関がある新しいプログラム及びモジュールのハッシュ値、シグナチャー及び統計データを収集し且つこの情報を中央位置に集約することで、新たな脅威をより迅速に識別可能な解析方法を使用することができる。
【0140】
生成される新たな商用プログラム及びモジュールの量は、日によらずにおおよそ一定であると考えられる。このデータは、オブジェクトについて収集されたメタデータ又はイベントデータのいずれでも評価可能である。一つの例において、データは、新たに生成されるファイルのパス(フォルダ)位置で評価可能である。データはまた、ベンダー、製品及びバージョン情報、レジストリキー又はベースコンピュータに転送されるデータに由来するその他の任意のシステムのような詳細な情報と共に、ファイル名及びファイルタイプ(例えば、.exe、.dll、.drv等)で評価可能である。これらの要素のうちの任意の組み合わせも利用可能である。データをグルーピングするためにどの方法が選択されても、グループの全体に渡ってこのデータの分布及びパターンのためのベースライン(基準ライン)を確立することで、アウトライナーを迅速に識別することができる。
【0141】
図8は、ある時間に渡って収集されたデータがファイルシステム内のフォルダに応じてグルーピングされた例を、確立された通常の分布(ベースライン)と比較しながら示す。windows system32サブフォルダ内の新たなプログラムの数が任意の所望期間t中(例えば、所望日)は通常はxになり且つ考慮されている特定の期間t1中は1.4xになる(又は、その他のいくらかの所定率を超える)場合には、それは、マルウェアである可能性がある活動を意味する新たなファイルの数の異常な増加を示している。この識別により、これらのアウトライナーに大きく着目することができる。自動的にグルーピングし、識別し又は調査能力を優先付けると共にマルウェアの判定を行うこのアウトライナー情報を使用可能なプロセスは、容易に開発可能である。マルウェアを識別するために自動化されたルールが使用される場合には、この情報は、アウトライナーとして識別されたグループ内のオブジェクトに適用される際のこれらのルールの感応性を自動的に高めるために使用可能である。
【0142】
この技術の他の例は、ファイル名に着目し且つその名称を利用する新たなオブジェクトの数若しくは全てが新たな名称を有する新たなオブジェクトの数を比較することである。これは、製品の管理容易性を実現するために整合性を必要とする大部分の商用ソフトウェアの一般的な原則に反している。大部分の商用ソフトウェアは、2つから3つの名称のみを有し、各ファイル名は、新たな製品が利用可能になるにつれて2つから3つの異なる変名のみを有する。対して、いくつかのマルウェアは、同一の、同様の又は同様の構造の名称を利用する数千もの変名を有しており、それらは、極めて短い猶予時間(数秒から数週間)の間だけしか関連する名称を使用しないとコミュニティーによって確認されている。
【0143】
原則として、猶予時間の長さはいずれも選択可能である。実際、これは、1週間毎のような長い期間というよりはむしろ、15分毎、2時間から3時間毎又は1日という桁の期間になりやすい。
【0144】
好ましい実施形態では、調査者に対して文脈(コンテキスト)を提供する技術が提供される。マルウェアを検出する際に、人としての解析者及びコンピュータによって自動化された解析は、異なる強みを有しており、双方の能力を生かすためにある程度は一緒に使用されることがしばしばある。コンピュータは、大量のデータに対してルールを適用し且つ処理すること得意である。本願では、リモートコンピュータ2上で実行されているエージェントプログラム10から受信されるデータの量は膨大であり、コンピュータによる処理が適している。マルウェアを判定するためにこのデータの全てを人としてのオペレータに見分けさせることは現実的ではない。他方で、経験豊富な人としての解析者は、オブジェクト及び同様のオブジェクト並びにそれらの内容についての適切に注目されたデータを前提として、マルウェアを見分けることに長けている。人としての解析者は、ルールのセットを減らし且つ機械に教え込むことが難しい方法で、しばしば、“直感的に”マルウェアを見分けることができる。例えば、kernel32.dllはウインドウズオペレーティングシステム(Windows Operating System)に関連付けられたファイルである。マルウェアプログラムは、ユーザにとって即座に疑わしいことが明らかでありつつも見分け方を機械に教えることが難しい類似の名称、例えばkernel64.dllと言う名称を有しているかもしれない。
【0145】
関係性のあるデータがユーザに提示されている場合には、後から考えるとそのパターンが自明なものであるかもしれない。しかしながら、これは、リアビューミラーアプローチ(rear view mirror approach)である。その問題は、解析者が自分の時間を重要なデータに集中させることができるように、ベースコンピュータ3において受信された大量のデータの中に関係性のあるデータを見つけることである。図9に示すように、必要なことは、マルウェアの調査者が調査し且つ必要な動作102を行うことで悪意があるか若しくは安全103であるかというフラグをオブジェクトに立てるために着目するべき開始点を提供するために、原データ100から不必要な要素を取り除いて関連するデータ101のグループを生成することである。
【0146】
当然ながら、コミュニティーの全体に渡ってリモートコンピュータ2上の単一のオブジェクトは、リモートコンピュータ2上の他のオブジェクトと強い関連性を有することが可能である。関連性のネットワークを生成するために、エンティティの間の繋がりをマッピング可能ないくつかのツールが現存する。しかしながら、マルウェアオブジェクト及びそれの他のオブジェクトに対する関連性のために使用されると、高密度で且つ複雑すぎるがゆえに人としての解析者がマルウェアを識別するという目的にとっては役に立たない図表が得られるに過ぎない。問題は、解析者にとって役に立つデータが抽出されることでマルウェアである可能性がある候補に迅速意着目することができるように、このデータをふるいにかけることである。
【0147】
図10から図13に示す好ましい実施形態は、ENZOサーバ74上で実行され且つデータベースに対してクエリを行うための視覚に基づくツールをユーザに対して付与するソフトウェアプログラムを提供する。TSQLのようなクエリ言語は、例えば、ユーザの入力に基づいてデータベースに対してクエリを行うために使用されてもよい。上述したように、ENZOレイヤ70は、全てのリモートコンピュータ2上で確認された全てのオブジェクトの特性及び活動の記録を、それらのデータベース内に有している。図10は、オンスクリーン表示の例を示しており、現在のクエリの結果に合致しているオブジェクト(そのシグナチャーによって判定されている)が行によって示されているテーブル105を含むユーザインタフェースを示している。ユーザインタフェースは、新たなクエリ106を生成するための、現在の及び最近のクエリ107を表示するための、並びに、現在のクエリ108のためのテーブル内に表示されたデータをソートするためのツールを提供する。一つの画面に収まるよりも多くの結果があってもよいことは明らかである。従って、ユーザインタフェースによって提供される適切な制御109を介してユーザがアクセス可能な、結果を示す複数のページがあってもよい。
【0148】
テーブル105は、オブジェクトについての情報を示す複数のデータ列を有している。この情報は、リモートコンピュータ2によってベースコンピュータ3に送信されたオブジェクトについて収集された任意のデータ、そのメタデータ又はその行動パターンを含んでいてもよい。これは、例えば、ファイルの名称、ファイルの位置(パス)、オブジェクトに最初に遭遇した国、オブジェクトに遭遇したリモートコンピュータの識別子、そのオペレーティングシステム及びバージョン番号、ウェブブラウザ及びコンピュータにインストールされているその他の任意のセキュリティ製品の詳細情報、ファイルの作成者、ファイルに関連付けられたアイコン等のいずれかを含んでいてもよい。この情報は、ファイルについてのメタデータ、例えば、オブジェクトの作成者若しくはサイズ又はオブジェクト内の実行可能な指示に関連する情報を含んでいてもよい。このデータは、“アクター”及び“ビクティム”情報及びそのレジストリキーの詳細情報を含んでいてもよい。この情報は、オブジェクトが安全であるものとして又は安全でないものとしてリモートコンピュータ2又はFXサーバ61において識別されたか否かについての情報を含んでいてもよい。
【0149】
表示される情報は、クエリによって返答された又はコミュニティーの全体に渡る全てのオブジェクトの中で、特定の属性がどれぐらいの頻度で現れたかを示すカウント数を含んでいてもよい。加えて、この情報は、容易に理解される情報をあまり含んでいなくてもよい。上述したように、オブジェクトについて収集された情報は、実行可能な部分(例えば、ファイルの実行可能な部分の最初の500バイト)のチェックサムを含むことが可能である。多くの場合、チェックサム又はその他のデータの実際の値は、ユーザにとって殆ど又は全く興味のないものである。従って、好ましくは、この情報のいくつか又は全ては、色、形状及び/又は異なるシンボルを使用する図表態様でユーザに提示され、結果、ユーザは、より直感的に且つより迅速に、データ中のパターンを見分けることができる。
【0150】
好ましくは、少なくとも一つのデータ列が、以下のスキームに応じて提示される。
【0151】
1)オブジェクトを示すデータ行の間においてその列の値が固有である場合には、数値“1”が提示される。
【0152】
2)画面上のデータ行の間において又はクエリに合致する全てのデータ行の間において値が複製される場合には、色付けされたシンボル(例えば、緑色の三角形又は青い四角の中の“P”という赤文字)がその値のために割り当てられ、且つ、その値を共有する全ての行におけるその列に表示される。従って、シンボルが何を示しているかを知る必要なく、ユーザは、一見しただけで画面上の行が属性の共通性を有していることを認識可能である。
【0153】
これは、更なるクエリを実行するための開始点を提供する。例えば、ユーザは、興味を引くオブジェクトの間の共通性を迅速に認識することができる。この開示のどこかで説明したように、典型的なマルウェアの痕跡は、オブジェクトが多数のファイル名、ファイル位置、類似のファイルサイズ、類似のコード部分等を使用しているということである。このプログラムにより、ユーザは、例えば、クエリの述部に特定の属性値を追加するために又は述部におけるこの列の値と共に新たなクエリを開始する等のために、テーブル内の列をクリックし且つクエリ生成ツール106を使用することで、クエリを改善することができる。
【0154】
このプロセスの最終的な目的は、共通性を有する最大数の行に返答するクエリをユーザが見出すことである。このプロセスにより、ユーザは、基準を要求する類似のオブジェクトを正確に識別するために使用されるハッシュ値及びその他のメタデータ定義からなる基準のセットを識別する。例えば、図11は、共通性を有するオブジェクトを示し且つ高度な共通性を有する行に返答するユーザクエリを示している。ソフトウェアはまた、好ましくは、クエリから返答を受けたオブジェクトのための統計画面をユーザが持ち出すことを許可する。特に、図12に示すように、インタフェースは、ユーザに対して、クエリから返答を受け、マルウェアであるとしてデータベースに登録されている(知られている)オブジェクトの数、マルウェアでないと登録されている数、及び、オブジェクトがマルウェアか否かがまだ知られていない数(図12においては、異なる影/色が付されたバーによって示されている)を表示可能である。クエリの結果又はユーザによって選択されたある属性を有するオブジェクトについての他のデータは、図13に示すように、図表の形式、例えば、バーグラフ又はパイグラフ(円グラフ)で提示可能である。ユーザは、クエリの結果がマルウェアを判定するか否かを決定する際に、テーブル105に示されている情報に加えて、この情報を考慮可能である。ユーザはそれから、例えばクエリによって返答を受けたオブジェクトをマルウェアであるとして、マルウェアでないとして又は疑わしいものとしてタグ付けし且つ更なる調査を要求するという適切な動作を行うことができる。従って、オブジェクトを確認した全てのエージェント10においてオブジェクトの統一的な表示物(即ち、そのメタデータ及び行動パターン)にクエリを実行し且つ解析することが可能であることにより、人によるものであろうがコンピュータによるものであろうが、より情報量のあるオブジェクトの表示物を得ることができる。加えて、オブジェクトの任意の基準、即ち、メタデータ及び行動パターンに基づいて、オブジェクトを横断的にグルーピングすることができる。
【0155】
一例をあげると、悪意のあるオブジェクトがオペレーティングシステムの“ごみ箱(recycle bin)”に位置していることは、ある種のマルウェアの、以前に認識済みの痕跡かもしれない。これは、ユーザにとって、パス属性を確認することでごみ箱に位置する全てのオブジェクト(又は、ユーザによって指定された特定の時間フレーム中に遭遇する全てのオブジェクト)を見つけるクエリを実行するための開始点となる。これは、ユーザに対して、確認された異なるオブジェクトに対応する行(例えば、異なるMD5シグナチャーに対応する行)を表示する。ユーザは、列内の値をクリックすることで興味ある属性を選択し、結果、行を通して掘り下げることができる。例えば、ユーザは、オブジェクトのアイコンがノートパッドプログラム(それは、マイクロソフトウインドウズ(RMT)オペレーティングシステムに搭載されている)に使用されているアイコンと同一であることをその属性が示しているものの、マイクロソフトのオリジナルのプログラムではないオブジェクトを選択してもよい。システムは、好ましくは、クエリを改善する際にブール演算を適用することをユーザに許可する。クエリがオブジェクトを分類する際により多くの有用な情報をユーザに与えるために、システムは、悪意がある又は無害であるとシステムが知っているオブジェクトをクエリがどの程度包含しているかについての統計をユーザが持ち出すことを許可する。
【0156】
このスキームに応じてオブジェクトをグルーピングすることに従事するユーザは、熟練したマルウェアの解析者である必要はない。ユーザは、ツールを使用すること並びにクエリを実行し且つ共通性を探索することでオブジェクトをグルーピングすることに対する基本的な訓練のみを必要とする。熟練したマルウェアの解析者は、クエリによって対象に含められたオブジェクトの最終解析者となることができる。このシステムの利点は、人としてのオペレータが完了させるにはタスク量が多すぎて現実的ではない原データの処理にコンピュータが使用されるという点である。データをグルーピングする人としてのオペレータは、熟練者である必要はなく、その結果、ビジネスとしてのコストの低減につながる。これは、コストの低減につながると共に、更なる調査の有力な候補になると判明したクエリに対して熟練したマルウェア解析者を集中させることができる。従って、これらオペレータのスキルは、マルウェアを識別する彼らの経験を使用する際に、最も効果的に配置される。
【0157】
図9に関して、ステージ103において、クエリによって返答を受けたオブジェクトを安全である又は安全でないものとして分類する際にクエリ(Q5)が決定性のクエリであるとユーザが決定する場合には、ウェブサーバ61及び/又はリモートコンピュータ2におけるエージェントプログラム10に対してルールが返送され、ウェブサーバ61又はリモートコンピュータ2において確認された新たなオブジェクトが安全であるか又は安全でないかをリアルタイムに決定する際に使用される。
【0158】
コミュニティーによって以前に確認されていない新たなオブジェクトがリモートコンピュータ2若しくはウェブサーバによって取得され、且つ、リモートコンピュータ2若しくはウェブサーバ61によって実行されているルールの一つによって安全でないとみなされる場合には、リモートコンピュータ2上でオブジェクトの実行がリアルタイムに停止されるか又はリモートコンピュータ2のユーザに警告が発せられると共に継続するか否かの選択肢が与えられる。更に、リモートコンピュータ2(それが割り当てられているウェブサーバ61を介して)又はウェブサーバ61は、ルールによって新たなオブジェクトが安全である又は安全でないと判定されたことをENZOサーバ74に報告可能である。ENZOサーバ74は、この新たな発見を用いてそのマスターデータベースを更新可能である。この新たな発見は、他のリモートコンピュータ2及び/又はウェブサーバ61に送信可能であると共に、そのシグナチャーを有するオブジェクトは安全でなく将来阻止されるべきである又は安全であり実行が許可されるべきであるとそれらのデータベースを更新するために使用可能である。
【0159】
或いは、ルールは、疑わしいオブジェクトを監視するために、ENZOレイヤにおいて人としての解析者によって使用可能である。ルールに包含されるオブジェクトは、人としての解析者に対して表示可能である。解析者は、各オブジェクトに対して順番に、それが悪意があるか又は無害であるかを決定すると共に、オブジェクトをマーキングすることができる。各オブジェクトに対するこれらの判定は、ウェブサーバ61及び/又はエージェントソフトウェア10に返送され、リモートコンピュータにおいて遭遇した際にオブジェクトの実行が許可されるか否かをリアルタイムで決定するために使用される。この方法は、ウェブサーバ61及び/又はエージェントソフトウェア10においてリアルタイムでルールを適用する動作と比較して、新たな脅威に対してそれほど迅速に対応することはない。しかしながら、“誤った肯定判断”の数を少なくすることが望まれる場合又はそれらがマルウェアであると確定的な判定がなされる前に更なる調査を必要とする疑わしいオブジェクトを識別することが得意なルールであると判明する場合には好ましいかもしれない。
【0160】
更に、この動作は、半自動化可能である。アプリケーションは、全ての又は任意の動作と並行して、悪意がある又は無害であると判定されたグループ等のグルーピングを監視する。これらの動作を追跡することで、ENZOサーバ74は、人としての解析者から、どのようにしてオブジェクトを自動的に識別し且つ判定するかを学習することができる。アプリケーションは、好ましくは、ユーザによって実行されたクエリを記憶可能である。同じクエリがユーザによって繰り返し実行されており且つマルウェアオブジェクトに対して返答している場合には、又は、オブジェクトがマルウェアであると判定するアクションを調査者が絶えず行っている場合には、システムは、この状態を自動的に認識すると共に対象となるオブジェクトをマルウェアとして判定するための基準及びアクションのルールを生成することができる。このルールは、ルールに合致するオブジェクトをとらえ且つそれらを悪意のあるものとして判定するためにリアルタイムの動作を行うことができるように、FXサーバレイヤ60に送信可能である。これらのルール及びルールによって適用されるマルウェアのグルーピングの固有性は、エージェント及びENZOサーバ74の双方にフィードバック可能である。このようにして、FXサーバ61は、ENZOサーバ74によって認められ且つ分配されたアクションを、それに代わって実行することができる。同様に、これら同様のプロセスは、無害のオブジェクトのグループに適用可能であり、“悪意のある”オブジェクト用のルールと同様の方法でFXレイヤ60に返送可能なオブジェクトを“良い”ものであるとして判定するためのルールが生成される。従って、ENZOレイヤ70によれば、ユーザは、これらのグルーピングを容易に識別することができる。ENZOレイヤは、全ての又は任意の動作と並行して、悪意がある又は無害であると判定されたグループ等のグルーピングを監視する。これらの動作を追跡することで、ENZOレイヤ70は、人から、どのようにしてオブジェクトを自動的に識別し且つ判定するかを学習することができる。
【0161】
ENZOレイヤ70は、傾向を監視可能であり、人としての解析者の注意を、以前はよいものとして知られていたプログラムの行動パターンの進化等の情報に向けることができる。例えば、合法なバージョンのソリティアというゲームは、ある期間に渡ってリモートコンピュータ上のプログラムによって実行される動作から、特定の行動パターンのプロファイルを有しているとENZOサーバ74によって観測される。ある期間が経過した後にそのプログラムが新しくて疑わしい行動パターン(例えば、ドライバをインストールしようと試みる又は他国のウェブサーバにアクセスするパターン)を示し始める場合には、このプログラムに対して調査を要するフラグが立てられる。
【0162】
更に、好ましくは、リモートコンピュータにおけるエージェントプログラム10は、“誤った肯定判断”、即ち、合法なソフトウェアであるとユーザが信じているオブジェクトに対してマルウェアであるというフラグが立てられたことをユーザがシステムに報告することが可能なインタフェースを提供する。システムは、この情報をENZOサーバ74にフィードバックするように構成される。このとき、システムは、マルウェアを見つける際のルールがもはや信頼できる程度に決定的ではないと判定可能であり、このルールを使用不可にすることができる。或いは、システムは、このルールに対して、人としての解析者による手作業での検討及び/又は修正に付されることを示すフラグを立てることが可能である。或いは、誤った肯定判断にも関わらずルールは殆どの場合に有用であり且つ誤った肯定判断はアウトライナーであると決定可能である。矛盾している無害なオブジェクトは、それをホワイトリストに載せることで、FXレイヤ70におけるルールから特別に除外可能である。
【0163】
注目すべきは、ルールは優先順位を付けることが可能(優先度に応じて順に適用可能)であり、特定の判定結果、位置、評判、年齢又はデータベースによって知られている若しくは由来するその他の任意の基準を有するオブジェクトに対してのみ適用するように構築可能であるという点である。例えば、オブジェクトがマイクロソフトから出ていると第1のルールが判定する場合には、その他のルールを適用しないと決定されてもよい。対して、オブジェクトが疑わしいと第1のルールが判定する場合には、その他のルールを適宜適用すると決定されてもよい。
【0164】
従って、ENZOサーバ74上で実行されている好ましいソフトウェアアプリケーションは、オブジェクト行動パターンを強固に監視し且つ評価する。このソフトウェアによって、強固なデータ可視化技術が提供されることもあって、ユーザは、リモートコンピュータ上及びそれが観測される文脈的環境上でのオブジェクトの振舞いを完全に理解することができる。このソフトウェアによれば、大規模な調査チームが協働してより一層作業を行うことができ、熟達したシステムの自動化を通して、人による調査のスキル及び経験にレバレッジをかけることができる。
【0165】
設定可能なファイアウォール
コンピュータが感染する前に、例えば、感染したファイルがEメールによって受信された若しくはダウンロードされた又はインストールされた若しくは初めて実行された時点で、マルウェアを停止させることが望まれる。
【0166】
マルウェアプログラムのよく知られた例は、“Zeus”というトロイの木馬である。このプログラムは、感染したコンピュータのバックグラウンドで実行され、ユーザが画面上でログインに関する詳細な情報を入力している間にユーザのキー操作を監視することで当該ログインに関する詳細な情報を盗み出す。この情報は、感染したコンピュータを制御するために使用可能な犯罪者のサーバに送信される。オンライン銀行のウェブサイト上におけるログイン情報の入力をマルウェアプログラムが検知した時には、ネットワークを介してインスタントメッセージが犯罪者に送信される。その結果、犯罪者は、この情報をほぼリアルタイムに受信する。トロイの木馬は、遠隔ユーザがコンピュータにリモートアクセスし且つリモート管理することを許可するプロトコルであるバーチャルネットワークコンピューティングプロトコル(Virtual Network Computing Protocol)を用いて、ユーザのコンピュータをリモート管理可能である。犯罪者は、犠牲者の銀行口座から金銭を盗むことができる。
【0167】
大部分のアンチマルウェアソフトウェアが、マルウェアがホストコンピュータに感染することを妨げる又はできるだけ早くマルウェアとの通信を停止しようと試みる一方で、犯罪者の責任を見出し且つ訴求することにあまり注目がおかれることはなかった。一つの困難性は、アンチマルウェア又は警察でさえも、犯罪に関わるデータを探すために犯罪者のサーバに侵入することが違法であるということである。実際、マルウェアの影響を受けているがゆえに犯罪者の制御下にある合法なユーザのコンピュータの“ゾンビネットワーク”であるいわゆる“ボットネット”を犯罪者が使用しているというのはよく知られた策略である。
【0168】
図14に示すように、好ましい実施形態は、エージェントプログラム10と共にファイアウォール95をリモートコンピュータ2に実装している。ファイアウォール自体はよく知られている。しかしながら、ファイアウォールは、通常、受信/送信トラフィックのためのネットワークにアクセスする許可をどのプログラムが有しているかを管理するために、ユーザによって入力されたルールによって設定されている。好ましい実施形態では、リモートコンピュータ2上のいずれのオブジェクトがファイアウォールを超えてネットワーク上のいずれのエンティティ96、97と通信可能かを制限するために、追加的に、ベースコンピュータ3からルールを取得する。例えば、リモートコンピュータ2上の全てのオブジェクトからやり取りされるメッセージからZeusサーバ97の既知の有効なURLがブロックされるということについての情報が、ベースコンピュータ3からファイアウォール95に送信可能である。従って、ファイアウォール95は、犯罪者のサーバとの通信をブロックするルールを実装可能である。
【0169】
これにより、マルウェアに対抗する価値ある二次的な防御方法が提供される。一般的には、マルウェアがコンピュータに感染することを防ぐことで、感染位置においてマルウェアを停止させることが望ましい。次の防御方法は、マルウェアが通信することを妨げることである。設定可能なファイアウォール95は、マルウェアに対抗する次の防御方法を提供するために、リモートコンピュータによって保持されている悪意のあるオブジェクト及びネットワークURLについて展開されたルール及び知識にレバレッジをかけることができる。
【0170】
更に、好ましい実施形態では、エージェントプログラム10は、悪意のあるインターネットトラフィックが検出された場合に、例えば法執行機関等の当局98と連絡をとるために使用可能である。感染したコンピュータ2と犯罪者のサーバ97との間のIPトラフィックは、ファイアウォール95によって傍受可能であり、格納可能であり、当局のサーバ98に送信可能である。その結果、当局は、マルウェアを介してどの情報を犯罪者が盗み出しているかを確認可能である。この情報は、更なる安全性のために、暗号化された形式で当局のサーバ98に送信可能である。好ましい実施形態では、遵守するべき鑑識データの取り扱い及び証拠の保持のために極めて厳密なプロセスが実施されている間は、当局98に送信されたデータのチェックサムが生成され且つ格納される。
【0171】
法的な制約は、大抵の場合、この情報が収集され且つ第三者に送信される前に、感染したコンピュータ2のユーザから許可を得る必要があるという点にある。この場合、エージェントプログラム10は、処理を開始する前に許可をユーザから得るためのダイアログを開く。場合によっては、ユーザは、マルウェアプログラム又はマルウェアの特定のクラスが彼のコンピュータ2上で検出された時にはいつでもデータが送信される包括的許可を喜んで与えてくれるかもしれない。この場合、悪意のあるオブジェクト又は通信が検出される都度特別な許可を得る必要はない。
【0172】
自己防御
マルウェアは、コンピュータにインストールされているセキュリティ製品を攻撃し、使用不可能にし、さもなければ破壊する状態に向かって進化してきた。
【0173】
考慮するべき2つの原理的なベクトルがある。
【0174】
第1のアプローチは、セキュリティ製品を識別するために、マルウェアによって使用される方法に的を絞ることである。この特別な場合において、マルウェアは、リモートコンピュータ上で実行されている行動パターンを監視するプロセスであって、マルウェアコードの任意の態様を眺め、観察し、記録し、調査し、さもなければ干渉するプロセスを利用する。一例として、その操作を設定し、制御し若しくは記録するためにマルウェアが使用していたレジストリキーを調べるプロセス又はタスクを見守るマルウェアエンティティがあげられる。当然ながら、マルウェアは、その本質から秘密である。マルウェアの目線から見れば、ローカルコンピュータ上のマルウェアオブジェクトの存在が知られていない以上、マルウェアオブジェクトを監視し又は干渉するべきリモートコンピュータ上のプロセスは存在しないはずである。仮に何らかのプロセスがマルウェアを関している場合には、それは、セキュリティソフトウェア又はシステム監視ツール若しくはコンピュータ2から感染を取り除くためにコンピュータ2のユーザによって使用されるシステムツールである可能性がある。
【0175】
従って、この動作を行っているプロセスを見つけることで、マルウェアプロセスは、プロセスの固有性及びその位置又はディスク上の位置を認識可能である。この識別により、潜在的な脅威であると識別された一又は複数のプロセスを消去し、使用不可にし又は干渉することができる。多くの場合、これらは実際には、共に脅威であるとみなされるセキュリティプログラム又はシステム監視ツールである。
【0176】
本発明の好ましい実施形態は、マルウェアを調査している時にセキュリティプログラムの行動パターン検出を止めることで、マルウェアプログラムによるこの起こり得る干渉を防ぐ。これは、マルウェアの状態及び構成要素を調査するための核となるオペレーティングシステムの構成要素の後ろに隠れ、当該構成要素になりすまし、及び/又は当該構成要素にレバレッジをかけることで実現される。特に、エージェントプログラム10は、標準的なシステムコールに依存する必要がある場合には、システムのコンテキストをまねすることで、又は、ディスク上に格納されている原データレベルのデータへのアクセスによってあらゆるシステムコールを回避することで、動作してもよい。例えば、エージェントプログラム10は、悪意のあるプロセスを停止さえるためにAzTerminateProcess機能を呼び出す際に、オペレーティングシステムのカーネルを直接的にまねることができる。そうすることで、マルウェアは、エージェントプログラムに対するコールバックを追跡することができなくなる。マルウェアは、オペレーティングシステムがそれに反応することを予期する(例えば、コンピュータがシャットダウンする際に、オペレーティングシステムがプロセスを停止する必要がある)間は、この行動パターンが通常のものであると考える。その結果、マルウェアは、エージェントプログラムプロセスを停止使用と試みることはない。更に、マルウェアは、プロセスがオペレーティングシステムそのものであるとのみ識別されている間は、プロセスを終了させるという反応を示すことができない。オペレーティングシステムの終了は、マルウェアの動作をも止めてしまうかもしれないからである。
【0177】
図15は、最下層におけるカーネルレベル92から始まって、オペレーティングシステムレベル91及びオペレーティングシステム91上のウェブブラウザ実行92に続く、コンピュータシステム2上における制御の階層を示す。二番目の考慮すべき点は、コンピュータの操作に対する最大限の支配的制御を主張するマルウェアが、実行されるプロセス及び動作を完全に支配的制御するドライバ、例えばカーネルモードドライバをインストールしようとしばしば試みる点である。“rootkit”として一般的に知られているある種のマルウェアは、このように動作し、その他のものの中からその他のマルウェア、特にパスワード盗難キーロガー及びコンピュータウイルスを隠すために使用可能である。特定の場合には、マルウェアは、悪意のあるドライバをロードし、ウインドウズが起動したときからセキュリティアプリケーション及びドライバを動作不可能にするために当該ドライバを使用する。特に、マルウェアは、セキュリティプログラムに相当すると知っているドライバ又はプログラムの構成要素のリストを有している。
【0178】
セキュリティアプリケーションを使用不可能にするこのアプローチをマルウェアが使用することを阻止するために、エージェントプログラム10は、主たる構成要素93にアクセスできない場合のインストール又は起動中に主たる構成要素93のバックアップとしてロードされる、二次的な又はバックアップのドライバ又は構成要素94を動的に生成する(図14に示すように)。それは、同一の機能を有している一方で、名称及び形式が異なるように改変されている。これは、マルウェアがセキュリティプログラムを識別する方法を学習できないように、ランダム化可能である。この場合、主としてマルウェアによって終了させられることに起因して主たる構成要素がロードできない場合には、二次的ドライバ94がその機能を実行するようにロードされる。主たる構成要素93がロードできる場合には、二次的構成要素94は、主たる構成要素の存在を識別することで、コンフリクトを避けるために単に停止する。エージェントプログラム10を備えるインストールされたオブジェクトの名称及びチェックサムをランダム化することで、エージェントプログラム10は、重要なエージェント構成要素を停止又は排除しようとするアクティブな脅威によって行われる、発見的方法を利用した検出を逃れることができる。
【0179】
マイクロソフトウインドウズオペレーティングシステムの最近のバージョンは、システム及びローレベルドライバの署名を要求することで、改良されたセキュリティを提供する。このカーネルモードコード署名ポリシー(kernel mode code signing policy)と称されるポリシーは、認証されていない又は悪意のある任意のドライバがロードされることを許可していない。いくつかのマルウェア生成物は、ドライバ認証チェックを無効化するために、マスターブートレコードを修正する。感染したマスターブートレコードによって実行されるマルウェアは、署名されていないドライバのロードを許可するマイクロソフトのブートプログラムのブートオプションを変更することで、ドライバ署名ポリシーをバイパスする。
【0180】
その結果、これらの状況では、二次的ドライバ又は構成要素は、マルウェアによる検出を回避するために、それ自身のデジタル署名を取り除くことができる。これは、ドライバの認証を使用不可にするようにマスターブートレコードが修正されていなければ二次的ドライバ又は構成要素がロードできないということを意味する。それで、二次的ドライバ又は構成要素は感染していないシステムに対しては脅威とならず、システムが感染しておらず且つマスターブートレコードが修正されていなければ決してロードされない。
【0181】
本発明の実施形態は、示されている例を特に参照しながら説明されてきた。しかしながら、本発明の範囲の中で説明された例が変更又は改変されてもよいことは当然である。
【0182】
本出願は、2011年2月15日に出願された米国出願番号61/443,095の優先権の利益を主張しており、参照によって当該米国出願の内容は本願に援用される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15