JP7442313B2 - 仮想マシンにおいて脆弱性を有するファイルを実行するときにログを作成するためのシステムおよび方法 - Google Patents

仮想マシンにおいて脆弱性を有するファイルを実行するときにログを作成するためのシステムおよび方法 Download PDF

Info

Publication number
JP7442313B2
JP7442313B2 JP2019229699A JP2019229699A JP7442313B2 JP 7442313 B2 JP7442313 B2 JP 7442313B2 JP 2019229699 A JP2019229699 A JP 2019229699A JP 2019229699 A JP2019229699 A JP 2019229699A JP 7442313 B2 JP7442313 B2 JP 7442313B2
Authority
JP
Japan
Prior art keywords
file
trigger
event
vulnerability
exploit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019229699A
Other languages
English (en)
Other versions
JP2020109649A (ja
Inventor
ヴィー. モナスティルスキー アレクセイ
エー. パヴリュシク ミハイル
ヴィー. ピンティスキー ウラジスラフ
ヴィー. アニキン デニス
エー. キルサノフ ドミトリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2020109649A publication Critical patent/JP2020109649A/ja
Application granted granted Critical
Publication of JP7442313B2 publication Critical patent/JP7442313B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、コンピュータセキュリティを改善するために悪意のあるファイルを特定する分野に関し、より具体的には、仮想マシンにおいて脆弱性を有するファイルを実行するときに実行ログを作成するためのシステムおよび方法に関する。
現在、悪意のあるソフトウェア(コンピュータウィルス、トロイの木馬、インターネットワームなど)は、ユーザデータと、悪意のあるソフトウェアに感染した電子デバイスの実際のユーザとの両方に害を及ぼすように設計されたものが増えている。危害は、ユーザファイルを損傷または削除することによって、暗号通貨を「マイニング」するためにユーザのコンピューティングデバイスのリソースを使用することによって、電子的かつ秘密のユーザデータ(通信文、画像、ログイン、パスワード、銀行カードデータ)を盗むことによって、ならびに他のアクションによって引き起こされ得る。さらに、悪意のあるソフトウェアは絶えず変化しており、悪意のあるソフトウェアの作成者は、より新しい攻撃メカニズムに頼り、セキュリティアプリケーションに対してより新しい防御技術を採用している。様々なメカニズムが用いられているが、その例としては、(例えば、元のテキストまたは実行可能プログラムコードを、その機能は維持されるが、分析、作業アルゴリズムの理解、およびデコンパイル中の修正を妨げる形式に変更することによる)悪意のあるコードの難読化、またはエミュレーションに抵抗するためのメカニズムの使用(例えば、悪意のあるソフトウェアがエミュレータ内で実行されている間に悪意のあるソフトウェアがその悪意のあるアクティビティを表示しないように、悪意のあるソフトウェアがエミュレータ内で実行されているときを認識するための機能を悪意のあるソフトウェア内に含めることによる)などがある。
さらに、悪意のあるソフトウェアは、起動された直後に悪意のあるアクティビティを露わにしないことが多いが、その代わりに、アプリケーションプログラムインターフェース(API)関数を多数呼び出し(数百万のオーダーでAPI関数を呼び出し)たり、膨大なサイクル(数十億の反復のオーダー)を実行したり、起動された直後に所定の時間(例えば、「Sleep()」関数を使用することによって1時間)にわたり動作を停止したりする。現在のユーザ・コンピューティングデバイスは、高性能でマルチコアプロセッサ(マルチプロセッサシステムもある)を有するので、ユーザはコアの1つの作業負荷に気付かないか、またはそれを重視しない可能性がある。さらに、ユーザは通常、デバイスがオンにされた後、1時間より長い間デバイスを使用する。したがって、悪意のあるプログラムは起動された場合、すぐに活動を表す必要はない。
オペレーティングシステムの他のプログラムまたはコンポーネントおよびモジュールの脆弱性を用いた(すなわち、脆弱性を利用した)悪意のあるプログラムおよびアプリケーションも使用されている。脆弱なプログラムがユーザのコンピューティングデバイスにインストールされていないか、または脆弱なプログラムの誤ったバージョンがインストールされている限り、悪意のあるアプリケーションはいずれにせよ、そのアクティビティを表すことはないだろう。
上述の技術と戦うため、セキュリティアプリケーション(アンチウイルスアプリケーションなど)のメーカは、ファイルを安全に実行するため、隔離された環境の形の仮想マシンを使用した方法を用いる。このような仮想マシンはしばしば、サンドボックスとして知られている。このような仮想マシンはハイパーバイザの制御下で動作し、ハイパーバイザは、内部で実行されているアプリケーションによって呼び出される関数をインターセプトするためのメカニズムを含む。
セキュリティアプリケーションは、シグネチャおよび/またはヒューリスティック分析など、悪意のあるソフトウェアを決定するための様々な方法を使用することに留意すべきだろう。分析の過程で、ファイルについて悪意があると決定されなかった場合、当該ファイルは、セキュリティアプリケーションによって、その挙動の分析のために前述の仮想マシンに渡されてもよい。例えば、セキュリティアプリケーションが信頼できるソフトウェアメーカのデジタルシグネチャを有していない場合、ファイルは、分析のために仮想マシンに渡されてもよい。仮想マシンに渡されたファイルは次に仮想マシンで実行され、実行中に、異なる関数を呼び出して実行されているファイルのアクションおよびイベントがインターセプトされる。インターセプトされたイベントおよびアクションは、ログに保存される。次に、ログにあるイベントおよびアクションは、セキュリティアプリケーションによって、または情報セキュリティの専門家によって分析される。このように、この技術によれば、イベントおよびアクションのインターセプトおよび集約のためのシステムは2ステップで動作する。第1のステップでは情報が収集され、第2のステップでは情報が分析される。
上記技術の欠点の1つは、この方法は、ファイルの実行中に実行プロセスに影響を与えないことである。例えば、分析されているファイルから(または分析されているファイルを開いたアプリケーションから)起動されたプロセスが、1時間その実行を停止した場合、または保存されたパスワードでファイルにアクセスして電子メールクライアントやメッセンジャ(メッセージを交換するためのプログラム)を攻撃している場合、攻撃されているプログラムは仮想マシン上には存在せず、プロセスの挙動に悪意があることは明らかにならない。言い換えれば、悪意のあるプロセスがパスワードを有する必要なファイルを見つけられない場合、悪意のあるプロセスはそれ自体でその実行を終了し、有害なアクティビティを表すことがない。さらに、悪意のあるアプリケーションがユーザのコンピューティングデバイス上に存在し、当該悪意のあるアプリケーションが他のプログラムまたはオペレーティングシステムのコンポーネントの脆弱性を利用するものである場合、このユーザのコンピューティングデバイスはセキュアであるとは見なせないため、上述の他のプログラムの脆弱性が利用される前に、かかるアプリケーションを特定することも必要である。さらに、脆弱なアプリケーションの誤ったバージョンがユーザのコンピューティングデバイス上にインストールされており、コンピューティングデバイスがアプリケーションの脆弱性を利用する悪意のあるプログラムを含む場合、かかる悪意のあるプログラムを特定することは困難であり、(脆弱なアプリケーションの誤ったバージョンがインストールされている等のため)悪意のあるプログラムは悪意のあるアクションを実行したり、脆弱性を利用したりすることなく終了する。
したがって、ファイルが仮想マシンで実行されているときにイベントをどのように収集するかを改善する必要がある。
本開示の態様は、コンピュータセキュリティの分野に関し、より具体的には、仮想マシンにおいて脆弱性を有するファイルを実行しているときに実行ログを作成するためのシステムおよび方法に関する。
一つの例示的な態様では、方法は、ハードウェアプロセッサを備えるコンピュータにおいて実現され、当該方法は、ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントに付随する条件を記述し、ファイルを開いたときに作成されたプロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、イベントに先行する関数呼び出しのチェーンを発見し、発見された関数呼び出しのチェーンが脆弱性を利用しようとする試みに関連するトリガの条件を満足するか分析し、トリガの条件が満足される場合、関数呼び出しのチェーンに関する情報をログに保存する、ことを含む。
本開示の一態様によれば、仮想マシンにおいて脆弱性を有するファイルを実行するときに実行ログを作成するためのシステムが提供され、当該システムは、ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントに付随する条件を記述し、ファイルを開いたときに作成されたプロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、イベントに先行する関数呼び出しのチェーンを発見し、発見された関数呼び出しのチェーンが脆弱性を利用しようとする試みに関連するトリガの条件を満足するか分析し、トリガの条件が満足される場合、関数呼び出しのチェーンに関する情報をログに保存する、よう構成されるハードウェアプロセッサを備える。
一つの例示的な態様では、仮想マシンにおいて脆弱性を有するファイルを実行するときに実行ログを形成するための一組の命令を記憶する非一時的なコンピュータ可読媒体が提供され、当該一組の命令は、ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントに付随する条件を記述し、ファイルを開いたときに作成されたプロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、イベントに先行する関数呼び出しのチェーンを発見し、発見された関数呼び出しのチェーンが脆弱性を利用しようとする試みに関連するトリガの条件を満足するか分析し、トリガの条件が満たされる場合、関数呼び出しのチェーンに関する情報をログに保存するための命令を含む。
一態様では、本方法は、トリガの条件が満足されたことに関連するメモリ領域のダンプを、ログに保存することをさらに含む。
一態様では、イベントは、プロセスのスレッドの実行中のAPI関数の呼び出し、API関数からのリターン、システムコール(例えば、スレッドがオペレーティングシステムのカーネルにアクセスして何らかの動作を実行すること)と、システムコールからのリターン、および、オペレーティングシステムからの通知の受信、のうちの少なくとも一つを含む。
一態様では、トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントおよび当該イベントに付随する条件を一つまたは複数記述し、リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベントの生成と、ヒープ上での実行によるイベントの生成と、スタック上での実行によるイベントの生成と、スタックの変更と、オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更と、メモリページからの最初の実行によって生成されたイベントと、メモリの動的割当、および、動的に割り当てられたメモリへのオブジェクトの配置と、である。
一態様では、ファイルを開くことは、ファイルが実行可能な場合は、当該ファイルの実行、または、ファイルが実行不可能な場合は、アプリケーションによって当該ファイルを開くことのうち一つを含む。
一態様では、セキュリティモジュールは、仮想マシンの起動、または、以前に作成された仮想マシンからのセキュリティモジュールの選択、のうち、少なくとも一つを実行する。
一態様では、トリガは、発生によりトリガをアクティブ化する実際のイベントと、ファイルの脆弱性を利用しようとする試みに関連する実際のイベントに付随するトリガの条件とを記述する。
本開示の教示による、脆弱性を有するファイルを実行するときの実行ログの形成は、コンピュータセキュリティを改善する。この改善は、ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントに付随する条件を記述し、ファイルを開いたときに作成されたプロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、イベントに先行する関数呼び出しのチェーンを発見し、発見された関数呼び出しのチェーンが脆弱性を利用しようとする試みに関連するトリガの条件を満足するか分析し、トリガの条件が満足される場合、関数呼び出しのチェーンに関する情報をログに保存することによって達成される。
本明細書に組み込まれてその一部を構成する添付の図面は、本開示の1つまたは複数の例示的な態様を示し、詳細な説明とともに、それらの原理および実施形態を説明する役割を果たす。
図1は、本開示の態様による、仮想マシンにおけるファイルの悪意分析の一例を示すブロック図である。 図2は、本開示の態様による、仮想マシンにおいて脆弱性を有するファイルを実行するときに実行ログを作成するための例示的なシステムを示すブロック図である。 図3は、仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成するための例示的な方法を示す流れ図である。 図4は、本開示の態様を実施することができる汎用コンピュータシステムの一例を示す図である。
以下に、例示的な態様を、仮想マシンにおいて脆弱性を有するファイルの実行中にログ(すなわち、実行ログ)を作成するためのシステム、方法、およびコンピュータプログラムの文脈で説明する。当業者であれば、以下の説明は単に例示的なものであり、決して限定的なものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者に容易に示唆されるであろう。ここで、添付の図面に示されるような例示的な態様の実施形態を詳細に参照する。図面および以下の説明を通じて、同一または類似の要素を参照するために、可能な限り同一の参照符号を使用する。
本開示の教示を明確に提示するために、本開示の様々な態様を説明する際に使用する、いくつかの用語および概念をここで定義する。
安全なファイル実行のための環境の形態をとる仮想マシンは、ホストオペレーティングシステム(OS)のリソースをゲストOSに提供するソフトウェアおよびハードウェアのセット(複合体)を備え、ゲストOSはホストOSへのリンクを有さない。
仮想マシンにおけるファイルの悪意分析のためのシステムのモジュールは、集積マイクロ回路(例えば、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA))などのハードウェアの使用により、または、マイクロプロセッサシステムおよびプログラム命令のセットなどのソフトウェアおよびハードウェアの組合せの形で、さらにはニューロシナプスチップに基づいて実現される、実際のデバイス、システム、コンポーネント、およびコンポーネントのグループを含む。かかるシステムの上記モジュールの機能は、ハードウェアのみによって実現されてもよく、また、機能のいくつかがソフトウェアによって、いくつかがハードウェアによって実現される組み合わせの形で実現されてもよい。いくつかの変形態様では、モジュールのいくつかまたはモジュールのすべてを、(図4に示すような)汎用コンピュータのプロセッサ上に実現することができる。さらに、システムの構成要素(各モジュール)は、単一のコンピューティングデバイス内で実現されてもよく、またはいくつかの相互接続されたコンピューティングデバイス間に分散されてもよい。
図1は、本開示の態様による、仮想マシンにおけるファイル100の悪意分析の一例を示すブロック図である。セキュリティモジュール110は、ファイル100を仮想マシン120に送信する。すると分析を行うため、ファイル100は、ファイルの実行のための隔離された環境という形をとる仮想マシン120上で開かれる。一態様では、仮想マシン120は、セキュリティモジュール110によって起動される。一態様では、それまでに作成された仮想マシンの中から、仮想マシン120がセキュリティモジュール110により選択される。
本開示のファイル100は、実行可能ファイル、ダイナミックライブラリ、インタプリタによって実行されるスクリプト(例えば、拡張子.ps1を有するMicrosoft PowerShell(登録商標)ファイル)、実行のためのスクリプトを含むファイル(例えば、Microsoft Office(商標)またはAdobe Acrobat(登録商標)フォーマットのファイル)、ウェブページ、画像、利用されるとき(例えば、他のアプリケーションによって実行されるときまたは開かれるとき)にコンピューティングデバイスのユーザのデータに害を及ぼす可能性がある、他の標準的なファイルのうちの一つまたは複数を備えることができる。一態様では、ファイル100は、リンク(ユニバーサルリソースロケータ(URL)など)を含んでもよい。
本開示の一般的な態様では、ファイル100の悪意分析は、ファイルが仮想マシン120のOS内で開かれた後に行われる。ファイル100を開くことは、以下の一つを実行することを含む:
-ファイル100が実行可能である場合には、ファイル100を実行すること。
-ファイル100が実行可能でない場合には、アプリケーションによってファイル100を開くこと。
ファイル100を開くことの結果は、プロセスの作成、および、仮想マシン120における実行のための作成されたプロセスの起動である。実行中に少なくとも一つのスレッドが作成される。
一態様では、セキュリティモジュール110および仮想マシンのモニタ115(以下、「ハイパーバイザ」と呼ぶ)は、ユーザのコンピューティングデバイス上に実現される。仮想マシン120は、ハイパーバイザ115の制御下で動作する。一態様では、セキュリティモジュール110は、(アンチウイルスアプリケーションなどの)セキュリティアプリケーションである。別の態様では、セキュリティモジュール110およびハイパーバイザ115は、リモートサーバ(または異なるサーバ)上に実現され、または、クラウドサービスとして実現される。セキュリティモジュール110がリモートサーバ上で実現される場合、またはクラウドサービスとして実現される場合には、セキュリティモジュール110は、(例えば、ユーザのコンピューティングデバイス上で実行中のセキュリティモジュール110等)のサードパーティからファイル100を取得し、それを仮想マシン120に渡す。そして、ファイル100は仮想マシン上で開かれる。
一態様では、ハイパーバイザ115はインターセプタ130を含む(インターセプタ130は、ハイパーバイザ115のモジュール、コンポーネント、または機能部である。)。インターセプタ130は、仮想マシン120内でファイル100が開かれたときに作成されるプロセスのスレッドによるAPI関数の呼び出しをインターセプトし、API関数を呼び出したスレッドが実行されているプロセッサのコンテキストを読み出す。
プロセッサのコンテキストは、少なくともプロセッサレジスタの値を含むことが留意される。一態様では、インターセプタ130はまた、スタックに関係する、プロセッサレジスタに含まれそれまでに読み取られたデータ(例えば、レジスタ拡張スタックポインタ(ESP)および拡張ベースポインタ(EBP)からのメモリアドレス)を使用して、関数呼び出しのスタックの内容を読み取る。さらに、インターセプタ130は、上記データを集約し、集約したデータを(例えば、データベースやログ150に)保存し、ファイル100を開いた際に作成されたプロセスを実行した後、保存したデータをセキュリティモジュール110に送信する。これに対して、セキュリティモジュール110は、インターセプタ130からのデータに基づいて、ファイル100の悪意に関する判定を行う。本開示の態様では、保存されたデータの分析後に判定が行われる。例えば、判定は、ファイル100を開いたときに作成されたプロセスのスレッドによるAPI関数の呼び出しに使用されるシーケンスおよびパラメータに依存し得る。一態様では、判定が行われていない場合、インターセプタ130により保存されたデータはセキュリティモジュール110によって、分析のため情報セキュリティ専門家(図1に図示せず。)に送られる。
図2は、本開示の態様による、仮想マシンにおいて脆弱性を有するファイルを実行するときに実行ログを作成するための例示的なシステム200を示すブロック図である。本開示のシステムはファイル100が安全であるという点で有利であり、提案されるシステムはインターセプタ130に加え分析モジュール140を含む。一態様では、ハイパーバイザ115は分析モジュール140を含む。別の態様では、分析モジュール140はセキュリティモジュール110の構成要素(モジュール、機能部)である。
本開示の態様では、ファイル100を開いたときに作成されるプロセスのスレッド内のイベントをインターセプタ130がインターセプトする。一態様では、イベントは以下の一つまたは複数である:
-プロセスのスレッドの実行中のAPI関数の呼び出し;
-API関数からのリターン;
-システムコール(つまり、スレッドがOSのカーネルにアクセスして何らかの動作を実行すること);
-システムコールからのリターン;および
-OSからのメッセージ(たとえば通知)(たとえば、スレッドの作成、プロセスの作成、モジュールのロードを示すメッセージ等)。
イベントのインターセプトの場合、スレッドの実行はインターセプタ130によって停止される。スレッドの実行は、スレッドの命令の実行を停止することによって停止される。
なお、仮想マシン120のOSがシステムおよびユーザの特権レベルをハードウェアで分割している場合、仮想マシン120のOS保護のための異なるリング上でインターセプトを行うことができる。一態様では、OS保護の異なるリング上でのインターセプトは、カーネルレベル(カーネルモード)および/またはユーザレベル(ユーザモード)でのイベントのインターセプトを提供することができる。
本開示の一態様では、ファイル100を開いたときに作成されるプロセスのスレッドの実行中に、インターセプタ130は、スレッドによって呼び出されているAPI関数のコーディング規約を決定する。コーディング規約の決定により、呼び出されているAPI関数にパラメータを送信するためのプロセッサのレジスタの使用を明確に決定することができる。このため、呼出しパラメータはたとえば、第1のパラメータを含む拡張カウントレジスタ(ECX)、第2のパラメータを含む拡張データレジスタ(EDX)、および残りのパラメータを含む拡張スタックポインタ(ESP)用レジスタ内に見出される。さらに、コーディング規約の決定により、リターン値の明確な決定が可能となる。たとえば、API関数が値「0」を返す場合、これはレジスタEAX(拡張アキュムレータレジスタ)で行われる。
図2に戻り、悪意のあるアプリケーション190はファイル100の脆弱性を利用している。しかしながら、悪意のあるアプリケーション190は、ハッカーによって元々考えられていたように、上述の悪意のあるコードが元々対象として設計されたものとは異なるバージョンのファイル100上では、自身の存在を明らかにしない可能性がある。たとえば、Microsoft Office(商標) version 2013.1の脆弱性を利用する所与の悪意のあるアプリケーション190は、Microsoft Office version 2013.2上では、悪意のあるアクティビティを明らかにしないだろう。この場合、悪意のあるアプリケーション190またはMicrosoft Office自体は、例外を伴って終了するか、または、悪意のあるアプリケーション190がうまく工夫されている場合、悪意のあるアプリケーション190は、脆弱性の利用についてチェックした後その作業を終了しいかなるアクティビティ(イベント)も生成しない。また、悪意のあるアプリケーション190がうまく機能する場合でも、追加のプロセスを起動せず、利用されているアプリケーション(ファイル100を開いたときに作成されたプロセス)内で機能するかもしれない。この場合、ファイル100の脆弱性を利用することができる悪意のあるアプリケーション190は、悪意のあるアクションをまだ実行してはいないが、ユーザのコンピューティングデバイスが安全であるとはみなすことができない。悪意のあるアプリケーション190のアクションの結果および成功にかかわらず、ファイル100の脆弱性の存在を利用して、かつ、その後のファイル100の利用によって実現される、悪意のあるアプリケーション190によって実行されるアクションのインスタンスを特定することが必要である。さらに、本開示の方法は、カーネルレベルでのイベントのインターセプトを可能にするので、カーネルレベルでのイベントを使用して、オペレーティングシステムのコンポーネント(ファイル)の脆弱性を利用する悪意のあるアプリケーション190を特定することができる。
一態様では、インターセプタ130はトリガのセットを利用する。一態様では、トリガはデータベースに保持され、仮想マシンの起動時にデータベースから選択される。本開示の態様では、トリガは、その発生がトリガをアクティブ化する実際のイベントと、実際のイベントに付随する条件とを記述し、条件は脆弱性を利用する試みに関連する。したがって、トリガはたとえば、特定のAPI関数のセット、システムコール、およびオペレーティングシステムの通知、ならびに脆弱性を利用するときに用いることができるそれらの発生の条件を記述する。
一態様では、トリガは、脆弱性を利用する試みに関連するイベントに付随する少なくとも以下のイベントおよび条件を記述する:
-リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベント生成;
-ヒープ上でのコードの実行によるイベントの生成;
-スタック上でのコードの実行によるイベントの生成;
-スタックの変更;
-オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更(悪意のあるアプリケーション190がオペレーティングシステムのカーネルの脆弱性を利用している場合、その結果、いずれかのアプリケーションがそれまでは有していなかった権利を取得する可能性がある);
-メモリページからの最初の実行によって生成されたイベント;および
-メモリの動的割当およびその中へのオブジェクトの配置。
発生がトリガをアクティブ化するイベントと、トリガの付随条件が満足されたことと、を、インターセプタ130が発見したことは、悪意のあるアプリケーション190によるセキュアファイル100の脆弱性を利用しようとする試みと同じではないが、ファイル100が脆弱性を有し、悪意のあるアプリケーション190がかかる脆弱性を利用しようとしていることを高い確率で示す。本開示の方法は、正当なコード(例えば、ファイル100およびこのファイルがその実行中に使用するモジュールに含まれるセキュアコード)の実行中にトリガがアクティブ化されたかどうか、またはファイル100を開いたときに作成されたプロセスのスレッドの実行中にトリガがアクティブ化されたかどうか、または、たとえば、スタック上に保持されたデータの上書き、ヒープオーバーフローなどの別の方法で制御移行が行われたかどうか、を発見することを可能にする。
トリガのアクティブ化の場合、インターセプタ130は、ファイル100を開いたときに作成されたプロセスのスタックを分析し、イベントに先行する関数呼び出しのシーケンスを特定する。つまり、インターセプタ130は、呼び出しおよびリターンアドレスのシーケンスの形をとる、関数呼び出しのシーケンスを特定する。次に、インターセプタ130は、特定された関数呼び出しのシーケンスが、トリガの条件(たとえば、ファイル100を開いたときにロードされたモジュールに属さない呼出しのアドレス等)を満たすか否か分析する。
トリガの条件が満たされた場合、インターセプタ130は、特定された関数呼び出しのシーケンスに関するデータ(情報)をログ150に保存する。
一態様では、インターセプタ130はまた、トリガの付随条件が満足されたことに関連するメモリ領域のダンプをログ150に保存する。
上記教示を説明するため、本システムの動作の例を以下に示す。
(例1)
インターセプタ130がイベントを発見する: API関数が呼び出され、それに対してトリガがアクティブ化された。インターセプタ130はESPレジスタをチェックし、関数呼び出しのアドレスを一つずつ特定し、API関数の呼び出し元を決定する。API関数を呼び出したコードが、ファイル100を開いたときに作成されたプロセスのアドレス空間にロードされたモジュールまたはダイナミックライブラリに見つからない場合(すなわち、コードが異常なアドレスに位置する場合)、上述のアクション、すなわち、呼び出しの異常なアドレスを含む、特定された呼び出しのシーケンスに関する情報をログ150に保存すること、および、異常なアドレスの周りのメモリ領域のダンプをログ150に保存すること、を実行する必要がある。
(例2)
インターセプタ130がイベントを発見する: API関数が呼び出され、それに対してトリガがアクティブ化された。インターセプタ130はESPレジスタをチェックし、スタック上のリターン指向プログラミング(ROP)チェーンの存在をチェックする。チェーンが見つかった場合、メモリダンプ(スタック)は、さらなる分析のためにログ150に保存される。
(例3)
インターセプタ130がイベントを発見する: それに対してトリガがアクティブ化されたAPI関数からのリターンである。インターセプタは、API関数のリターンアドレスをチェックする。リターンアドレスがヒープまたはスタックを示す場合、リターンアドレスとヒープまたはスタックのダンプとがログ150に保存される。
(例4)
インターセプタ130がイベントを発見する: あるメモリページ上の実行の第1のインスタンスである。インターセプタはメモリページを分析する。ページが、ロードされたモジュールおよびライブラリに対応しない場合、そこから実行の第1のインスタンスが発生したメモリページのアドレスを保存することができ、さらに、メモリページ自体の内容をさらに分析するため、たとえばログ150に保存することができる。
(例5)
脆弱性の利用がいくつかのステップで行われる場合、悪意のあるアプリケーション190はまず、メモリオブジェクト(データ構造、実行可能コードなど)が配置されることになる、ある量のメモリを割り当て(例えば、ヒープの割振り)、次に、このメモリに制御を移す試みが行われる。インターセプタ130はイベントを発見する: すなわち、動的メモリ割り当てである。(たとえば、脆弱なファイル100のバージョンが一致しないため)制御が移されなかった場合であっても、インターセプタ130は、オブジェクトが配置された、割り当てられたメモリのダンプを記録し、さらなる分析のために記録されたダンプを送信する。
(例6)
インターセプタ130はイベントを発見する: オペレーティングシステム内のプロセスの特権を記述するデータ構造が変更されている。この場合、オペレーティングシステムのカーネルの脆弱性が利用される可能性が高い。インターセプタ130はさらなる分析のために、ログ150に、インターセプトされたイベントを生成した関数呼び出しのスタック、プロセスの特権を記述するデータ構造、およびプロセスのメモリダンプを保存する。
種々の態様の説明に戻ると、インターセプタ130が各イベントについて上述のアクションすべてを実行することは、仮想マシンにおけるファイル100実行中の性能の大幅な低下とログ150のサイズの大幅な増加とをもたらすので、望ましくないことを理解されたい。したがって、トリガの付随する条件が満たされなければならない。インターセプトされたイベント、プロセッサのコンテキスト、およびタグのアクティブ化の結果として得られたデータは、インターセプタ130によってログ150に保存される。保存された後、ログ150はインターセプタ130によって分析モジュール140に送られる。
本開示の態様では、インターセプタ130によりログ150に保存されたデータを分析するために、分析モジュール140は当技術分野で通常知られている方法(シグネチャまたはヒューリスティック分析など)を使用する。
このように、図2のシステムは、インターセプタ130によって作成されたログ150に基づき、仮想マシン内で、ファイル100またはオペレーティングシステムのコンポーネントの脆弱性を利用する悪意のあるアプリケーション190の存在を検知する。
図3は、仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成するための例示的な方法300を示す流れ図である。
本開示の態様では、ログ150を作成するために、セキュリティモジュール110はセキュアファイル100を仮想マシン120に送信する。ログ150の作成は、仮想マシン120のオペレーティングシステムにおいてファイル100が受信され開かれた後に行われる。方法300はステップ305で開始し、ステップ307に進む。
ステップ307において、本方法はファイル、例えば、ファイル100を受信して開く。
一態様では、ファイル100を開くことは、以下の一つを含む:ファイルが実行可能である場合は、当該ファイルの実行;または、ファイルが実行可能でない場合は、アプリケーションによって当該ファイルを開くこと。
ステップ310において、方法300は、インターセプタ130により、受信されたファイル、例えば、ファイル100を開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見する。トリガは、ファイルの脆弱性を利用する試みに関連するイベントの一つまたは複数の付随条件を記述する。
一態様では、イベントは、少なくとも以下のうち一つを含む:
-プロセスのスレッド実行中のAPI関数の呼び出し;
-API関数からのリターン;
-システムコール(例えば、スレッドがオペレーティングシステムのカーネルにアクセスして何らかの動作を実行すること);
-システムコールからのリターン;および
-オペレーティングシステムからの通知の受信。
本開示の態様では、トリガは、(i)その発生がトリガをアクティブ化する、実際のイベント、および、(ii)ファイルの脆弱性を利用しようとする試みに関連する、実際のイベントに付随する条件を記述する。
一態様では、トリガは、ファイルの脆弱性を利用しようとする試みに関連するイベントと当該イベントに付随する条件のうちの一つまたは複数を記述する:
-リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベントの生成;
-ヒープ上での実行によるイベントの生成;
-スタック上での実行によるイベントの生成;
-スタックの変更;
-オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更;
-メモリページからの最初の実行によって生成されたイベント;および
-メモリの動的割当、および、動的に割り当てられたメモリへのオブジェクトの配置。
ステップ320において、方法300は、インターセプタ130により、ファイルを開いたときに作成されたプロセスのスタックを分析し、呼出しおよびリターンアドレスのシーケンスの形の、イベントに先行する関数呼び出しのチェーンを発見する。
ステップ330において、方法300は、インターセプタ130により、発見された関数呼び出しのチェーンが、脆弱性を利用しようとする試みに関連するトリガの条件を満たすか、分析する。
ステップ340において、ファイル100の脆弱性を利用する試みに関連するトリガの条件が満たされると、方法300は、インターセプタ130により、関数呼出しのチェーンに関する情報をログ150に保存する。言い換えれば、ステップ330の分析の結果がログ150に保存される。
一態様では、インターセプタ130はまた、ログ150内のトリガの条件を満たすことに関連するメモリ領域のダンプを保存する。
上述のように、本開示は、コンピュータのセキュリティを改善するためのシステムおよび方法を説明する。本開示の方法の一つの利点は、仮想マシンにおいて脆弱性を有するファイルを実行することであり、実行ログは、そのファイルの脆弱性の可能な利用に関連するイベントに関するデータを含むように作成される。
図4は、仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成するためのシステムおよび方法の態様が例示的な態様に従って実装され得る、コンピュータシステム20を示すブロック図である。コンピュータシステム20は例えば、前述のように、コンピューティングデバイス上の仮想マシンに対応することができることに留意されたい。コンピュータシステム20は、複数のコンピューティングデバイス、または単一のコンピューティングデバイス、たとえば、デスクトップコンピュータ、ノートブックコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、スマートフォン、タブレットコンピュータ、サーバ、メインフレーム、埋め込みデバイス、および他の形態のコンピューティングデバイスとすることができる。
図示されるように、コンピュータシステム20は、中央処理装置(CPU)21と、システムメモリ22と、中央処理装置21に関連するメモリを含む様々なシステムコンポーネントを接続するシステムバス23とを含む。システムバス23は、バスメモリまたはバスメモリコントローラ、周辺バス、および他の任意のバスアーキテクチャとインタラクトすることができるローカルバスを含むことができる。バスの例としては、PCI、ISA、PCI-Express、HyperTransport(商標)、InfiniBand(商標)、Serial ATA、I2C、および他の好適な相互接続を含むことができる。中央処理装置21(プロセッサとも呼ばれる)は、単一または複数のコアを有する単一または複数のプロセッサ群を含むことができる。プロセッサ21は、本開示の技術を実現する一つまたは複数のコンピュータ実行可能コードを実行することができる。システムメモリ22は、ここで使用されるデータおよび/またはプロセッサ21によって実行可能なコンピュータプログラムを記憶するための任意のメモリとすることができる。システムメモリ22は、ランダムアクセスメモリ(RAM)25などの揮発性メモリ、および読取り専用メモリ(ROM)24、フラッシュメモリなどの不揮発性メモリ、またはそれらの任意の組合せを含むことができる。基本入出力システム(BIOS)26は、ROM24を使用してオペレーティングシステムをロードするときのような、コンピュータシステム20の要素間で情報を転送するための基本手順を記憶することができる。
コンピュータシステム20は、一つまたは複数のリムーバブル記憶装置27、一つまたは複数の非リムーバブル記憶装置28、またはそれらの組合せなどの一つまたは複数の記憶装置を含むことができる。一つまたは複数のリムーバブル記憶装置27および非リムーバブル記憶装置28は、ストレージインタフェース32を介してシステムバス23に接続される。一態様では、記憶装置および対応するコンピュータ可読記憶媒体は、コンピュータシステム20のコンピュータ命令、データ構造、プログラムモジュール、および他のデータを記憶するための独立電源型モジュールである。システムメモリ22、リムーバブル記憶装置27、および非リムーバブル記憶装置28は、様々なコンピュータ可読記憶媒体を使用することができる。コンピュータ可読記憶媒体の例には、キャッシュ、SRAM、DRAM、ゼロキャパシタRAM、ツイントランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM(登録商標)、SONOS、PRAMなどの機械メモリ、ソリッドステートドライブ(SSD)またはフラッシュドライブなどのフラッシュメモリまたは他のメモリ技術、ハードディスクドライブまたはフロッピーディスクなどの磁気カセット、磁気テープ、および磁気ディスクストレージ、コンパクトディスク(CD-ROM)またはデジタル多用途ディスク(DVD)などの光ストレージ、ならびに所望のデータを記憶するために使用することができ、コンピュータシステム20によってアクセスすることができる任意の他の媒体が含まれる。
コンピュータシステム20のシステムメモリ22、リムーバブル記憶装置27、および非リムーバブル記憶装置28を使用して、オペレーティングシステム35、追加のプログラムアプリケーション37、他のプログラムモジュール38、およびプログラムデータ39を記憶することができる。コンピュータシステム20は、キーボード、マウス、スタイラス、ゲームコントローラ、音声入力デバイス、タッチ入力デバイスなどの入力デバイス40からデータを通信する周辺インタフェース46、または、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB)などの一つまたは複数のI/Oポートを経由するプリンタもしくはスキャナなどの他の周辺デバイス、または他の周辺インタフェースを含むことができる。一つまたは複数のモニタ、プロジェクタ、または統合ディスプレイなどの表示装置47も、ビデオアダプタなどの出力インタフェース48を介してシステムバス23に接続することができる。コンピュータシステム20は、表示装置47に加え、ラウドスピーカおよび他のオーディオビジュアル装置のような他の周辺出力装置(図示せず)を装備することができる。
コンピュータシステム20は、一つまたは複数のリモートコンピュータ49へのネットワーク接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ49は、コンピュータシステム20の性質を説明する上述の要素の大部分またはすべてを含むローカルコンピュータワークステーションまたはサーバとすることができる。ルータ、ネットワーク局、ピアデバイス、または他のネットワークノードなどの他のデバイスも、コンピュータネットワーク内に存在し得るが、これらに限定されない。コンピュータシステム20は、ローカルエリアコンピュータネットワーク(LAN)50、ワイドエリアコンピュータネットワーク(WAN)、イントラネット、およびインターネットなどの一つまたは複数のネットワークを介してリモートコンピュータ49と通信する一つまたは複数のネットワークインタフェース51またはネットワーク・アダプタを含むことができる。ネットワークインタフェース51として、例えば、イーサネット(登録商標)インタフェース、フレームリレーインタフェース、SONETインタフェース、無線インタフェース等が挙げられる。
本開示の態様は、システム、方法、および/またはコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令が格納されたコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
コンピュータ可読記憶媒体は、コンピュータシステム20などのコンピューティングデバイスのプロセッサによってアクセスすることができる命令またはデータ構造の形態のプログラムコードを保持し、記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、またはそれらの任意の適切な組合せとすることができる。例えば、このコンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、EEPROM、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、フラッシュメモリ、ハードディスク、ポータブルコンピュータディスケット、メモリスティック、フロッピーディスク、または、パンチカード若しくは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイスを含むことができる。本明細書で使用されるように、コンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または伝送媒体を通って伝播する電磁波、または有線で伝送される電気信号など、一時的な信号そのものであると解釈されるべきではない。
本明細書で説明するコンピュータ可読プログラム命令は、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークなどのネットワークを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイスに、または外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティングデバイス内のネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティングデバイス内のコンピュータ可読記憶媒体に記憶するために、コンピュータ可読プログラム命令を転送する。
本開示の処理を実行するためのコンピュータ可読プログラム命令は、アセンブリ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはオブジェクト指向プログラミング言語および従来の手続き型プログラミング言語を含む一つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードまたはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行することができる。後者のシナリオでは、リモートコンピュータは、LANまたはWANを含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または(例えば、インターネットを介して)外部コンピュータに接続されてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は本開示の態様を実行するために、電子回路をパーソナル化するためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
様々な態様では、本開示で説明されるシステムおよび方法はモジュールによって対処することができる。本明細書で使用される「モジュール」という用語は、例えば、特定用途向け集積回路(ASIC)またはFPGAなどのハードウェアを使用して実装される、あるいは、マイクロプロセッサシステムおよび(実行されている間に)マイクロプロセッサシステムを専用デバイスに変換するモジュールの機能を実装するための命令セットなどのハードウェアおよびソフトウェアの組合せとして実装される、現実世界のデバイス、コンポーネント、または構成要素の構成を指す。また、モジュールは二つの組み合わせとして実装されてもよく、特定の機能はハードウェアのみによって促進され、他の機能はハードウェアとソフトウェアとの組み合わせによって促進される。いくつかの実装形態ではモジュールの少なくとも一部、および場合によってはすべてが、コンピュータシステムのプロセッサ(上記の図4でより詳細に説明したものなど)上で実行され得る。したがって、各モジュールは、様々な適切な構成で実現されてもよく、本明細書で例示される任意の特定の実施形態に限定されるべきではない。
明確にするために、本明細書では態様の一般的な特徴のすべてを開示しているわけではない。本開示の任意の実際の実装の開発において、開発者の特定の目標を達成するために、多数の実装固有の決定が行われなければならず、これらの特定の目標は、異なる実装および異なる開発者によって異なることが理解されるのであろう。そのような開発努力は複雑で時間がかかる可能性があるが、それにもかかわらず、本開示の恩恵を受ける当業者にとっては日常的なエンジニアリングの仕事であることが理解される。
さらに、本明細書で使用される語法または用語は説明を目的としたものであり、限定を目的としたものではない。したがって、本明細書の語法または用語は、関連技術の当業者の知識と組み合わせて、本明細書で提示される教示およびガイダンスに照らして、当業者によって解釈されるべきであることを理解されたい。さらに、明細書または特許請求の範囲におけるいかなる用語も、そのように明示的に記載されていない限り、一般的ではない意味または特別な意味に帰することを意図していない。
本明細書で開示される様々な態様は、例示として本明細書で言及される既知のモジュールに対する現在および将来の既知の同等物を包含する。さらに、態様および用途が示され、説明されてきたが、本明細書に開示された発明概念から逸脱することなく、上記よりも多くの変形例が可能であることは本開示の恩恵を受ける当業者には明らかであろう。

