(57)【要約】      （修正有）【課題】悪意のあるファイルの有害な活動をより明らかにするための、仮想マシンにおける悪意のあるファイルを分析するシステム及び方法を提供する。【解決手段】傍受モジュールは、ファイルのオープン時に作成されたプロセスのスレッドの実行プロセスで発生するイベントを傍受し、プロセスのスレッドの実行を停止する３１０。傍受モジュールは、プロセッサのコンテキストを読み取り、イベント及びコンテキストをログに保存する３２０。分析モジュールは、ログに保存されたデータを、少なくとも１つのルールを含む１つ又は複数のテンプレートと比較する。比較の結果として、ファイルを悪意があると認識する決定と、プロセスの実行を中止する決定と、プロセッサのコンテキストを変更する決定と、次のイベントを待つ決定とのうち、少なくとも１つを実行する３３０。分析モジュールによって行われた決定が傍受モジュールに提供され、アクションを実行する３４０。【選択図】図３
2018129019.tif 000002
【特許請求の範囲】
【請求項１】
悪意のあるファイルを分析する方法であって、
実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を備え、
前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、
前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、
前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、
前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、
前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、
前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、
方法。
【請求項２】
前記傍受されたイベントは、前記スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール、システムコールからの戻り値、オペレーティング・システムからの通知のうち１つ又は複数を含む、
請求項１に記載の方法。
【請求項３】
前記傍受ステップは、規則決定ステップを更に備え、
前記規則決定ステップは、前記スレッドによって呼び出されるＡＰＩ関数のコーディング規則を決定する、
請求項１に記載の方法。
【請求項４】
前記プロセッサのコンテキストは、少なくとも前記プロセッサのレジスタ値を含む、
請求項１に記載の方法。
【請求項５】
前記傍受されたイベント及び前記読み取られたコンテキストは、ログに保存される、
請求項１に記載の方法。
【請求項６】
前記ルールは、前記分析の深さ又は前記イベントの集約の深さに関する条件を含む、
請求項１に記載の方法。
【請求項７】
前記ルールは、サイクルの変数を増加させるための条件を含む、
請求項１に記載の方法。
【請求項８】
悪意のあるファイルを分析するシステムであって、ハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を実行するように構成され、
前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、
前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、
前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、
前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、
前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、
前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、
システム。
【請求項９】
前記傍受されたイベントは、前記スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール、システムコールからの戻り値、オペレーティング・システムからの通知のうち１つ又は複数を含む、
請求項８に記載のシステム。
【請求項１０】
前記傍受ステップは、規則決定ステップを更に備え、
前記規則決定ステップは、前記スレッドによって呼び出されるＡＰＩ関数のコーディング規則を決定する、
請求項８に記載のシステム。
【請求項１１】
前記プロセッサのコンテキストは、少なくとも前記プロセッサのレジスタ値を含む、
請求項８に記載のシステム。
【請求項１２】
前記傍受されたイベント及び前記読み取られたコンテキストは、ログに保存される、
請求項８に記載のシステム。
【請求項１３】
前記ルールは、前記分析の深さ又は前記イベントの集約の深さに関する条件を含む、
請求項８に記載のシステム。
【請求項１４】
前記ルールは、サイクルの変数を増加させるための条件を含む、
請求項８に記載のシステム。
【請求項１５】
仮想マシンにおける悪意のあるファイルを分析するための、コンピュータで実行可能な命令を格納する、コンピュータ上で読み取り可能な不揮発性媒体であって、
前記命令は、実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を備え、
前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、
前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、
前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、
前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、
前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、
前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、
媒体。
【請求項１６】
前記傍受されたイベントは、前記スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール、システムコールからの戻り値、オペレーティング・システムからの通知のうち１つ又は複数を含む、
請求項１５に記載の媒体。
【請求項１７】
前記傍受ステップは、規則決定ステップを更に備え、
前記規則決定ステップは、前記スレッドによって呼び出されるＡＰＩ関数のコーディング規則を決定する、
請求項１５に記載の媒体。
【請求項１８】
前記プロセッサのコンテキストは、少なくとも前記プロセッサのレジスタ値を含む、
請求項１５に記載の媒体。
【請求項１９】
前記傍受されたイベント及び前記読み取られたコンテキストは、ログに保存される、
請求項１５に記載の媒体。
【請求項２０】
前記ルールは、前記分析の深さ又は前記イベントの集約の深さに関する条件を含む、
請求項１５に記載の媒体。
【請求項２１】
前記ルールは、サイクルの変数を増加させるための条件を含む、
請求項１５に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、サイバーセキュリティの分野に関し、より詳細には、仮想マシンにおける悪意のあるファイルを分析するシステム及び方法に関するものである。
【背景技術】
【０００２】
現在、ユーザのデータと悪意のあるプログラムに感染した電子デバイスの実際のユーザの両方に悪影響を与えるように設計されたコンピュータウイルス、トロイの木馬、ネットワークワーム等の悪意のあるプログラムが増加している。このような問題は、暗号化通信の「マイニング」のための計算機器のリソースを用いることにより、ユーザファイルの破損又は削除、電子及び機密ユーザデータの盗難（対応、画像、ログイン、パスワード、銀行カード情報）及びその他の措置によって引き起こされる。更に、悪意のあるソフトウェアは、クリエイターが常にセキュリティアプリケーションに対する攻撃と防御の新しいメカニズムを採用しているため、絶えず変化している。難読化（言い換えれば、プログラムのソーステキスト又は実行可能コードをその機能を保持する形式に変換するが、分析に抵抗する、作業アルゴリズムを理解する、及び逆コンパイル時に変更する等）や、悪意のあるコードやエミュレーション抵抗メカニズムの使用（例えば、悪意のあるプログラムはエミュレータで実行されているときを認識し、その有害な活動を明らかにしない）等様々なメカニズムが使用される。
【０００３】
更に、悪意のあるプログラムは、しばしばその悪意のあるアクティビティを一度に明らかにするのではなく、その代わりに、数百万のオーダーのＡＰＩ関数呼び出し、膨大なサイクル（数十億回のオーダー）を実行し、（例えば「Ｓｌｅｅｐ（）」機能を使用して１時間というように）開始直後から測って一定の時間停止する。ユーザの現代の計算機器は、高性能なマルチコアプロセッサ（マルチプロセッサシステムも含む）を有しているため、ユーザはコアのうちの１つの作業負荷に注意を払うことも注意を払わないこともある。更に、ユーザは通常、デバイスを１時間以上オンにした後にそのデバイスを使用する。したがって、起動されていれば、悪意のあるプログラムがその活動をすぐに明らかにする必要はない。
【０００４】
前述の技術に対処するために、セキュリティアプリケーションのメーカ（ウイルス対策アプリケーション等）は、ファイルの安全な実行のために隔離された環境下で仮想マシンを使用するという検出方法を採用している。多くの場合、そのような仮想マシンはサンドボックスとして知られている。そのような仮想マシンがその制御下で作動するようなハイパーバイザは、その中で実行されているアプリケーションによって実行される機能を傍受するためのメカニズムを含む。
【０００５】
セキュリティアプリケーションは、シグネチャ及び／又はヒューリスティックな分析技術等、悪意のあるプログラムを決定するための様々な方法を採用していることに留意されたい。分析中にファイルが悪意のあるものであると判断されなかった場合、そのファイルは前述の仮想マシンへの動作の分析のためにセキュリティアプリケーションによって後述の仮想マシン（例えば、信頼できるソフトウェアメーカのデジタル署名がない場合）へと引き渡されることがある。引き渡されたファイルはその後仮想マシン内で実行され、実行中に異なる関数呼び出しによって実行されるアクション及びイベントが傍受され、傍受されたイベント及びアクションがログに保存された後、セキュリティアプリケーション又は情報セキュリティの専門家により分析される。
【０００６】
したがって、イベント及びアクションの傍受並びに集約のための既知のシステムは、２つのステップで動作する。最初のステップでは、情報が収集され、第二ステップでは、それらの情報が分析される。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
既知のシステム及び方法の欠点は、それらがファイルの実行中に実行プロセスに影響を与えないことである。例えば、分析中のファイル（又は分析中のファイルを開いたアプリケーション）から起動されたプロセスが１時間実行を停止した場合、又はそのファイルが特定の電子メールクライアント若しくはメッセンジャー（メッセージの交換用プログラム）を攻撃している場合、攻撃されたプログラムは仮想マシン内に存在しなくなり、更にファイルの動作の悪意は発見されない（パスワードで必要なファイルが見つからないため、悪意のあるファイルが単独で実行を終了し、その悪意のある行為は明らかにされない）。
【課題を解決するための手段】
【０００８】
本発明によれば、悪意のあるファイルを分析する方法であって、実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を備え、前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、方法が提供される。
【０００９】
好ましくは、前記傍受されたイベントは、前記スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール、システムコールからの戻り値、オペレーティング・システムからの通知のうち１つ又は複数を含む。
【００１０】
好ましくは、前記傍受ステップは、規則決定ステップを更に備え、
前記規則決定ステップは、前記スレッドによって呼び出されるＡＰＩ関数のコーディング規則を決定する。
【００１１】
好ましくは、前記プロセッサのコンテキストは、少なくとも前記プロセッサのレジスタ値を含む。
【００１２】
好ましくは、前記傍受されたイベント及び前記読み取られたコンテキストは、ログに保存される。
【００１３】
好ましくは、前記ルールは、前記分析の深さ又は前記イベントの集約の深さに関する条件を含む。
【００１４】
好ましくは、前記ルールは、サイクルの変数を増加させるための条件を含む。
【００１５】
本発明の別の態様によれば、悪意のあるファイルを分析するシステムであって、ハードウェアプロセッサを備え、前記ハードウェアプロセッサは、実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を実行するように構成され、前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、システムが提供される。
【００１６】
本発明の別の態様によれば、仮想マシンにおける悪意のあるファイルを分析するための、コンピュータで実行可能な命令を格納する、コンピュータ上で読み取り可能な不揮発性媒体であって、前記命令は、実行ステップと、傍受ステップと、停止ステップと、読み取りステップと、比較ステップと、最終実行ステップと、を備え、前記実行ステップでは、仮想マシン内のプロセッサがファイルを開いて実行し、前記傍受ステップでは、前記ファイルを開く際に作成されたプロセスのスレッドの実行プロセスで発生するイベントを前記プロセッサから傍受し、前記停止ステップでは、前記イベントの傍受する際にプロセスのスレッドの実行を停止し、前記読み取りステップでは、前記ファイルを開く際に作成されたプロセスのスレッドが実行されているプロセッサのコンテキストを読み取り、前記比較ステップでは、前記プロセッサのコンテキストを、前記ファイルのパス、前記ファイルのタイプ、前記ファイルの拡張子、（ファイルの属性が前記プロセスのスレッドにより変更されることで）前記ファイルを開く際に生成される前記プロセスのスレッドの挙動、及び前記プロセスのスレッドのインターネットへのアクセスをチェックする１つ又は複数のルールと比較し、前記最終実行ステップでは、前記比較結果に基づいて、前記ファイルを悪意のあるファイルであると認識するステップと、ファイルのオープン時に作成されたプロセスの実行を停止するステップと、プロセッサのコンテキストを変更するステップと、次の傍受されたイベントを待つステップのうち少なくとも１つを実行する、媒体が提供される。
【００１７】
本発明の例示的な側面に係る上述の簡略化した概要は、本発明の基本的な理解を提供するように機能するものである。この概要は、全ての企図された側面の広範な概要ではなく、全ての側面の重要な又は重要な要素を特定することも本発明の任意の又は全ての側面の範囲を描写することも意図されていない。唯一の目的は、以下の本発明のより詳細な説明の前置きとして、１つ又は複数の側面を簡略化した形で提示することである。前述の目的を達成するために、本発明の１つ又は複数の側面が記載され、これは特に特許請求の範囲において主張される特徴を含むものである。
【図面の簡単な説明】
【００１８】
添付の図面は本明細書に組み込まれ、本明細書の一部を構成し本開示の１つ以上の例示的な態様を示し、詳細な説明と共にそれらの原理及び実施形態を説明する役割を果たす。
【図１】仮想マシンにおける悪意のあるファイルの分析例を示す。
【図２】仮想マシンにおける悪意のあるファイルを分析するための例示的なシステムを示す。
【図３】仮想マシンにおける悪意のあるファイルを分析するための例示的な方法を示す。
【図４】仮想マシンにおける悪意のあるファイルのシステム及び方法の態様を実装することができる汎用コンピュータ・システムの一例を示す。
【発明を実施するための形態】
【００１９】
本発明に関する例示的な側面は、計算機器上の保護されたアプリケーションへのアクセスを阻止するためのシステム、方法、及びコンピュータプログラム製品に関連して本明細書で説明される。当業者であれば、以下の説明は例示的なものに過ぎず、決して限定するものではないことを理解するであろう。他の側面は、本発明の利益を有する当業者には容易に示唆されるであろう。以下、添付の図面に例示されている例示的な実施形態を詳細に参照する。同一の符号は、図面全体にわたって可能な範囲で使用され、以下の説明は、同じ又は同様の項目を参照するために使用される。
【００２０】
図１は、仮想マシンにおける悪意のあるファイルの分析例を示す。一般的なケースでは、悪意のある分析のために、ファイル１００はファイルの実行のための隔離された環境下で仮想マシン１２０内において開かれる。セキュリティモジュール１１０は、ファイル１００を仮想マシン１２０へと引き渡す。１つの例示的な態様では、仮想マシン１２０は、セキュリティモジュール１１０によって作成される。別の例示的な態様では、仮想マシン１２０は、以前に作成された仮想マシンからセキュリティモジュール１１０によって選択される。仮想マシンは、ホストオペレーティング・システムのリソースをゲストオペレーティング・システムに提供するソフトウェア及びハードウェアを含むことができ、ゲストオペレーティング・システムはホストオペレーティング・システムへのリンクを有さない。
【００２１】
尚、ファイル１００は、以下のものを含み得るが、これらのものに限定されない：即ち、実行可能なファイル、動的ライブラリ、特定のインタプリタによって実行されるスクリプト（Ｍｉｃｒｏｓｏｆｔ  ＰｏｗｅｒＳｈｅｌｌファイル等）。実行のためのスクリプトを含むファイル（Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ又はＡｄｏｂｅ  Ａｃｒｏｂａｔ形式のファイル等）、ウェブページ、画像、そしてリンク（ＵＲＬ等）等であり、これらは他のアプリケーションによって実行又は開かれた際に計算機器のユーザのデータに害を及ぼす可能性がある。
【００２２】
一般的なケースでは、ファイル１００の分析は、仮想マシン１２０のオペレーティング・システムにおいてファイル１００が開かれた後に行われる。ファイル１００のオープンには、実行可能ファイル１００の実行又はアプリケーションによる非実行可能ファイル１００のオープンが含まれるが、これに限定されない。
【００２３】
ファイル１００のオープンの結果は、仮想マシン１２０におけるプロセスの作成及びその実行の起動と、１つ又は複数の実行スレッドの作成である。
【００２４】
１つの例示的な態様では、その制御下で仮想マシン１２０が動作しているセキュリティモジュール１１０及び仮想マシン１１５のモニタ（以下「ハイパーバイザ」）は、ユーザの計算機器上で実行される。所与の場合において、セキュリティモジュール１１０は、セキュリティアプリケーション（例えば、アンチウィルスアプリケーション等）である。別の場合では、セキュリティモジュール１１０及びハイパーバイザ１１５は、リモートサーバ（または異なるサーバ）上で、又はクラウドサービスとして実行される。この場合、セキュリティモジュール１１０は、（例えば、ユーザの計算機器上で動作するセキュリティモジュール１１０から）第三者のソースからファイル１００を取得し、それを仮想マシン１２０へと引き渡し、そこでファイル１００が開かれる。
【００２５】
一般的なケースでは、ハイパーバイザ１１５は、傍受モジュール１３０（傍受モジュール１３０は、ハイパーバイザ１１５のモジュール、コンポーネント又は機能的な部分である）を含む。傍受モジュール１３０は、仮想マシン１２０内のファイル１００を開く際に生成されたプロセスのスレッドによるＡＰＩ関数呼び出しを傍受し、ＡＰＩ関数呼び出しを行っているスレッドが実行されているプロセッサのコンテキストを読み取る。プロセッサのコンテキストは少なくともプロセッサのレジスタ値を含むことに留意されたい。１つの例示的な態様では、傍受モジュール１３０は同様に、スタックに対応するプロセッサレジスタに含まれる以前に読み取られたデータ（例えば、ＥＳＰ及びＥＢＰレジスタからのアドレスのメモリ）を使用することによってスタックを読み取る。更に、傍受モジュール１３０は、ファイル１００を開いたときに作成されたプロセスの実行後に、前述のデータを集約し、それを（例えば、データベースまたはログ１５０に）保存し、セキュリティモジュール１１０へと引き渡す。セキュリティモジュール１１０は、傍受モジュール１３０からのデータに基づいて、ファイル１００が悪意のあるものかどうかの判断を順に宣告する。一般的なケースでは、例えば、ファイル１００を開く際に作成されたプロセスのスレッドによるＡＰＩ関数呼び出しにおけるシーケンス及びパラメータに応じて、保存されたデータの分析の後に上記の判断が下される。１つの例示的な態様では、判断が下されない場合、傍受モジュール１３０によって保存されたデータは、分析のためにセキュリティモジュール１１０によって情報セキュリティの専門家（図１には図示せず）へと引き渡される。
【００２６】
図２は、仮想マシンにおける悪意のあるファイルを分析するための例示的なシステムを示す。図１のシステムとは対照的に、図２のシステムでは、傍受モジュール１３０は分析モジュール１４０も含む。１つの例示的な態様では、ハイパーバイザ１１５は分析モジュール１４０を含む。別の例示的な態様では、分析モジュール１４０は、セキュリティモジュール１１０のコンポーネント（モジュール、機能部品）である。一般的なケースでは、傍受モジュール１３０は、ファイル１００を開くときに作成されたプロセスのスレッド内のイベントを傍受する。
【００２７】
傍受されたイベントには、以下のものが含まれるが、これらに限定されない：即ち、スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール（即ち、特定のオペレーション（システムコール）を実行するスレッドによるオペレーティング・システムのカーネルへのアクセス、システムコールからの戻り値、及びオペレーティング・システムからのメッセージ（通知）（例えばスレッドの作成、プロセスの作成、モジュールの読み込み等）等である。
【００２８】
イベントが傍受されると、傍受モジュール１３０によってスレッドの実行が停止される。傍受は、仮想マシン１２０のオペレーティング・システムの異なる保護リングにおいて可能であり、システムのハードウェアの区画化及びユーザレベルの特権を実現し、カーネルレベル（カーネルモード）及び／又はアプリケーションレベル（ユーザーモード）でのイベントの傍受を可能にすることに留意されたい。１つの例示的な態様では、スレッドの命令の実行を停止することによって、スレッドの実行を停止することができる。
【００２９】
ファイル１００を開く際に作成されるプロセスのスレッドの実行中、傍受モジュール１３０は、スレッドによって呼び出されるＡＰＩ関数のコーディング規則を決定することに留意されたい。これは、呼び出されているＡＰＩ関数へのパラメータの転送のためのプロセッサのレジスタの使用の明確な決定を可能にする。したがって、例えば、呼び出しのパラメータはレジスタＥＣＸ（第一パラメータ）、ＥＤＸ（第二パラメータ）にあり、残りのパラメータはスタック（ＥＳＰレジスタ）に格納される。更に、コーディング規則により、戻り値の明確な決定が可能になる。例えば、ＡＰＩ関数が値「０」を返す場合、これはレジスタＥＡＸで行われる。
【００３０】
傍受されたイベント及びプロセッサのコンテキストは、傍受モジュールによってログ１５０に保存される。保存された後、ログ１５０は、傍受モジュール１３０によって分析モジュール１４０へと引き渡される。分析モジュール１４０は、一組のテンプレートを使用する。１つの例示的な態様では、テンプレートはデータ構造（ツリー等）に格納される。テンプレートは、仮想マシン１２０のブート中に分析モジュール１４０によってデータ構造に追加することができる。別の例示的な態様では、テンプレートは、分析モジュール１４０によってデータベース中から選択される。
【００３１】
一般的なケースでは、テンプレートには１つ以上のルールが含まれている。１つの態様では、各ルールに優先度が割り当てられている。別の態様では、ルールは特別な順序でテンプレートに追加される。
【００３２】
ルールは、論理オペランド（「ｉｆ」又は「ｌｏｇｉｃａｌ  ｏｒ」等）の使用に基づく論理条件である。更に、これらのルールは互いに関連していてもよい。１つの例示的な態様では、ルールはプロセッサの保存されたコンテキストを利用する。別の例示的な態様では、ルールは、プロセッサのコンテキストの変更のロジックと、プロセッサのコンテキストを変更するためのデータとを含む。更に別の例示的な態様では、ルールは、分析モジュール１４０が開かれたファイル１００を悪意があるものであると認識するロジックを含む。
【００３３】
上記のルールの例は次の通りである：
ルール１：「ＦｉｌｅＯｐｅｎ（"＄ＳｙｔｅｍＤｒｉｖｅ：￥＜ｒａｎｄｏｍ  ｎａｍｅ＞）」が呼び出された場合、実行を継続する。
ルール２：ルール１と「ＦｉｌｅＷｒｉｔｅ（"＄  ＳｙｔｅｍＤｒｉｖｅ：￥＜ｒａｎｄｏｍ  ｎａｍｅ＞"，ｔｅｘｔ  ｎａｍｅ）」が呼び出された場合、実行を継続する。
【００３４】
上記の例では、ファイル１００を開く際に作成されたプロセスのスレッドが、システムディスクのルートにランダム（所望の）ファイルを要求している。必要なファイルの作成（または読み込み）という単なるイベントは悪意のあるものではないが、多くの場合悪意のある機能の兆候である。したがって、ルールに基づいて、分析モジュール１４０は上記のスレッドの実行を継続する決定を下す。その後で、要求されたファイルが書き込まれる。要求されたファイルの種類と書き込まれた情報によっては、要求されたファイルが悪意のある機能を持つ可能性がある。
【００３５】
システムとルールの作業のより詳細な例を次に示す。
ルール１０：ファイル１００が署名されていない場合、実行を続行する。
ルール１１：ルール１０とファイル１００がＦｉｌｅＯｐｅｎ（"＄  ＳｙｔｅｍＤｒｉｖｅ：￥＜ｒａｎｄｏｍ  ｎａｍｅ＞"）を呼び出した場合、値を「成功」に変更して実行を継続する。
ルール１２：ルール１１及びファイル１００がＦｉｌｅＷｒｉｔｅ（"＄ＳｙｔｅｍＤｒｉｖｅ：￥＜ｒａｎｄｏｍ  ｎａｍｅ＞"，ファイル１００を開く際に作成されたプロセスにより使用されるメモリクリップボード）を呼び出した場合、ファイル１００を悪意のあるものと認識し、実行を終了する。
【００３６】
提示されたルールの例では、「ファイル１００」は、ルールのより明瞭で分かりやすい表現のために使用されることに留意されたい。一般的なケースでは、ルールは、ファイル１００を開く際に作成されたプロセスのスレッドを使用する。
【００３７】
上記の例では、ファイル１００は署名されていない、即ち、ファイル１００の供給者（作成者）は未知である。その後、ファイル１００を開く際に作成されたプロセスのスレッドは、その実行プロセスにおいて、システムディスクのルート内のランダムファイルにもアクセスする。しかし、オペレーティング・システムは、通常、システムディスクのルートにファイルを作成することを禁止する（悪意のあるファイルは、ファイルが作成されるまで他のパスを試すことができる）。したがって、分析モジュール１４０は、ルールに基づいて、結果が「成功」に戻されるような決定を下し、傍受モジュール１３０の助けを借りて結果は置き換えられ、次いで、ファイル１００の実行の際に作成されたプロセスのスレッドの実行を継続する。次に、作成されたファイルが書き込まれる。作成されたファイルにメモリクリップボードが書き込まれている場合、そのファイルは悪意のある（悪意のある機能を持つ）可能性がある。ファイル１００の分析を中止し、次いで、作成されたファイルの分析を行い、作成されたファイルの分析の結果から、ファイル１００が悪意のあるものかどうかについての判定を行うことが意味を持つ。
【００３８】
上記に記載されているのは、ルールのうちの一例のみであることに留意されたい。一般的なケースでは、ルールはより大量になる可能性がある。例えば、異なるパスに沿ったファイルの作成を追跡したり、作成されるファイルの拡張子を追跡したり、作成されたファイルの種類を分析したり、ファイルの作成を許可しファイル１００のオープン時に作成されたプロセスのスレッドのさらなる挙動を追跡したり（例えば、既知の方法でオペレーティング・システムのスタートアップリストに作成されたファイルを追加しようとするだろうか）、ファイル１００又は他のファイルのいずれかの属性のスレッドによる変化を追跡したり、スレッドのインターネットへのアクセスを追跡したりする。
【００３９】
１つの例示的な態様では、分析モジュール１４０は、別個のデータベースに格納された（検査の）エキスパートデータでも動作する。このデータは、テンプレートのルールでも使用することができる。このようなルールの例は次の通りである。
ルール２１：「ファイル１００がＷｅｂリソースにアクセスする場合」及び「Ｗｅｂリソースに悪意のあるカテゴリが割り当てられている場合」、ファイル１００はファイルが悪意のあるものであると認識する。
【００４０】
尚、上記の例では、仮想マシン上でファイル１００を開く際に作成されたプロセスのスレッドがアクセスしているＷｅｂリソースのカテゴリは、予めノウハウで決定（割り当て）されており、別のデータベース内に保存されていることに留意されたい。
【００４１】
１つの例示的な態様では、ルールは、分析の深さの条件又はイベントの集約の深さを含むことができる。例えば、
ルール３１：「ファイル１００がサイクルを実行している場合」及び「ＡＰＩ関数呼び出しのイベントのコンテキストが変更されない場合」、ＡＰＩ関数からの戻り値のイベントを傍受してはならない。
【００４２】
このルールの例は、イベントの傍受数を減少させ、コンテキストを読み取ることによって、ファイル１００の実行を高速化することを可能にする。ファイル１００を開くときに作成されたプロセスのスレッドが、「ＣｒｅａｔｅＷｉｎｄｏｗ（）」及び「ＣｌｏｓｅＷｉｎｄｏｗ（）」の呼び出しからなる１０億回のオーダーの周期で呼び出された場合、それらを傍受することは意味がなく、各イベントのコンテキストを保存する。上記のような傍受モジュール１３０は、少なくとも４０億回（このサイクルでは、２つのＡＰＩ関数が呼び出され、イベントは呼び出しであり、ＡＰＩ関数からの戻り値である）トリガされ、プロセッサのコンテキストを同じ回数分読み取る。
【００４３】
１つの例示的な態様では、ルールは、サイクルの変数を増加させるための条件を含むことができる。例えば、
ルール４１：「ファイル１００がサイクルを実行している場合」及び「ＡＰＩ関数呼び出しのイベントのコンテキストが変更されない場合」、サイクル変数の値を１０回の繰り返しごとに５回増加させる。
【００４４】
上記の例は、ファイル１００の仮想マシン１２０のオープン時に作成されたプロセスのスレッドによるサイクルの実行を高速化するために使用することができる。分析モジュールは、実行中のスレッドが周期的に特定のイベントを呼び出すと判断する。アンチエミュレーションのための既知のスクリプトの１つである、このプロセス中に何も起こらない。ファイル１００のオープン時に作成されたプロセスのスレッドがその機能を最も完全に表示するためには、できるだけ早くサイクルを完了し、実行を続ける必要がある。上記のルールのために、サイクルは数倍速く完了する。
【００４５】
このように、傍受モジュール１３０からログ１５０を取得した後に、分析モジュール１４０は、発生したイベント、即ちログ１５０に保存されているイベント（現在および以前に発生したもの）と発生したイベントのデータ（例えば、特定のイベントに対応するプロセッサのコンテキスト）とを分析する。分析は、発生したイベントをテンプレートと比較することから成る。イベントは、テンプレート内に保存された各ルール（テンプレート内のルールの順序または優先順位に応じて）として一貫して比較される。上記の比較に基づいて、分析モジュール１４０は、ファイル１００を悪意のあるものであると認識する決定、ファイル１００のオープン時に作成されたプロセスの実行を中止する決定、プロセッサのコンテキストを変更する決定、及び次のイベントを待つ決定のうち少なくとも１つの決定を下す。
【００４６】
分析モジュール１４０は、上述の決定を組み合わせても良いことに留意されたい。例えば、ファイル１００が悪意のあるものであると認識された場合、１つの例示的な態様では、ファイル１００を開く際に作成されたプロセスの実行を停止することが可能である。別の例示的な態様では、ファイル１００のオープン時に作成されたプロセスの実行を継続すること、即ち、プロセスのスレッドの動作の更なる分析又はログ１５０の作成のために、次のイベントを待つことが可能である。１つの例示的な態様では、ファイル１００は悪意のあるものであると認識されるが、プロセッサのコンテキストが変更され、次のイベントが待たれる。このような一連の動作は、ファイル１００の機能のより完全な開示のために必要である。例えば、ファイル１００は、悪意のあるコードを含む更に別のファイルが分析プロセスで作成された後に悪意のあるものであると認識されている。しかし、ある種のイベント（例えば、あるスレッドが悪意のあるＷｅｂリソースから何かをダウンロードしようとする等）では、イベントの傍受を継続し、ログ１５０を埋めることで、ファイル１００のオープン時に作成されたプロセスのスレッドの更なる振る舞いを分析することが意味を持つ。また、ファイル１００が悪意あるものとして認識されなくても（例えば、実行中のウィンドウが開いてユーザからのデータ入力を待っている状態等）、ファイル１００のオープン時に作成されるプロセスの実行を停止する命令がなされる。
【００４７】
行われた決定は、分析モジュール１４０によって傍受モジュール１３０へと引き渡される。傍受モジュール１３０は、行われた決定にしたがってアクションを実行する。分析モジュール１４０が次のイベントを待つことを決定した場合、傍受モジュール１３０によって中断されたスレッドの実行が再開される。
【００４８】
１つの例示的な態様では、分析モジュール１４０は、仮想マシン１２０の再起動を開始する。例えば、分析モジュール１４０は、ファイル１００の分析中に、仮想マシン１２０のオペレーティング・システムの起動リストに追加された新しいファイルが作成された場合、作成されたファイルの機能性又は悪意のあるものかをチェックするために再起動を開始する。
【００４９】
一般的なケースでは、仮想マシン１２０内のファイル１００の分析を終了した後、傍受モジュール１３０は、ログ１５０をセキュリティモジュール１１０へと引き渡す。ファイル１００の分析は、通常の方法（ファイル１００自体のオープン時に作成されたプロセスのスレッド自体が実行を終了する）又は分析モジュール１４０の決定（この時までに分析モジュール１４０は、ファイル１００のオープン時に作成されるプロセスを停止する命令を発している）によって完遂される。
【００５０】
したがって、このシステムは、分析モジュール１４０からの決定に基づいて、即ち、ファイル１００を悪意のあるものであると認識する決定がなされたかどうかに基づいて、ファイル１００の善悪を明らかにすることができる。
【００５１】
図３は、仮想マシンにおける悪意のあるファイルを分析する例示的な方法を示す。一般的なケースでは、セキュリティモジュール１１０は、悪意のあるファイルかどうかの分析のためにファイル１００を仮想マシン１２０へと送信する。ファイル１００の分析は、仮想マシン１２０のオペレーティング・システムでファイルが開かれた後に行われる。開始ステップ３１０において、傍受モジュール１３０は、ファイル１００のオープン時に作成されたプロセスのスレッドの実行プロセスで発生するイベントを傍受するために使用される。このイベントは、スレッドによるＡＰＩ関数呼び出し、ＡＰＩ関数からの戻り値、システムコール、システムコールからの戻り値、及びオペレーティング・システムからの通知のうち少なくとも１つである。イベントの傍受に加えて、傍受モジュール１３０は、ファイル１００のオープン時に作成されたプロセスのスレッドの実行を停止することもできる。
【００５２】
次に、ステップ３２０において、傍受モジュール１３０は、ファイル１００のオープン時に作成されたプロセスのスレッドが実行されている少なくとも１つのプロセッサのコンテキストを読み取る。この場合のプロセッサのコンテキストは、少なくともプロセッサのレジスタ値を含む。傍受されたイベント及びプロセッサの読み取られたコンテキストは、傍受モジュール１３０によってログ１５０に保存される。
【００５３】
次に、ステップ３３０において、分析モジュール１４０は、ログ１５０に保存されたデータを、少なくとも１つのルールを含む１つ又は複数のテンプレートと比較する。１つの例示的な態様では、ルールは少なくとも１つのイベントを含む。更に別の例示的な態様では、ルールは少なくとも１つのプロセッサのコンテキストを含む。ログ１５０に保存されたデータとテンプレートに含まれるルールとの比較の結果として、分析モジュール１４０は、ファイル１００を悪意があると認識する決定と、ファイル１００のオープン時に作成されたプロセスの実行を中止する決定と、プロセッサのコンテキストを変更する決定と、次のイベントを待つ決定とのうち、少なくとも１つを実行するために使用される。
【００５４】
次に、ステップ３４０において、分析モジュール１４０によって行われた決定が傍受モジュール１３０に提供され、傍受モジュール１３０が、行われた決定にしたがってアクションを実行する。
【００５５】
図４は、実施形態に係り本発明のシステムと方法が実装できる汎用コンピュータ・システム（パーソナル・コンピュータやサーバ等）の例を示している。図示の通り、コンピュータ・システム２０は、ＣＰＵ２１と、システムメモリ２２と、ＣＰＵ２１と関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス２３とを含み得る。システムバス２３は、バスメモリ又は、バスメモリコントローラ、周辺バス、及びローカルバスを次々含む従来から公知のあらゆるバス構造としても実現され得、これらはどのような他のバスアーキテクチャとも通信可能である。システムメモリは、リードオンリーメモリ（ＲＯＭ）２４及びランダムアクセスメモリ（ＲＡＭ）２５を含む。基本的な入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４の使用によってオペレーティング・システムをロードする際等、コンピュータ・システム２０の要素間の情報の伝達を担う基本的な手順を含む。
【００５６】
コンピュータ・システム２０は、データの読み書きのためのハードディスク２７、取り外し可能な磁気ディスク２９の読み書きのための磁気ディスクドライブ２８、及びＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、その他の光学メディア等の光学ディスク３１の読み書きのための光学式ドライブ３０を含む。ハードディスク２７、磁気ディスクドライブ２８、及び光学式ドライブ３０は、ハードディスクインターフェース３２、磁気ディスクインターフェース３３、及び光学式ドライブインターフェース３４それぞれを横切るシステムバス２３と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びコンピュータ・システム２０の他のデータのストレージのための電源依存のモジュールである。
【００５７】
本発明は、ハードディスク２７、取り外し可能な磁気ディスク２９及び取り外し可能な光学ディスク３１を用いるシステムの実装を提供するものだが、コンピュータに読み込み可能な形式でデータを保存できるフラッシュメモリカード、デジタルのディスク、ランダムアクセスのメモリ（ＲＡＭ）等の他のタイプのコンピュータ情報メディア５６を使用してもよいことに留意されたし。また、これはコントローラ５５を介してシステムバス２３に接続される。
【００５８】
コンピュータ・システム２０は、ファイルシステム３６を有し、記録されたオペレーティング・システム３５を保持する。また追加のプログラムアプリケーション３７、他のプログラムモジュール３８、及びプログラムデータ３９を有する。ユーザは、入力機器（キーボード４０、マウス４２）を用いてコマンドと情報をコンピュータ・システム２０に入力することができる。他の入力機器（不図示）：マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることもできる。そのような入力機器は、通常、システムバスに次々接続しているシリアルポート４６を通じてコンピュータ・システム２０に差し込まれるが、それらは、他の方法例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス（ＵＳＢ）に接続される。ディスプレイ機器のモニタ４７又は他のタイプは、また、ビデオアダプタ４８等のインターフェースと交差するシステムバス２３に接続している。モニタ４７に加えて、パーソナル・コンピュータは、スピーカー、プリンタ等の他の周辺の出力機器（不図示）を接続できる。
【００５９】
コンピュータ・システム２０は、１つ又は複数のリモートコンピュータ４９とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ（又はコンピュータ）４９は、図４に示すように、コンピュータ・システム２０の性質として説明した上述の要素全ての大多数を有するパーソナル・コンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータ・ネットワークで存在し得るものである。
【００６０】
ネットワーク接続は、ローカルエリアコンピュータ・ネットワーク（ＬＡＮ）５０及びワイドエリアコンピュータ・ネットワーク（ＷＡＮ）を形成することができる。そのようなネットワークは、企業のコンピュータ・ネットワーク及び社内ネットワークで利用され、それらはたいていインターネットにアクセスすることができる。ＬＡＮ又はＷＡＮネットワークにおいて、パソコン２０は、ネットワークアダプタ又はネットワークインターフェース５１に交差するローカルエリアネットワーク５０に接続されている。ネットワークが用いられる時には、パソコン２０は、通信にインターネット等のワイドエリアコンピュータ・ネットワークを実現するために、モデム５４又は他のモジュールを使用することができる。内部又は外部の機器であるモデム５４は、シリアルポート４６によりシステムバス２３と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法もあることに留意されたい。
【００６１】
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及び方法を実施し得る。ソフトウェアにおいて実装される場合は、方法は不揮発性コンピュータ可読メディアの１つ又は複数の指示又はコードとして保存され得る。コンピュータ可読メディアは、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって指示又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
【００６２】
様々な実施形態で、本発明のシステム及び方法が、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という２つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる（図３において詳述したもの等）。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
【００６３】
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
【００６４】
更に、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。本明細書で開示された様々な側面は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。更に、側面及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。
【図１】
2018129019.tif 000003
【図２】
2018129019.tif 000004
【図３】
2018129019.tif 000005
【図４】
2018129019.tif 000006
【外国語明細書】
2018129019000001.pdf