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

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

▶ エフ−セキュア コーポレーションの特許一覧

特許5963008コンピュータシステムの分析方法および装置
<>
  • 特許5963008-コンピュータシステムの分析方法および装置 図000003
  • 特許5963008-コンピュータシステムの分析方法および装置 図000004
  • 特許5963008-コンピュータシステムの分析方法および装置 図000005
  • 特許5963008-コンピュータシステムの分析方法および装置 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5963008
(24)【登録日】2016年7月8日
(45)【発行日】2016年8月3日
(54)【発明の名称】コンピュータシステムの分析方法および装置
(51)【国際特許分類】
   G06F 21/56 20130101AFI20160721BHJP
【FI】
   G06F21/56
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2013-534222(P2013-534222)
(86)(22)【出願日】2011年9月7日
(65)【公表番号】特表2013-543624(P2013-543624A)
(43)【公表日】2013年12月5日
(86)【国際出願番号】EP2011065479
(87)【国際公開番号】WO2012052221
(87)【国際公開日】20120426
【審査請求日】2014年8月21日
(31)【優先権主張番号】12/925,482
(32)【優先日】2010年10月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】511297708
【氏名又は名称】エフ−セキュア コーポレーション
(74)【代理人】
【識別番号】100109726
【弁理士】
【氏名又は名称】園田 吉隆
(74)【代理人】
【識別番号】100101199
【弁理士】
【氏名又は名称】小林 義教
(72)【発明者】
【氏名】トゥルビン, パーヴェル
【審査官】 岸野 徹
(56)【参考文献】
【文献】 国際公開第2009/158239(WO,A1)
【文献】 特表2009−500706(JP,A)
【文献】 特開2010−079906(JP,A)
【文献】 特表2012−501009(JP,A)
【文献】 米国特許出願公開第2010/0017877(US,A1)
【文献】 国際公開第2007/003916(WO,A1)
【文献】 米国特許出願公開第2007/0016953(US,A1)
【文献】 欧州特許出願公開第02169583(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされコンピュータを分析する方法であって、
前記コンピュータのプロセッサにて、少なくとも1つ前記アプリケーションローカルなアプリケーション依存関係ネットワークを特定するステップであって、前記ローカルなアプリケーション依存関係ネットワークは少なくとも前記相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、ステップと、
前記コンピュータと通信する中央サーバーのプロセッサにて、前記ローカルなアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記ーカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較するステップと、
前記コンピュータの前記プロセッサにて、前記コンピュータ内のマルウェアおよび/またはオーファンオブジェクトを特定するために前記比較の結果を使用するステップと
を備える方法。
【請求項2】
前記相互関連オブジェクトは、実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、および起動ポイントのうちの1つまたは複数を有する請求項1に記載の方法。
【請求項3】
前記コンピュータの前記プロセッサにて、ローカルアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスを特定するステップと、前記コンピュータの前記プロセッサにて、前記特定されたパスをシステム非依存にするために正規化するステップとを更に備える請求項1または2に記載の方法。
【請求項4】
ーカルアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスは、前記コンピュータでアプリケーションのインストールプログラムが起動されたときに、前記コンピュータの前記プロセッサにて、活動を追跡することにより特定される請求項1〜3のいずれか1項に記載の方法。
【請求項5】
ーカルアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスは、前記コンピュータで前記アプリケーションのインストール前後にシステムのスナップショットを取得し、前記2つのスナップショット間の違いを前記コンピュータの前記プロセッサにて特定することにより特定される請求項1〜3のいずれか1項に記載の方法。
【請求項6】
ーカルアプリケーション依存関係ネットワークは、
1)前記コンピュータの前記プロセッサにて、特定の入力オブジェクトに対して、前記入力オブジェクトに依存する他のすべてのオブジェクトの検索を行うステップと、
2)前記入力オブジェクトのスおよび前記検索で見つかった他のすべてのオブジェクトのパス並びにそれらのオブジェクト間の関係を前記コンピュータ内の結果ファイルに格納するステップと、
3)さらなる依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対して再帰的に前記ステップ1)および前記ステップ2)を繰り返すステップと、
4)前記結果ファイル内の前記入力オブジェクトおよび前記検索で見つかった他のオブジェクトのパスを前記コンピュータの前記プロセッサにて正規化するステップと
により特定される請求項1〜5のいずれか1項に記載の方法。
【請求項7】
前記既知のアプリケーション依存関係ネットワークの前記データベースは、1以上のコンピュータでの既知のアプリケーションのインストールを前記中央サーバーの前記プロセッサで監視して、これらの既知のアプリーションに対応するアプリケーション依存関係ネットワークをキャプチャすることにより定される請求項1〜6のいずれか1項に記載の方法。
【請求項8】
前記既知のアプリケーション依存関係ネットワークの前記データベースは、分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを前記中央サーバーの前記プロセッサで収集することにより定される請求項1〜6のいずれか1項に記載の方法。
【請求項9】
前記比較するステップで判明した未知のアプリケーションに対応する未知のローカルなアプリケーション依存関係ネットワークに対して、前記コンピュータの前記プロセッサにて、前記未知のローカルなアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアのスキャンを行うステップを更に含む請求項1〜のいずれか1項に記載の方法。
【請求項10】
前記さらなるマルウェアのスキャンは、
前記コンピュータの前記プロセッサにて、アプリケーションバイナリ証明書のチェックを行うステップ、および
前記コンピュータの前記プロセッサにて、前記未知のローカルアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行するステップ
のいずれかまたは両方のステップと、
前記アプリケーションが悪意のあることが判明した場合、前記コンピュータの前記プロセッサにて、前記未知のローカルアプリケーション依存関係ネットワークで特定された前記オブジェクトを前記ンピュータから除去するか、別な方法で安全にするステップと
を含む請求項に記載の方法。
【請求項11】
前記さらなるマルウェアのスキャンの後に正規品であることが判明した未知のローカルアプリケーションの前記ローカルなアプリケーション依存関係ネットワークは、前記中央サーバーの前記プロセッサにて、前記既知のアプリケーション依存関係ネットワークの前記データベースに入力される請求項または10に記載の方法。
【請求項12】
前記さらなるマルウェアのスキャンは、
前記コンピュータの前記プロセッサにて、アプリケーションバイナリ証明書のチェックを行うステップ、および
前記コンピュータの前記プロセッサにて、前記未知のローカルアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行するステップ
のいずれかまたは両方のステップと、
前記アプリケーションが悪意のあることが判明した場合、前記コンピュータの前記プロセッサにて、他の既知のアプリケーション依存関係ネットワークと共有されたオブジェクトを除いて、前記未知のローカルアプリケーション依存関係ネットワークで特定された前記オブジェクトを前記ンピュータから除去するか、別な方法で安全にするステップと
を備える請求項に記載の方法。
【請求項13】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされたコンピュータに記憶可能であって、前記コンピュータを、
前記コンピュータにインストールされた少なくとも1つのアプリケーションについてのローカルなアプリケーション依存関係ネットワークを特定するための手段であって、前記ローカルなアプリケーション依存関係ネットワークは少なくとも前記相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、特定するための手段と、
前記ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果である、前記ローカルなアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを示す結果を、前記コンピュータと通信する中央サーバーから得るための手段と、
前記コンピュータ内のマルウェアおよび/またはオーファンオブジェクトを特定するために前記比較の結果を使用するための手段と
して機能させるためのコンピュータプログラム。
【請求項14】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされたクライアントコンピュータであって、
前記クライアントコンピュータにインストールされた少なくとも1つアプリケーションについてのローカルなアプリケーション依存関係ネットワークを特定するためのシステムスキャナであって、前記ローカルアプリケーション依存関係ネットワークは少なくとも相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、システムスキャナと、
前記ローカルアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記ーカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラと、
前記クライアントコンピュータ内のマルウェアおよび/またはオーファンオブジェクトを特定するために前記比較の前記結果を使用するためのポリシングユニットと
を備えるクライアントコンピュータ。
【請求項15】
多数のクライアントコンピュータにサービスを提供するためのサーバー・コンピュータ・システムであって、
既知のアプリケーション依存関係ネットワークのデータベースであって、各アプリケーション依存関係ネットワークが相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係を含む、データベースと、
前記クライアントコンピュータの1つまたは複数からローカルアプリケーション依存関係ネットワークを受信するための受信機と、
前記ローカルアプリケーションが既知であるかどうかを判断するために、前記データベース内の前記既知のアプリケーション依存関係ネットワークに対して、前記受信したローカルアプリケーション依存関係ネットワークを比較するための依存関係ネットワークコンパレータと、
前記クライアントコンピュータそれぞれに前記比較の結果を送信するための送信機と
を備えるサーバー・コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムを分析するための方法および装置、特にコンピュータシステムにインストールされているアプリケーションを分析するためのものに関する。具体的には、必ずしもそうではないが、本発明は、マルウェアの検出および除去、ならびにシステムの最適化で前記分析を利用するための方法および装置に関する。
【背景技術】
【0002】
マルウェアは、悪意のあるソフトウェアの略であり、所有者の同意を得ることなくコンピュータシステムに潜入するか、または損害を与えるように設計された任意のソフトウェアを参照するための用語として使用される。マルウェアは、コンピュータウイルス、ワーム、トロイの木馬、ルートキット、およびスパイウェアを含むことができる。マルウェアの感染に関連する問題を防止するために、多くのエンドユーザーは、マルウェアを検出するとともにできる限り除去するアンチウイルスソフトウェアを使用している。
【0003】
ユーザーのシステムへのインストール後に、マルウェアは、多くの場合人気のある、および/またはありふれた既存の正規のソフトウェアのファイル名を模倣することにより検出を回避する。この例としては、Troj/Torpid−Cダウンローダのトロイの木馬があり、Microsoft Wordの典型的なプロセス名である名前「winword.exe」を使用している。したがって、トロイの木馬のプロセスがタスクマネージャ上で目立たなくなる。検出を回避するマルウェアが使用する別の技術は、その実行可能ファイルに対してランダムな名前を生成することである。ランダムな名前は曖昧であり、アンチウイルスソフトウェアがファイル名のパターンを使用してマルウェアを検出することを妨げる場合がある。同様のステルス手法は、レジストリのパスおよびキーにも当てはまる。マルウェアは、ランダムおよび共通の「RUN」キーの値を選択する。
【0004】
パターン認識に基づくアンチウイルスエンジン(すなわち、マルウェアの「指紋」を探索するエンジン)のために常に適切な環境があるべきである一方、マルウェアを示すパターンが既知またはアンチウイルスエンジンにより予測可能でなければならないので、相変わらず低速であり、事前対応性(proactive)というよりも事後対応性(reactive)であろう。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一目的は、コンピュータシステム上のマルウェアを検出するためのメカニズムを提供することであり、システム上でのオブジェクトのネットワークの検出に依存し、オブジェクトのネットワークはプログラム、アプリケーション、ファイル等に関連付けられている、または関連付けられていてもよい。これらのプログラム、アプリケーション、ファイル等のいくつかは、既知で信頼できる場合があり、いくつかは既知で信頼できない場合があり、いくつかは不明の場合がある。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、相互関連オブジェクトのセットをそれぞれが備える複数のアプリケーションがインストールされているコンピュータを分析する方法が提供される。この方法は、最初に前記アプリケーションの1つまたは複数ごとのローカル依存関係ネットワークを特定することを備え、ローカル依存関係ネットワークは少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。次いで、当該(または各)ローカルアプリケーション依存関係ネットワークは、ローカル依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために既知のアプリケーション依存関係ネットワークのデータベースと比較される。次いで、比較の結果は、マルウェアおよび/またはオーファンオブジェクトを特定するために使用される。
【0007】
本発明の実施形態は、マルウェアのためにコンピュータをスキャンするより高速な方法を提供してもよく、従来のスキャン方法よりも大幅に少ない処理能力を必要としてもよい。加えて、本発明の実施形態は、コンピュータからマルウェアを除去するための改善された方法を提供してもよい。マルウェアアプリケーションのために依存関係ネットワーク全体が特定され、したがって、削除中に悪意のあるアプリケーションのコンポーネントのすべてが除去されることを確保することができる。
【0008】
相互関連オブジェクトは、1つまたは複数の実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、または起動ポイントであってもよい。
【0009】
この方法は、ローカルアプリケーション依存関係ネットワークのオブジェクトのパスを特定すること、およびパスをシステムから非依存にするために正規化することをさらに備えていてもよい。
【0010】
ローカルアプリケーション依存関係ネットワークのオブジェクトパスは、アプリケーションのインストールプログラムが起動されたときに活動を追跡することにより、またはアプリケーションのインストール前後にシステムスナップショットを取り、2つのスナップショット間の違いを特定することにより特定してもよい。あるいは、ローカルアプリケーション依存関係ネットワークは:
特定の入力オブジェクトに対して、この入力オブジェクトに依存する他のオブジェクトのすべての検索を行うこと、
入力オブジェクトのパスおよび検索で見つかった他のオブジェクトのすべて、およびそれらのオブジェクト間の関係を結果ファイルに格納すること、
それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対してこれらのステップを再帰的に繰り返すこと、および、
結果ファイル内のオブジェクトパスを正規化すること、
により特定されてもよい。
【0011】
既知のアプリケーション依存関係ネットワークのデータベースは、それらの依存関係ネットワークをキャプチャするために既知のアプリケーションのインストールを監視することにより、または代わりに分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを収集することにより事前設定されてもよい。
【0012】
この方法は、クライアントコンピュータで1つまたは複数の前記アプリケーションごとのローカル依存関係ネットワークを特定する前記ステップを実行すること、および中央サーバーで当該または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較する前記ステップを実行することを備えていてもよい。
【0013】
この方法は、不明であるアプリケーション依存関係ネットワークに対して、未知のアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアスキャンを行うことをさらに備えてもよい。このさらなるマルウェアスキャンは、従来のアンチウイルススキャン技術、例えば:
アプリケーションバイナリ証明書のチェックを行うこと、および
未知のローカルアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行すること
のいずれか、または両方をさらに備えていてもよい。
【0014】
未知のローカルアプリケーション依存関係ネットワークで特定されたオブジェクトは、多分他の既知のアプリケーション依存関係ネットワークと共有されるオブジェクトを除いて、アプリケーションが悪意のあることが判明した場合、クライアントコンピュータから除去されるか、または別の方法で安全にされてもよい。
【0015】
前記さらなるマルウェアスキャンの後に正規品であることが判明した未知のローカルアプリケーションのアプリケーション依存関係ネットワークは、既知のアプリケーション依存関係ネットワークのデータベースに入力されてもよい。
【0016】
本発明の第2の態様によれば、本発明の第1の態様の方法をコンピュータに行わせるためのコンピュータプログラムが提供される。
【0017】
本発明の第3の態様によれば、クライアントコンピュータが提供される。クライアントコンピュータは、クライアントコンピュータにインストールされた1つまたは複数のアプリケーションごとにローカル依存関係ネットワークを特定するためのシステムスキャナを備え、ローカルアプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。クライアントコンピュータはまた、ローカルアプリケーション依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために、当該または各ローカルアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラを備える。クライアントコンピュータは、マルウェアおよび/またはオーファンオブジェクトを特定するために比較の結果を使用するためのポリシングユニットをさらに備える。
【0018】
本発明の第4の態様によれば、多数のクライアントコンピュータにサービスを提供するためのサーバー・コンピュータ・システムが提供される。サーバー・コンピュータ・システムは、既知のアプリケーション依存関係ネットワークのデータベースを備え、各アプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。サーバーコンピュータはまた、前記クライアントコンピュータの1つまたは複数からローカルアプリケーション依存関係ネットワークを受信するための受信機を備える。関連付けられているローカルアプリケーションが既知であるかどうかを判定するために、受信したローカルアプリケーション依存関係ネットワークをデータベース内の既知のアプリケーション依存関係ネットワークと比較するように依存関係ネットワークコンパレータが提供される。サーバーコンピュータはまた、それぞれのクライアントコンピュータに比較の結果を送信するための送信機を備える。
【図面の簡単な説明】
【0019】
図1】本発明の一実施形態による、アプリケーション依存関係ネットワークを特定するプロセスを示すフロー図である。
図2】本発明の一実施形態による、悪意のあるソフトウェアの検出および除去を行うプロセスを示すフロー図である。
図3】本発明の一実施形態による、失われたフラグメントを検出および除去をもする、悪意のあるソフトウェアの検出および除去を行う強化されたプロセスを示すフロー図である。
図4】本発明の一実施形態によるコンピュータシステムを概略的に示す。
【発明を実施するための形態】
【0020】
本明細書で説明するマルウェアスキャンのアプローチは、1つまたは複数の中央サーバーおよび多数のクライアントコンピュータを備えたコンピュータシステムの文脈で提示される。クライアントコンピュータは、インターネットを介して中央サーバー(複数可)と通信する。アプローチを採用され得る他のコンピュータ・システム・アーキテクチャは、当業者に容易に明らかであろう。
【0021】
クライアントコンピュータ上のアプリケーションは、少なくともデータファイル、ディレクトリおよびレジストリ情報(後者はアプリケーションの構成や設定を含む)を含む関連するオブジェクトのセットから通常成る − アプリケーションの実行可能ファイルへのデスクトップ・ショートカット・ポイント;アプリケーションの実行可能ファイルは他のアプリケーションファイルおよびライブラリが置かれているディレクトリに格納される;アプリケーションを実行するのに必要なデータファイルおよび他の実行可能ファイルの場所へのアプリケーション・レジストリ・ポイント。関連するオブジェクトおよびその関係のセットは、アプリケーションのための「依存関係ネットワーク」と考えることができる。
【0022】
オブジェクト名、絶対パス等に関係なく、特定のアプリケーションが、インストール時に、それがインストールされるクライアントコンピュータの構成に関係なく、特定のアプリケーション依存関係ネットワークを構築することが理解されるであろう(様々なクライアントコンピュータ上で同じオペレーティングシステムが使用されていると仮定して)。換言すれば、アプリケーションのためのアプリケーション依存関係ネットワークは、コンピュータに依存しない。したがって、アプリケーション依存関係ネットワークは、アンチウイルス・スキャン・エンジンでマルウェアを特定するのに有用であり得る。
【0023】
特定のアプリケーションのための依存関係ネットワークを特定するためのいくつもの方法がある。アプリケーションのインストール中に使用することができるこのような2つの方法が最初に提示される。
【0024】
第1の方法は、クライアントコンピュータ上でインストーラの活動を追跡することである。これを行うために、インストールプログラムは、フィルタドライバが任意の活動を監視し、インストーラまたはその子プロセスにより作成されたファイル、ディレクトリ、レジストリ情報など、オブジェクトのすべてを追跡できるように、管理対象環境内で起動される。フィルタドライバは、例えばファイル・システム・ドライバなどの低レベルコンポーネントであり、ファイルまたはディレクトリの作成およびファイルの修正または名称変更などのファイル操作をキャプチャおよび記録することができる。
【0025】
第2の方法は、システムスナップショットの「差分抽出(diffing)」を使用することである。この第2の方法では、システムスナップショットはアプリケーションのインストール前後にクライアントコンピュータ上で取得される。スナップショットは、ファイル、ディレクトリ、およびレジストリ情報を含むであろう。 2つのスナップショット間の差分を特定することにより、インストールプロセス中にインストーラにより作成されたオブジェクトを特定することができる。新しくインストールされたオブジェクトが一旦特定されると、これを行うために採用される方法に関係なく、オブジェクト間の関係、例えばオブジェクトAがオブジェクトBを指し示すなどを判断することが必要である。オブジェクトパスは、オブジェクト間の関係と共に、アプリケーション依存関係ネットワークを定義する。
【0026】
アプリケーション依存関係ネットワークを特定するためのすべての方法は、少なくとも、インストーラにより作成されるオブジェクトパスのリストを返す。パスをコンピュータに依存しないようにするために、他のコンピュータが異なる構成を有していてもよいように、それらがまず正規化されなければならない。正規化プロセスは、アプリケーション・インストール・フォルダ、tempディレクトリ、ユーザー・プロファイル・ディレクトリ、システムディレクタ等に対するディレクトリを固定キーワードと置換する。例えば:
%INSTALL_DIR% − は、アプリケーションがインストールされている正規化されたパスである。特定のコンピュータ上では、実際のインストールディレクトリ、例えば「c:\Program Files\Mozilla Firefox」に変換することができる。
【0027】
正規化後、アプリケーション依存関係ネットワークは次のようなオブジェクトパスを含む:
%INSTALL_DIR%\firefox.exe
%INSTALL_DIR%\xul.dll
%INSTALL_DIR%\AccessibleMarshal.dll
%INSTALL_DIR%\application.ini
%USER_PROFILE%\Application Data\Mozilla\Firefox\
【0028】
さらに、以下のような、レジストリキー、起動ポイント、および値に関連する正規化されたオブジェクトパスを備えることができる:
HKEY_CLASSES_ROOT\.htm\OpenWithList\firefox.exe
HKEY_CLASSES_ROOT\.xht
HKEY_CLASSES_ROOT\Applications\firefox.exe\s hell\open\command
(デフォルト値)、REG_SZ、 ”%INSTALL_DIR%\firefox.exe −requestPending −osint −url ”%1”
【0029】
上記に示したように、オブジェクトはアプリケーション依存関係ネットワークを定義するのにも寄与する、それらの間の関係を有する。これらの関係を特定するために、オブジェクト依存関係情報が使用される。例えば、上記のオブジェクトの例を使用して、拡張子.xhtを持つファイルをユーザーがクリックするといつでもfirefox.exeが起動される。これはファイルがfirefox.exeに依存しているためである。したがってオブジェクト間の関係は、オブジェクト”%INSTALL_DIR%\firefox.exeおよびレジストリ・キー・オブジェクトHKEY_CLASSES_ROOT\.xhtとの間で特定することができる。%INSTALL_DIR%\firefox.exeを含むがHKEY_CLASSES_ROOT\.xhtと対応関係のないコンピュータ上のアプリケーション依存関係ネットワークがある場合、アプリケーションが正規のFirefoxアプリケーションを模倣しようとしていることを、または正規のFirefoxアプリケーションが正しくインストールまたはアンインストールされていないことを意味する場合がある。
【0030】
アプリケーション依存関係ネットワークを特定するための上記の方法は、新しいアプリケーションがインストールされているときに、クライアントコンピュータ上でアンチウイルス・スキャン・エンジンがインストールされ実行される場合には、もちろん使用されることができる。以前にインストールしたアプリケーションをスキャンするためには、すなわち、スキャンエンジンをインストールする前にインストールした場合、またはアンチウイルススキャンを起動することなく巧く自分自身をインストールしたマルウェアを特定するためには、別のアプローチが必要であり、これは以前に作成されたアプリケーション依存関係ネットワークを判断することができる。また、この別のアプローチは、現在クライアントコンピュータ上でのオブジェクトのすべておよび関係を判断するために、クライアントコンピュータ上でシステムの完全スキャンを実行するようにアンチウイルス・スキャン・エンジンを有効にする(enable)ことができる。このシステムの完全スキャンは、完全なアプリケーション依存関係ネットワークの一部ではない、残りのオブジェクトおよびオブジェクト間の関係だけでなく、クライアントコンピュータに既にインストールされているすべてのアプリケーションのためのアプリケーション依存関係ネットワーク(ローカルアプリケーション依存関係ネットワーク)を返す。
【0031】
図1は、この別の方法を示すフロー図である。この方法の主なステップは次のとおりである:
【0032】
A1.クライアントコンピュータは、(オブジェクトパスにより定義されている)入力オブジェクトで始まる。これはシステム上の任意のオブジェクト、または知的な方法で選択されたオブジェクト、例えば、a.exeファイルである場合がある。
【0033】
A2.クライアントコンピュータは、入力オブジェクトに依存する他のオブジェクトのすべての検索を実行する。例えば、上記の特定の例を使用して、Firefoxアプリケーションパス上で実行される検索は、.xht拡張子レジストリキーがFirefoxアプリケーションに依存していることがわかるであろう。
【0034】
A3.クライアントコンピュータは検索から結果があるかどうかを判定する。
【0035】
A4.結果が得られた場合、クライアントコンピュータは、これら他のオブジェクトのパスおよびそれらのオブジェクト間の関係を結果ファイルに格納する。次いで、それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対するA1からA4のステップが、再帰的に繰り返される。したがって、依存関係ネットワーク内のオブジェクトのすべてが見つかるまで検索は、分岐する。依存オブジェクトの検索は、通常一連の規則に従う、例えば:
【0036】
【表1】
【0037】
A5.ステップA3でそれ以上の結果が返されない場合、クライアントコンピュータは結果ファイル内のオブジェクトパスを正規化する(前述のとおり)。この結果ファイルの内容は、アプリケーション依存関係ネットワークである。この内容は、完全なアプリケーション依存関係ネットワークの一部ではない正規化されたオブジェクトパスおよびオブジェクト間の関係であってもよいが、この段階ではローカルアプリケーション依存関係ネットワークとして特定されることになる。
【0038】
システム全体のスキャン中、関心となるオブジェクトのすべてが少なくとも1つの依存関係ネットワークに追加されるまで、この方法のステップは繰り返される(図1の破線の矢印で示されるとおり)。もちろん、いくつかのアプリケーション依存関係ネットワークは1つだけまたは少数のオブジェクト(パス)を含んでいてもよく、例えば、これらのオブジェクトは不完全なアンインストール操作後に残っているフラグメントである。
【0039】
図2は、アンチウイルススキャン方法の第2段階を示すフロー図である。行われるステップは次のとおりであり、図2の左側のステップはクライアントコンピュータで実行され、図2の右側のものは中央サーバーで実行される:
【0040】
B1.第2段階は、クライアントコンピュータが中央サーバーに送信する、段階1で特定されたローカルアプリケーション依存関係ネットワークの最初を選択することにより開始する。
【0041】
B2.中央サーバーは、ローカルアプリケーション依存関係ネットワークに一致するエントリを既知の信頼できるアプリケーション依存関係ネットワークのデータベースで検索し、それに応じてローカルアプリケーション依存関係ネットワークが既知の信頼できる、または不明であるかどうかの通知をクライアントコンピュータに返信する。
【0042】
B3.クライアントコンピュータが「既知の信頼できる」通知を受信した場合、段階1で規定されるように、アンチウイルス・スキャン・エンジンは、さらに選択したローカルアプリケーション依存関係ネットワークのための方法をステップB1で再び開始することができる(図2の破線の矢印で示される)。
【0043】
B4.クライアントコンピュータが「未知の」通知を受信した場合、アンチウイルス・スキャン・エンジンはステップB5に進む。
【0044】
B5.次いで、アンチウイルス・スキャン・エンジンは、従来のアンチウイルススキャン(例えば、アプリケーション・バイナリ・チェックおよび/またはヒューリスティック分析を採用する)をローカルアプリケーション依存関係ネットワークが対応しているアプリケーション上で開始する。
【0045】
B6.アンチウイルス・スキャン・エンジンは、アプリケーションが正規品であるかどうかをステップB5における従来のアンチウイルススキャンから判定する。
【0046】
B7.次いで、アプリケーションが正規品であると判断された場合、クライアントコンピュータは、既知の信頼できるアプリケーション依存関係ネットワークのデータベースのエントリとして未知のアプリケーション依存関係ネットワークが順番に追加される(または、中央サーバーでのさらなる分析に基づいて、および/またはすべてのユーザーから集められたレスポンスに基づいて、それが含まれると考慮する)メッセージを中央サーバーに送信する。
【0047】
B8.アプリケーションがステップB5において正規品と判断されない場合、アンチウイルス・スキャン・エンジンは、ローカルアプリケーション依存関係ネットワーク内のオブジェクトパスのいずれかが他のローカルアプリケーション依存関係ネットワークで共有されているかどうかを判定する。
【0048】
B9.共有オブジェクトのパスが存在しない場合、アンチウイルス・スキャン・エンジンは、アプリケーション依存関係ネットワーク内のパスにより特定されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にする。
【0049】
B10.共有オブジェクトのパスが存在する場合、アンチウイルス・スキャン・エンジンは、共有されていないアプリケーション依存関係ネットワーク内のパスにより特定されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にし、共有されるオブジェクトを残す。
【0050】
上記のように第2段階でアンチウイルス・スキャン・エンジンにより使用される方法は、かなり多くの従来のアプリケーション・バイナリ・チェックを実行するために、およびヒューリスティック分析技術を実行するために要する時間を顕著に削減する。ここで、アンチウイルス・スキャン・エンジンはアプリケーション上で完全な従来のアンチウイルススキャンが必要かどうかを最初に迅速に判断することができ、それが既知の信頼できるアプリケーションが原因でない場合、その後、速やかに別のアプリケーションに移動することができる。この方法はまた、その依存関係ネットワークにより特定される悪意のあるアプリケーション全体がシステムから除去される高品質な除去プロセスを提供すし、悪意のあるアプリケーションのすべてのコンポーネントが削除されていることを確実にする。
【0051】
方法の第2段階(図2)では、中央サーバーが、クライアントコンピュータから送信されたローカルアプリケーション依存関係ネットワークと一致するエントリを既知の信頼できないアプリケーション依存関係ネットワークのデータベースで検索を開始するステップを含んでいてもよい。一致するエントリが見つかった場合、その後、サーバーはローカルアプリケーション依存関係ネットワークを既知の信頼できないものとして特定する通知をクライアントコンピュータに送信する。次いで、アンチウイルス・スキャン・エンジンは、上記のようにステップB8からB10に従ってアプリケーションを除去することができる。一致するエントリが既知の信頼できないアプリケーション依存関係ネットワークのデータベースで見つからない場合、その後サーバーはローカルアプリケーション依存関係ネットワークを不明として特定する通知をクライアントコンピュータに送信する。次いで、アンチウイルス・スキャン・エンジンは、ローカルアプリケーション依存関係ネットワークが対応しているアプリケーション上で従来のアンチウイルススキャン(例えば、アプリケーションのバイナリチェックおよび/またはヒューリスティック分析を使用する)を開始する。アンチウイルス・スキャン・エンジンが、アプリケーションが正規品でないことを従来のアンチウイルススキャンから判断した場合、クライアントコンピュータは、既知の信頼できないアプリケーション依存関係ネットワークのデータベースにエントリとして未知のアプリケーション依存関係ネットワークを順番に追加することを考慮するメッセージを中央サーバーに送信する。次いで、アンチウイルスエンジンは、ステップB8からB10に従って上記のようにアプリケーションを除去することができる。
【0052】
このさらなる実施形態は、ステップB1からB10で説明した第2段階の方法の代替として、またはそれと合せて使用することができる。これはアプリケーションのバイナリ証明書をチェックし、ヒューリスティック分析技術を実行するより多くの従来の方法を実行するのに要する時間をさらに削減するようにB1からB10の方法と合せて使用することが好ましいであろう。
【0053】
悪意のあるソフトウェアと同様に、コンピュータシステムに影響を与える別の問題は、「失われたフラグメント」である。時にはオーファンファイルとして知られている失われたフラグメントは、データファイル、ダウンロードされたアップデート、およびアプリケーションがコンピュータシステムからアンインストールされた後、またはアプリケーションが正しくインストールされていない場合に後に残ることがあるアプリケーションの他のフラグメントである。これらの失われたフラグメントは時間をかけて増大することがあり、大量のディスク領域を占有することがあり、ユーザーが利用できる有用なストレージ容量を削減することがある。失われたフラグメントは、しばしばどのアプリケーションに属しているかが明確ではないので、常に検出することが容易ではない。さらに、最初は1つのアンインストールされたアプリケーションからの失われたフラグメントであると見えるかもしれないものが、実際にはまだコンピュータシステムにインストールされている1つまたは複数の他のアプリケーションと共有されているオブジェクトである場合がある。このことは、ユーザーが、別のアプリケーションが動作を停止する可能性がある何かを除去するのを恐れてフラグメントを削除したくない場合があるので、失われたフラグメントを削除することを困難にする。
【0054】
クライアントコンピュータ上での失われたフラグメントは、上記のように第1段階でアンチウイルス・スキャン・エンジンにより拾い上げられた完全なアプリケーション依存関係ネットワークの一部ではない残りのオブジェクトのパスおよびオブジェクト間の関係に対応する。第1段階の終わりに、それらは通常のローカルアプリケーション依存関係ネットワークとして特定される。
【0055】
図3は、失われたフラグメントをも検出し除去する、悪意のあるソフトウェアの検出と除去を行う強化されたプロセスを示すフロー図である。行われるステップは上述したB1からB10と同じであるが、ステップB3はC2により置換され、追加のステップC1およびC3が、ステップB2の後に導入される。追加のステップは以下のように行われる:
【0056】
C1.サーバーが一致するエントリを(ステップB2で)見つけた後に、サーバーは、データベース内の既知のアプリケーション依存関係ネットワーク内で特定されるすべての予測されるアプリケーションの実行可能ファイルおよびモジュールがローカルアプリケーション依存関係ネットワークに存在するかどうかを判断するために検証チェックを行う。次いで、サーバーは、ローカルアプリケーション依存関係ネットワークが「既知の信頼できる、および完全な」、または「既知の信頼できる、しかし不完全な」かどうかの通知をクライアントコンピュータに返信する。
【0057】
C2.クライアントコンピュータが「既知の信頼できる、および完全な」通知を受信した場合、段階1で規定されるようにアンチウイルス・スキャン・エンジンは、さらに選択したローカルアプリケーション依存関係ネットワークのための方法をステップB1で再び開始することができる(図3の破線の矢印で示されるように)。
【0058】
C3.クライアントコンピュータが「既知の信頼できる、しかし不完全な」通知を受信した場合、上述したようにアンチウイルス・スキャン・エンジンは、ステップB8からB10に従って失われたフラグメントを除去することができる。
【0059】
あるいは、ステップC3の後、ユーザーはステップB8からB10に進む前に、失われたフラグメントが削除される、またはされないかどうかの最終判断を下すことを求められる場合がある。
【0060】
図4は、本発明の実施形態によるコンピュータシステムを概略的に示す。コンピュータシステムは、インターネットまたはLANなどのネットワーク3を介して中央サーバー2に接続される少なくとも1つのクライアントコンピュータ1を備える。このクライアントコンピュータ1は、コンピュータのハードウェアおよびソフトウェアの組み合わせとして実装することができる。クライアントコンピュータ1は、メモリ4、プロセッサ5、およびトランシーバ6を備える。メモリ4は、プロセッサ5により実行される各種プログラム/実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット7を提供する。メモリ4に格納されるとともにプロセッサ5により実行されるプログラム/実行可能ファイルは、システムスキャナ8、結果ハンドラ9、およびポリシングユニット10を含み、それらすべてがアンチウイルス・スキャン・エンジン11のサブユニットであり得る。トランシーバ6は、ネットワーク3を介して中央のアンチウィルスサーバー2と通信するのに使用される。一般に、クライアントコンピュータ1は、デスクトップ・パーソナル・コンピュータ(PC)、ラップトップ、パーソナル・データ・アシスタント(PDA)またはモバイル電話、または任意の他の適切なデバイスのいずれであってもよい。
【0061】
中央サーバー2は、典型的にはクライアントコンピュータ1上で走るアンチウイルス・スキャン・エンジン11のプロバイダーにより運営される。あるいは、中央サーバー2は、ネットワーク管理者またはスーパーバイザーのそれであってもよく、クライアントコンピュータ1は、スーパーバイザーが担当するネットワークの一部である。中央サーバー2は、コンピュータのハードウェアおよびソフトウェアとの組み合わせとして実装することができる。中央サーバー2は、メモリ19、プロセッサ12、トランシーバ13およびデータベース14を備える。メモリ19は、プロセッサ12により実行される各種プログラム/実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット18を提供する。メモリ19に格納されるとともに、プロセッサ12により実行されるプログラム/実行可能ファイルは、システムスキャナ16および依存関係ネットワークコンパレータ17を含み、それらのどちらもアンチウイルスユニット15のサブユニットであり得る。これらのプログラム/ユニットは、クライアントコンピュータ1で実装されるそれらのプログラムと同じであってもよく、またはクライアントコンピュータ1で実装されるプログラムとインターフェースおよび協働することのできる異なるプログラムであってもよい。トランシーバ13は、ネットワーク3を介してクライアントコンピュータ1との通信に使用される。
【0062】
データベース14は、既知のアプリケーション依存関係ネットワークを格納し、さらにマルウェア定義データ、ヒューリスティック分析ルール、ホワイトリスト、ブラックリストなどを格納してもよい。データベース14は、クライアントコンピュータ上の第1段階で上記のようにアプリケーション依存関係ネットワークを特定する方法を使用しているサーバーにより既知のアプリケーション依存関係ネットワークを事前設定することができる。これらの方法は非常に正確であるが、実用的なサイズにまでデータベースを構築するために必要なインストーラの数を見つけるだけでなく、対応するアプリケーションの依存関係ネットワークをキャプチャするために、それぞれのインストーラを介して実行する大量の労力を必要とするであろう。あるいは、データベース14は、情報を「クラウドソーシング」することにより既知のアプリケーション依存関係ネットワークを事前設定できる。多数の分散クライアントがクライアントコンピュータからローカルアプリケーション依存関係ネットワークを提示する場合は、「クラウドソーシング」を使用することができる。サーバー2は、トランシーバ13を介してローカルアプリケーション依存関係ネットワークを受信し、メモリ11にそれを格納して多数の分散クライアントから提示された複数の同一ネットワークをグループ化する。いずれかの特定のアプリケーションの提示の数があらかじめ定義された数に達すると、サーバー2は、ローカルアプリケーション依存関係ネットワークが有効であることを示し、それを既知のアプリケーション依存関係ネットワークのデータベース14に入力する。データベース14はこれらの方法の組み合わせを使用して事前設定されることが所期される。
【0063】
様々な修正が、本発明の範囲から逸脱することなく、上述した実施形態になされ得ることが当業者には理解されるであろう。
図1
図2
図3
図4