JP6842367B2 - ファイル中の悪意のあるコードの検出システム及び方法 - Google Patents

ファイル中の悪意のあるコードの検出システム及び方法 Download PDF

Info

Publication number
JP6842367B2
JP6842367B2 JP2017098800A JP2017098800A JP6842367B2 JP 6842367 B2 JP6842367 B2 JP 6842367B2 JP 2017098800 A JP2017098800 A JP 2017098800A JP 2017098800 A JP2017098800 A JP 2017098800A JP 6842367 B2 JP6842367 B2 JP 6842367B2
Authority
JP
Japan
Prior art keywords
processor
execution
log
computing device
emulator
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
JP2017098800A
Other languages
English (en)
Other versions
JP2018041438A5 (ja
JP2018041438A (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 JP2018041438A publication Critical patent/JP2018041438A/ja
Publication of JP2018041438A5 publication Critical patent/JP2018041438A5/ja
Application granted granted Critical
Publication of JP6842367B2 publication Critical patent/JP6842367B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、一般にデータセキュリティの分野に関連し、より詳細には、ファイル中の悪意のあるコードを検出するシステム及び方法に関するものである。
従来のシグネチャ分析では、特に多形ウィルス、悪意のあるファイルの改竄されたバージョン、シェルコード等の悪意のあるファイルが検出されない場合がある。したがって、現代のアンチウィルスアプリケーションは、プロセスの安全な実行のためのコンピュータ環境である、いわゆる「サンドボックス」を使用してスキャンを実行する。サンドボックスは、ファイルシステム及びレジストリの部分的な仮想化、ファイルシステム及びレジストリへのアクセス方法、又は(それらの)ハイブリッドアプローチに基づいて、例えば仮想マシンの形で実現することができる。スキャンされたファイルは、サンドボックス内で実行される。ファイルから起動されたプロセスの実行の結果として生じるイベントは、プロセスとOSの両方によって実行される様々な工程の傍受という方法によってログに保存することができる。そして、アンチウィルスアプリケーションは、前記の保存されたログを分析することができる。ログは通常、実行中に前述のプロセスによって作成されたAPI関数呼び出しと、呼び出されたAPI関数からの戻り値(戻りアドレスでの制御の転送)を保存する。サンドボックス内のファイルの実行は、通常、限られた期間(数十秒まで)で実行される。これは、サンドボックス内のファイルの実行と、アンチウィルスアプリケーションによるAPI関数呼び出しの傍受とが、ファイルの実行速度を大幅に低下させるためである。同時に、シェルコードを含むファイルがサンドボックス内で実行されると、API関数呼び出しログの解析による検出が困難になることがある。これは、シェルコードがプロセスのメモリにロードされる可能性があるためであるが、実際には、サンドボックス内のプロセスの実行は、シェルコードを含むメモリセクションに制御を移すべきときよりも早く終了している。この場合、メモリダンプを保存し分析する必要が生じる。
先行技術の分析によれば、本発明によって解決される欠点を有する従来の技術、即ちファイル内の悪意のあるコードの検出のためのシステム及び方法を使用することは、効果的でなく、場合によっては不可能であることもあるという結論に至る。
本発明によれば、コンピュータによって実行される、ファイル中の悪意のあるコードを検出するための方法であって、傍受ステップと、検出ステップと、転送ステップと、識別ステップとを備え、前記傍受ステップでは、計算機器のファイルから起動されたプロセスの実行中に、プロセッサが1つ又は複数のAPI呼び出しを傍受し、前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を検出し、前記転送ステップでは、1つ又は複数の第1型シグネチャを識別し、且つ実行のために計算機器の1つ又は複数の保存されたメモリダンプをエミュレータに転送し、前記識別ステップでは、計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、1つ又は複数の第2型シグネチャを検出することに応答して、ファイル内の悪意のあるコードを識別する、方法が提供される。
好ましくは、前記計算機器にインストールされたアンチウィルスアプリケーションの制御を介して、前記計算機器の仮想マシン内のファイルから起動されたプロセスを実行するステップを更に含む。
好ましくは、前記傍受されたAPI呼び出しの連続するレコードを決定し、そのレコードを前記計算機器の前記仮想マシンの第1ログに格納するステップを更に含む。
好ましくは、前記検出ステップは、前記プロセスが完了したことの表示、 指定された時間の経過、プロセスによって実行された命令の数が特定の閾値を超えたこと、検出された疑わしいイベントの数が選択した閾値を超えたこと、のうち少なくとも1つを終了条件として含む。
好ましくは、前記傍受されたAPI呼び出しに基づき、前記プロセスの実行中に発生する1つ又は複数の疑わしいイベントを検出するステップと、前記1つ又は複数の疑わしいイベントを検出し、更に前記傍受されたAPI呼び出しの連続するレコードを前記第1ログに格納することに応答して、前記プロセスのメモリダンプを前記計算機器の前記仮想マシンのデータベースに格納するステップと、を更に含む。
好ましくは、少なくとも前記第1ログ内の連続するレコードに基づいて実行される、前記第1型シグネチャを1つ又は複数識別するというステップにおいて、前記第1型シグネチャそれぞれが、傍受されたAPI呼び出し又は検出された1つ又は複数の疑わしいイベントに関する情報を備えるデータ構造を含む。
好ましくは、前記エミュレータ内の前記計算機器の前記1つ又は複数の保存されたメモリダンプを実行するステップにおいて、前記1つ又は複数の保存されたメモリダンプに含まれる1つ又は複数の実行可能コードを逆アセンブルするステップと、前記エミュレータの仮想環境内で前記1つ又は複数の実行可能コードを実行するステップと、前記1つ又は複数の実行可能コードの実行中に前記1つ又は複数のAPI呼び出しのアドレスへのジャンプを決定するステップと、前記第2ログにおいて前記1つ又は複数のAPI呼び出しのレコードを連続して維持するステップとを含む。
好ましくは、前記第2ログ内の各レコードが、API関数呼び出しの名前と、対応するファイルから起動されたプロセスのPID識別子と、 前記プロセスのアドレス空間の命令を実行するスレッドのTID識別子と、API関数の引数のセットと、に関する情報を含む。
好ましくは、前記第2ログが、前記プロセッサ上で実行中断されていない一連の命令と、各命令を実行する際における前記プロセッサの内部状態のスナップショットと、を含む前記エミュレータの実行経過を維持し記録するように構成されることを含む。
好ましくは、前記1つ又は複数の第2型シグネチャが、前記1つ又は複数のAPI呼び出しに関する情報と、プロセッサ命令と、 プロセッサの内部状態のスナップショットという前記第2ログ内のレコードのうち少なくとも1つを備えるデータ構造を持つことを含む。
本発明によれば、ファイル中の悪意のあるコードを検出するためのシステムであって、少なくとも1つのプロセッサが、傍受ステップと、検出ステップと、転送ステップと、識別ステップとを実行するように構成され、前記傍受ステップでは、計算機器のファイルから起動されたプロセスの実行中に、プロセッサが1つ又は複数のAPI呼び出しを傍受し、前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を検出し、前記転送ステップでは、1つ又は複数の第1型シグネチャを識別し、且つ実行のために計算機器の1つ又は複数の保存されたメモリダンプをエミュレータに転送し、前記識別ステップでは、計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、1つ又は複数の第2型シグネチャを検出することに応答して、ファイル内の悪意のあるコードを識別する、システムが提供される。
本発明によれば、ファイル中の悪意のあるコードを検出するためのコンピュータ実行可能命令を格納するコンピュータ上で読み取り可能な不揮発性媒体であって、前記命令は、傍受ステップと、検出ステップと、転送ステップと、識別ステップを備え、前記傍受ステップでは、計算機器のファイルから起動されたプロセスの実行中に、プロセッサが1つ又は複数のAPI呼び出しを傍受し、前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を検出し、前記転送ステップでは、1つ又は複数の第1型シグネチャを識別し、且つ実行のために計算機器の1つ又は複数の保存されたメモリダンプをエミュレータに転送し、前記識別ステップでは、計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、1つ又は複数の第2型シグネチャを検出することに応答して、ファイル内の悪意のあるコードを識別する、媒体が提供される。
本発明の例示的な側面に係る上述の簡略化した概要は、本発明の基本的な理解を提供するように機能するものである。この概要は、全ての企図された側面の広範な概要ではなく、全ての側面の重要な又は重要な要素を特定することも本発明の任意の又は全ての側面の範囲を描写することも意図されていない。唯一の目的は、以下の本発明のより詳細な説明の前置きとして、1つ又は複数の側面を簡略化した形で提示することである。前述の目的を達成するために、本発明の1つ又は複数の側面が記載され、これは特に特許請求の範囲において主張される特徴を含むものである。
本発明に係り、ファイル内の悪意のあるコードを検出するための例示的なシステムを示す。 本発明に係り、ファイル内の悪意のあるコードを検出するための例示的な方法を示す。 本発明に係り、エミュレータ上でプロセスを実行するためのより詳細な例示的な方法を示す。 ファイル内の悪意のあるコードを検出するシステム及び方法の実施形態を実装することができる汎用コンピュータシステムの一例を示す。
本発明の様々な側面を説明する際に、多くの用語及び定義を使用する。当業者であれば、以下の説明は例示的なものに過ぎず、決して限定するものではないことを理解するであろう。他の側面は、本開示の利益を有する当業者に容易に示唆されるであろう。以下、添付の図面に例示されている例示的な実装形態を詳細に参照する。同一の符号は、図面全体にわたって可能な範囲で使用され、以下の説明は、同じ又は同様の項目を参照するために使用される。
図1は、本発明に係り、ファイル内の悪意のあるコードを検出するための例示的なコンピュータシステムを示す。一例では、悪意のあるコードはシェルコードを含むことがある。シェルコードは、通常、ファイルからロードされたプロセスのメモリに埋め込まれ、その後、スタック上のバッファオーバーフローを含むバッファオーバーフロー等によって、制御がそこに転送される。シェルコードの実行の結果として、ハッカーはコンピュータ上で悪意のある動作を実行することができる。例えば、実行可能な悪意のあるファイルをネットワークからロードし、被害者のコンピュータに保存することができる。サンドボックス130は、プロセスの安全な実行のためのコンピュータ環境であってもよい。サンドボックスは、ファイルシステム及びレジストリの部分的な仮想化、ファイルシステム及びレジストリへのアクセスの規則、又はハイブリッドアプローチに基づいて、例えば仮想マシンの形で実現される。図1は、OS131がインストールされた仮想マシンの形のサンドボックスの実現例を示している。サンドボックス130は、アンチウィルスアプリケーション110の制御下で、ファイル134から起動されたプロセスを実行するように構成されていてもよい。ファイル134は、任意の所与のデータフォーマットのファイルであってもよく、所与のデータを含むことができることに留意されたい。例えば、ファイル134は、脆弱性の影響を最も受けやすいオフィスアプリケーション(Microsoft Word、Excel、PowerPoint、Access、Adobe Acrobatなど)のファイルであってもよい。したがって、この場合、ファイル134から起動されるプロセスは、対応するアプリケーションのプロセス(Microsoft Wordアプリケーションのプロセスに対するWINWORD.EXE等)となる。別の例では、ファイル134は、PE(Portable Executable)ファイル等の実行可能ファイルであってもよい。
サンドボックス内には、ロギングモジュール133に接続されたスキャンモジュール132が含まれる。プロセスの実行中に、ロギングモジュール133は、API関数呼び出しを傍受し、サンドボックス130内に同様に位置する第1ログ137にそのレコードを連続して入力することができる。ロギングモジュール133によるAPI関数呼び出しの傍受の瞬間に、スキャンモジュール132は、プロセスのメモリダンプをダンプデータベース136に保存することができる。
一例では、API関数呼び出しに関する第1ログ137の各レコードには、以下のような情報が含まれる:
・前記ファイル134から起動されたプロセスのPID識別子
・プロセスのアドレス空間の命令を実行するスレッドのTID識別子
・前述の関数の引数のセット
また、ロギングモジュール133は、傍受されたAPI関数呼び出しをスキャンモジュール132に送信することができ、スキャンモジュール132は、API関数呼び出しに基づいて、疑わしいイベントデータベース135に格納された疑わしいイベントのリストと照らし合わせることで、プロセスの実行中に発生する疑わしいイベントを判定する。疑わしいイベントには、API関数のプロセスによる呼び出しの結果として発生し、実行されている悪意のあるコードに特有のイベントが含まれる。したがって、疑わしいイベントは、API関数呼び出し、プロセッサの内部状態のスナップショット、プロセッサのレジストリ、及びスタックの内容に基づいて判定することができる。例えば、疑わしいイベントとして、WinExec、CreateProcess、GetFileSize等の疑わしいAPI関数のリストからのAPI関数呼び出しが挙げられる。疑わしいイベントのリストは、アンチウィルスアナリストによって事前に作成され、疑わしいイベントのデータベースに配置され得る。疑わしいイベントの他の詳細な例を以下に考察することができる。
スキャンモジュール132は、疑わしいイベントの検出の瞬間、又はロギングモジュール133によるAPI関数呼び出しの傍受の瞬間に、第1ログ137内に、疑わしいイベントに関するレコードを入力し、プロセスのメモリダンプをダンプデータベース136に保存するように働くこともできる。一例では、スキャンモジュール132は、次のような要領でプロセスのメモリダンプを保存することができる。即ち、疑わしいイベント又はAPI関数の呼び出しが起こり、それらがボトムページの境界でもって均等化されるような「開始アドレス」から、開始アドレスに関連する特定の数によって増加された、疑わしいイベントの検出又はAPI関数呼び出しの傍受における「終了アドレス」まで保存する。例えば、メモリダンプには、疑わしいイベント又はAPI関数呼び出しが発生したアドレスから始まる16ページが含まれる、といった具合である。別の例では、開始メモリアドレスを更に指定された数だけ減少させることができる。更に別の例では、開始アドレスと終了アドレスのより正確な計算のために、手順ZwQueryVirtualMemoryを呼び出すことができる。この手順は、メモリ領域に関する情報を返すことができ、特に、処理が成功すれば、領域のベースアドレス及び領域のサイズを得ることができる。この場合、メモリダンプの開始アドレスは、メモリ領域のベースアドレス及びメモリダンプの予め指定された開始アドレスのうち最大の値となる。そして、メモリダンプの終了アドレスは、メモリ領域のサイズだけ増加した、メモリダンプの終了アドレス及びメモリ領域のベースアドレスの以前に計算された値のうち最小の値として決定され、計算される。
本発明によれば、スキャンモジュール132は、サンドボックス130におけるその実行が完了する瞬間に、プロセスのメモリダンプを保存するように更に構成されていてもよい。更に別の例では、スキャンモジュール132は、サンドボックス内のプロセスの実行が完了する瞬間に、プロセスのコンテキストを保存するように更に構成されていてもよく、アンチウィルスアプリケーションは、プロセスのメモリダンプをエミュレータ111において実行する際に、上記保存されたプロセスのコンテキストを利用することができる。或いは、スキャンモジュール132は、疑わしいイベントの検出時にプロセスのコンテキストを保存するように更に構成されていてもよく、アンチウィルスアプリケーションは、(保存された)プロセスのコンテキストに対応するプロセスを、エミュレータ111において実行する際に、保存されたプロセスのコンテキストを利用することができる。
スキャンモジュール132は、前のステップの実行(メモリダンプの保存)の後に終了条件をチェックするように構成されていてもよい。一例では、終了条件には次のようなものがある:
・プロセスの完了
・指定された時間の経過
・前のステップが特定回数(例えば3回といった具合)繰り返し実行されたこと
・プロセスによって実行された命令の数が、指定された閾値(例えば100000回の命令といった具合)を超えたこと
・スキャンモジュールによって判定された疑わしいイベントの数が、特定の閾値(例えば3つの疑わしいイベントといった具合)を超えたこと
終了条件が満たされていない場合、スキャンモジュール132は、前のステップの繰り返しを開始するように構成されていてもよい(図2についての詳細を参照)。
終了条件が満たされた場合、即ちファイル134から起動されたプロセスの実行がサンドボックス130で完了した場合、アンチウィルスアプリケーション110は、サンドボックスに含まれる第1ログ137のレコードを、アンチウィルスアプリケーション110が動作しているオペレーティングシステムに含まれる第1ログ122に保存することができる。
更に別の例では、ロギングモジュール133は、ネットワーク、レジストリ、ファイルシステム、RAM、プロセス及びスレッドの処理を担うシステムコールに関する情報を含むレコードを傍受し、更に第1ログ137に入力を行うことができる。
ロギングモジュール133がAPI関数呼び出しを傍受する場合、ロギングモジュール133は、呼び出しのスタック及びプロセッサ上で実行されている命令へのアクセス権を有することに留意されたい。一例では、ロギングモジュール133は、例外的な状況のレコードと、プロセッサ上で実行されている命令とを第1ログ137に保存し、スキャンモジュール132に送ることができる。
疑わしいイベントには、例えば、次のようなものがある:
・不審なAPI関数のリストからのAPI関数の呼び出し(例えば、WinExec、CreateProcess、GetFileSize等のAPI関数がリストに含まれている可能性がある)
・プロセスを実行する際における例外的な状況の発生
・プロセスによる動的メモリの(特定回数の)繰り返し(例えば200回の繰り返し、といった具合)の実行
・スタック上のプログラムコードのプロセスによる実行
・ret命令の前に呼び出し命令がないこと
・プロセスによる、例外的なハンドラーの変更
・コール命令実行時のアクセス権侵害
・プロセスのスタックポインタが、TEB(スレッド環境ブロック)に示されている領域の境界を超えていること。
例えば、「ret命令の前に呼び出し命令がない」というイベントが疑わしいイベントである可能性がある。というのも、コール命令(スタック内のリターンポイントのアドレスを保存してプロシージャに制御を移す命令)の後には必ずret命令(スタックに退避された復帰アドレスの呼び出し元プログラムへの制御の復帰命令)が来るためである。
更に別の例では、ロギングモジュール133は、以下の例外的状況を識別するように構成されていてもよい:
・コール命令実行時のアクセス権侵害
・メモリへの書き込み時のアクセス権侵害
・プログラムカウンタアドレス、及びプログラムカウンタアドレスと所定の精度で一致するアドレス上でメモリから読み込む際のアクセス権侵害
・データの実行を防止するためのポリシー違反
・スタック上のバッファオーバーフロー
・ヒープの損傷(ヒープの破損)
・禁止された、正しくない、又は特権のある命令を実行しようとしたこと
例えば、ロギングモジュール133は、レジストリの内容、システム構造、API関数(KiUserExceptionDispatcher)呼び出しの傍受の際の呼び出しのスタックの解析を行うことで、「メモリへの書き込み時のアクセス権の侵害」という例外的な状況を識別することができる 。
アンチウィルスアプリケーション110は、そのメイクアップにエミュレータ111を含むことができる。また、アンチウィルスアプリケーション110は、そのリストが第1型シグネチャのデータベース123に含まれるような第1型シグネチャの数から、1つ又は複数の第1型シグネチャを第1ログ122において識別するように構成される。第1型シグネチャは、API関数呼び出しに関する情報と、疑わしいイベントに関する情報のうち少なくとも1つのレコードを含み得るデータ構造を含むことができる。
別の例では、第1型シグネチャは、この同じシグネチャの他のレコードに課せられた条件、即ち、API関数呼び出し及び疑わしいイベントに関する情報を更に含むことができる。そのような条件には、例えば、シグネチャのレコード数のチェック、シグネチャのレコードのシーケンスのチェック等が含まれる。
第1型シグネチャを識別した後、アンチウィルスアプリケーション110は、実行のために少なくとも1つの保存されたメモリダンプをエミュレータ111に転送することができる。エミュレータ111は、メモリダンプに含まれる実行可能コードを逆アセンブルし、その仮想環境で実行することができる。実行中、エミュレータ111は、API関数呼び出しのアドレスへのジャンプ(例えば、CreateFile呼び出しオペレータ、CreateFile API関数への制御転送)を判定することができる。次に、エミュレータ111は、API関数呼び出しのレコードを第2ログ125に連続して入力することができる。
例示的な側面では、API関数呼び出し上の第2ログ125の全てのレコードは、以下の情報を含むことができる:
・前記ファイル134から起動されたPID識別子
・プロセスのアドレス空間の命令を実行するスレッドのTID識別子
・前述の関数の引数のセット
例示的な側面では、アンチウィルスアプリケーション110は、エミュレータ111上のプロセスの実行中にプロセスの実行トレースを第2ログ125に書き込むように更に構成されていてもよい。プロセスの実行トレースには、プロセッサ上で実行中の傍受されていない命令シーケンスと、各命令を実行するときのプロセッサの内部状態のスナップショットとが含まれていてもよい。
更に別の例では、チェック済のファイル134から起動されたプロセスに関する命令のみが、実行トレースから選択される得る。オペレーティングシステムのプロセスの実行に関する命令は、プロセスの実行トレースから削除されうる。
アンチウィルスアプリケーション110は、第2ログ125において1つ又は複数の第2型シグネチャの識別を行う際に、ファイル134内の悪意のあるコード(シェルコードなど)を第2型シグネチャのデータベース124から判定することができる。
第2型シグネチャは、API関数呼び出しに関する情報と、プロセッサ命令と、及びプロセッサの内部状態のスナップショットの記録という3つのレコードのうち少なくとも1つを備えるデータ構造を含むことができる。別の例では、第2型シグネチャは、以下のイベントのうち1つ以上を含むことができる:
・システムライブラリのディスクリプタのアドレス(kernel32.dll、ntdll.dll等)の取得
・メモリの割り当て
・ システム構造(プロセス環境ブロック―PEB)の読み取り
・ファイルディスクリプタの連続的な取得。
メモリへのプロセスアクセスというイベントは、プロセスの実行トレースから判定される。これは、例えば以下のような「mov eax, [ebx]」のタイプの命令を含んでいればよい:

"mov eax, fs:

[00000030]

mov eax, [eax]
[0C]

mov eax, [eax]
[0C]

mov edx, eax
cmp w,[eax]
[2C]
, 00018"
更に別の例では、第2型シグネチャは、以下のような、プロセスの実行トレースのレコードを含むことができる:

#ReadModuleMemory(0 -> "USER32.dll",77d83452, "UserRegisterWowHandlers" + 0x2,accessor eip - 10002315);
> [0x77d83452]
= 0x00005068
10002315 66 3B 10 cmp dx, [eax]

EAX: 77D83452 EBX: 00000000 ECX: 77D836A0 EDX: 000040C7 ESI: 77D51324
EDI: 77D5025E EBP: 00624FB8 ESP: 00624F5C EIP: 10002318 EFLAGS: 00000297
CS: 001B DS: 0023 ES: 0023 SS: 0023 FS: 003B GS: 0000 Flags: .......I.S..A.P.C
Stack:
00624F5C CB 1C 00 10-01 00 00 00|B0 4F 62 00-30 00 00 00 E.......°Ob.0...
00624F6C 23 00 00 00-20 22 00 10|00 00 00 00-00 00 00 00 #... "..........
FS:[0]
:
00625000 EC 4F 62 00
プロセスの実行トレースの上記の記録は、メモリの読取りがアドレスUSER32.dll(レジスタEAXはライブラリUSER32.dllのアドレスを含む)で行われたことを示すことができる。
別の例示的な側面では、第2型シグネチャは、API関数呼び出し及びプロセッサ命令に関する情報を含むレコードと、プロセッサの内部状態のスナップショットのレコードとを同時に含むことができる。
更に別の例示的な側面では、第2型シグネチャは、この同じシグネチャの他のレコードに課せられた条件、即ち、API関数呼び出し、プロセッサ命令、及びプロセッサの内部状態のスナップショットの記録とを更に含むことができる。そのような条件には、例えば、シグネチャのレコード数のチェック、シグネチャのレコードのシーケンスのチェック等が含まれる。
前述の条件を含むような、第2型シグネチャの例には、次のようなものがある。
・API関数GetFileSizeの呼び出しが10回実行されたこと
・API関数WriteFile(ファイルへの書き込み)の呼び出しの後に、API関数WinExec(実行するファイルの起動)の呼び出しが表示されるということ
・アドレスuser32.dllのメモリからの読み込みに引き続き、アドレスkernel32.dllのメモリからの読み込みが行われたこと
・ファイル134から起動されたプロセスによって悪意のあるファイルを作成し、それをスタートアップに追加すること
・実行可能プロセスが、そのプロセスが起動されたファイル134をコピーしたこと
API関数呼び出しに加えて、ロギングモジュール133は、以下のオブジェクトに関する情報を含むレコードの第1ログ137への傍受及びその後の保存を実行してもよい:
・API関数からの戻りアドレスで制御を転送する手順
・ WindowsNTネイティブAPI関数の直接呼び出し
・ WindowsNTネイティブAPI関数からの戻り値
・ コンピュータシステムをオフにする又は再起動するイベント
・プロセス内で発生する例外的な状況
例示的な側面では、エミュレータ111は、システム構造(プロセス環境ブロック、PEB)の読み取りに関する情報と、システムライブラリのディスクリプタのアドレス(例えば、kernel32.dll、ntdll.dll)の取得に関する情報とを含む1つ又は複数のレコードを第2ログ125に入力するように構成されていてもよい。
別の例示的な側面では、エミュレータ111は、レジストリ、ファイルシステム(fopen()、create()等)、RAM、プロセスとスレッドのうちの1つ又は複数を処理する動作を担うシステムコールに関する情報を含むレコードを第2ログ125に入力するように構成されていてもよい。
上記の例では、ロギングモジュール133は、システムコールに関する情報を、システムコールの傍受、OSカーネル通知メカニズムの使用、及びOSドライバのスタックへのドライバを埋め込みのうち何れか1つの方法によって取得するように構成されていてもよい。
エミュレータ111は、制御転送アドレスでシステムコールに関する情報を取得することができる。
図2は、(シェルコード等の)ファイル内の悪意のあるコードの検出のための例示的な方法を示す。ステップ201において、ファイル134から起動されたプロセスは、サンドボックス130を用いてアンチウィルスアプリケーション110の制御下で実行される。次に、ステップ202において、ロギングモジュール133は、プロセスの実行中にAPI関数呼び出しを傍受するように構成されていてもよい。ステップ203において、ロギングモジュール133は、傍受されたAPI関数呼び出しに関するレコードを第1ログ137に連続的に入力するように構成されていてもよい。
次に、ステップ204において、スキャンモジュール132は、ロギングモジュール133によって傍受されたたAPI関数呼び出しに基づいてプロセスの実行中に発生する疑わしいイベントを判定し、第1ログ137にその疑わしいイベントに関するレコードを入力するように構成されていてもよい。
ステップ205において、スキャンモジュール132は、傍受されたAPI関数呼び出しについての記録のステップ203における保存の後、及びステップ204において検出された疑わしいイベントの後に、プロセスのメモリダンプをダンプデータベース136に保存するように構成されていてもよい。
例示的な側面では、ステップ203の後、ステップ204〜205をスキップしてステップ206に続くことができる。この場合、API関数呼び出しに関する情報を含むレコードのみが第1ログ137に保存されることになる。別の例では、ステップ203を省略することが可能であり、したがってステップ202の後にステップ204へ進む。この例では、検出された疑わしいイベントに関する情報を含むレコードのみが、第1ログ137に保存される。
その結果、ステップ206において、スキャンモジュール132は、終了条件が満たされているかどうかをを確認し、もしこれが満たされていなければ、ステップ201〜205の繰り返しを開始するように構成されうる。しかし、終了条件が満たされている場合、上の方法の実行はステップ207にて継続される。終了条件は、以下のうちの少なくとも1つを含む:
i.プロセスの完了
ii. 特定の時間の経過
iii.ステップ201〜205が、指定された回数繰り返し実行されたこと
iv.プロセスによって実行された命令の数が、指定された閾値を超えたこと
v.スキャンモジュールによって決定された疑わしいイベントの数が、指定された閾値を超えたこと
例示的な側面では、終了条件のうち1つでも満たされると、ステップ206でiiからvまでの番号が付けられ、アンチウィルスアプリケーション110は、サンドボックス130の状態を保存することができる。終了条件iの場合、 処理が完了したので、サンドボックス130の状態を保存する必要はない。仮想マシンの例では、仮想マシンのメモリの内容、プロセッサのレジスタ等、仮想マシンの瞬間的なスナップショットが保存される。ステップ209において、アンチウィルスアプリケーション110が第2型シグネチャを識別しなかった場合、ファイル134は、保存された状態を使用してサンドボックス130内で実行するためにもう一度送信される。すなわち、ステップ201〜205は、ステップ206で終了条件が満たされるまで実行されることになる。例えば、第1疑わしいイベントが検出されるまでステップ201から205までが一度実行され、エミュレータ111内のファイル134の追加分析のためにサンドボックス130内の実行が停止される、といった具合である。しかし、エミュレータ111がファイル134内の悪意のあるコードを発見できなかった場合、サンドボックス130内のファイル134の実行は、終了条件(例えば、次の疑わしいイベントが判定されるか、又は処理が完了すること)が満たされるまで継続される。このように、アンチウィルススキャンの実行速度を増加させることができる。というのも、終了条件は、ステップ204における最初の疑わしいイベントの検知であり、これは、プロセスの実行の完了、又は指定された期間が経過するのを待つことなく、実行されるためである。同時に、ファイル134内の悪意のあるコードの決定の質は、必要であればステップ201〜205が繰り返されるので、劣化することはない。
別の例示的な側面では、疑わしいイベントは、スキャンモジュール132によって割り当てられる異なる重みを有することができる。例えば、例外的な状況では重みが1になり、疑わしいAPI関数のリストからのAPI関数呼び出しでは重みが2になる。この場合、例えば、終了条件を決定するために、疑わしいイベントの重みを使用することができる。したがって、終了条件として、重み2を有する疑わしいイベントの検出、又は合計して重み2を有する複数の疑わしいイベントの検出、即ち、スキャンモジュール132によって決定された疑わしいイベントの合計された重みが特定の値を超えたという条件を含むことができる。
別の例示的な側面では、サンドボックス130におけるプロセスの実行の完了後、スキャンモジュール132は、その実行の完了の瞬間に、プロセスのメモリダンプを更に保存することができる。スキャンモジュール132は、サンドボックス130内のプロセスの実行が完了した後に、その実行の完了の瞬間に、プロセスのコンテキストを更に保存することができる。アンチウィルスアプリケーション110は、以下に説明するように、ステップ208のプロセスのメモリダンプのエミュレータ上での実行中に、プロセスの保存されたコンテキストを使用するように構成されていてもよい。
更に別の例示的な側面では、ステップ208において、疑わしいイベントの検出時にプロセスのコンテキストを(疑わしいイベントが検出される際に)更に保存することができ、アンチウィルスアプリケーション110は、そのプロセスのコンテキストに対応するプロセスのメモリダンプをエミュレータ111において実行する際に、保存されたプロセスのコンテキストを利用することができる。
終了条件が満たされた後、即ちサンドボックス内のプロセスの実行が完了した後、第1ログ137をコンピュータに転送して第1ログ122に送り、ダンプデータベース136をダンプデータベース121に転送することができる。ステップ207において、アンチウィルスアプリケーション110は、第1ログ122において、1つ又は複数の第1型シグネチャを識別することができる。第1型シグネチャそれぞれは、API関数呼び出しに関する情報又は疑わしいイベントに関する情報のレコードのうち、少なくとも1つを備えるデータ構造を含んでいてもよい。
第1型シグネチャを識別した後、ステップ208において、アンチウィルスアプリケーション110は、1つ又は複数の保存されたメモリダンプを実行のためにエミュレータ111に送信することができる。また、エミュレータ111での実行中に、第2ログ125に対して、API関数呼び出しに関するレコード又はプロセスの実行トレースのレコードが連続的に入ってきていてもよい。プロセスの実行トレースは、プロセッサ上で実行中の中断のない命令シーケンスと、各命令の実行中のプロセッサの内部状態のスナップショットと、を含むことができる。
エミュレータ111は、メモリダンプに含まれる実行可能コードを逆アセンブルし、その仮想環境で実行することができる。
第2型シグネチャは、API関数呼び出しに関する情報、プロセッサ命令、及びプロセッサの内部状態のスナップショットの記録という3つのレコードのうち少なくとも1つを備えるデータ構造を含むことができる。
その結果、ステップ209において、アンチウィルスアプリケーション110は、1つ又は複数の第2型シグネチャの第2ログ125における識別の際に、ファイル内の悪意のあるコードを判定するように構成されうる。第2型シグネチャは、API関数呼び出しに関する情報、プロセッサ命令、及びプロセッサの内部状態のスナップショットの記録という3つのレコードのうち少なくとも1つを備えるデータ構造を含むことができる。
上記に基づいて、開示されたシステム及び方法は、既存の検出方法が常にそれを検出することができないファイル内の悪意のあるコードを検出することを可能にする。
図3は、ステップ208におけるエミュレータ上のプロセスの実行のための、本発明に係る詳細な方法を提示する。プロセスの実行中、ステップ301において、エミュレータ111は、API関数呼び出しのアドレス(例えばCreateCile呼び出しオペレータ、API関数CreateFileに制御を移す)でジャンプを決定することができる。一例では、ステップ302において、エミュレータ111は、第2ログ125内のAPI関数呼び出しに関するレコードを連続して入力することができる。
更に別の例示的な側面では、ステップ301の後、ステップ303に進み、アンチウィルスアプリケーションは、エミュレータ111上のプロセスの実行中にプロセスの実行トレースを判定して第2ログ125に書き込む。プロセスの実行トレースには、プロセッサ上で実行中の中断のない命令シーケンスと、各命令を実行するときのプロセッサの内部状態のスナップショットが含まれる場合がある。この場合、第2型シグネチャは、プロセッサの内部状態のスナップショットのプロセッサ命令及び記録を含むことができる。
更に別の例示的な側面では、チェックされるファイル134から起動されたプロセスに関する命令のみが、プロセスの実行トレースから選択されうる。オペレーティングシステムのプロセスの実行に関する命令は、プロセスの実行トレースから削除することができる。
その結果、ステップ302又はステップ303の後、ステップ209において、アンチウィルスアプリケーション110は、1つ又は複数の第2型シグネチャの第2ログ125における識別の際に、ファイル134内の悪意のあるコードを判定することができる。第2型シグネチャは、API関数呼び出しに関する情報、プロセッサ命令、及びプロセッサの内部状態のスナップショットの記録という3つのレコードのうち少なくとも1つを備えるデータ構造を含むことができる。
例示的な側面では、第2型シグネチャは、API関数呼び出しに関する情報とプロセッサ命令とを含むレコードと、プロセッサの内部状態のスナップショットの記録を含むレコードと、を同時に含むことができる。
更に別の例示的な側面では、第2型シグネチャは、この同じシグネチャの他のレコードに課せられた条件、即ち、API関数呼び出し、プロセッサ命令、及びプロセッサの内部状態のスナップショットの記録を更に含むことができる。そのような条件には、例えば、シグネチャのレコード数のチェック、シグネチャのレコードのシーケンスのチェック等が含まれる。第2型シグネチャのより詳細な説明は、図1の説明において上記に与えられている。
図4は、実施形態に係り本発明のシステムと方法が実装できる汎用コンピュータ・システム(パーソナル・コンピュータやサーバ等)の例を示している。図示の通り、コンピュータ・システム20は、CPU21と、システムメモリ22と、CPU21と関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス23とを含み得る。システムバス23は、バスメモリ又は、バスメモリコントローラ、周辺バス、及びローカルバスを次々含む従来から公知のあらゆるバス構造としても実現され得、これらはどのような他のバスアーキテクチャとも通信可能である。システムメモリは、リードオンリーメモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。基本的な入出力システム(BIOS)26は、ROM24の使用によってオペレーティング・システムをロードする際等、コンピュータ・システム20の要素間の情報の伝達を担う基本的な手順を含む。
コンピュータ・システム20は、データの読み書きのためのハードディスク27、取り外し可能な磁気ディスク29の読み書きのための磁気ディスクドライブ28、及びCD−ROM、DVD−ROM、その他の光学メディア等の光学ディスク31の読み書きのための光学式ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光学式ドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33、及び光学式ドライブインターフェース34それぞれを横切るシステムバス23と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びコンピュータ・システム20の他のデータのストレージのための電源依存のモジュールである。
例示的な実施形態では、コントローラ55を介してシステムバス23に接続されたハードディスク27、取り外し可能な磁気ディスク29、および取り外し可能な光ディスク31を使用するシステムを含む。当業者は、コンピュータ(ソリッド・ステート・ドライブ、フラッシュ・メモリ・カード、デジタル・ディスク、ランダム・アクセス・メモリ(RAM)など)によって読み取り可能な形式でデータを記憶することができる媒体56の1つまたは複数を利用することもできる。
コンピュータ・システム20は、ファイルシステム36を有し、記録されたオペレーティング・システム35を保持する。また追加のプログラムアプリケーション37、他のプログラムモジュール38、及びプログラムデータ39を有する。ユーザは、入力機器(キーボード40、マウス42)を用いてコマンドと情報をコンピュータ・システム20に入力することができる。他の入力機器:マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることもできる。そのような入力機器は、通常、システムバスに次々接続しているシリアルポート46を通じてコンピュータ・システム20に差し込まれるが、それらは、他の方法例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス(USB)に接続される。ディスプレイ機器のモニタ47又は他のタイプは、また、ビデオアダプタ48等のインターフェースと交差するシステムバス23に接続している。モニタ47に加えて、パーソナル・コンピュータは、スピーカー、プリンタ等の他の周辺の出力機器(不図示)を接続できる。
コンピュータ・システム20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ(又はコンピュータ)49は、図4に示すように、コンピュータ・システム20の性質として説明した上述の要素全ての大多数を有するパーソナル・コンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータ・ネットワークで存在し得るものである。
ネットワーク接続は、ローカルエリアコンピュータ・ネットワーク(LAN)50及びワイドエリアコンピュータ・ネットワーク(WAN)を形成することができる。そのようなネットワークは、企業のコンピュータ・ネットワーク及び社内ネットワークで利用され、それらはたいていにインターネットにアクセスすることができる。LAN又はWANネットワークにおいて、パソコン20は、ネットワークアダプタ又はネットワークインターフェース51に交差するローカルエリアネットワーク50に接続されている。ネットワークが用いられる時には、パソコン20は、通信にインターネット等のワイドエリアコンピュータ・ネットワークを実現するために、モデム54又は他のモジュールを使用することができる。内部又は外部の機器であるモデム54は、シリアルポート46によりシステムバス23と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法もあることに留意されたい。
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及び方法を実施し得る。ソフトウェアにおいて実装される場合は、方法は不揮発性コンピュータ可読媒体の1つ又は複数の指示又はコードとして保存され得る。コンピュータ可読媒体は、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって指示又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
様々な実施形態で、本発明のシステム及び方法が、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばASIC(ApplicationSpecificIntegratedCircuit)、FPGA(Field−ProgrammableGateArray)等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という2つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる(図3において詳述したもの等)。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
更に、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。
本明細書で開示された様々な側面は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。更に、側面及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。

Claims (18)

  1. コンピュータによって実行される、ファイル中の悪意のあるコードを検出するための方法であって、
    実行ステップと、傍受ステップと、格納ステップと、検出ステップと、転送ステップと、識別ステップとを備え、
    前記実行ステップでは、計算機器のプロセッサによって、前記計算機器にインストールされたアンチウィルスアプリケーションの制御を介して、前記計算機器の仮想マシン内のファイルから起動されたプロセスを実行し、
    前記傍受ステップでは、前記計算機器の前記仮想マシン内の前記ファイルから起動されたプロセスの前記実行中に、前記プロセッサが1つ又は複数のAPI呼び出しを傍受し、
    前記格納ステップでは、前記プロセッサが、前記傍受されたAPI呼び出しの連続するレコードを前記計算機器の前記仮想マシンの第1ログに格納し、
    前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を検出し、
    前記転送ステップでは、前記終了条件の検出に応答して、前記プロセッサが1つ又は複数の第1型シグネチャを識別し、且つ実行のために前記プロセッサが、前記計算機器の前記仮想マシン内に保存された1つ又は複数のメモリダンプをエミュレータに転送し、
    前記エミュレータ内の転送された前記計算機器の1つ又は複数の保存されたメモリダンプの実行は、1つ又は複数の保存されたメモリダンプに含まれる1つ又は複数の実行可能コードを逆アセンブルするステップ、エミュレータの仮想空間で前記逆アセンブルされた1つ又は複数の実行可能コードを実行するステップ、及び、前記エミュレータの仮想空間での実行中に傍受されたAPI呼び出しのレコードを、連続して第2ログに入力するステップとを含み、
    前記第2ログ内の各レコードが、API関数呼び出しについての情報を含み、
    前記情報は、対応するファイルから起動されたプロセスのPID識別子を含み、
    前記識別ステップでは、前記プロセッサが前記計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、前記第2ログ内において1つ又は複数の第2型シグネチャを検出することに応答して、前記ファイル内の悪意のあるコードを識別
    前記実行結果は、前記エミュレータから受信され、
    前記1つ又は複数の第2型シグネチャは、前記第2ログ内のレコード、1又は複数のAPI関数呼び出しに関する情報、プロセッサ命令、及び前記プロセッサの内部状態のスナップショットの記録のうちの少なくとも1つを含むデータ構造を含む、
    方法。
  2. 前記傍受されたAPI呼び出しの連続するレコードを決定するステップを更に含む、
    請求項に記載の方法。
  3. 前記検出ステップは、前記プロセスが完了したことの表示、指定された時間の経過、プロセスによって実行された命令の数が特定の閾値を超えたこと、検出された疑わしいイベントの数が選択した閾値を超えたこと、のうち少なくとも1つを終了条件として含む、
    請求項1に記載の方法。
  4. 前記傍受されたAPI呼び出しに基づき、前記プロセスの実行中に発生する1つ又は複数の疑わしいイベントを検出するステップと、
    前記1つ又は複数の疑わしいイベントを検出し、更に前記傍受されたAPI呼び出しの連続するレコードを前記第1ログに格納することに応答して、前記プロセスのメモリダンプを前記計算機器の前記仮想マシンのデータベースに格納するステップと、を更に含む、
    請求項に記載の方法。
  5. 少なくとも前記第1ログ内の連続するレコードに基づいて実行される、前記第1型シグネチャを1つ又は複数識別するというステップにおいて、前記第1型シグネチャそれぞれが、傍受されたAPI呼び出し又は検出された1つ又は複数の疑わしいイベントに関する情報を備えるデータ構造を含む、
    請求項に記載の方法。
  6. 前記エミュレータ内の、転送された前記計算機器の仮想マシン内に保存された1つ又は複数のメモリダンプ実行は、
    記エミュレータの仮想環境内で前記1つ又は複数の実行可能コードを実行するステップと、
    前記エミュレーター内での前記1つ又は複数の実行可能コードの実行中に前記1つ又は複数のAPI呼び出しのアドレスへのジャンプを決定するステップとをさらに含む、
    請求項1に記載の方法。
  7. 前記第2ログ内の各レコードが、前記API関数呼び出しの名前と、前記プロセスのアドレス空間の命令を実行するスレッドのTID識別子と、API関数の引数のセットと、に関する情報をさらに含む、
    請求項に記載の方法。
  8. 前記第2ログが、前記プロセッサ上で実行中断されていない一連の命令と、各命令を実行する際における前記プロセッサの内部状態のスナップショットと、を含む前記エミュレータの実行経過を維持し記録するように構成されることを含む、
    請求項に記載の方法。
  9. ファイル中の悪意のあるコードを検出するためのシステムであって、
    少なくとも1つのプロセッサが、実行ステップと、傍受ステップと、格納ステップと、検出ステップと、転送ステップと、識別ステップとを実行するように構成され、
    前記実行ステップでは、計算機器のプロセッサによって、前記計算機器にインストールされたアンチウィルスアプリケーションの制御を介して、前記計算機器の仮想マシン内のファイルから起動されたプロセスを実行し、
    前記傍受ステップでは、前記計算機器の前記仮想マシン内の前記ファイルから起動されたプロセスの前記実行中に、前記プロセッサが1つ又は複数のAPI呼び出しを傍受し、
    前記格納ステップでは、前記プロセッサが、前記傍受されたAPI呼び出しの連続するレコードを前記計算機器の前記仮想マシンの第1ログに格納し、
    前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を決定および検出し、
    前記転送ステップでは、前記終了条件の検出に応答して、前記プロセッサが1つ又は複数の第1型シグネチャを識別し、且つ実行のために前記プロセッサが、前記計算機器に保存された1つ又は複数のメモリダンプをエミュレータに転送し、
    前記エミュレータ内の転送された前記計算機器の1つ又は複数の保存されたメモリダンプの実行は、1つ又は複数の保存されたメモリダンプに含まれる1つ又は複数の実行可能コードを逆アセンブルするステップ、エミュレータの仮想空間で前記逆アセンブルされた1つ又は複数の実行可能コードを実行するステップ、及び、前記エミュレータの仮想空間での実行中に傍受されたAPI呼び出しのレコードを、連続して第2ログに入力するステップとを含み、
    前記第2ログ内の各レコードが、API関数呼び出しについての情報を含み、
    前記情報は、対応するファイルから起動されたプロセスのPID識別子を含み、
    前記識別ステップでは、前記プロセッサが前記計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、前記第2ログ内において1つ又は複数の第2型シグネチャを検出することに応答して、前記ファイル内の悪意のあるコードを識別し、
    前記実行結果は、前記エミュレータから受信され、
    前記1つ又は複数の第2型シグネチャは、前記第2ログ内のレコード、1又は複数のAPI関数呼び出しに関する情報、プロセッサ命令、及び前記プロセッサの内部状態のスナップショットの記録のうちの少なくとも1つを含むデータ構造を含む、
    システム。
  10. 前記プロセッサが、
    前記傍受されたAPI呼び出しの連続するレコードを決定するステップを実行するようにさらに構成される、
    請求項に記載のシステム。
  11. 前記検出ステップは、前記プロセスが完了したことの表示、 指定された時間の経過、プロセスによって実行された命令の数が特定の閾値を超えたこと、検出された疑わしいイベントの数が選択した閾値を超えたこと、のうち少なくとも1つを終了条件として含む、
    請求項に記載のシステム。
  12. 前記プロセッサが、
    前記傍受されたAPI呼び出しに基づき、前記プロセスの実行中に発生する1つ又は複数の疑わしいイベントを検出するステップと、
    前記1つ又は複数の疑わしいイベントを検出し、更に前記傍受されたAPI呼び出しの連続するレコードを前記計算機器の仮想マシンの第1ログに格納することに応答して、前記プロセスのメモリダンプを前記計算機器の前記仮想マシンのデータベースに格納するステップと、
    を更に実行するように構成される、
    請求項に記載のシステム。
  13. 前記プロセッサが、少なくとも前記第1ログ内の連続するレコードに基づいて実行される、前記第1型シグネチャを1つ又は複数識別するというステップを実行するように構成され、
    前記第1型シグネチャそれぞれが、傍受されたAPI呼び出し又は検出された1つ又は複数の疑わしいイベントに関する情報を備えるデータ構造を含む、
    請求項12に記載のシステム。
  14. 前記エミュレータ内の前記計算機器の前記1つ又は複数の保存されたメモリダンプを実行するステップにおいて、前記プロセッサが、
    記エミュレータの仮想環境内で前記1つ又は複数の実行可能コードを実行するステップと、
    前記1つ又は複数の実行可能コードの実行中に前記1つ又は複数のAPI呼び出しのアドレスへのジャンプを決定するステップと、
    をさらに実行するように構成される、
    請求項に記載のシステム。
  15. 前記第2ログ内の各レコードが、前記API関数呼び出しの名前と、前記プロセスのアドレス空間の命令を実行するスレッドのTID識別子と、API関数の引数のセットと、に関する情報をさらに含む、
    請求項14に記載のシステム。
  16. 前記第2ログが、前記プロセッサ上で実行中断されていない一連の命令と、各命令を実行する際における前記プロセッサの内部状態のスナップショットと、を含む前記エミュレータの実行経過を維持し記録するように構成され
    請求項15に記載のシステム。
  17. ファイル中の悪意のあるコードを検出するためのコンピュータ実行可能命令を格納するコンピュータ上で読み取り可能な不揮発性媒体であって、
    前記命令は、実行ステップと、傍受ステップと、格納ステップと、検出ステップと、転送ステップと、識別ステップを備え、
    前記実行ステップでは、計算機器のプロセッサによって、前記計算機器にインストールされたアンチウィルスアプリケーションの制御を介して、前記計算機器の仮想マシン内のファイルから起動されたプロセスを実行し、
    前記傍受ステップでは、前記計算機器の前記仮想マシン内の前記ファイルから起動されたプロセスの前記実行中に、前記プロセッサが1つ又は複数のAPI呼び出しを傍受し、
    前記格納ステップでは、前記プロセッサが、前記傍受されたAPI呼び出しの連続するレコードを前記計算機器の前記仮想マシンの第1ログに格納し、
    前記検出ステップでは、前記プロセッサが前記プロセスの終了条件の存在を決定および検出し、
    前記転送ステップでは、前記終了条件の検出に応答して、前記プロセッサが1つ又は複数の第1型シグネチャを識別し、且つ実行のために前記プロセッサが、前記計算機器に保存された1つ又は複数のメモリダンプをエミュレータに転送し、
    前記エミュレータ内の転送された前記計算機器の1つ又は複数の保存されたメモリダンプの実行は、1つ又は複数の保存されたメモリダンプに含まれる1つ又は複数の実行可能コードを逆アセンブルするステップ、エミュレータの仮想空間で前記逆アセンブルされた1つ又は複数の実行可能コードを実行するステップ、及び、前記エミュレータの仮想空間での実行中に傍受されたAPI呼び出しのレコードを、連続して第2ログに入力するステップとを含み、
    前記第2ログ内の各レコードが、API関数呼び出しについての情報を含み、
    前記情報は、対応するファイルから起動されたプロセスのPID識別子を含み、
    前記識別ステップでは、前記プロセッサが前記計算機器の転送されたメモリダンプの実行結果に少なくとも基づいて、前記第2ログ内において1つ又は複数の第2型シグネチャを検出することに応答して、前記ファイル内の悪意のあるコードを識別
    前記実行結果は、前記エミュレーターから受信され、
    前記1つ又は複数の第2型シグネチャは、前記第2ログ内のレコード、API関数呼び出しに関する情報、プロセッサ命令、及び前記プロセッサの内部状態のスナップショットの記録のうちの少なくとも1つを含むデータ構造を含む、
    媒体。
  18. 前記格納ステップ
    前記傍受されたAPI呼び出しの連続するレコードを決定するステッ
    を更に含む、
    請求項17に記載の媒体。
JP2017098800A 2016-09-08 2017-05-18 ファイル中の悪意のあるコードの検出システム及び方法 Active JP6842367B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2016136224A RU2637997C1 (ru) 2016-09-08 2016-09-08 Система и способ обнаружения вредоносного кода в файле
RU2016136224 2016-09-08
US15/431,162 US10460099B2 (en) 2016-09-08 2017-02-13 System and method of detecting malicious code in files
US15/431,162 2017-02-13

Publications (3)

Publication Number Publication Date
JP2018041438A JP2018041438A (ja) 2018-03-15
JP2018041438A5 JP2018041438A5 (ja) 2020-12-17
JP6842367B2 true JP6842367B2 (ja) 2021-03-17

Family

ID=60581263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017098800A Active JP6842367B2 (ja) 2016-09-08 2017-05-18 ファイル中の悪意のあるコードの検出システム及び方法

Country Status (4)

Country Link
US (1) US10460099B2 (ja)
JP (1) JP6842367B2 (ja)
CN (1) CN107808094B (ja)
RU (1) RU2637997C1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3070076B1 (fr) * 2017-08-09 2019-08-09 Idemia Identity And Security Procede de protection d'un dispositif electronique contre des attaques par injection de faute
US10810099B2 (en) * 2017-09-11 2020-10-20 Internatinal Business Machines Corporation Cognitive in-memory API logging
KR101976992B1 (ko) * 2017-11-16 2019-05-10 숭실대학교산학협력단 시그니처 추출을 이용한 분석회피기법 자동 인식 장치 및 그 방법
US11250123B2 (en) * 2018-02-28 2022-02-15 Red Hat, Inc. Labeled security for control flow inside executable program code
US10922409B2 (en) * 2018-04-10 2021-02-16 Microsoft Technology Licensing, Llc Deep reinforcement learning technologies for detecting malware
US10965444B2 (en) * 2018-04-24 2021-03-30 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically triggered time dilation
US11017078B2 (en) 2018-04-24 2021-05-25 Microsoft Technology Licensing, Llc Environmentally-trained time dilation
CN110717180B (zh) * 2018-07-13 2021-09-28 北京安天网络安全技术有限公司 基于自定位行为的恶意文档检测方法、系统及存储介质
CN109492391B (zh) * 2018-11-05 2023-02-28 腾讯科技(深圳)有限公司 一种应用程序的防御方法、装置和可读介质
RU2724790C1 (ru) * 2018-12-28 2020-06-25 Акционерное общество "Лаборатория Касперского" Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
EP3674940B1 (en) * 2018-12-28 2024-05-29 AO Kaspersky Lab System and method of forming a log when executing a file with vulnerabilities in a virtual machine
WO2020180298A1 (en) * 2019-03-05 2020-09-10 Intel Corporation Deterministic trusted executed container through managed runtime language metadata
CN113268726B (zh) * 2020-02-17 2023-10-20 华为技术有限公司 程序代码执行行为的监控方法、计算机设备
US11775640B1 (en) * 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
CN111506437A (zh) * 2020-03-31 2020-08-07 北京安码科技有限公司 基于windows原始调用接口的靶场应用程序调用方法、系统、电子设备及存储介质
EP3926470B1 (en) * 2020-06-19 2023-08-16 AO Kaspersky Lab Emulator and emulation method
US11636203B2 (en) 2020-06-22 2023-04-25 Bank Of America Corporation System for isolated access and analysis of suspicious code in a disposable computing environment
US11797669B2 (en) 2020-06-22 2023-10-24 Bank Of America Corporation System for isolated access and analysis of suspicious code in a computing environment
US11880461B2 (en) 2020-06-22 2024-01-23 Bank Of America Corporation Application interface based system for isolated access and analysis of suspicious code in a computing environment
US11269991B2 (en) 2020-06-22 2022-03-08 Bank Of America Corporation System for identifying suspicious code in an isolated computing environment based on code characteristics
US11574056B2 (en) 2020-06-26 2023-02-07 Bank Of America Corporation System for identifying suspicious code embedded in a file in an isolated computing environment
RU2757807C1 (ru) * 2020-08-24 2021-10-21 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного кода в исполняемом файле
US20230350782A1 (en) * 2022-04-28 2023-11-02 Twilio Inc. Data logging for api usage analytics

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568233B1 (en) * 2005-04-01 2009-07-28 Symantec Corporation Detecting malicious software through process dump scanning
US7779472B1 (en) 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US7664626B1 (en) * 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US7814544B1 (en) * 2006-06-22 2010-10-12 Symantec Corporation API-profile guided unpacking
US20100031353A1 (en) * 2008-02-04 2010-02-04 Microsoft Corporation Malware Detection Using Code Analysis and Behavior Monitoring
US20160012223A1 (en) * 2010-10-19 2016-01-14 Cyveillance, Inc. Social engineering protection appliance
US20100169972A1 (en) * 2008-12-31 2010-07-01 Microsoft Corporation Shared repository of malware data
US20110041179A1 (en) * 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
US9213838B2 (en) * 2011-05-13 2015-12-15 Mcafee Ireland Holdings Limited Systems and methods of processing data associated with detection and/or handling of malware
US9245114B2 (en) 2010-08-26 2016-01-26 Verisign, Inc. Method and system for automatic detection and analysis of malware
RU2011138462A (ru) * 2011-09-20 2013-04-10 Закрытое акционерное общество "Лаборатория Касперского" Использование решений пользователей для обнаружения неизвестных компьютерных угроз
RU2472215C1 (ru) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
RU2491615C1 (ru) * 2012-02-24 2013-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ формирования записей для обнаружения программного обеспечения
US9223962B1 (en) * 2012-07-03 2015-12-29 Bromium, Inc. Micro-virtual machine forensics and detection
US9355247B1 (en) * 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9471783B2 (en) * 2013-03-15 2016-10-18 Mcafee, Inc. Generic unpacking of applications for malware detection
KR101477050B1 (ko) * 2014-05-28 2015-01-08 충남대학교산학협력단 메모리 덤프 기법을 이용한 어플리케이션의 실행코드 추출 방법
CN104021346B (zh) * 2014-06-06 2017-02-22 东南大学 基于程序流程图的Android恶意软件检测方法
WO2016093182A1 (ja) 2014-12-09 2016-06-16 日本電信電話株式会社 特定装置、特定方法および特定プログラム
US10341355B1 (en) * 2015-06-23 2019-07-02 Amazon Technologies, Inc. Confidential malicious behavior analysis for virtual computing resources
CN105760787B (zh) * 2015-06-30 2019-05-31 卡巴斯基实验室股份制公司 用于检测随机存取存储器中的恶意代码的系统及方法

Also Published As

Publication number Publication date
US10460099B2 (en) 2019-10-29
RU2637997C1 (ru) 2017-12-08
US20180068115A1 (en) 2018-03-08
CN107808094B (zh) 2021-06-04
CN107808094A (zh) 2018-03-16
JP2018041438A (ja) 2018-03-15

Similar Documents

Publication Publication Date Title
JP6842367B2 (ja) ファイル中の悪意のあるコードの検出システム及び方法
JP2018041438A5 (ja)
US10242186B2 (en) System and method for detecting malicious code in address space of a process
US9852295B2 (en) Computer security systems and methods using asynchronous introspection exceptions
US7603713B1 (en) Method for accelerating hardware emulator used for malware detection and analysis
RU2514141C1 (ru) Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
KR102206115B1 (ko) 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
US8990934B2 (en) Automated protection against computer exploits
US9740864B2 (en) System and method for emulation of files using multiple images of the emulator state
RU2665911C2 (ru) Система и способ анализа файла на вредоносность в виртуальной машине
US9639698B2 (en) Systems and methods for active operating system kernel protection
RU2628921C1 (ru) Система и способ выполнения антивирусной проверки файла на виртуальной машине
US11048795B2 (en) System and method for analyzing a log in a virtual machine based on a template
US9202053B1 (en) MBR infection detection using emulation
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
US10275595B2 (en) System and method for characterizing malware
US9342694B2 (en) Security method and apparatus
EP3293660A1 (en) System and method of detecting malicious code in files
EP2720170B1 (en) Automated protection against computer exploits
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
EP2866167A1 (en) System and method for preserving and subsequently restoring emulator state

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191004

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20191004

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20191015

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20191023

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20191213

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20191217

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20200623

C13 Notice of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: C13

Effective date: 20200804

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20201102

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20201104

C23 Notice of termination of proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C23

Effective date: 20201222

C03 Trial/appeal decision taken

Free format text: JAPANESE INTERMEDIATE CODE: C03

Effective date: 20210209

C30A Notification sent

Free format text: JAPANESE INTERMEDIATE CODE: C3012

Effective date: 20210209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210219

R150 Certificate of patent or registration of utility model

Ref document number: 6842367

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250