JP2017107540A - エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法 - Google Patents

エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法 Download PDF

Info

Publication number
JP2017107540A
JP2017107540A JP2016166924A JP2016166924A JP2017107540A JP 2017107540 A JP2017107540 A JP 2017107540A JP 2016166924 A JP2016166924 A JP 2016166924A JP 2016166924 A JP2016166924 A JP 2016166924A JP 2017107540 A JP2017107540 A JP 2017107540A
Authority
JP
Japan
Prior art keywords
emulator
script
code
emulation
machine
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.)
Granted
Application number
JP2016166924A
Other languages
English (en)
Other versions
JP6326103B2 (ja
Inventor
ブイ.ザコルジェヴスキ ヴャチェスラフ
V Zakorzhevsky Vyacherav
ブイ.ザコルジェヴスキ ヴャチェスラフ
ブイ. ヴィノグラドフ デミトリ
V Vinogradov Dmitry
ブイ. ヴィノグラドフ デミトリ
ブイ. ピンティスキー ウラディスラフ
V Pintiysky Vladislav
ブイ. ピンティスキー ウラディスラフ
エー. キルサノフ デミトリ
A Kirsanov Dmitry
エー. キルサノフ デミトリ
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 JP2017107540A publication Critical patent/JP2017107540A/ja
Application granted granted Critical
Publication of JP6326103B2 publication Critical patent/JP6326103B2/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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/033Test or assess software

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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】悪意のある実行ファイルであってスクリプト言語インタープリタを有する実行ファイルを検出するシステム及び方法を提供する。【解決手段】システム300は、スクリプトを擬似コードに変換し、疑似コードのエミュレーションプロセスを監視するように構成されたアナライザ330と、擬似コードを順次エミュレートし、エミュレーションの結果をエミュレータ動作ログに書き込むように構成されるスクリプトエミュレータ340と、アナライザ330により疑似コードからマシンコードへの移行が検出された場合に疑似コードをエミュレートするように構成されるマシンコードエミュレータ350と、を備える。これにより、アナライザ330は、エミュレータ動作ログを解析し、実行ファイルが悪意のあるファイルであるか否かについて決定する。【選択図】図3

Description

<関連発明の相互参照>
本出願は、2015年9月15日に出願されたロシア連邦特許出願番号2015141543を基礎出願とするものである。また、先の出願は、参照により本明細書に組み込まれる。
本発明は、概して、アンチウィルスソリューションに関する。より詳細には、本発明は、エミュレーションを用いた悪意のあるオブジェクトの検出に関する。
悪意のあるプログラムを含む今日のプログラムのコードには、複雑な命令セット(シフト、コール、サイクル等)が含まれている。さらに、高水準プログラミング言語の人気の高まりや、コンピュータ機器及びオペレーティングシステムの高度化に伴い、実行ファイルは絶えず複雑さを増している。このような複雑さは、信頼できるアプリケーションと悪意のあるアプリケーションの両方に適用される。悪意のあるアプリケーションは、(ユーザーの視点から)多数の否定的で望ましくない動作を実行する可能性がある。このような動作の例としては、パスワードやその他の機密ユーザーデータの盗難、DDoS攻撃を実行する又はスパムの送信を目的としたボットネットワークへのコンピュータ接続、金銭を強要することを目的としたシステム運用の妨害等が挙げられる。
AutoItは、Microsoft Windowsのタスクを自動化するためのフリーウェアプログラミング言語である。初期のバージョンでは、AutoItで記述されたソフトウェアは、主にMicrosoft Windowsプログラム用の自動化スクリプトの作成に使用されていた。自動化スクリプトは、多数のコンピュータに同一のプログラムセットをインストールするなどの繰り返しタスクを実行する場合に便利である。AutoItの最新バージョンでは、言語の機能が大幅に向上したことにより、AutoItは汎用プログラミング言語に近づいた。AutoIt言語で記述されたスクリプトは、任意のライブラリから独立した実行ファイルにコンパイルできる。もっともなことであるが、ウイルス作成者は、言語の幅広い機能及び実行ファイルとしてのスクリプト表現の最終形式であるがゆえに、AutoItスクリプト言語に魅力を感じている。また、かかる特徴は、配布に便利である。
その結果、コンピュータのセキュリティを確保するためには、AutoItスクリプト言語でコンパイルされた実行ファイル内の悪意のあるオブジェクトを検出する必要がある。例えば、従来のようなシグネチャベースで悪意のあるオブジェクトを検出する方法は、AutoItスクリプト言語でコンパイルされた実行ファイルに適用することが困難である。かかる方法では、スクリプトを難読化したり、実行ファイル自体を覆ってしまったりすることができるからである。実行ファイル自体を覆うのは、実行ファイルを圧縮及び/又は暗号化し、その解凍及び実行に必要なコードを添付することによって行うことができる。別の例では、悪意のあるオブジェクト(特に、かかる実行ファイルのエミュレーション)を検出する従来のヒューリスティックな方法も効果的でない。かかる方法では、インタープリタ(AutoItスクリプトを含む実行ファイルの変更不可能な部分)が存在するため、エミュレーション操作が非常に遅くなるからである。その結果、ウイルス作成者は、インタープリタに多くの無駄な動作を実行させることで、ウイルスが検出されることを簡単に防止することができる。また、ウイルス作成者は、仮想マシン上の実行ファイルの起動に基づいて悪意のあるオブジェクトを検出する従来のシステムに簡単に対抗することができる。例えば、実行中の単純な休止(例えば、スリープコマンドの呼び出し)やスクリプトコード内の多くの無駄なサイクルは、検出システムによる判定には使用されない。それどころか、システムは、悪意のあるオブジェクトが悪意のある動作を開始する前でも、割り当てられた時間(操作のタイムアウト)の満了時に検査を完了する。このような場合、かかるファイルの実行ログのサイズはギガバイトに達する可能性がある。
したがって、スクリプト言語インタープリタを有する悪意のある実行可能ファイルを効率的に検出するためのシステム及び方法が必要とされている。
本実施形態は、前述の業界のニーズを実質的に満たす。一実施形態によれば、本発明のシステム及び方法は、スクリプトエミュレータ及びマシンコードエミュレータを組み合わせることによって、スクリプト言語インタープリタを含む悪意のある実行ファイルを検出するように構成される。かかる実施形態により、コンピュータシステムのセキュリティが向上する。より一般的には、コンピュータのセキュリティは、エミュレータを組み合わせることにより、悪意のある実行ファイルを検出することによって実現される。
一実施形態では、悪意のある実行ファイルであってインタープリタを含む実行ファイルを検出するためのシステムは、コンピューティングハードウェアを含むコンピューティングプラットフォームと、命令と、を備え、前記コンピューティングハードウェアは、少なくとも1つのプロセッサ、データストレージ、前記コンピューティングハードウェア上に実装されたオペレーティングシステム、及び入出力機構を有し、前記命令は、前記コンピューティングプラットフォーム上で実行されると、前記コンピューティングプラットフォームを、アナライザ、スクリプトエミュレータ、マシンコードエミュレータとして機能させ、前記アナライザは、実行ファイルに関連するスクリプトを擬似コードに変換し、前記擬似コードのエミュレーションプロセスを監視するように構成され、前記スクリプトエミュレータは、前記擬似コードを順次エミュレートし、エミュレーションの結果をエミュレータ動作ログに書き込むように構成され、前記マシンコードエミュレータは、前記アナライザにより疑似コードからマシンコードへの移行が検出された場合に、前記疑似コードをエミュレートするように構成され、前記アナライザはさらに、前記エミュレータ動作ログを解析し、前記実行ファイルが悪意のあるファイルであるか否かについて決定するように構成される。
他の実施形態では、コンピュータシステムに対する悪意のある実行ファイルを検出するためのマシン実装方法はコンピューティングハードウェアを含み、前記コンピューティングハードウェアは、少なくとも1つのプロセッサ、データストレージ、前記コンピューティングハードウェア上に実装されたオペレーティングシステム、及び入出力機構を有し、前記実行ファイルはインタープリタを含み、前記方法は、変換ステップ、スクリプトエミュレータを用いたエミュレートステップ、マシンコードエミュレータを用いたエミュレートステップ、書込ステップ、及び解析ステップを含み、前記変換ステップは、少なくとも1つのプロセッサ上で実行されるアナライザを利用して、前記実行ファイルに関連するスクリプトを擬似コードに変換し、前記スクリプトエミュレータを用いたエミュレートステップは、少なくとも1つのプロセッサ上で実行されるスクリプトエミュレータを利用して前記疑似コードをエミュレートし、前記スクリプトエミュレータは、前記スクリプト内のコマンドを処理するように構成され、前記マシンコードエミュレータを用いたエミュレートステップは、少なくとも1つのプロセッサ上で実行されるマシンコードエミュレータを利用して、疑似コードからマシンコードへの移行が検出された場合に前記疑似コードをエミュレートし、前記書込ステップは、前記データストレージに記憶されたエミュレータ動作ログにエミュレーションの結果を書き込み、前記解析ステップは、前記アナライザにより、前記エミュレータ動作ログを解析し前記実行ファイルが悪意のあるファイルであるか否かについて決定する。
他の実施形態では、悪意のある実行ファイルであってインタープリタを含む実行ファイルを検出するためのマルチスレッドコンピュータシステムは、少なくとも1つのプロセッサ、前記少なくとも1つのプロセッサと動作可能に接続されたメモリ、第1実行スレッド、第2実行スレッド、及び第3実行スレッドを含み、前記第1実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第1実行スレッドは、スクリプトを疑似コードに変換するように構成されるアナライザを実行し、前記スクリプトは、前記実行ファイルに含まれ又は前記インタープリタにより実行されるように構成され、前記第2実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第2実行スレッドは、スクリプトエミュレータを実行し、前記スクリプトエミュレータは、前記擬似コードを順次エミュレート、スクリプトエミュレータによるエミュレーションの結果を出力するように構成され、前記第3実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第3実行スレッドは、マシンコードエミュレータを実行し、前記マシンコードエミュレータは、疑似コードからマシンコードへの移行が検出された場合に前記疑似コードをエミュレートし、マシンコードエミュレータによるエミュレーションの結果を出力するように構成され、前記アナライザはさらに、前記スクリプトエミュレータによるエミュレーションの結果及び前記マシンコードエミュレータによるエミュレーションの結果を解析し、前記実行ファイルがマルチスレッドコンピュータシステムに対して悪意のあるファイルであるか否かについて決定するように構成される。
上記の概要は、本明細書の主題に関する例示された各実施形態又はすべての実装を説明することを意図するものではない。以下の図面及び詳細な説明は、様々な実施形態をより具体的に例示する。
本明細書の主題は、添付の図面とともになされる以下の種々の実施形態に関する詳細な説明を考慮することにより、完全に理解される。
図1は、一実施形態における、AutoItを使用してコンパイルされた実行ファイルの構造を表すブロック図である。 図2は、一実施形態における、悪意のある実行ファイルを検出するための方法のフローチャートである。 図3は、一実施形態における、悪意のある実行ファイルを検出するためのシステムのブロック図である。 図4は、一実施形態における、エミュレーションスイッチングサブシステムのブロック図である。 図5は、本発明の実施形態を実装するように構成されたコンピュータシステムのブロック図である。 種々の実施形態は、様々な変更及び代替形態を取りうるが、その詳細は、図面に例示されており、以下に詳細に説明される。しかしながら、特許請求の範囲に記載された発明を特定の実施形態に限定する意図はないことを理解されたい。それとは逆に、特許請求の範囲によって規定される主題の精神及び範囲内に入るすべての修正、等価物、及び代替物をカバーすることを意図するものである。
一実施形態によれば、システム及び方法は、例えばAutoIt言語で記述されたスクリプトからコンパイルされた実行ファイルの分析を実行するように構成される。かかる実行ファイルに必要な機能として、インタープリタが含まれる。したがって、本明細書において、「実行ファイル」とは、インタープリタを含む実行ファイルを意味する。悪意のある実行ファイルを検出するために、実行ファイルに含まれるスクリプトのエミュレーションが実行され得る。かかるエミュレーションにより、実行ファイル自体のエミュレーションを実行する場合に時間を節約できる(現在は時間の節約が不十分である)。しかし、スクリプトを直接エミュレーションする場合、従来のマシンコードに基づくエミュレーションと比較して、より少ない数の実行メディア変数が監視される。したがって、スクリプトエミュレーションのみが実行される場合には、スクリプトの動作を完全に調べることができないため、実行ファイルを信頼できるファイル(又は「クリーン」なファイル、悪意があるとは言えないファイル)として誤って解釈する可能性がある。このため、本発明の実施形態は、リソース消費の少ないスクリプトのエミュレーションに従って、実行ファイルを検査するように構成されている。なお、場合によっては、より多くのリソースを消費する従来のマシンコードのエミュレーションを利用してもよい。
エミュレーションは、実行ファイルを含み得る潜在的な悪意のあるプログラムを調べる1つの方法である。この検査方法は、ウイルス対策業界において、プログラムの動作を分析するために使用される。かかる検査方法は、種々のエミュレーション方法を実装できる。あるエミュレーション方法は、マシンコードエミュレータを用いた従来のエミュレーションを含む。従来のエミュレーションは、プロセッサ、メモリ、及び他のデバイスのソフトウェアベースのコピーを含む。かかるコピーは、プロセッサ、メモリレジストリ、及び一連のプロセッサ命令の仮想コピーを作成することにより実現される。このようにして、プログラム命令は実際の物理プロセッサ上ではなく仮想コピー上で実行される。そして、システムAPI関数の呼び出しがエミュレートされ、関数操作のエミュレートされた結果が返信される。
エミュレータの初期化プロセスは、大量のリソースを消費する可能性があることに注意されたい。エミュレータの初期化には、必要なハードウェア(プロセッサ、RAM)の仮想コピーの作成だけでなく、アプリケーションの実行をエミュレートするオペレーティングシステム(OS)のいくつかの主要コンポーネントの仮想コピーの作成も含まれ得る。OSの主要コンポーネントは、例えば以下の通りである:(1)割り込み処理及び履いた処理など、OSの動作に必要な機能を担当するオペレーティングシステムのカーネル部分。(2)必要なデバイスのドライバ、及びメモリマネージャ。したがって、動作中のOSの正しい「プレイバック(エミュレーション)」には、重要なコンピュータシステムのリソースを消費することが必要となる。このため、リソースの消費量が多いマシンコードエミュレータに加えて、本発明では、軽量版に相当するスクリプトエミュレータを用いる。ここで、スクリプトエミュレータは、スクリプト内でコマンド処理が可能であるが、API関数の呼び出し等を実行することはできない。実際のOSでアプリケーションを実行する際、API関数の呼び出しがなされると、OSは複雑な内部アーキテクチャに起因する多数の処理を実行する。一実施形態では、スクリプトエミュレータは、特定のいかなるオペレーティングシステムのアーキテクチャに結びつけられていない。概略的には、API関数を呼び出すと、プロセッサ上で多数の命令が実行される。その後、呼び出されたAPI関数の処理結果がアプリケーションに返される。マシンコードエミュレータでは、API関数の呼び出しによって実際のOSの場合と同じ数の命令が実行されることはない。その代わり、API関数による処理のエミュレートされた結果がアプリケーションに返される。例えば、ファイルを作成しようとすると、エミュレータは仮想ファイルへポインタを返す。
スクリプトエミュレータは、マシンコードエミュレータとは異なりインタープリタを含み、オペレーティングシステムコンポーネントの仮想コピーを持たない。インタープリタは、オリジナルスクリプトコードと擬似コードの両方で動作可能である。擬似コードは、コマンド間の中間表現形式(コード)であり、人間のユーザーに容易に解読可能なコードである。例えば、疑似コードは、スクリプトが書き込まれるプログラミング言語(例:AutoItプログラミング言語)のコマンドに加え、処理ツール(この場合はスクリプトエミュレータ内のインタープリタ)が理解できるコマンドを含むことができる。プログラミング用語では、擬似コードはバイトコード又はpコードとも呼ばれる。オリジナルスクリプトコードと比べ、擬似コードは、スクリプトのコンパクトな表現であり、人間のユーザーにとって解析及び理解しやすいコードである。ここで、疑似コードは、デコンパイルにより得ることができる。技術的には、擬似コードは、トランスレータによりオリジナルスクリプトコードから生成されたマシンに依存しない低級コードである。ここで、本実施形態では、かかる機能は後述のアナライザにより実行される。擬似コードを使用することにより、インタープリタは、より簡単かつ迅速に動作することができるようになる。擬似コードはマシンコードのように見えるが、実際のプロセッサではなく仮想マシンで実行されることを意図している。本実施形態では、仮想マシンは、スクリプト言語のインタープリタ(例:AutoItプログラミング言語)を含む。また、本実施形態では、各オペレーションコードの長さを1バイトとすることができる。各命令は、一般に1バイトのオペレーションコード(0〜255)であり、レジストリ番号やメモリ内のアドレスなどのさまざまなパラメータがこれに続く。擬似コード内の単一のスクリプトは、異なるプラットフォーム及びアーキテクチャ上のインタープリタにより実行可能である。ここで、異なるプラットフォーム及びアーキテクチャは、インタープリタが実行又は生成されるものである。これは、アーキテクチャに依存するコードであるマシンコードとは対照的である。
スクリプトエミュレータの主な動作アルゴリズムは、コマンドを擬似コードで読み取るステップと、インタープリタを用いて関連する動作を決定するステップと、関連する動作のエミュレーションを実行するステップと、エミュレーションの結果をエミュレータ動作ログに書き込むステップを含む。したがって、スクリプトエミュレータは、リソース消費を低減し、スクリプト言語インタープリタ及びそれに関連するスクリプトを含む実行ファイルの調査を加速する。しかし、スクリプトの実行のエミュレーション中に、擬似コードからマシンコードに移行することができる。ここで、疑似コードは、スクリプトエミュレータ内においてインタープリタが実行するコードである。また、マシンコードは、マシンコードエミュレータの起動を要する処理のエミュレーションに用いられる。かかる移行は、エミュレーションプロセス中にコードが検出された場合に可能となる。ここで、かかるコードとしては、例えば、オペレーティングシステムのAPI関数の呼び出し、動的ライブラリからの関数の呼び出し、実行ファイルのリソースへのアクセス、スクリプトエミュレータで処理できないコードが挙げられる。ここで、当業者には容易に理解されるように、他の条件に基づいてマシンコードエミュレータに移行してもよい。
ここで、マシンコードエミュレータは、オペレーティングシステムに存在するすべてのライブラリ及びインタープリタ(例:.NET、Java、AutoIt)と相互通信したり、協働することができることに留意されたい。また、マシンコードエミュレータは、バッチファイルと制御ファイルのエミュレーションを実行することもできる。かかるファイルとしては、例えば、拡張子が.bat又は.cmdのバッチファイル、PowerShellスクリプト、AutoItスクリプト、レジストリにデータを入力するためのregファイル及びその他のタイプのファイルが挙げられる。これらのファイルは、その起動により、ユーザーのコンピュータ上でコードが実行される。したがって、一実施形態では、第1スクリプトのエミュレーション中にエミュレーションプロセスがマシンコードエミュレータに切り替えられ、第2スクリプトが実行のために起動されたとしても、かかる第2スクリプトもマシンコードエミュレータにより処理することが可能である。ここで、第2スクリプトは、例えば、実行ファイルのリソースに含まれるスクリプトである。その後、エミュレーションを、実行ファイルに含まれる第1スクリプトのエミュレーションに戻すことができる。他の実施形態では、マシンコードエミュレーション中にエミュレーションプロセスがマシンコードエミュレータに切り替えられ、第2スクリプトが実行のために起動されたとしても、ミュレーションプロセスをスクリプトエミュレータに戻すことができる。さらに別の実施形態では、マシンコードエミュレータの動作中に起動される第2のスクリプトを処理するために、追加のスクリプトエミュレータを同時に起動することができる。主なスクリプトエミュレータ、マシンコードエミュレータ、及び追加のスクリプトエミュレータの動作結果は、単一の共通エミュレータ動作ログに書き込まれる。そして、後述のごとく、アナライザによって処理される。
図1は、一実施形態における、AutoItを使用してコンパイルされた実行ファイル100の構造を表すブロック図である。図示されるように、実行ファイル100は、2つの主要な構成要素を含むことができる。例えば、実行ファイル100は、スクリプト102と、インタープリタ101を含む。一実施形態では、スクリプト102は、AutoIt言語で記述することができる。インタープリタ101は、スクリプト102からコンパイルされた任意の実行ファイル100内に構築することができる。(インタープリタが外部のシナリオを実行するのを防ぐために)「#NoAutoIt3」実行命令を利用せずにスクリプト102をコンパイルすると、インタープリタ101により第2スクリプト103のコードを実行することができる。第2スクリプト103もまた、AutoIt言語で記述することができる。ここで、かかるコードを実行するには、以下の2つの方法がある。
(1)AutoIt言語で記述されたコードがインタープリタに直接送信されて実行される「/AutoIt3ExecuteLine」パラメータを使用する。例えば、「%ProgramFiles%¥AutoItFile_PE.exe" /AutoIt3ExecuteLine "MsgBox(0, 'Hello', 'World')」とすることができる。
(2)AutoIt言語で記述されたスクリプトがインタープリタに送信されて実行される「/AutoIt3ExecuteScript」パラメータを使用する。例えば、「%ProgramFiles%¥ AutoItFile_PE.exe" /AutoIt3ExecuteScript "C:¥Temp¥Script.au3」とすることができる。
スクリプト102を含む実行ファイル100のインタープリタ101を介してスクリプト103を実行する場合は、ウイルス作成者が複数のコンポーネントを対象とした悪意のあるオブジェクトを作成することが可能になる。したがって、各コンポーネントを検討して信頼する前に、ウイルス対策チェックを実行するべきである。例えば、実行ファイル100は、実行ファイルのリソース内に存在するコードであって、暗号化された悪意のあるコードを含み得るが、インタープリタ101による実行ファイル100の通常の起動時には、スクリプト102が実行されるものの、悪意のあるコードの解読と起動は行われない。しかし、実行ファイル100が「/AutoIt3ExecuteScript」パラメータで起動されると、スクリプト103を実行するためにインタープリタ101に送信し、実行ファイル100のリソースにアクセスし、悪意のあるコードを解読して実行することができる。この場合、実行ファイル100は、第3コンポーネントにより起動することができる。ここで、第3コンポーネントは、例えば、インターネットからロードされたスクリプト103である。マルチコンポーネントを対象とした悪意のある実行ファイルを検出するためには、スクリプト103(例:インタープリタ101の外部に存在するスクリプト)からエミュレーションプロセスを開始する必要がある。一方、単一のコンポーネントを対象とする悪意のある実行ファイルを検出するためには、エミュレーションプロセスをスクリプト102から開始する。したがって、一実施形態では、実行ファイル100の起動イベントを傍受することができる。そして、実行ファイル100の起動が試みられたパラメータがスクリプトを含む場合、エミュレーションプロセスは、パラメータで送信されるスクリプトから開始される。一方、かかるパラメータが存在しない場合、エミュレーションプロセスは、検査中の実行ファイル100に含まれるスクリプト102から開始する。
図2は、一実施形態における、スクリプトを含む悪意のある実行ファイルを検出するための方法200のフローチャートである。例えば、図2において検討される実行ファイルは、図1に示される実行ファイル100を含むことができる。図2に示されるように、方法200は、検査中のスクリプトを擬似コードに変換するスクリプト変換(Step201)を含む。擬似コードを用いることにより、スクリプトエミュレータで使用されるインタープリタの動作が容易且つ高速化される。図1に関して上述したように、悪意の有無が検査されるスクリプトは、実行ファイル100に含まれるスクリプト102であってもよく、実行のために実行ファイル100のインタープリタ101に送信されるスクリプト103であってもよい。
検証されるためには、まず、実行ファイル100に含まれるスクリプト102が実行ファイル100から抽出される。この場合、スクリプト102がパッケージプログラムを使用してパックされた場合、スクリプト102は抽出中にアンパックされる。抽出されたスクリプト102は、デコンパイルされ得る。例えば、スクリプト102のオリジナルコードは、スクリプトが記述されたプログラミング言語で復元される。スクリプト102コードのデコンパイルは、オリジナルコードを易読化するために必要である。易読化は、分析を複雑にするコードを削除するプロセスであるが、スクリプトの機能を変更しないものである。かかるコードは、例えば、計算結果がどこにも使用されない無駄な計算又は個別化されたサイクルであり得る。しかし、スクリプト103が検証されている場合、疑似コードに変換される前に、スクリプト103は易読化プロセスの対象となり得る。
スクリプトを擬似コードに変換した後、Step202において、スクリプトエミュレータを用いて擬似コードの実行をエミュレートする。次に、Step203において、擬似コードの実行エミュレーション中に擬似コードからマシンコードへの移行が検出されると、Step204において、エミュレーションプロセスはマシンコードの実行エミュレーションに切り替えられる。上述のように、かかる移行は、オペレーティングシステムAPI関数の呼び出し、動的ライブラリからの関数の呼び出し、実行ファイルのリソースへのアクセス、スクリプトエミュレータによって処理できないコードを含むことができる。
マシンコードの実行エミュレーション(Step204)が完了すると、エミュレーションは検証されているスクリプトの擬似コードの実行エミュレーション(Step202)に戻る。擬似コード及びマシンコードの実行エミュレーション中に、エミュレーションの結果がエミュレータ動作ログに書き込まれる。他の実施形態では、エミュレーションの結果をメモリに一時的に格納し、エミュレーション終了時にエミュレータ動作ログに書き込むことができる。エミュレータ動作ログは、悪意のある動作を検出するためにStep205で分析される。Step202〜Step205によって具体化されたルーチン又はアルゴリズムは、Step206において、Step205でエミュレータ動作ログの分析の結果、悪意のある動作が検出される。これにより、S207において、実行ファイルが悪意のあるものであると判明するまで、かかるアルゴリズムが繰り返し実行される。他の実施形態では、方法200は、Step205において、エミュレータ動作ログの分析の結果、悪意のある挙動を検出しない場合、アルゴリズムを終了することができる。
エミュレータ動作ログは、起動時に実行ファイル100によって実行される動作を含む。これには、実行ファイルを悪意のあるものとして特徴付けることができる疑わしい動作の組み合わせも含まれる。例えば、不審な動作には、ファイルのオープン、ファイルへの書き込み、割り込みベクタの傍受などがあるが、これらに限定されない。
一実施形態では、エミュレータ動作ログの分析は、エミュレータ動作ログの内容を悪意の振る舞いテンプレートと比較することを含む。そして、エミュレータ動作ログの内容と悪意の振る舞いテンプレートとの一致に基づいて、実行ファイル100が悪意のあるものであることが判明する。
別の実施形態では、不審な動作を検出することにより、エミュレータ動作ログの分析中に実行ファイル100が悪意のあるものであることが判明する。一実施形態では、不審な動作がエミュレータ動作ログ内で検出されるたびに、カウンタをインクリメントすることができる。例えば、エミュレータ動作ログ内において不審な動作が検出されるたびに、実行ファイル100の「不審メーター」カウンタを増加させることができる。そして、このメーターの値が閾値を超えた場合、実行ファイルは悪意のあるものと判断される。
図3は、一実施形態における、悪意のある実行ファイルを検出するためのシステム300のブロック図である。一実施形態では、ユーザーコンピュータは、実行ファイル310を含むことができる。実行ファイル310には、実行ファイル310が悪意のあるものであるか否かを判定するための評価に用いられるスクリプト320が含まれる。システム300はさらに、アナライザ330、スクリプトエミュレータ340、マシンコードエミュレータ350、エミュレータ動作ログ360を含む。
実行ファイル310はスクリプト320を含むので、スクリプト320を抽出し、スクリプトエミュレータ340を使用して直接エミュレートすることにより、実行ファイルのエミュレーションに消費されるリソースと時間を大幅に低減することができる。スクリプト320は、実行ファイル310をデコンパイルすることにより抽出される。また、パッケージャを使用してパッケージングされた場合には、スクリプト320をアンパックすることにより、スクリプト320を抽出してもよい。
実行のためのスクリプト320をスクリプトエミュレータ340に送信する前に、アナライザ330は、スクリプト320のコマンドを、スクリプトエミュレータ340によって処理された言語である擬似コードに変換する。また、後続のエミュレーションプロセスを容易にするために、スクリプト340のコードに対して易読化処理がなされてもよい。かかる処理は、スクリプト320を擬似コードに変換する前に実行される。擬似コードに変換されたスクリプト320が実行のために送信されると、スクリプトエミュレータ340は擬似コードの実行を順次エミュレートし、エミュレーションの結果をエミュレータ動作ログ360に書き込む。アナライザ330は、スクリプトエミュレータ340によって実行されるエミュレーションプロセスを監視するように構成される。そして、エミュレーション中に擬似コードからマシンコードへの移行が検出された場合、アナライザ330は、エミュレーションプロセスをマシンコードエミュレータ350に切り替える。このように、スクリプトエミュレータ340の実行後にマシンコードエミュレータ350を実行するための擬似コードからマシンコードへの移行は、オペレーティングシステムのAPI関数の呼び出し、動的ライブラリからの関数の呼び出し、実行ファイルのリソースへのアクセス、スクリプトエミュレータで処理できないコードがトリガーとなり得る。
エミュレーションプロセスがマシンコードエミュレータ350に切り替えられると、アナライザ330はスクリプトエミュレータ340の動作を中断する。そして、マシンコードエミュレータ350は、マシンコードの実行をエミュレートし始め、エミュレーションの結果をエミュレータ動作ログ360に書き込む。スクリプトエミュレータ340を使用する擬似コードの実行エミュレーションは、アナライザ330によりマシンコードの実行エミュレーションの完了時に再開することができる。別の実施形態では、マシンコードエミュレータ350への切り替えは、スクリプトエミュレータ340によって行われる。アナライザ330は、悪意のある機能(悪意のある動作)を検出するために、エミュレータ動作ログ360の継続的な分析を実行することができる。これにより、スクリプト320を含む実行ファイル310が悪意のあるものであると結論付けることができる。擬似コード及びマシンコード全体のエミュレーションと、これに続くエミュレータ動作ログ360の分析の結果、悪意のある機能が検出されなかった場合、実行ファイル310が信頼できるものであると判断することができる。また、検証のために割り当てられた時間中に構築されたエミュレータ動作ログ360が悪意のある機能を含まない場合、アナライザ330により、実行ファイル310は信頼できるものであるとみなすことができる。
図4は、一実施形態における、エミュレーションスイッチングサブシステム400のブロック図である。例えば、アナライザ330は、エミュレーションスイッチングサブシステム400を含むことができる。エミュレーションスイッチングサブシステム400は、一般に、エミュレータスイッチャ402と、複数のエミュレータ404A〜404Nとを含む。
エミュレータスイッチャ402は、プロセッサ406及びスイッチングロジック408を含む。スイッチングロジック408は、プロセッサ406により解釈されるものである。一実施形態では、プロセッサ406は、入力としてデジタルデータを受け取り、命令又はアルゴリズムに従って入力を処理するように構成され、結果を出力することが可能な任意のプログラマブルデバイスであり得る。一実施形態では、プロセッサ406は、コンピュータプログラムの命令を実行するように構成された中央処理装置(CPU)とすることができる。したがって、プロセッサ406は、基本的な算術演算、論理演算、及び入出力演算を実行するように構成される。プロセッサ406は、特に、スイッチングロジック408に従って、エミュレータ404A〜404Nを切り替えるように構成される。
スイッチングロジック408は、プロセッサ406がエミュレータ404A〜404Nを切り替えるための命令を含む。一実施形態では、切り替えロジック408は、スクリプトエミュレータとマシンコードエミュレータを切り替える前述のトリガーを備えることができる。一実施形態において、エミュレータ404のうちの1つは、マスタエミュレータを備えることができる。そして、特定のタスクのために他のエミュレータ404のうちの1つを呼び出した後、スイッチングロジック408がエミュレーションプロセスをマスタエミュレータに返すように構成される。他の実施形態では、スイッチングロジック408は、エミュレータ404が同時に実行されるように指示することができる。
各エミュレータ404は、命令セット内の各命令を理解するように構成された仮想環境を含む。当業者には容易に理解されるように、あらゆる種類の命令を異なる方法で処理することができる。したがって、各エミュレータ404は、命令を実行する仮想環境を再構築する。擬似コード命令がある場合、オリジナルスクリプトが記述されている言語のインタープリタのみで仮想環境が構成され得る。また、任意の数のエミュレータ404をシステム400に実装することができる。各エミュレータ404は、一組の命令に固有の特定の仮想環境を含むことができる。
例えば、一実施形態に係るエミュレーションスイッチングサブシステム400は、エミュレータ404A及びエミュレータ404Bを含む。エミュレータ404Aは、スクリプトエミュレータを備えることができ、エミュレータ404Bは、マシンコードエミュレータ又はバイナリエミュレータを備えることができる。スイッチングロジック408は、プロセッサ406がエミュレータ404Aとエミュレータ404Bを切り替えるための命令を備える。かかる命令は、エミュレーション下においてスクリプトエミュレータ404Aがコードを処理できないような特定の基準が満たされた場合や、エミュレーション下において別のエミュレータ404Bがコードを処理することが望ましい場合に発せられる。例えば、スイッチングロジック408は、オペレーティングシステムのAPI関数の呼び出し、動的ライブラリからの関数の呼び出し、実行ファイルのリソースへのアクセス、スクリプトエミュレータで処理できないコードなどの、エミュレータ404Aからエミュレータ404Bへ切り替えるトリガーを含むことができる。
図5は、本明細書で説明される本発明の態様が様々な実施形態に従って実装され得るコンピュータシステム500をより詳細に示すブロック図である。
コンピュータシステム500は、1つ以上の処理ユニット521を含むパーソナルコンピュータ520、システムメモリ522、及びシステムバス523を含み得る。これらは様々なシステムコンポーネントを含み、1又は複数の処理ユニット521に接続されたメモリを含む。様々な実施形態では、処理ユニット521は、コンピュータ可読媒体に格納された情報を処理することができる複数の論理コアを含むことができる。システムバス523は、関連技術レベルで知られている任意のバス構造として実現され、バスメモリ又はバスメモリコントローラ、周辺バス及びローカルバスを含み、他のバスアーキテクチャと相互作用することができる。システムメモリは、リードオンリーメモリ(ROM)524等の不揮発性メモリ、又はランダムアクセスメモリ(RAM)525などの揮発性メモリを含むことができる。基本入出力システム(BIOS)526は、例えば、ROM524を使用するオペレーティングシステムブートの間等に、パーソナルコンピュータ520の要素間で情報の転送を確実にする基本手順を含む。
パーソナルコンピュータ520は、データの読み書きのためのハードドライブ527、取り外し可能な磁気ディスク529への読み書きのための磁気ディスクドライブ528、及びCD−ROM、DVD−ROM、その他の光学メディア等の光学ディスク531への読み書きのための光学式ドライブ530を含む。ハードドライブ527、磁気ディスクドライブ528、及び光学式ドライブ530は、ハードドライブインターフェース532、磁気ドライブインターフェース533、及び光学式ドライブインターフェース534のそれぞれを横切るシステムバス523と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造、プログラムモジュール、及びパーソナルコンピュータ520の他のデータのストレージのためのエネルギー依存のモジュールである。
本開示に係るシステムは、ハードドライブ527、取り外し可能な磁気ドライブ529及び取り外し可能な光学ドライブ531を含むものであるが、コンピュータに読み込み可能な形式でデータを保存できる他のタイプのコンピュータ可読媒体(例:ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM))を使用してもよいことに留意されたい。また、これはコントローラ555を介してシステムバス523に接続される。
パーソナルコンピュータ520は、ファイルシステム536を有し、記録されたオペレーティングシステム535を保持する。また、追加のプログラムアプリケーション537、他のプログラムエンジン538、及びプログラムデータ539を有する。ユーザーは、入力デバイス(キーボード540、マウス542)を用いてコマンドと情報をパーソナルコンピュータ520に入力することができる。他の入力デバイス(不図示)(例:マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ)を用いることもできる。そのような入力デバイスは、通常、システムバスに次々接続しているシリアルポート546を通じてコンピュータシステム500に差し込まれるが、それらは、他の方法、例えば、パラレルポート、ゲームポート、又は一般的なシリアルバス(USB)に接続される。モニタ547又は他のタイプのディスプレイは、また、ビデオアダプタ548等のインターフェースと交差するシステムバス523に接続している。モニタ547に加えて、パーソナルコンピュータ520には、スピーカー、プリンタ等の他の周辺出力デバイス(不図示)を接続できる。
この場合、パーソナルコンピュータ520は、1又は複数のリモートコンピュータ549とのネットワーク接続を用いて、ネットワーク環境で操作することができる。(1又は複数の)リモートコンピュータ549は、図5に示すように、パーソナルコンピュータ520の性質として説明した上述の要素全ての大多数を有するパーソナルコンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータネットワークで存在し得るものである。
ネットワーク接続は、ローカルエリアコンピュータネットワーク(LAN)550及びワイドエリアコンピュータネットワーク(WAN)を形成することができる。そのようなネットワークは、企業のコンピュータネットワーク及び社内ネットワークで利用され、それらはたいていにインターネットにアクセスすることができる。LAN又はWANネットワークにおいて、パーソナルコンピュータ520は、ネットワークアダプタ又はネットワークインターフェース551に交差するローカルエリアネットワーク550に接続されている。ネットワークが用いられる時には、パーソナルコンピュータ520は、インターネット等のワールドエリアネットワークと通信するために、モデム554又は他のモジュールを使用することができる。内部又は外部の機器であるモデム554は、シリアルポート546によりシステムバス523と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、実際には、コンピュータ間の技術的通信手段を用いて接続を確立する他の手段がある。
システム、デバイス、及び方法の様々な実施形態を本明細書で説明してきたが、これらの実施形態は、単なる一例としてのみ示されており、特許請求の範囲に記載された発明の範囲を限定するものではない。それどころか、記載された実施形態の様々な特徴は、多くの追加の実施形態を生成するために様々な方法で組み合わせることができることを理解されたい。さらに、開示された実施形態と共に使用するために、様々な材料、寸法、形状、構成及び位置などが記載されているが、特許請求の範囲に記載された発明の範囲を逸脱しない範囲においてく、開示されたもの以外のものを利用することができる。
関連分野の当業者は、本明細書の主題が上記の個々の実施形態に示されたものより少ない特徴を含むことができることを認識するであろう。本明細書に記載された実施形態は、本明細書の主題の様々な特徴が組み合わされ得る方法の網羅的な提示を意味するものではない。したがって、実施形態は、相互に排他的な特徴の組み合わせではない。むしろ、様々な実施形態は、当業者によって理解されるように、異なる個々の実施形態から選択された異なる個別の特徴の組み合わせを含むことができる。さらに、一実施形態に関して記載された要素は、別段の記載がない限り、そのような実施形態に記載されていない場合でも、他の実施形態で実装することができる。
特許請求の範囲において、従属請求項は、1又は複数の他の請求項との特定の組み合わせを参照することができるが、他の実施形態は、従属クレームと他の従属クレームの主題との組み合わせ、又は、1又は複数の特徴と他の従属請求項もしくは独立請求項との組み合わせを含み得る。
また、上述の文献を参照することによるいかなる組み込みも、本明細書の明示的開示に反する主題が組み込まれないように解釈される。上記の文献の参照による組み込みはさらに限定され、それらの文献に開示される請求項は、参照により本明細書に組み込まれない。上記の文献を参照することによるいかなる組み込みは、さらに限定されており、本明細書に明示的に記述されない限り、その文献に開示されたいかなるの定義も参照により組み込まれない。
また、特許請求の範囲を解釈する場面においては、特許請求の範囲に「手段」又は「ステップ」という特定の用語が記載されていない限り、米国特許法35U.S.C. セクション112(f)の規定の適用を受けることはない。