Claims (20)

  1. 仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成する方法であって、
    インターセプタにより、前記ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、少なくとも、オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更を実行するイベント、および、前記ファイルの脆弱性を利用しようとする試みに関連する前記イベントに付随する一つまたは複数の条件を記述し、
    前記インターセプタにより、前記ファイルを開いたときに作成された前記プロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、前記イベントに先行する関数呼び出しのチェーンを発見し、
    前記インターセプタにより、発見された前記関数呼び出しのチェーンが前記脆弱性を利用しようとする前記試みに関連する前記トリガの条件を満足するか分析し、
    前記ファイルの前記脆弱性を利用しようとする前記試みに関連する前記トリガの前記条件が満足される場合、前記インターセプタにより、前記関数呼び出しのチェーンに関する情報をログに保存する、
    ことを含む方法。
  2. 前記トリガの前記条件が満足されたことに関連するメモリ領域のダンプを、前記ログに保存する
    ことをさらに含む、請求項1に記載の方法。
  3. 前記イベントは、
    前記プロセスの前記スレッドの実行中のAPI関数の呼び出し、
    API関数からのリターン、
    システムコール、
    システムコールからのリターン、および
    オペレーティングシステムからの通知の受信、
    のうち少なくとも一つを含む、請求項1に記載の方法。
  4. 前記トリガは、前記ファイルの脆弱性を利用しようとする試みに関連する一つまたは複数のさらなるイベントおよび当該一つまたは複数のさらなるイベントに付随する条件を記述し、前記一つまたは複数のさらなるイベントは、
    リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベントの生成、
    ヒープ上での実行によるイベントの生成、
    スタック上での実行によるイベントの生成、
    スタックの変更
    モリページからの最初の実行によって生成されたイベント、および、
    メモリの動的割当、および、動的に割り当てられた当該メモリへのオブジェクトの配置、
    の少なくとも一つを含む、請求項1に記載の方法。
  5. 前記ファイルを開くことは、
    前記ファイルが実行可能な場合は、当該ファイルの実行、または、
    前記ファイルが実行不可能な場合は、アプリケーションによって当該ファイルを開くこと、
    のうち一つを含む、請求項1に記載の方法。
  6. セキュリティモジュールは、
    前記仮想マシンの起動、または、
    以前に作成された仮想マシンからの前記セキュリティモジュールの選択、
    のうち、少なくとも一つを実行する、請求項1に記載の方法。
  7. 前記トリガは、発生により前記トリガをアクティブ化する実際の前記イベントと、前記ファイルの前記脆弱性を利用しようとする前記試みに関連する実際の前記イベントに付随する前記トリガの前記条件とを記述する、請求項1に記載の方法。
  8. コンピューティングデバイス上でインスタンス化された仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成するためのシステムであって
    インターセプタにより、前記ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、少なくとも、オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更を実行するイベント、および、前記ファイルの脆弱性を利用しようとする試みに関連する前記イベントに付随する一つまたは複数の条件を記述し、
    前記インターセプタにより、前記ファイルを開いたときに作成された前記プロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、前記イベントに先行する関数呼び出しのチェーンを発見し、
    前記インターセプタにより、発見された前記関数呼び出しのチェーンが前記脆弱性を利用しようとする前記試みに関連する前記トリガの条件を満足するか分析し、
    前記ファイルの前記脆弱性を利用しようとする前記試みに関連する前記トリガの前記条件が満足される場合、前記インターセプタにより、前記関数呼び出しのチェーンに関する情報をログに保存する
    よう構成される少なくとも一つのハードウェアのプロセッサを備えるシステム。
  9. 前記プロセッサはさらに、前記トリガの前記条件が満足されたことに関連するメモリ領域のダンプを、前記ログに保存するよう構成される、請求項8に記載のシステム。
  10. 前記イベントは、
    前記プロセスの前記スレッドの実行中のAPI関数の呼び出し、
    API関数からのリターン、
    システムコール、
    システムコールからのリターン、および
    オペレーティングシステムからの通知の受信、
    のうち少なくとも一つを含む、請求項8に記載のシステム。
  11. 前記トリガは、前記ファイルの脆弱性を利用しようとする試みに関連する一つまたは複数のさらなるイベントおよび当該一つまたは複数のさらなるイベントに付随する条件を記述し、前記一つまたは複数のさらなるイベントは、
    リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベントの生成、
    ヒープ上での実行によるイベントの生成、
    スタック上での実行によるイベントの生成、
    スタックの変更
    モリページからの最初の実行によって生成されたイベント、および、
    メモリの動的割当および動的に割り当てられた当該メモリへのオブジェクトの配置、
    の少なくとも一つを含む、請求項8に記載のシステム。
  12. 前記ファイルを開くことは、
    前記ファイルが実行可能な場合は、当該ファイルの実行、または、
    前記ファイルが実行不可能な場合は、アプリケーションによって当該ファイルを開くこと、
    のうち一つを含む、請求項8に記載のシステム。
  13. セキュリティモジュールは、
    前記仮想マシンの起動、または
    以前に作成された仮想マシンからの前記セキュリティモジュールの選択、
    のうち、少なくとも一つを実行する、請求項8に記載のシステム。
  14. 前記トリガは、発生により前記トリガをアクティブ化する実際の前記イベントと、前記ファイルの前記脆弱性を利用しようとする前記試みに関連する実際の前記イベントに付随する前記トリガの前記条件とを記述する、請求項8に記載のシステム。
  15. 仮想マシンにおいて脆弱性を有するファイルの実行中にログを作成するためのコンピュータ実行可能命令を記憶する非一時的コンピュータ可読媒体であって、
    前記ファイルを開いたときに作成されたプロセスのスレッドの実行中のトリガのアクティブ化を発見し、当該トリガは、少なくとも、オペレーティングシステム内のプロセスの権利および特権を記述するデータ構造の変更を実行するイベント、および、前記ファイルの脆弱性を利用しようとする試みに関連する前記イベントに付随する一つまたは複数の条件を記述し、
    前記ファイルを開いたときに作成された前記プロセスのスタックを分析し、呼出しとリターンアドレスのシーケンスの形をとる、前記イベントに先行する関数呼び出しのチェーンを発見し、
    発見された前記関数呼び出しのチェーンが前記脆弱性を利用しようとする前記試みに関連する前記トリガの条件を満足するか分析し、
    前記ファイルの前記脆弱性を利用しようとする前記試みに関連する前記トリガの前記条件が満足される場合、前記関数呼び出しのチェーンに関する情報をログに保存する、
    ための命令を含む、非一時的コンピュータ可読媒体。
  16. 前記命令はさらに、前記トリガの前記条件が満足されたことに関連するメモリ領域のダンプを、前記ログに保存するための命令を含む、請求項15に記載の非一時的コンピュータ可読媒体。
  17. 前記イベントは、
    前記プロセスの前記スレッドの実行中のAPI関数の呼び出し、
    API関数からのリターン、
    システムコール、
    システムコールからのリターン、および
    オペレーティングシステムからの通知の受信、
    のうち少なくとも一つを含む、請求項15に記載の非一時的コンピュータ可読媒体。
  18. 前記トリガは、前記ファイルの脆弱性を利用しようとする試みに関連する一つまたは複数のさらなるイベントおよび当該一つまたは複数のさらなるイベントに付随する条件を記述し、前記一つまたは複数のさらなるイベントは、
    リターン指向プログラミング(ROP)を利用する呼出しチェーンからのイベントの生成、
    ヒープ上での実行によるイベントの生成、
    スタック上での実行によるイベントの生成、
    スタックの変更
    モリページからの最初の実行によって生成されたイベント、および、
    メモリの動的割当、および、動的に割り当てられた当該メモリへのオブジェクトの配置、
    の少なくとも一つを含む、請求項15に記載の非一時的コンピュータ可読媒体。
  19. 前記ファイルを開くことは、
    前記ファイルが実行可能な場合は、当該ファイルの実行、または、
    前記ファイルが実行不可能な場合は、アプリケーションによって当該ファイルを開くこと、
    のうち一つを含む、請求項15に記載の非一時的コンピュータ可読媒体。
  20. セキュリティモジュールは、
    前記仮想マシンの起動、または、
    以前に作成された仮想マシンからの前記セキュリティモジュールの選択、
    のうち、少なくとも一つを実行する、請求項15に記載の非一時的コンピュータ可読媒体。
