(58)【調査した分野】(Int.Cl.,DB名)
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記API関数呼び出しのサポートされていないレコードの記録に対するサポートを前記コンピューティングデバイスの前記プロテクタモジュールに追加することをさらに含むことを特徴とする、
請求項1に記載の方法。
前記サポートを追加した後に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成することをさらに含み、前記作成されたレコードは前記API関数呼び出しの前記抽出されたレコードから構成されることを特徴とする、
請求項2に記載の方法。
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記挙動ルールに含まれるAPI関数呼び出しのすべてのレコードの数に対する前記API関数呼び出しのサポートされているレコードの割合が所定のしきい値より大きい場合に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成することをさらに含み、前記作成されたレコードは前記API関数呼び出しの前記サポートされているレコードだけを含むことを特徴とする、
請求項1に記載の方法。
前記対標的型攻撃プロテクタモジュールはサンドボックスを含み、前記API関数呼び出しの前記ログには、前記サンドボックスの中で前記ファイルから起動された実行中のプロセスが収容されることを特徴とする、
請求項1に記載の方法。
前記サンドボックスは、バーチャルマシン上での実現、ファイルシステムとレジスタの部分的仮想化に基づく実現、および前記ファイルシステムと前記レジスタへのアクセスルールに基づく実現のうち少なくとも1つとして実現されることを特徴とする、
請求項6に記載の方法。
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記API関数呼び出しのサポートされていないレコードの記録に対するサポートを前記コンピューティングデバイスの前記プロテクタモジュールに追加することをさらに含むことを特徴とする、
請求項8に記載のシステム。
前記サポートを追加した後に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成することをさらに含み、前記作成されたレコードは前記API関数呼び出しの前記抽出されたレコードから構成されることを特徴とする、
請求項9に記載のシステム。
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記挙動ルールに含まれるAPI関数呼び出しのすべてのレコードの数に対する前記API関数呼び出しのサポートされているレコードの割合が所定のしきい値より大きい場合に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成することをさらに含み、前記作成されたレコードは前記API関数呼び出しの前記サポートされているレコードだけを含むことを特徴とする、
請求項8に記載のシステム。
前記対標的型攻撃プロテクタモジュールはサンドボックスを含み、前記API関数呼び出しの前記ログには、前記サンドボックスの中で前記ファイルから起動された実行中のプロセスが収容されることを特徴とする、
請求項8に記載のシステム。
前記サンドボックスは、バーチャルマシン上での実現、ファイルシステムとレジスタの部分的仮想化に基づく実現、および前記ファイルシステムと前記レジスタへのアクセスルールに基づく実現のうち少なくとも1つとして実現されることを特徴とする、
請求項13に記載のシステム。
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記API関数呼び出しのサポートされていないレコードの記録に対するサポートを前記コンピューティングデバイスの前記プロテクタモジュールに追加するための命令をさらに含むことを特徴とする、
請求項15に記載の非一過性のコンピュータ読み取り可能な媒体。
前記サポートを追加した後に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成するための命令をさらに含み、前記作成されたレコードは前記API関数呼び出しの前記抽出されたレコードから構成されることを特徴とする、
請求項16に記載の非一過性のコンピュータ読み取り可能な媒体。
前記コンピューティングデバイスの前記プロテクタモジュールが前記API関数呼び出しの少なくとも1つの抽出された前記レコードの記録をサポートしていない場合、前記挙動ルールに含まれるAPI関数呼び出しのすべてのレコードの数に対する前記API関数呼び出しのサポートされているレコードの割合が所定のしきい値より大きい場合に、前記コンピューティングデバイスの前記プロテクタモジュールのための前記ウィルス対策レコードを作成するための命令をさらに含み、前記作成されたレコードは前記API関数呼び出しの前記サポートされているレコードだけを含むことを特徴とする、
請求項15に記載の非一過性のコンピュータ読み取り可能な媒体。
対標的型攻撃プロテクタモジュールはサンドボックスを含み、前記API関数呼び出しの前記ログには、前記サンドボックスの中で前記ファイルから起動された実行中のプロセスが収容されることを特徴とする、
請求項15に記載の非一過性のコンピュータ読み取り可能な媒体。
【発明を実施するための形態】
【0026】
ウィルス対策レコードの作成のためのシステム、方法、および、コンピュータプログラム製品に関する態様例について以下に説明する。以下の説明は、単に例示の目的のためであって、いかなる制限を加えることも意図されていないことは、当業者には理解されるであろう。その他の態様は、本開示から利益を得る当業者には、容易に想起できるであろう。添付図面に示すように、態様例の実施態様が詳細に参照される。同一あるいは類似する項目には、図面および以下の説明を通して、可能な範囲で、同一の参照符号を用いる
【0027】
用語解説
明確化のために、最初に、本開示の1つ以上の態様例の説明に用いられる用語を以下に提示する。
【0028】
侵害指標(Indicator Of Compromise:IOC、また、頻度はそれより低いが、感染指標(indicator of infection)とも呼ばれる)とは、コンピュータ上またはネットワーク上で観察できる情報システムへの侵入の痕跡(アーティファクト)、すなわち、残留痕跡である。代表的な侵害指標として、ウィルス対策レコード、IPアドレス、ファイルのチェックサム、URLアドレス、ボットネットのコマンドセンターのドメイン名などがある。侵害指標に関しては、特に、以下のようないくつかの基準が存在する。
・OpenIOC(http://blogs.rsa.com/understanding-indicators-of-compromise-ioc-part-i/, http://openioc.org/)、
・STIX(https://stix.mitre.org/)、
・CybOX(https://cybox.mitre.org)など。
【0029】
コンピュータ攻撃(サイバー攻撃とも呼ばれる)とは、情報システムや情報通信ネットワークの情報のセキュリティを侵害するために行われる、それらのシステムやネットワークに対するソフトウェアおよびハードウェアによる標的型行為である。
【0030】
標的型攻撃(Targeted Attack:TA)とは、特定の組織や特定の個人に向けられたコンピュータ攻撃の特定のケースである。
【0031】
ファジーハッシュ、すなわち、フレキシブルフィンガープリント(局所性鋭敏型ハッシュ)とは、ファイルの作成時からの変化に対して安定なファイルフィンガープリントである。すなわち、悪意あるファイルを検出すると、そのファイルのフィンガープリント値を用いて、多くの類似した(未知であるかもしれない)悪意あるファイルも検出されるであろう。そのようなフィンガープリントの主な特徴は、ファイルのわずかな変化に対して不変であるということである(例えば、特許番号US8955120参照)。
【0032】
ファジー判定とは、ファイルの実行中に疑わしい動作を検出した際の、プロテクタ(ウィルス対策アプリケーション)の応答であり、例えば、そのファイルが悪意あるファイルの特徴を有していることを示す判定である。ファジー判定は、例えば、フレキシブルフィンガープリントによるファイル検出をきっかけとして、実行される。ファジー判定は、検出されたファイルが悪意あるものであることを示し、判定に対するある程度の確率も与える。
【0033】
本開示の教示の説明に戻って、
図1は、本開示の教示に従ったウィルス対策レコードの作成に使用される情報システムを示す。情報システム100は、コンピュータネットワーク109と通信可能に接続された少なくとも1台のコンピューティングデバイス101(略して、コンピュータとも呼ばれる)を含む。コンピューティングデバイス101は、例えば、パーソナルコンピュータ、ノートパソコン、スマートフォン、ネットワーク機器(例えば、ルータ、スイッチ、ハブ)などの標準的なコンピューティングデバイスを備えている。ここで注意すべきことは、コンピューティングデバイス101は物理的装置、または物理的装置上で動作するバーチャルマシンのようなソフトウェアのいずれであってもよいということである。情報システム100は、例えば、フルコネクト型、バス型、星型、リング型、セル型、および混合型ネットワークトポロジーのうち1つなどの、従来技術で公知の任意のネットワークトポロジー109を用いて構成してもよい。
【0034】
コンピューティングデバイスのプロテクタ102(保護モジュール)をコンピューティングデバイス101上に設置してもよい。ここで注意すべきことは、情報システム100が2台以上のコンピューティングデバイス101を含む場合、何台かのコンピューティングデバイス101には、プロテクタ102を設置しないこともあるということである。
【0035】
情報システム100は、さらに、対標的型攻撃プロテクタ103を含んでおり、それは、例えば、別体のサーバ上に位置してもよい。別体のサーバは、コンピュータネットワーク109を介して、少なくとも1台のコンピューティングデバイス101と接続されてもよい。コンピューティングデバイス101をネットワーク109を介してインターネットおよび検出装置110に接続するために、プロキシサーバ(図示せず)を使用してもよい。対標的型攻撃プロテクタ103は、さらに詳細に後述するような、脅威データベース105、呼び出しログ104、およびバーチャルマシン106を含んでもよい。
【0036】
システムは、さらに、コンピューティングデバイス101上で動作するプロテクタ102を備えた少なくとも1台のコンピューティングデバイス101を含んでもよい(一例として、
図1は、それぞれのコンピューティングデバイス101上で動作する2つのプロテクタ102を示す)。
【0037】
プロテクタ102はコンピューティングデバイス101の呼び出しログ107と脅威データベース108を含んでもよい。プロテクタ102の、エミュレータや挙動アナライザなどのようなモジュール(より詳細には
図3参照)は、調査されるファイルの実行中のAPI関数呼び出しに関するレコード(例えば、関数名、渡されたパラメータ、関数呼び出し時刻)を呼び出しログ107に記録してもよい。
【0038】
態様の一例においては、API関数呼び出しに関する呼び出しログ107の各レコードは以下の情報を含む。
・呼び出された関数の識別子(例えば、名前)、
・調査されるファイルから起動されたプロセスの一意的識別子(プロセス識別子(Process IDentifier:PID))、
・プロセスのアドレス空間の命令を実行するスレッドの一意的識別子(スレッド識別子(Thread IDentifier:TID))、
・上記関数の1組の引数、および、
・関数呼び出し時刻。
【0039】
プロテクタ102のためのウィルス対策レコードは、例えば、オンアクセススキャナ、挙動アナライザのための挙動ルール、またはエミュレータの挙動ルールのウィルス対策レコードのような、対応するプロテクタ102のためのシグネチャやルールとして定義してもよい。シグネチャの場合、ウィルス対策レコードは、例えば、ファイルコードのセグメントのハッシュサムや、ファイルコードの異なるセグメントからの1組のハッシュサムとそれらのハッシュサムの選択ルール(例えば、シグネチャに含まれる3つのハッシュサムのうち2つがヒットした場合、シグネチャ全体がヒットしたと考えられる)などを構成してもよい。挙動アナライザとエミュレータのための挙動ルールの例を以下に示す。
【0040】
検出装置110(検出モジュール)を、コンピュータネットワーク109を介してプロテクタ102および103と接続され、ファイルのさらに詳細な解析の実行に用いるリモートサーバ上に据え付けてもよい。
【0041】
図2は、「サンドボックス」の一例を示すブロック図である。「サンドボックス」は、プロセスの安全な実行のためのコンピュータ環境を構成する。本開示の態様の一例においては、「サンドボックス」は、ファイルシステムとレジスタの部分的仮想化に基づくか、ファイルシステムとレジスタへのアクセスルールに基づくか、あるいはハイブリッド手法に基づいて、バーチャルマシンの形で実現されてもよい。
図2は、オペレーティングシステム(Operating System:OS)131を搭載したバーチャルマシン106の形で実現された「サンドボックス」の一例を示す。バーチャルマシン106は、対標的型攻撃プロテクタ103の制御下でファイル133を実行するように設計される。ここで注意すべきことは、ファイル133は任意のデータ形式を持つファイルであってよく、任意のデータを含んでもよいということである。
【0042】
ファイル133の実行中、バーチャルマシン106に含まれるロギングコンポーネント132がAPI関数呼び出しをインターセプトし、API関数呼び出しに関するレコードを次々と入力する。レコードは、同じくバーチャルマシン106上に位置する呼び出しログ134に入力される。バーチャルマシンの呼び出しログ134は、少なくとも、バーチャルマシン上でのファイルの実行中に記録されたAPI関数呼び出しに関するレコードを含んでいる。
【0043】
API関数呼び出し、すなわち、プロシージャコール(プロシージャを呼び出すCALLコマンド)は、プロシージャ(API関数)コールを実行する無条件制御移行として定義される。CALLコマンドによって、リターンアドレスがスタックに記憶され、API関数の実行に移行する。呼び出されるAPI関数に関する情報には、API関数に渡されるデータと、API関数から返されるデータと、API関数を呼び出すプロセスと、API関数を提供するライブラリ/アプリケーション/カーネルと、API関数のコードと、API関数の呼び出し元アドレスと、API関数が位置するアドレスと、リターンアドレス、などが含まれる。呼び出しログは、呼び出されたAPI関数からのリターンコマンド(プロシージャからのリターンをするRETコマンド)に関する情報も保存し、呼び出されたAPI関数からのリターンコマンドが実行されると、リターンアドレスがスタックから取り出され、リターンアドレスへの制御の移行が行われる。サンドボックス内において、ファイルは、通常、限られた時間内(数10秒以内)に実行される。
【0044】
態様の一例においては、API関数呼び出しに関する呼び出しログ134(および、したがって、呼び出しログ104)の各レコードは以下の情報を含む。
・呼び出された関数の識別子(例えば、名前)、
・調査されるファイル133から起動されたプロセスの一意的識別子(PID)、
・プロセスのアドレス空間の命令を実行するスレッドの一意的識別子(TID)、および、
・上記関数の1組の引数。
【0045】
態様のさらに他の例においては、バーチャルマシン106上でファイル133が実行される間、以下の情報が追加記録される。
・API関数からリターンアドレスに制御を移行するためのコマンド、
・ウィンドウズ(登録商標)NTネイティブAPI関数の直接呼び出し、
・ウィンドウズ(登録商標)NTネイティブAPI関数からリターンするためのコマンド、
・コンピュータシステムの状態の変更方法、特に、コンピュータシステムのシャットダウンまたは再起動のイベント、
・オペレーティングシステム内のイベント、
・侵害指標、
・システムコール、
・プロテクタの判定、
・ファイルのチェックサムまたはファイルの一部のチェックサム、
・ファイルの供給元、
・ファイル実行のエミュレーション結果、
・コンピューティングデバイス上にファイルが出現した時刻、
・ファイルがネットワークを介して入手したデータ、
・ファイルがネットワークを介して送信したデータ、
・コンピュータ上のDNSハイジャック、
・オペレーティングシステムの自動更新の停止、
・ファイアウォールの停止、
・プロテクタの停止、
・「ユーザアカウント制御」コンポーネントの停止、
・オペレーティングシステムの「システム復元」コンポーネントの停止、
・ファイルマネージャにおける「隠しファイル、フォルダ、ディスクの表示」オプションの停止、
・ファイアウォールのルールの変更、
・hostsファイルの変更、および、
・ファイルの自己削除。
【0046】
挙動ルールとウィルス対策レコードは、さらに上記情報を含む。
【0047】
以下の出口条件のうち1つが発生した場合、バーチャルマシン
106上のファイル133の実行は完了する。
・プロセスが完了した。
・指定された期間が経過した。
・これまでにステップが所定回数(例えば、3回)実行された。
・プロセスが実行した命令数が、命令数の所定しきい値(例えば、100000命令)を超過する。
【0048】
出口条件が満たされた場合、すなわち、バーチャルマシン106上のファイル133の実行が完了した場合、プロテクタ103は、バーチャルマシンに収容されている呼び出しログ134のレコードを保存し、レコードは、プロテクタ103が動作しているオペレーティングシステム内に収容されている呼び出しログ104に保存される。
【0049】
態様のさらに他の例においては、ロギングコンポーネント132は、ネットワーク、レジスタ、ファイルシステム、RAM、プロセス、およびスレッドとの協調動作を担うシステムコールに関する情報を含むレコードをインターセプトして、呼び出しログ134に入力する。
【0050】
ここで注意すべきことは、ロギングコンポーネント132がAPI関数をインターセプトするときは、ロギングコンポーネント132は呼び出しスタックおよびプロセッサ上で実行中の命令にアクセスできるということである。態様の他の例においては、ロギングコンポーネント132は、例外およびプロセッサ上で実行中の命令に関するレコードを、呼び出しログ134に保存する。
【0051】
態様のさらに他の例においては、ロギングコンポーネント132は、以下の例外を特定するように設計される。
・CALL命令実行時のアクセス権違反、
・メモリへの書き込み時のアクセス権違反、
・コマンドカウンタのアドレスにあるメモリから、あるいはコマンドカウンタのアドレスと所定精度内で一致するアドレスにあるメモリからの読み込み時のアクセス権違反、
・データ実行防止ポリシー違反、
・スタック上のバッファオーバフロー
・動的メモリ破壊(ヒープ破壊)、および、
・禁止されている命令、誤った命令、あるいは特権命令の実行の試行。
【0052】
例えば、API関数 KiUserExceptionDispatcher の呼び出しをインターセプトした後、レジスタ、システム構造体、および呼び出しスタックを解析した際に、ロギングコンポーネント132は「メモリへの書き込み時のアクセス権違反」例外を特定するかもしれない。
【0053】
プロテクタ103は、脅威データベース105に収容されている挙動ルールの中から、呼び出しログ104のレコードに対応する挙動ルールを特定するように設計される。挙動ルールは、少なくとも1つのAPI関数の呼び出しに関する情報、および挙動ルールが呼び出された場合の判定(例えば、コンピュータウィルス、インターネットワーム、トロイの木馬プログラム、または条件によっては望ましくないソフトウェア)を含む。態様の一例においては、挙動ルールは、1組のAPI関数呼び出しと、その1組のAPI関数呼び出しに関する論理式から構成される。例えば、あるAPI関数が、あるパラメータ付きで、挙動ルールによって指定されたように呼ばれた場合、プロテクタ103は呼び出しログ104の中から挙動ルールを発見する可能性がある。態様の他の例においては、挙動ルールは、その同じ挙動ルールの他のレコードに対して付された条件をさらに含んでもよい。そのような条件は、例えば、ウィルス対策レコードのレコード数のチェック、ウィルス対策レコードのレコード順序のチェックなどであってもよい。
【0054】
このように、バーチャルマシン上やエミュレータ上で実行されたときの挙動アナライザおよび「サンドボックス」の両方において、挙動ルールが用いられる。挙動ルールの相違は、API関数呼び出しに関する情報とAPI関数呼び出しに対して付された条件に伴うものであってもよい。例えば、挙動アナライザは、バーチャルマシンやエミュレータが記録することのできるAPI関数呼び出しのリストに対して、全面的または部分的に相違する可能性のあるリスト中にあるAPI関数呼び出しに関するレコードを記録してもよい。一方、態様の他の例においては、挙動アナライザ、バーチャルマシン、およびエミュレータにおける上述のAPI関数呼び出しのリストは一致していてもよい。
【0055】
図3は、コンピューティングデバイスのプロテクタのブロック図の一例を示す。コンピューティングデバイスのプロテクタ102は、コンピューティングデバイス101の情報セキュリティを確保するように設計された、以下の複数のモジュール(特定モジュール)を含んでもよい。すなわち、オンアクセススキャナ、オンデマンドスキャナ、Eメールアンチウィルス、ウェブアンチウィルス、挙動アナライザ(事前保護モジュール)、ホスト侵入防止システム(Host Intrusion Prevention System:HIPS)モジュール、データ漏洩防止(Data Loss Prevention:DLP)モジュール、脆弱性スキャナ、エミュレータ、ファイアウォールなどを含んでもよい。本開示の態様の一例においては、上記の特定モジュールはプロテクタ102に組み込まれた部分であってもよい。態様のさらに他の例においては、上記の特定モジュールは個別のプログラム部品の形で実現されてもよい。
【0056】
オンアクセススキャナは、ユーザのコンピュータシステム上で開かれたり、起動されたり、保存されたりするすべてのファイルの悪意ある動作を検出するプログラムを収容している。オンデマンドスキャナは、ユーザが指定した、すなわち、ユーザの要求に応じたファイルやディレクトリをスキャンするという点で、オンアクセススキャナとは異なっている。
【0057】
Eメールアンチウィルスは、送受信されるEメールが悪意あるファイルを含んでいるどうかをチェックするために用いられる。ウェブアンチウィルスは、ユーザがアクセスしたウェブサイト上に含まれる恐れのある悪意あるコードの実行を防止し、また、ウェブサイトが開かれることを阻止する機能を果たす。HIPSモジュールは、プログラムの望ましくない動作や悪意ある動作を検出し、実行時にそのような動作を阻止する機能を果たす。DLPモジュールは、コンピュータやネットワークからの機密データの漏洩を検出および防止する機能を果たす。脆弱性スキャナは、コンピューティングデバイス101の脆弱性(例えば、プロテクタ102の特定の構成要素の停止、ウィルスデータベースの陳腐化、ネットワークポートの閉鎖など)を検出するために必要とされる。ファイアウォールは、指定されたルールに従ったネットワークトラフィックのチェックとフィルタリングを提供する。エミュレータは、エミュレータ内でのコードの実行中にホストシステムを模擬する役割を担う。挙動アナライザは、挙動ルールを用いて、実行中のファイルの挙動を検出し、ファイルを信頼度によって分類する。ファイルの実行の過程で、挙動アナライザは、呼び出しログ107の中から、少なくとも、脅威データベース108から得た挙動ルールに対応するAPI関数呼び出しに関する記録されたレコードを検索する。態様の特定の一例においては、呼び出しログ107と脅威データベース108はコンピューティングデバイス101上に位置する。
【0058】
挙動ルールは、少なくとも1つのAPI関数の呼び出しに関するレコード、およびそのルールが呼び出された場合の判定(例えば、コンピュータウィルス、インターネットワーム、トロイの木馬プログラム、または条件によっては望ましくないソフトウェア)を含む。態様の他の例においては、挙動ルールは、1組のAPI関数呼び出しと、その1組のAPI関数呼び出しに関する論理式から構成される。例えば、あるAPI関数が、あるパラメータ付きで、挙動ルールによって指定されたように呼ばれた場合、プロテクタ102は呼び出しログ107の中から挙動ルールを発見する可能性がある。
【0059】
また、挙動ルールは、そのルールが呼び出されたときに下された判定に対応する。すなわち、悪意あるかもしくは望ましくないソフトウェアのカテゴリーのうち、最も可能性の高いカテゴリーが、その挙動ルールに対応する。例えば、判定結果は、コンピュータウィルス、インターネットワーム、トロイの木馬プログラム、または条件によっては望ましくないソフトウェアである可能性がある。
【0060】
態様の他の例においては、(挙動アナライザ、エミュレータ、および「サンドボックス」の)挙動ルールは、以下のうち少なくとも1つを含む。
・疑わしいAPI関数のリスト中にあるAPI関数の呼び出し(例えば、リストは、API関数、WinExec, CreateProcess, GetFileSize, CreateFileを含んでもよい)、
・API関数GetFileSizeの10回にわたる呼び出し、
・API関数WriteFile(ファイルへの書き込み)の呼び出しに続く、API関数WinExec(実行用ファイルの起動)の呼び出し、
・コンピュータ上のDNSハイジャック、
・オペレーティングシステムの自動更新の停止、
・ファイアウォールの停止、
・プロテクタの停止、および、
・ユーザアカウント制御(User Account Control:UAC(ウィンドウズ(登録商標)OSの構成要素))の停止。
【0061】
悪意あるソフトウェア(疑わしい動作、スパム、およびその他のコンピュータ脅威の徴候)を検出すると、
図3に示すモジュールは、それに対応して、検出された脅威、および脅威を取り除くための処置(例えば、ファイルの除去または修正、実行の禁止など)を講じる必要性をプロテクタに伝える通知を作成する(その後、プロテクタ102の判定に変換してもよい)。態様の他の例においては、プロテクタ自身が悪意あるソフトウェアを検出した後、脅威を取り除く処置を講じてもよい。態様のさらに他の例においては、判定は(判定によって、誤警報が生じる恐れがあるため)ファジーまたは試験的判定でもよく、その場合、プロテクタは脅威を取り除くための処置を講じることなく、通知をリモートサーバ(図示せず)に回す。態様の他の例においては、悪意あるソフトウェアは以下のカテゴリー(判定はカテゴリーに対応する)を含む。すなわち、悪意あるソフトウェア、および、条件によっては望ましくないソフトウェアを含む。悪意あるソフトウェアは以下のサブカテゴリーを含んでもよい。すなわち、ウィルス、ワーム、トロイの木馬プログラム、パッカー、および悪意あるユーティリティを含んでもよい。条件によっては望ましくないソフトウェアは広告ソフトウェア(アドウェア)、性的なコンテンツを含むソフトウェア(ポルノウェア)、使用するとコンピュータに害を及ぼす可能性のある合法的ソフトウェア(リスクウェア)、その他である。
【0062】
図4は、標的型攻撃からの保護のためのプロテクタである「対標的型攻撃プロテクタ」のブロック図の一例を示す。サーバ上に据え付けられた対標的型攻撃プロテクタ103は、例えば、以下のモジュールを含んでもよい。すなわち、「サンドボックス」、侵入検知システム(Intrusion Detection System:IDS)、レピュテーションサービス、YARAルールによるチェックをするモジュール、ウィルス対策モジュール、リスクスコアリングモジュール、アナライザ、DLPモジュール、およびその他の検出装置を含んでもよい。
【0063】
「サンドボックス」モジュールは、上述の、コンピューティングデバイスのプロテクタ102のエミュレータと類似の機能を有するが、「サンドボックス」の方がより高い計算能力を用いることができ、より長時間動作できるという点で相違している。対標的型攻撃プロテクタ103には時間的制限はない。それに対して、コンピューティングデバイスのプロテクタ102には本質的に時間的制限がある。
【0064】
「サンドボックス」はプロセスの安全な実行のためのコンピュータ環境であり、ファイルから起動されたプロセスの実行中における疑わしい動作を判定する機能を果たす。
【0065】
「サンドボックス」は、例えば、ファイルシステムとレジスタの部分的仮想化に基づくか、ファイルシステムとレジスタへのアクセスルールに基づくか、あるいはハイブリッド手法に基づいて、バーチャルマシンの形で実現されてもよい(
図2に示す態様例参照)。
【0066】
侵入検出システムは、コンピューティングデバイス101またはネットワーク109に対する不正アクセスや、コンピューティングデバイス101またはネットワーク109に対する不正制御を特定するモジュールである。
【0067】
レピュテーションサービスは、コンピューティングデバイス101上のファイルの人気度に関する情報(ファイルを保持するコンピューティングデバイス101の数、ファイルの起動回数など)を収容してもよい。
【0068】
YARAルールによるチェックをするモジュールは、オープンシグネチャフォーマットのYARAシグネチャをチェックする機能を果たす(http://yararules.com/参照)。
【0069】
DLPモジュールは、機密データのコンピュータまたはネットワークからの漏洩を検出および防止する機能を果たす。
【0070】
サーバ上に位置する対標的型攻撃プロテクタ103は、調査するファイル133をバーチャルマシン106上で実行するためにロギングコンポーネント132に送信する。ロギングコンポーネント132は、ファイル133を実行している期間中、少なくともAPI関数呼び出しに関するレコード(例えば、関数の名前、渡されたパラメータ、関数呼び出しの時刻)を呼び出しログ134に記録する。このように、バーチャルマシンの呼び出しログ134は、少なくともファイル133がバーチャルマシン106上で実行される間に記録されたAPI関数呼び出しに関するレコードを収容することになる。上述したように、バーチャルマシン106上のファイル133の実行が完了した後、プロテクタ103は、バーチャルマシンに収容されている呼び出しログ134のレコードを呼び出しログ104に保存する。
【0071】
呼び出しログ104のレコードに対応する挙動ルールが脅威データベース105から特定された場合、すなわち、悪意あるファイルがバーチャルマシンによって検出された場合、本発明の動作が開始される。
【0072】
挙動アナライザのための挙動ルールと同様に、バーチャルマシンのための挙動ルールも、少なくとも1つのAPI関数の呼び出しに関する情報、およびそのルールが呼び出された場合の判定(例えば、コンピュータウィルス、インターネットワーム、トロイの木馬プログラム、または条件によっては望ましくないソフトウェア)を含む。態様の一例においては、挙動ルールは、特に、1組のAPI関数呼び出しと、その1組のAPI関数呼び出しに関する論理式から構成される。例えば、あるAPI関数が、あるパラメータ付きで、挙動ルールによって指定されたように呼ばれた場合、プロテクタ103は呼び出しログ104の中からその挙動ルールを発見するであろう。
【0073】
挙動ルールは、そのルールが呼び出されたときに下された判定にも対応する。すなわち、悪意あるかもしくは望ましくないソフトウェアのカテゴリーのうち、最も可能性の高いカテゴリーが、そのルールに対応する。判定結果は、例えば、コンピュータウィルス、インターネットワーム、トロイの木馬プログラム、または条件によっては望ましくないソフトウェアである可能性がある。
【0074】
態様の一例においては、挙動ルールは以下のものを含む。
・疑わしいAPI関数のリスト中にあるAPI関数の呼び出し(例えば、リストは、API関数、WinExec, CreateProcess, GetFileSize, CreateFileを含んでもよい)、
・API関数GetFileSizeの10回にわたる呼び出し、
・API関数WriteFile(ファイルへの書き込み)の呼び出しに続く、API関数WinExec(実行用ファイルの起動)の呼び出し、
・コンピュータ上のDNSハイジャック、
・オペレーティングシステムの自動更新の停止、
・ファイアウォールの停止、
・プロテクタの停止、および、
・UAC(ウィンドウズ(登録商標)OSの構成要素)の停止。
【0075】
図5は、本開示の教示に従ったウィルス対策レコードの作成方法に対するフローチャートを示す。本開示の1つの態様によれば、ステップ501において、ファイルのAPI関数呼び出しのログを解析して、1つ以上の挙動ルールを用いて悪意ある挙動の有無を調べ、API関数呼び出しのログのレコードに対応する挙動ルールが特定された場合、ファイルは悪意あるものであると判定することによって、本方法はファイルが悪意あるものであると判定する。例えば、API関数呼び出しのレコードに対応する挙動ルールが特定された場合、
図2に示すようなファイル133は悪意あるものであると判定される。例として、ファイルのAPI関数呼び出しのログが調査され、少なくとも1つの悪意ある挙動(すなわち、1つ以上の挙動ルールのうち少なくとも1つ)があるか否かが判定される。ステップ502において、本方法は、特定された挙動ルールと関連するAPI関数呼び出しの1つ以上のレコードを抽出する。本方法はステップ503に進む。ステップ503において、本方法は、API関数呼び出しの少なくとも1つの抽出されたレコードがコンピューティングデバイスのプロテクタによって記録されたか否かを判定する。判定は、対標的型攻撃プロテクタを使用して行われる。API関数呼び出しの少なくとも1つの抽出されたレコードがコンピューティングデバイスのプロテクタによって記録された場合、本方法はステップ504に進む。そうでない場合、本方法は任意選択されたステップ505に進む。API関数呼び出しの少なくとも1つの抽出されたレコードを記録できる場合、ステップ504において、本方法は、コンピューティングデバイスのプロテクタ102のためのウィルス対策レコードを作成する。作成されたウィルス対策レコードは、API関数呼び出しの抽出されたレコードを少なくとも含んでいる。1つの態様においては、作成されたウィルス対策レコードは、API関数呼び出しに関する抽出されたレコードを少なくとも含んでいる。ステップ505において、本方法は、サポートされていないレコードの記録に対するサポートを追加した後にウィルス対策レコードを作成するか、または挙動ルールに含まれるAPI関数呼び出しのすべてのレコードの数に対するサポートされているレコードの割合が所定のしきい値より大きい場合に、ウィルス対策レコードを作成する。
【0076】
このように、プロテクタ102のためのウィルス対策レコードを作成することによって、上述の技術的課題が解決される。すなわち、対応するウィルス対策レコードが存在しないためにこれまで検出できなかった悪意あるファイルの検出が、作成されたプロテクタ102のためのウィルス対策レコードによって可能になるため、悪意あるファイルの検出の質が向上する。プロテクタ102のためのウィルス対策レコードを作成するための時間も、既知の方法の実施に伴う時間と比べて短縮されるであろう。
【0077】
1つの態様においては、リモートサーバに据え付けられた検出装置110のために、挙動ルールが作成される。他の態様においては、コンピューティングデバイス101上に具体化されたプロテクタ102のために、ウィルス対策レコードが作成される。さらに他の態様においては、ウィルス対策レコードは、対応するプロテクタ102のための1つ以上のシグネチャや1つ以上のルールを参照する。さらに他の態様においては、ウィルス対策レコードは、オンアクセススキャナ、挙動アナライザのための挙動ルール、またはエミュレータのための挙動ルールの、レコードを含んでもよい。
【0078】
1つの態様においては、対標的型攻撃プロテクタ上のファイルの解析は、レピュテーションサービスを用いたチェック、YARAルールを用いたチェック、および専門的解析のうち少なくとも1つを含む。専門的解析は、コンピュータセキュリティ分野の専門家によるファイルの手動解析であってもよい。
【0079】
他の態様においては、(コンピューティングデバイス101上に搭載された)プロテクタ102がAPI関数呼び出しに関する少なくとも1つの抽出されたレコードの記録をサポートしていない場合、API関数呼び出しに関するサポートされていないレコードを記録するためのサポートがプロテクタ102に追加される。サポートが追加された後に、API関数呼び出しに関する抽出されたレコードで構成されたウィルス対策レコードがプロテクタ102のために作成される。例えば、バーチャルマシン106において、ロギングコンポーネント132は、API関数GetFileSizeの呼び出しに関するレコードの記録をサポートしているかもしれないが、コンピューティングデバイス101上のプロテクタ102の挙動アナライザは、その関数呼び出しの記録をサポートしていない可能性がある。しかし、挙動ルールは上記API関数呼び出しのレコードを含んでいる(例えば、挙動ルールは「API関数GetFileSizeの呼び出しが10回実行された」というものである)。したがって、API関数GetFileSizeの呼び出しに関するレコードを記録するためのサポートがプロテクタ102に追加される。その後、API関数呼び出しに関する抽出されたレコードから構成されるウィルス対策レコード(所与の例においては、挙動アナライザのための挙動ルール)がプロテクタ102のために作成される。
【0080】
態様のさらに他の例においては、(コンピューティングデバイス101上に搭載された)プロテクタ102がAPI関数呼び出しに関する少なくとも1つの抽出されたレコードの記録をサポートしていない場合、API関数呼び出しに関するサポートされているレコードだけを含むウィルス対策レコードを作成してもよい。1つの態様においては、挙動ルールに含まれるAPI関数呼び出しのすべてのレコードの数に対するAPI関数呼び出しに関するサポートされているレコードの割合が所定の数値(例えば、75%)より大きい場合に、API関数呼び出しに関するサポートされているレコードだけを含むウィルス対策レコードが作成される。一例として、「疑わしいAPI関数、WinExec, CreateProcess, GetFileSize, CreateFileのリストの中から、API関数WriteFileが呼び出され、続いてAPI関数WinExecが呼び出された」という挙動ルールが呼び出されたと仮定する。また、プロテクタ102は、API関数WinExec, CreateProcess, CreateFile, WriteFileの呼び出しの記録をサポートするが、API関数GetFileSizeの呼び出しに関するレコードの記録はサポートしない、と仮定する。このシナリオでは、呼び出された挙動ルールに含まれるすべてのAPI関数の数に対するサポートされたAPI関数の割合は80%であり、75%(所定の数値の例)より大きいので、ウィルス対策レコードを作成してもよい。
【0081】
図6は、態様の一例に従って本開示の複数の態様を実現可能な汎用コンピュータシステム20を表すブロック図である。ここで注意すべきことは、コンピュータシステム20は、システム100や、その個々の構成要素に対応することができるということである。
【0082】
図示のように、コンピュータシステム20(パーソナルコンピュータまたはサーバでもよい)は、中央処理装置21、システムメモリ22、および、中央処理装置21に付随するメモリを含む各種システム構成要素を接続するシステムバス23を含んでいる。当業者には理解されるように、システムバス23は、バスメモリまたはバスメモリコントローラ、周辺バス、および、他のいかなるバスアーキテクチャとも相互作用可能なローカルバスを備えていてもよい。システムメモリは固定記憶装置(Read-Only Memory:ROM)24とランダムアクセスメモリ(Random Access Memory:RAM)25を含んでいてもよい。基本入出力システム(Basic Input/Output System:BIOS)26は、ROM24を用いてオペレーティングシステムをロードする際の手順などの、コンピュータシステム20の要素間の情報転送の基本的手順を記憶していてもよい。
【0083】
また、コンピュータシステム20は、データを読み書きするためのハードディスク27、リムーバブル磁気ディスク29を読み書きするための磁気ディスクドライブ28、および、CD−ROM、DVD−ROM、その他の光媒体などのリムーバブル光学ディスク31を読み書きするための光学ドライブ30を備えていてもよい。ハードディスク27、磁気ディスクドライブ28、および光学ドライブ30は、それぞれ、ハードディスクインターフェース32、磁気ディスクインターフェース33、および光学ドライブインターフェース34を介して、システムバス23と接続されている。ドライブおよび対応するコンピュータ情報媒体は、コンピュータシステム20のコンピュータ命令、データ構造体、プログラムモジュール、およびその他のデータを記憶する、独立の電源で動作するモジュールである。
【0084】
態様の一例は、コントローラ55を介してシステムバス23と接続されたハードディスク27、リムーバブル磁気ディスク29、およびリムーバブル光学ディスク31を使用するシステムを備えている。コンピュータで読み取り可能な形式でデータの保存が可能な任意の種類の媒体56(半導体ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)など)を利用できることは、当業者には理解されるであろう。
【0085】
コンピュータシステム20はファイルシステム36を有しており、その中には、オペレーティングシステム35の他に、追加的なプログラムアプリケーション37、その他のプログラムモジュール38、およびプログラムデータ39を保存することができる。コンピュータシステム20のユーザはキーボード40、マウス42、あるいは、その他、例えば、マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナなどを含むがそれらに限られない当業者に公知の入力装置を使用して、コマンドおよび情報を入力することができる。そのような装置は、一般に、コンピュータシステム20に、システムバスと接続されたシリアルポート46を通して差し込まれるが、当業者は、入力装置を、例えば、限定はされないが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(Universal Serial Bus:USB)などの他の方法で接続してもよいことを理解するであろう。モニタ47または他の種類の表示装置も、ビデオアダプタ48などのインターフェースを介してシステムバス23と接続してもよい。パーソナルコンピュータは、モニタ47に加えて、スピーカ、プリンタなどの周辺出力装置(図示せず)を備えてもよい。
【0086】
コンピュータシステム20を、1台以上のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境下で動作させてもよい。リモートコンピュータ49は、上記コンピュータシステム20の特徴説明の中で述べた要素のほとんどまたは全部を備えたローカルコンピュータワークステーションまたはサーバであってもよい。例えば、ルータ、ネットワークステーション、ピアデバイス、その他のネットワークノードなどを含むがそれらに限られないその他の装置がコンピュータネットワークの中に存在してもよい。
【0087】
ネットワーク接続によって、ローカルエリアコンピュータネットワーク(Local-Area computer Network:LAN)50および広域コンピュータネットワーク(Wide-Area computer Network:WAN)を形成することができる。そのようなネットワークは企業コンピュータネットワークや社内ネットワークで利用され、ネットワークは、一般に、インターネットにアクセスできる。LANおよびWANのネットワークにおいては、パーソナルコンピュータ20は、ネットワークアダプタまたはネットワークインターフェース51を介してローカルエリアネットワーク50と接続されている。ネットワークを利用する場合、コンピュータシステム20は、インターネットのような広域コンピュータネットワークとの通信を可能にするモデム54またはその他の当業者に公知のモジュールを採用してもよい。モデム54は、内部装置であっても外部装置であってもよいが、シリアルポート46によってシステムバス23と接続してもよい。上記ネットワーク接続は、1台のコンピュータが通信モジュールを使って他のコンピュータとの接続を確立する、数多くの広く理解されている方法の非限定例であることは、当業者には理解されるであろう。
【0088】
様々な態様において、本明細書で説明したシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェア、あるいはそれらの任意の組み合わせの中に実現されてもよい。ソフトウェア中に実現された場合、非一時的なコンピュータ読み取り可能な媒体上に、1つ以上の命令またはコードとして記憶してもよい。コンピュータ読み取り可能な媒体には、データストレージが含まれる。一例として、限定はされないが、そのようなコンピュータ読み取り可能な媒体は、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、あるいは他の種類の電気的、磁気的、または光学的記憶媒体、もしくは、所望のプログラムコードを命令やデータ構造体の形で運搬または記憶するために利用可能で、汎用コンピュータのプロセッサからアクセス可能な、その他の任意の媒体を含むことができる。
【0089】
様々な態様において、本開示で説明したシステムおよび方法を、モジュールの意味で扱うことができる。本明細書で使われている用語「モジュール」とは、例えば、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)やフィールドプログラマブルゲートアレイ(Field-Programmable Gate Array:FPGA)によるハードウェアを用いて実現されるか、あるいは、例えば、マイクロプロセッサシステムと、(実行時に)マイクロプロセッサシステムを専用デバイスに変換するモジュールの機能性を実現する一連の命令によるハードウェアとソフトウェアの組み合わせとして実現された、実世界の装置、構成要素、または構成要素の配置のことである。モジュールは、特定の機能をハードウェアのみで促進し、その他の機能をハードウェアとソフトウェアの組み合わせによって促進する、上記2つの組み合わせとしても実現できる。特定の実現形態においては、少なくとも一部、場合によっては全部のモジュールが、汎用コンピュータのプロセッサ上で実行されてもよい。したがって、各モジュールは各種の適切な構成の中に実現可能であり、本明細書に例示したいかなる特定の実現形態にも限定されるべきではない。
【0090】
明確化のために、本明細書は各態様の定型的な特徴のすべてまでは示していない。本開示の実際の実現形態のいかなる開発においても、開発者の具体的目的を達成するために実現形態に特有の多くの決定をする必要があり、具体的目的は、実現形態ごとおよび開発者ごとに異なるということが理解されるであろう。そのような開発努力は複雑で多くの時間を要する可能性があるが、それにもかかわらず、本開示から利益を得る当業者にとって、定型的な技術的取り組みであることが理解される。
【0091】
さらに、本明細書で用いている表現や用語は説明上のものであって、限定のためではなく、本明細書の用語や表現は、当業者が、当業者の知識と組み合わせて、本明細書が提供する教示や手引きの観点から解釈すべきものと理解すべきである。加えて、明示的記載がない限り、本明細書や請求の範囲におけるいかなる用語も、一般的でない、あるいは特別な意味を持つものとみなされることは意図されていない。
【0092】
本明細書に開示された様々な態様は、本明細書で例示により言及された公知のモジュールと均等な現在および将来の公知の均等物を包含する。加えて、態様および応用例を図示し、かつ、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの変更が可能であることは、この開示の利益を有する当業者には明らかであろう。