Claims (21)

  1. 悪意のある実行ファイルを検出するためのシステムであって、
    前記実行ファイルは、インタープリタを含み、
    前記システムは、
    コンピューティングハードウェアを含むコンピューティングプラットフォームと、命令と、を備え、
    前記コンピューティングハードウェアは、少なくとも1つのプロセッサ、データストレージ、前記コンピューティングハードウェア上に実装されたオペレーティングシステム、及び入出力機構を有し、
    前記命令は、前記コンピューティングプラットフォーム上で実行されると、前記コンピューティングプラットフォームを、アナライザ、スクリプトエミュレータ、マシンコードエミュレータとして機能させ、
    前記アナライザは、実行ファイルに関連するスクリプトを擬似コードに変換し、前記擬似コードのエミュレーションプロセスを監視するように構成され、
    前記スクリプトエミュレータは、前記擬似コードを順次エミュレートし、エミュレーションの結果をエミュレータ動作ログに書き込むように構成され、
    前記マシンコードエミュレータは、前記アナライザにより疑似コードからマシンコードへの移行が検出された場合に、前記疑似コードをエミュレートするように構成され、
    前記アナライザはさらに、前記エミュレータ動作ログを解析し、前記実行ファイルが悪意のあるファイルであるか否かについて決定するように構成される、
    システム。
  2. 前記スクリプトは前記実行ファイルに含まれる、
    請求項1に記載のシステム。
  3. 前記アナライザは、
    前記スクリプトを前記実行ファイルから抽出し、
    前記スクリプトをデコンパイルし、前記スクリプトが書き込まれたプログラミング言語でオリジナルコードを出力するように構成される、
    請求項2に記載のシステム。
  4. 前記スクリプトは、入出力機構により受信され、前記インタープリタにより実行される、
    請求項1に記載のシステム。
  5. 前記アナライザは、前記スクリプトを擬似コードに変換する前に、前記スクリプトを易読化するように構成される、
    請求項4に記載のシステム。
  6. 前記マシンコードエミュレータは、
    前記マシンコードエミュレータを用いた前記擬似コードのエミュレーション中に起動された第2スクリプトをエミュレートするように構成される、
    請求項1に記載のシステム。
  7. 前記命令は単一の実行スレッドで実装され、
    前記単一の実行スレッドは、前記マシンコードエミュレータと前記スクリプトエミュレータとを切り替えるように構成される、
    請求項1に記載のシステム。
  8. 前記命令が複数の実行スレッドで実装され、
    前記マシンコードエミュレータを実行する第1実行スレッドは、前記スクリプトエミュレータを実行するための第2実行スレッドを起動するように構成される、
    請求項1に記載のシステム。
  9. コンピュータシステムに対する悪意のある実行ファイルを検出するためのマシン実装方法であって、前記コンピュータシステムはコンピューティングハードウェアを含み、前記コンピューティングハードウェアは、少なくとも1つのプロセッサ、データストレージ、前記コンピューティングハードウェア上に実装されたオペレーティングシステム、及び入出力機構を有し、前記実行ファイルはインタープリタを含み、
    前記方法は、変換ステップ、スクリプトエミュレータを用いたエミュレートステップ、マシンコードエミュレータを用いたエミュレートステップ、書込ステップ、及び解析ステップを含み、
    前記変換ステップは、少なくとも1つのプロセッサ上で実行されるアナライザを利用して、前記実行ファイルに関連するスクリプトを擬似コードに変換し、
    前記スクリプトエミュレータを用いたエミュレートステップは、少なくとも1つのプロセッサ上で実行されるスクリプトエミュレータを利用して前記疑似コードをエミュレートし、前記スクリプトエミュレータは、前記スクリプト内のコマンドを処理するように構成され、
    前記マシンコードエミュレータを用いたエミュレートステップは、少なくとも1つのプロセッサ上で実行されるマシンコードエミュレータを利用して、疑似コードからマシンコードへの移行が検出された場合に前記疑似コードをエミュレートし、
    前記書込ステップは、前記データストレージに記憶されたエミュレータ動作ログにエミュレーションの結果を書き込み、
    前記解析ステップは、前記アナライザにより、前記エミュレータ動作ログを解析し前記実行ファイルが悪意のあるファイルであるか否かについて決定する、
    マシン実装方法
  10. 前記スクリプトは前記実行ファイルに含まれる、
    請求項9に記載のマシン実装方法。
  11. 前記スクリプトを疑似コードに変換する前に、
    前記スクリプトを前記実行ファイルから抽出し、
    前記スクリプトをデコンパイルし、前記スクリプトが書き込まれたプログラミング言語でオリジナルコードを出力するように構成される、
    請求項10に記載のマシン実装方法。
  12. 前記スクリプトは、前記インタープリタにより実行されるように構成される、
    請求項9に記載のマシン実装方法。
  13. 前記アナライザは、前記スクリプトを擬似コードに変換する前に、前記スクリプトを易読化するように構成される、
    請求項12に記載のマシン実装方法。
  14. 前記解析ステップは、
    前記エミュレータ動作ログコンテンツと、前記データストレージに格納された1又は複数の悪意の振る舞いテンプレートと、を比較する比較ステップを備える、
    請求項9に記載のマシン実装方法。
  15. 前記解析ステップは、前記エミュレータ動作ログ内で検出された不審な動作毎に不審カウンタをインクリメントし、前記不審カウンタが閾値を上回った場合、前記実行ファイルが悪意のあるファイルであると決定する、
    請求項9に記載のマシン実装方法。
  16. 前記エミュレートステップは、
    疑似コードコマンドを読み取り、
    前記インタープリタにより、1又は複数の関連するコンピュータシステムリソース動作を決定し、
    前記1又は複数の関連するコンピュータシステムリソース動作のエミュレーションを実行する、
    請求項9に記載のマシン実装方法。
  17. 前記疑似コードからマシンコードへの移行は、
    オペレーティングシステムのAPI関数の呼び出し、
    前記データストレージに記憶された動的ライブラリからの関数の呼び出し、
    前記実行ファイルのリソースへのアクセスの呼び出し、又は
    前記スクリプトエミュレータで処理できない擬似コードコマンドの少なくとも1つにより検出される、
    請求項9に記載のマシン実装方法。
  18. 前記マシンコードエミュレータは、
    前記マシンコードエミュレータを用いた前記擬似コードのエミュレーション中に起動された第2スクリプトをエミュレートするように構成される、
    請求項9に記載のマシン実装方法。
  19. 前記少なくとも1つのプロセッサは、単一の実行スレッドを実装する単一のプロセッサであり、前記方法は前記単一の実行スレッドにより実行され、
    前記単一の実行スレッドは、前記マシンコードエミュレータと前記スクリプトエミュレータとを切り替えるように構成される、
    請求項9に記載のマシン実装方法。
  20. 前記方法は、前記少なくとも1つのプロセッサ上の複数の実行スレッドにより実行され、
    前記マシンコードエミュレータを実行する第1実行スレッドは、前記スクリプトエミュレータを実行するための第2実行スレッドを起動するように構成される、
    請求項9に記載のマシン実装方法。
  21. 悪意のある実行ファイルを検出するためのマルチスレッドコンピュータシステムであって、
    前記実行ファイルは、インタープリタを含み、
    前記システムは、少なくとも1つのプロセッサ、前記少なくとも1つのプロセッサと動作可能に接続されたメモリ、第1実行スレッド、第2実行スレッド、及び第3実行スレッドを含み、
    前記第1実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第1実行スレッドは、スクリプトを疑似コードに変換するように構成されるアナライザを実行し、前記スクリプトは、前記実行ファイルに含まれ又は前記インタープリタにより実行されるように構成され、
    前記第2実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第2実行スレッドは、スクリプトエミュレータを実行し、前記スクリプトエミュレータは、前記擬似コードを順次エミュレート、スクリプトエミュレータによるエミュレーションの結果を出力するように構成され、
    前記第3実行スレッドは、前記少なくとも1つのプロセッサにより実装され、前記第3実行スレッドは、マシンコードエミュレータを実行し、前記マシンコードエミュレータは、疑似コードからマシンコードへの移行が検出された場合に前記疑似コードをエミュレートし、マシンコードエミュレータによるエミュレーションの結果を出力するように構成され、
    前記アナライザはさらに、前記スクリプトエミュレータによるエミュレーションの結果及び前記マシンコードエミュレータによるエミュレーションの結果を解析し、前記実行ファイルがマルチスレッドコンピュータシステムに対して悪意のあるファイルであるか否かについて決定するように構成される、
    マルチスレッドコンピュータシステム。