JP2019229699A 2018-12-28 2019-12-19 仮想マシンにおいて脆弱性を有するファイルを実行するときにログを作成するためのシステムおよび方法 Active JP7442313B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2018147237A RU2724790C1 (ru) 2018-12-28 2018-12-28 Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
RU2018147237 2018-12-28
US16/412,499 2019-05-15
US16/412,499 US11449615B2 (en) 2018-12-28 2019-05-15 System and method of forming a log when executing a file with vulnerabilities in a virtual machine

Publications (2)

Publication Number Publication Date
JP2020109649A JP2020109649A (ja) 2020-07-16
JP7442313B2 true JP7442313B2 (ja) 2024-03-04

Family

ID=71122937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019229699A Active JP7442313B2 (ja) 2018-12-28 2019-12-19 仮想マシンにおいて脆弱性を有するファイルを実行するときにログを作成するためのシステムおよび方法

Country Status (4)

Country Link
US (1) US11449615B2 (ja)
JP (1) JP7442313B2 (ja)
CN (1) CN111382043B (ja)
RU (1) RU2724790C1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886585B1 (en) * 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11416611B2 (en) * 2019-12-05 2022-08-16 Vmware, Inc. Countering malware detection evasion techniques
CN112035318B (zh) * 2020-08-28 2022-03-22 北京浪潮数据技术有限公司 一种异常进程的定位方法、系统及相关装置
US20220108007A1 (en) * 2020-10-02 2022-04-07 Vdoo Connected Trust Ltd. Firmware Protection
CN113779561B (zh) * 2021-09-09 2024-03-01 安天科技集团股份有限公司 内核漏洞处理方法、装置、存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017514260A (ja) 2014-07-31 2017-06-01 エヌイーシー ラボラトリーズ アメリカ インクNEC Laboratories America, Inc. リターン指向プログラミング攻撃の透過的な検出及び抽出
JP2018041438A (ja) 2016-09-08 2018-03-15 エーオー カスペルスキー ラボAO Kaspersky Lab ファイル中の悪意のあるコードの検出システム及び方法
JP2018129019A (ja) 2017-02-08 2018-08-16 エーオー カスペルスキー ラボAO Kaspersky Lab 仮想マシンにおける悪意のあるファイルを分析するシステム及び方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779472B1 (en) 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US8805995B1 (en) * 2008-05-23 2014-08-12 Symantec Corporation Capturing data relating to a threat
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8458798B2 (en) * 2010-03-19 2013-06-04 Aspect Security Inc. Detection of vulnerabilities in computer systems
RU2453917C1 (ru) * 2010-12-30 2012-06-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для оптимизации выполнения антивирусных задач в локальной сети
US9058492B1 (en) * 2011-02-14 2015-06-16 Symantec Corporation Techniques for reducing executable code vulnerability
US9223979B2 (en) * 2012-10-31 2015-12-29 Intel Corporation Detection of return oriented programming attacks
US9015835B2 (en) * 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
US9465936B2 (en) * 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits
WO2015142755A1 (en) * 2014-03-17 2015-09-24 Proofpoint, Inc. Behavior profiling for malware detection
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US10049211B1 (en) * 2014-07-16 2018-08-14 Bitdefender IPR Management Ltd. Hardware-accelerated prevention of code reuse attacks
US9990492B2 (en) * 2014-07-23 2018-06-05 Grammatech, Inc. Systems and/or methods for automatically protecting against memory corruption vulnerabilities
RU2628921C1 (ru) * 2016-03-18 2017-08-22 Акционерное общество "Лаборатория Касперского" Система и способ выполнения антивирусной проверки файла на виртуальной машине
GB2555517B (en) * 2016-08-03 2022-05-11 Sophos Ltd Mitigation of return-oriented programming attacks
US10437990B2 (en) * 2016-09-30 2019-10-08 Mcafee, Llc Detection of return oriented programming attacks in a processor
US10686823B2 (en) * 2017-01-30 2020-06-16 Xm Cyber Ltd. Systems and methods for detecting computer vulnerabilities that are triggered by events
RU2649794C1 (ru) * 2017-04-28 2018-04-04 Акционерное общество "Лаборатория Касперского" Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
US10565379B2 (en) * 2017-05-31 2020-02-18 Intel Corporation System, apparatus and method for instruction level behavioral analysis without binary instrumentation
US20180357413A1 (en) 2017-05-31 2018-12-13 Paul A. Rivera Methods and Systems for the Active Defense of a Computing System Against Malware
CN108171062B (zh) * 2017-12-22 2022-01-18 联想(北京)有限公司 一种针对设备的定位方法、装置及存储介质
US11003764B2 (en) * 2018-02-06 2021-05-11 Jayant Shukla System and method for exploiting attack detection by validating application stack at runtime

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017514260A (ja) 2014-07-31 2017-06-01 エヌイーシー ラボラトリーズ アメリカ インクNEC Laboratories America, Inc. リターン指向プログラミング攻撃の透過的な検出及び抽出
JP2018041438A (ja) 2016-09-08 2018-03-15 エーオー カスペルスキー ラボAO Kaspersky Lab ファイル中の悪意のあるコードの検出システム及び方法
JP2018129019A (ja) 2017-02-08 2018-08-16 エーオー カスペルスキー ラボAO Kaspersky Lab 仮想マシンにおける悪意のあるファイルを分析するシステム及び方法