JP2016166924A 2015-09-30 2016-08-29 エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法 Active JP6326103B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015141543 2015-09-30
RU2015141543A RU2622627C2 (ru) 2015-09-30 2015-09-30 Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов
US15/015,387 US9501643B1 (en) 2015-09-30 2016-02-04 Systems and methods for detecting malicious executable files containing an interpreter by combining emulators
US15/015,387 2016-02-04

Publications (2)

Publication Number Publication Date
JP2017107540A true JP2017107540A (ja) 2017-06-15
JP6326103B2 JP6326103B2 (ja) 2018-05-16

Family

ID=57287238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016166924A Active JP6326103B2 (ja) 2015-09-30 2016-08-29 エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法

Country Status (5)

Country Link
US (2) US9501643B1 (ja)
EP (1) EP3151151B1 (ja)
JP (1) JP6326103B2 (ja)
CN (1) CN106228069B (ja)
RU (1) RU2622627C2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10229268B2 (en) * 2015-03-28 2019-03-12 Leviathan, Inc. System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies
US10387656B2 (en) 2016-03-21 2019-08-20 Checkmarx Ltd. Integrated interactive application security testing
US10579796B1 (en) * 2016-12-02 2020-03-03 United Services Automobile Association (Usaa) Systems and methods of detecting malicious powershell scripts
IL259201B (en) 2017-05-10 2021-12-01 Checkmarx Ltd Using the same query language for static and dynamic application security testing tools
EP3444737B1 (en) * 2017-08-17 2022-11-16 AO Kaspersky Lab System and method of emulating execution of files
CN107528571B (zh) * 2017-09-07 2021-01-26 成都航天通信设备有限责任公司 一种fpga仿真器切换装置及方法
RU2659738C1 (ru) * 2017-09-29 2018-07-03 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного скрипта
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
EP3474175B1 (en) * 2017-10-18 2020-10-14 AO Kaspersky Lab System and method of managing computing resources for detection of malicious files based on machine learning model
WO2019089720A1 (en) * 2017-10-31 2019-05-09 Bluvector, Inc. Malicious script detection
RU2708355C1 (ru) * 2018-06-29 2019-12-05 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных файлов, противодействующих анализу в изолированной среде
US10776487B2 (en) 2018-07-12 2020-09-15 Saudi Arabian Oil Company Systems and methods for detecting obfuscated malware in obfuscated just-in-time (JIT) compiled code
RU2722239C1 (ru) 2019-11-26 2020-05-28 Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») Способ создания и использования формата исполняемого файла с динамическим расширяемым заголовком
US11233805B2 (en) * 2020-01-28 2022-01-25 Cyberark Software Ltd. Centralized security assessments of scripts in network environments
US11232198B2 (en) 2020-01-28 2022-01-25 Cyberark Software Ltd. Dynamic visualization of scripts based on centralized security assessments
RU2757409C1 (ru) * 2020-06-19 2021-10-15 Акционерное общество "Лаборатория Касперского" Эмулятор и способ эмуляции
US11836258B2 (en) 2020-07-28 2023-12-05 Checkmarx Ltd. Detecting exploitable paths in application software that uses third-party libraries
CN114021125A (zh) * 2021-11-10 2022-02-08 安天科技集团股份有限公司 终端设备异常检测方法、装置、计算设备及存储介质
WO2024163492A2 (en) * 2023-01-31 2024-08-08 Splunk Inc. Web analyzer engine for identifying security-related threats

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004517390A (ja) * 2000-10-24 2004-06-10 ヴィースィーアイエス インコーポレイテッド 解析仮想マシン
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
US7636945B2 (en) 2000-07-14 2009-12-22 Computer Associates Think, Inc. Detection of polymorphic script language viruses by data driven lexical analysis
US8341743B2 (en) 2000-07-14 2012-12-25 Ca, Inc. Detection of viral code using emulation of operating system functions
US7069583B2 (en) * 2000-07-14 2006-06-27 Computer Associates Think, Inc. Detection of polymorphic virus code using dataflow analysis
US7013483B2 (en) 2003-01-03 2006-03-14 Aladdin Knowledge Systems Ltd. Method for emulating an executable code in order to detect maliciousness
KR20040080844A (ko) 2003-03-14 2004-09-20 주식회사 안철수연구소 정적 분석을 이용한 악성 스크립트 감지 방법
US7362256B1 (en) * 2004-02-10 2008-04-22 Zilog, Inc. Loading a machine code API onto an 8-bit virtual machine to enable new functionality
US8037535B2 (en) 2004-08-13 2011-10-11 Georgetown University System and method for detecting malicious executable code
US7636856B2 (en) 2004-12-06 2009-12-22 Microsoft Corporation Proactive computer malware protection through dynamic translation
US7877780B2 (en) * 2005-04-01 2011-01-25 Parasoft Corporation System and method for enforcing functionality in computer software through policies
US7779472B1 (en) 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US8365286B2 (en) 2006-06-30 2013-01-29 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
US8151352B1 (en) 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US7559086B2 (en) 2007-10-02 2009-07-07 Kaspersky Lab, Zao System and method for detecting multi-component malware
US20090249311A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment
US8484727B2 (en) 2008-11-26 2013-07-09 Kaspersky Lab Zao System and method for computer malware detection
KR101493076B1 (ko) * 2009-04-07 2015-02-12 삼성전자 주식회사 버퍼 오버플로우 관리를 통한 바이러스 코드 실행방지장치 및 그 방법
RU91213U1 (ru) * 2009-10-01 2010-01-27 ЗАО "Лаборатория Касперского" Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов
US8499283B2 (en) * 2010-02-09 2013-07-30 Webroot Inc. Detection of scripting-language-based exploits using parse tree transformation
US9038184B1 (en) 2010-02-17 2015-05-19 Symantec Corporation Detection of malicious script operations using statistical analysis
US9049247B2 (en) * 2010-04-01 2015-06-02 Cloudfare, Inc. Internet-based proxy service for responding to server offline errors
US8370940B2 (en) * 2010-04-01 2013-02-05 Cloudflare, Inc. Methods and apparatuses for providing internet-based proxy services
TW201227385A (en) * 2010-12-16 2012-07-01 Univ Nat Taiwan Science Tech Method of detecting malicious script and system thereof
US9119017B2 (en) * 2011-03-18 2015-08-25 Zscaler, Inc. Cloud based mobile device security and policy enforcement
US8997233B2 (en) * 2011-04-13 2015-03-31 Microsoft Technology Licensing, Llc Detecting script-based malware using emulation and heuristics
US9032526B2 (en) * 2011-05-12 2015-05-12 Microsoft Technology Licensing, Llc Emulating mixed-code programs using a virtual machine instance
RU2472215C1 (ru) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Способ выявления неизвестных программ с использованием эмуляции процесса загрузки
RU2514141C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US8850581B2 (en) * 2012-11-07 2014-09-30 Microsoft Corporation Identification of malware detection signature candidate code
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004517390A (ja) * 2000-10-24 2004-06-10 ヴィースィーアイエス インコーポレイテッド 解析仮想マシン
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法

Also Published As

Publication number Publication date
EP3151151B1 (en) 2017-11-08
CN106228069A (zh) 2016-12-14
US10127381B2 (en) 2018-11-13
EP3151151A1 (en) 2017-04-05
RU2622627C2 (ru) 2017-06-16
US9501643B1 (en) 2016-11-22
CN106228069B (zh) 2019-07-05
US20170091457A1 (en) 2017-03-30
RU2015141543A (ru) 2017-04-05
JP6326103B2 (ja) 2018-05-16

Similar Documents

Publication Publication Date Title
JP6326103B2 (ja) エミュレータを組み合わせることにより、悪意のある実行ファイルであってインタープリタを有する実行ファイルを検出するためのシステム及び方法
US10642973B2 (en) System and method of analysis of files for maliciousness and determining an action
Rolles Unpacking Virtualization Obfuscators.
US7603713B1 (en) Method for accelerating hardware emulator used for malware detection and analysis
US8943596B2 (en) System and method for improving the efficiency of application emulation acceleration
WO2017107706A1 (zh) 基于arm指令虚拟化的elf文件保护方法及系统
US8479174B2 (en) Method, computer program and computer for analyzing an executable computer file
JP6568564B2 (ja) ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法
JP2004517390A (ja) 解析仮想マシン
JP2008523471A (ja) ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
Fleischer et al. Memory corruption attacks within Android TEEs: A case study based on OP-TEE
RU2649794C1 (ru) Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла
US11921850B2 (en) Iterative memory analysis for malware detection
EP4332805A1 (en) Emulation-based malware detection
Babar et al. Generic unpacking techniques
RU101217U1 (ru) Система ускорения эмуляции процессов
EP3361406A1 (en) System and method of analysis of files for maliciousness in a virtual machine
EP4312401A1 (en) Methods and systems for analyzing environment-sensitive malware with coverage-guided fuzzing
Kim et al. MAS: Malware Analysis System Based on Hardware-Assisted Virtualization Technology
De Castro Towards Automatic Generation of Anti-Virus Emulators

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180329

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: 20180410

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180413

R150 Certificate of patent or registration of utility model

Ref document number: 6326103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250