Also Published As

Publication number Publication date
US20200210591A1 (en) 2020-07-02
CN111382043A (zh) 2020-07-07
CN111382043B (zh) 2023-10-13
RU2724790C1 (ru) 2020-06-25
US11449615B2 (en) 2022-09-20
JP2020109649A (ja) 2020-07-16

Similar Documents

Publication Publication Date Title
JP7442313B2 (ja) 仮想マシンにおいて脆弱性を有するファイルを実行するときにログを作成するためのシステムおよび方法
US10242186B2 (en) System and method for detecting malicious code in address space of a process
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US9094451B2 (en) System and method for reducing load on an operating system when executing antivirus operations
RU2679175C1 (ru) Способ поведенческого обнаружения вредоносных программ с использованием виртуальной машины-интерпретатора
US10642973B2 (en) System and method of analysis of files for maliciousness and determining an action
US11048795B2 (en) System and method for analyzing a log in a virtual machine based on a template
US20150121531A1 (en) System and method for preserving and subsequently restoring emulator state
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
EP3926470B1 (en) Emulator and emulation method
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
US11182473B1 (en) System and method for mitigating cyberattacks against processor operability by a guest process
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
EP3674940B1 (en) System and method of forming a log when executing a file with vulnerabilities in a virtual machine
EP3361406A1 (en) System and method of analysis of files for maliciousness in a virtual machine
US11609993B2 (en) Emulator and emulation method
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
EP3588346A1 (en) Method of detecting malicious files resisting analysis in an isolated environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220719

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240220

R150 Certificate of patent or registration of utility model

Ref document number: 7442313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150