JP2017021777A - 仮想スタックマシンで実行可能な有害なファイルを検出するためのシステムおよび方法 - Google Patents

仮想スタックマシンで実行可能な有害なファイルを検出するためのシステムおよび方法 Download PDF

Info

Publication number
JP2017021777A
JP2017021777A JP2016093094A JP2016093094A JP2017021777A JP 2017021777 A JP2017021777 A JP 2017021777A JP 2016093094 A JP2016093094 A JP 2016093094A JP 2016093094 A JP2016093094 A JP 2016093094A JP 2017021777 A JP2017021777 A JP 2017021777A
Authority
JP
Japan
Prior art keywords
file
data
cluster
function
checksum
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
JP2016093094A
Other languages
English (en)
Other versions
JP6277224B2 (ja
Inventor
エム. イワノフ アントン
M Iwanov Anton
エム. イワノフ アントン
ブイ. リスキン アレクサンダー
V Liskin Alexander
ブイ. リスキン アレクサンダー
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 JP2017021777A publication Critical patent/JP2017021777A/ja
Application granted granted Critical
Publication of JP6277224B2 publication Critical patent/JP6277224B2/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
    • 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/565Static detection by checking file integrity
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/562Static detection
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Detection And Correction Of Errors (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】仮想スタックマシンで実行可能である有害なファイルを検出する。
【解決手段】ファイルのファイル・セクションにおけるパラメータ及び仮想スタックマシンで実行可能なファイルの関数におけるパラメータを含むデータを識別する210。データベースにおいて、第一閾値を超えるファイル・セクションの1つのパラメータの値、及び、第二閾値を越える上記関数のパラメータの値を含む安全なファイルのクラスタを検索する220。安全なファイルにおける識別されたクラスタに基づいて、仮想スタックマシンで実行可能なファイルにおけるデータのクラスタを生成する230。仮想スタックマシンで実行可能なファイルのデータにおける生成されたクラスタのチェックサムを計算する240。データベースにアクセスし計算されたチェックサムが、有害なファイルのチェックサムのデータベースでのチェックサムと一致する場合、有害なファイルであると判断する260。
【選択図】図2

Description

本出願は、米国特許法35 U.S.C. 119(a)-(d)に基づいて、2015年6月30日に出願されたロシア特許出願第2015125974についての優先権の利益を主張し、本明細書中に援用する。
本開示は、一般的にコンピュータセキュリティの分野に関連し、より具体的には、仮想スタックマシンで有害なファイルを検出するシステム及び方法に関連するものである。
過去10年間におけるコンピュータ技術の怒涛の発展、及び、多様なコンピューティングデバイス(例えば、パーソナルコンピュータ、ノートPC、タブレット、スマートフォンなど)の広範囲な普及は、多様な活動領域と膨大なタスク(例えば、ネットサーフィンから銀行振替、電子文書回覧まで)における、これらのデバイスの使用が大きな要因である。コンピューティングデバイスの数及びこれらのデバイスで動作しているソフトウェアの成長と共に、有害なプログラム(悪意のあるソフトウェアまたは不正なソフトウェアとして知られている)の数もかなり成長している。
多種多様な種類の有害なプログラムがある。それらの中には、ログインとパスワード、銀行情報、電子文書等のユーザのデバイスからの個人情報及び機密データを盗むものがある。他方、他のコンピュータ又はコンピュータネットワークに対して強引にパスワードを得ることによって、サービス拒否(DDOS)等のアタック又はソートのために、ユーザデバイスからいわゆるボットネット(botnet)を生成するものもある。さらに他のものには、押し付けがましい広告、有料のサブスクリプション、有料番号をSMSに送ることによって、有料コンテンツをユーザに提供するものもある。
特別なアンチウイルスプログラムは、有害なプログラムに対応するために使用され、つまり、有害なプログラムを検出し、感染を防止し、有害なプログラムに感染したコンピュータ・システムを復元するために、用いられている。具体的には、アンチウイルスプログラムは、"署名解析"等の有害なプログラムにおける十分な多様性を検出するために、様々な技術を採用しており、それは、有害なプログラムのデータベースから特定のセクションを検索し、それは、既知のコード(署名)を有し、解析されているプログラムのコードにおける対応するセクションである。
他の技術としては、"ヒューリスティック分析"を含み、
それは、解析されているプログラムを動作し、エミュレーション・ログ(API関数コールでのデータ、転送されたパラメータ、解析されているプログラムのコードセクション等を含む)を作成し、及び、有害なプログラムのエミュレーションのデータベースから、上記データを有する生成されたログに対応するものを検索する、エミュレーションである。
他の技術は、未だに"ホワイトリスト"と"ブラックリスト"を利用しており、それは、有害なプログラム(ブラックリスト)のチェックサムのデータベース又は合法なプログラム(ホワイトリスト)のチェックサムのデータベースで、解析されているプログラム(又はその一部)の計算されたチェックサムを検索することを含む。
そして最後に、技術は、
システムで実行中である解析プログラムのAPI関数コールの傍受によって、
解析プログラムの動作ログ(API関数コールでのデータ、転送されたパラメータ、解析されているプログラムのコードセクション等を含む)の生成によって、
及び、有害なプログラムのコールのデータベースから、データを有する生成されるログに対応するデータの検索によって、
積極的な保護を用いている。
次に、有害なプログラムは、アンチウイルスプログラムによって、感染したコンピュータ・システムにあるその存在の検出に抵抗するようなメソッドをますます用いるようになっている。これらの技術は、署名解析に対抗するために、コードの難読化を含み、すなわち、オリジナルのテキスト(JavaScript(登録商標)などのスクリプトのような)又はプログラムの実行可能コードに、それらの機能性を保持し、解析、動作アルゴリズムの理解、及び逆コンパイル時にそれらの変更に抵抗する状況を与えるものである。また、有害なプログラムは、ヒューリスティック解析を破るために、より複雑な挙動を利用し、莫大な数の操作(Operation)又はAPI関数コールを含み、その使用は、プログラムの入出力動作の結果に影響せず、未だに、アンチウイルスプログラムによって混乱させられている。最後に、このようなプログラムは、また、積極的な保護を破るためのサードパーティ製のプログラムの動作を監視する。すなわち、オペレーティング・システムでのサードパーティ製のプログラムの振る舞い、アンチウイルスプログラムの検索及びそれらに対するアクションの実行(例えば、解析のためにそれら自身のコードを隠し、又は置き換える等)を継続的に監視することである。
様々な技術を用いることができ、それは、コードジェネレータ(すなわち、特定の機能性を有する有害なプログラムを自動的に作成できる設計者プログラム)、難読化ツール(すなわち、その機能性を変更することなく解析を複雑にする、プログラムの実行可能コードを変更することができるプログラム)、パッカー(すなわち、プログラムに導入されたプログラムモジュール、プログラムの実行可能コードを暗号化し、起動時に復号化する)等が挙げられる。ハッカーが、迅速かつ楽に、その有害なプログラムの新しいバージョンを多く作成し、広めることができ、アンチウィルス・アプリケーションによって検出されないプログラムなどが挙げられる。
上記の方法によって得られた有害なプログラムを効果的に検出するために、技術は用いられ、それによって、特定の特性(例えば、1つのバージョンのパッカーによってパックされた有害なプログラムのファイル、類似の振る舞いを持つ有害なプログラム等)を持つ有害なプログラムのグループ(すなわち、クラスタ)が集められる。さらに、集められたクラスタのファイルで、類似のコードセクション、エミュレーション・ログからのデータ、又は、振る舞い(例えば、一連のAPI関数コール)の検索がなされる。最後に、検出のルールは作成され、それによって、クラスタにおける1つの有害なプログラムのデータ(コードセクションなど)が既知である場合、このクラスタおける他の有害なプログラムも検出されることができる。
このアプローチにおける一つの重要な制限としては、有害なプログラムが動作している(例えば、モバイルアーキテクチャのARM)プラットフォーム又は有害なプログラムが構成するデータ型(JavaScript(登録商標)スクリプト、JavaScript(登録商標)バイトコード、又はコンパイルされたC++コード等)とは無関係に有害なファイルを検出するための普遍的な解決策はないということである。したがって、クラスタリングのために、プラットフォームとデータ型を個別に扱ってアルゴリズムを用いることがしばしば必要である。且つ、有害なプログラムを検出するためのルールの作成が必要となる。
ユーザコンピュータでのそれらの伝播及び破壊活動のために、仮想マシン(およびその脆弱性)を積極的に利用している有害なプログラムが多数存在し、仮想スタックマシン(Adobe Flash又はJava(登録商標)仮想マシン等)を特に利用している。このような有害なプログラムの検出は、PCでの通常の有害なプログラムの検出と比較して、更なる困難性を伴っており、それは、検出における標準的な方法は、(仮想マシンのアーキテクチャ的特徴に起因して)適用されないか、又は、遅い或いは非効率(検出レベルが低すぎる)であるかのどちらかによるためである。それゆえ、仮想スタックマシンでのマルウェアの検出のために、より効率的な技術が必要となる。
仮想スタックマシンで実行可能である有害なファイルを検出するため、システム、方法、及びコンピュータプログラム製品が開示される。1つの態様において、例示的な方法は、ハードディスクプロセッサによって、仮想スタックマシンで実行可能なファイルからのデータであって、ファイルのファイル・セクションにおけるパラメータ及び仮想スタックマシンで実行可能なファイルの関数におけるパラメータのうち少なくとも1つを含むデータ、を識別する工程と、
ハードディスクプロセッサによって、前記識別されたデータに基づいて、データベースにおいて、第一閾値を超える上記ファイル・セクションの1つのパラメータの値、及び、第二閾値を越える上記関数の1つのパラメータの値、のうち少なくとも1つを含む、安全なファイルの少なくとも1つのクラスタを検索する工程と、
ハードディスクプロセッサによって、安全なファイルにおける識別された少なくとも1つのクラスタに少なくとも部分的に基づいて、仮想スタックマシンで実行可能なファイルにおけるデータのクラスタを生成する工程と、
ハードディスクプロセッサによって、仮想スタックマシンで実行可能なファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算する工程と、
ハードディスクプロセッサによって、有害なファイルのチェックサムのデータベースにアクセスする工程と、
計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムのデータベースでのチェックサムと一致する場合、ハードディスクプロセッサによって、仮想スタックマシンで実行されたファイルが有害なファイルであると判断する工程を含む。
一実施態様では、ファイルのファイル・セクションにおけるパラメータは、コード、名前、ヘッダー型、ファイル・セクションでのデータへのオフセット、及びファイル・セクションでのデータサイズ、のうち少なくとも1つを含む。
一実施態様では、ファイルの関数のパラメータは、関数本体のインデックス、ファイル・セクションでの関数コードの位置と長さ、関数記述子のインデックス、関数実行中のスタックの最大の深さ、関数で使用されるローカル変数の数、関数の名前、オペランドの数、リターンのあるデータ型、のうち少なくとも1つを含む。
一実施態様では、第一閾値は、ファイル・セクションの型の数である。
一実施態様では、第二閾値は、関数で使用されるローカル変数の数である。
一実施態様では、少なくとも1つのチェックサムを計算する工程は、MD5セットを計算することによりファジーチェックサムを計算する工程を備え、MD5セットは、これらのセクションのセクション・ヘッダ型及びサイズを含むクラスタ、ファイルの関数で使用されるローカル変数の数を含むクラスタ、及び、仮想スタックマシンで実行可能な関数の名前を含むクラスタ、を含むものである。
一実施態様では、仮想スタックマシンで実行可能なファイルが有害なファイルであると判断する工程は、MD5セットのクラスタの少なくとも2つのチェックサムが、有害なファイルのチェックサムのデータベースで、少なくとも2つのチェックサムと一致するという判断を行なう工程を備えている。
一実施態様では、ファイルのデータにおけるクラスタの生成は、クラスタリングのルールに従って実行される。
そのルールは、
ファイルから識別されているデータの配列で、識別されたデータを連続クラスタに配置するというルール、
ファイル・セクションのデータのサイズがゼロと等しい場合、データのクラスタを生成するために、ファイル・セクションのパラメータを使わないというルール、
関数で使用されているローカル変数の数がゼロと等しい場合、データのクラスタを生成するために、ファイルの関数のパラメータを使わないというルール、及び、
データのクラスタを生成するために、安全なファイルにおけるクラスタのデータベースで識別されたクラスタから識別されたデータを使わないというルールのうち少なくとも1つを含む。
他の実施態様では、仮想スタックマシンで実行される有害なファイルを検出するための例示的なシステムは、少なくとも1つのデータベースとハードウェアプロセッサを含む。上記データベースは、安全なファイルのクラスタと有害なファイルのチェックサムを保存するように構成され、
上記ハードウェアプロセッサは、
仮想スタックマシンで実行可能なファイルからのデータであって、
ファイルのファイル・セクションにおけるパラメータ及び仮想スタックマシンで実行可能なファイルの関数におけるパラメータのうち少なくとも1つを含むデータを識別し、
識別されたデータに基づいて、データベースで、第一閾値を超えるファイル・セクションの1つのパラメータの値及び第二閾値を超える関数の1つのパラメータの値のうち少なくとも1つを含む、安全なファイルにおける少なくとも1つのクラスタを検索し、
安全なファイルにおける識別された少なくとも1つのクラスタに少なくとも部分的に基づいて、仮想スタックマシンで実行可能なファイルのデータのクラスタを生成し、
仮想スタックマシンで実行可能なファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算し、
有害なファイルのチェックサムのデータベースにアクセスし、及び、
計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムのデータベースでのチェックサムと一致する場合、仮想スタックマシンで実行可能なファイルが、有害なファイルであると判断するように構成される。
他の態様では、仮想スタックマシンで有害なファイルを検出するため、コンピュータ実行可能命令を格納する例示的な非一時的コンピュータ可読媒体であって、その命令は以下を含む。
その命令は、
仮想スタックマシンで実行可能なファイルからのデータであって、
上記ファイルのファイル・セクションにおけるパラメータ及び仮想スタックマシンで実行可能にされるファイルの関数におけるパラメータ、のうち少なくとも1つのパラメータを含むデータ、を識別する命令と、
識別されたデータに基づいて、データベースで、第一閾値を超えるファイル・セクションの1つのパラメータの値及び第二閾値を超える関数の1つのパラメータの値、の少なくとも1つを含む、安全なファイルにおける少なくとも1つのクラスタを検索する命令と、
安全なファイルにおける識別された少なくとも1つのクラスタでの少なくとも1つに基づいて、仮想スタックマシンで実行可能なファイルにおけるデータのクラスタを生成する命令と、
仮想スタックマシンで実行可能なファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算する命令と、
有害なファイルのチェックサムのデータベースにアクセスする命令と、
及び、計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムのデータベースでのチェックサムと一致する場合、仮想スタックマシンで実行可能なファイルが有害なファイルであると判断する命令とを含む。
例示的態様における上記の簡単な概要は、本開示の基本的な理解を提供するのに役立つ。この概要は、すべての企図される態様における広範な概観ではなく、すべての態様の主要又は重要な要素を特定することも、本開示の全て又は任意の範囲の態様を線引きすることも意図されていない。その唯一の目的は、以下の開示のより詳細な説明の前置きとして簡略化された形式で、1つ又は複数の態様を提示することである。前述の達成のために、本開示の1つまたは複数の態様は、特許請求の範囲に記載され、特に指摘された特徴を含む。
添付図面は、本明細書に組み込まれ、その一部を構成しており、本開示の1つ又は複数の実施の態様を示しており、詳細な説明と共に、その原則と実装を説明するのに役立つ。
図1は、例示的態様に係る、仮想スタックマシンで有害なファイルを検出するためのブロック図を示す。
図2は、例示的態様に係る、仮想スタックマシンで有害なファイルを検出する方法のフローチャートを示す。
図3は、例示的態様に係る、開示されたシステム及び方法を実装することができる汎用コンピュータ・システムの一例を示す。
例示的態様は、モバイルデバイスでの悪質なファイルを検出するためのシステム、方法、及びコンピュータプログラム製品における説明で本明細書に記載されている。当業者は、以下の説明は単なる例示であり、いかなる方法においても限定されることを意図するものではないことを理解するであろう。他の態様は、本開示の利益を有する当業者に対して容易に示される。添付の図面に示されるように、参照は例示的態様の実装に対して以下で詳細に説明される。同じ参照指標が、同一または同様の項目を参照するために、図面全体と以下の説明を通じて、可能な限り使用される。
以下の開示は、開示されたシステムおよび方法における変形の態様を説明する際に使用される定義と概念を紹介するものである。
アンチウイルスプログラム(Аntivirus program) - 有害なプログラムを検出し、及び、そのようなプログラムによって感染(変更)したファイル復元するための特別なプログラム、さらに、予防としてのプログラムでもある。有害なプログラムによるファイル又はオペレーティング・システムの感染(変更)の予防のためのプログラム。
安全なプログラム(safe program) - ユーザ認可なく、情報の破壊、遮断、変更又はコピー、或いは、コンピュータ又はコンピュータネットワークの作業を中断させることを意図していないプログラム。
安全なファイル(Safe file) - 安全なプログラムのコンポーネントであるファイル。
有害プログラム(Harmful program) -ユーザ認可なく、情報の破壊、遮断、変更又はコピー、或いは、コンピュータ又はコンピュータネットワークの作業を中断させるために特別に設計されたプログラム。
有害ファイル(Harmful file) - 有害なプログラムのコンポーネントであるファイル。
仮想マシン(Virtual machine) - 特定のターゲットプラットフォームのハードウェアをエミュレートし、ホストプラットフォームでのターゲットプラットフォーム用のプログラムを実行する、ソフトウェア又はハードウェアシステム。
又は、プラットフォームのハードウェアの仮想化を提供するために必要とされ、それはプログラム及びオペレーティング・システムでさえも互いに分離した環境を作成する。
仮想スタックマシン(Virtual stack machine) - たった1つのデータ構造(すなわち仮想マシンのスタック)に配置されている仮想マシン(そこでは関数のすべてのオペランドが実行されている)。仮想スタックマシンの例としては、Java(登録商標)仮想マシン、Adobe Flash(登録商標)仮想マシン、又は共通言語実行環境.NETである。
クラスタ(Cluster) -関連のある、いくつかの均質な要素(例えば、ファイルのセクション名)。それは、特定の性質を有する独立したユニットとして扱うことができる。
クラスタリング(Clustering)- オブジェクトのサンプルについての情報を含むデータを収集する手順と、比較的均質なグループへオブジェクトを続けて配置する手順。
チェックサム(ハッシュ)Checksum (hash) -特定のアルゴリズムを使用して、一連のデータに対して計算された値(周期的冗長コードCRC32又は暗号強度の高いアルゴリズムMD5等)とその伝送又は格納の間にデータの整合性をチェックするために使用される値。
ファジーチェックサム(ファジィハッシュ)Fuzzy checksum (fuzzy hash) - 一連のデータに対して計算された値及び当該データセットにおけるある選択された部分に対して計算されたチェックサム(MD5又はSHA256等)の収集で構成されている。
図1は、仮想スタックマシンで有害なファイルを検出するための例示的なシステムのブロック図を示す。一般的に、システム100は、それらが有害であるか否かを判断するために、スタック仮想マシンで実行可能なファイルを処理する。システム100は、特定の型のファイル(すなわち、スタック仮想マシンで実行可能なファイル)を処理するように構成されたアンチウィルス・アプリケーションのコンポーネントとして実装することができる。アンチウィルス・アプリケーションは、PC又はアンチウイルスサーバー等、スタック仮想マシン又は物理マシンで実行されることができる。後者の場合、アンチウィルス・アプリケーションは、すべての仮想スタックマシンとの相互作用はなく、単にユーザコンピュータ又は他のデバイス或いはサービスから受け取ったファイルを処理するだけである。
図に示すように、システム100は、ファイル構造解析モジュール110、クラスタリングモジュール120、チェックサム計算モジュール130、テストモジュール140、安全なファイルにおけるクラスタのデータベース150、及び有害なファイルにおけるクラスタのチェックサムのデータベース160を含む。
一つの例示的な態様によれば、ファイル構造解析モジュール110は、
例えば、ファイル拡張子(例えば、*.swf)又はファイルヘッダ(例えば、FWS)に基づいて、仮想スタックマシンで実行可能なファイルを識別し、
識別されたファイルの構造を解析し、
解析しているファイルから特定のデータを識別し、
解析しているファイルから識別されたデータに基づいて、安全なファイル150におけるクラスタのデータベースにあるクラスタの検索を実行し、
安全なファイルのクラスタのデータベース150で見つけられるクラスタから特定のデータを識別し、
及び、仮想スタックマシンで実行可能なファイルであって、解析しているファイルから識別されたデータと、安全なファイルにおけるクラスタのデータベース150で見つけられたクラスタを、クラスタリングモジュール120へ、転送する、
ように構成される。
例示的な態様によれば、
ファイル構造解析モジュール110は、解析しているファイルから特定のデータを識別するように構成され、そのデータは、ファイル・セクションのパラメータ(コード、名前、ヘッダー型、セクションでのデータへのオフセット、及びセクションデータのサイズ等)を含むが、それに限定されない。
また、例示的な態様によれば、ファイル構造解析モジュール110も、他のデータを識別するように構成され、そのデータは、仮想スタックマシンで実行可能な関数のパラメータ(関数本体のインデックス、セクションでの関数コードの位置と長さ、関数記述子のインデックス、関数実行中のスタックの最大の深さ、関数によって使用されるローカル変数の数、関数の名前、オペランドの数、リターンがあるデータ型)を含むが、それに限定されない。
ファイル構造解析モジュール110は、仮想スタックマシンで実行可能なファイルの構造について、仮想スタックマシンのオペランドの知識を用いて、解析しているファイルから、データを抽出する。
仮想スタックマシンで実行可能な様々なファイルのファイル構造における本知識は、様々なファイルの構造を解析すること、ファイルの特定の要素(関数)をエミュレートすること、及び、他のファイル解析技術を用いることによって得られる。
例示的な態様によれば、ファイル構造解析モジュール解析は、安全なファイル150におけるクラスタのデータベースで、クラスタを検索するように、さらに構成されている。クラスタ検索は、ファイル・セクションのパラメータ(例えば、セクションコード、セクションの名前、セクション・ヘッダ型、セクションでのデータへのオフセット、及びセクションデータのサイズ)に基づいている。さらに、クラスタ検索は、仮想スタックマシンで実行可能な関数のパラメータ(関数本体のインデックス、セクションでの関数コードの位置と長さ、関数記述子のインデックス、関数実行中のスタックの最大の深さ、関数によって使用されるローカル変数の数、関数の名前、オペランドの数、及び、リターンがあるデータ型)に基づいている。
1つの態様によれば、ファイル構造解析モジュール110は、仮想スタックマシンで実行可能なファイルから識別されたデータ毎に、安全なファイルにおけるクラスタのデータベース150で、以下の値を含むクラスタの検索を実行するようにさらに構成されている。上記の値は、例えば、所定の閾値を超えるファイル・セクションの1つのパラメータ(例えば、ファイルのセクションの型の数)、及び/または、所定の閾値を超えた仮想スタックマシンで実行可能な関数のパラメータの1つの値(例えば、関数によって使用されているローカル変数の数)である。
さらに、例示的な態様によれば、クラスタリングモジュール120は、クラスタリングルールを用いて、解析モジュール110から得られたデータからクラスタを生成し、生成されたクラスタをチェックサム計算モジュール130に転送するように構成されている。
1つの態様によれば、クラスタリングルールは、以下で指定されたルールを含むがそれに限定されない。そのルールは、例えば、
収集されたデータは、ファイルからの識別の順に、クラスタ内に配置されるべきである、というルール、
ファイル・セクションのパラメータは、ファイル・セクションデータのサイズがゼロと等しい場合、クラスタの生成に使用されるべきではない、というルール、
仮想スタックマシンで実行可能な関数におけるパラメータは、関数で使用されるローカル変数の数がゼロに等しい場合、クラスタの生成に使用されるべきではない、というルール、
及び、安全なファイルにおけるクラスタのデータベースで見つけられたクラスタからの識別データは、クラスタの生成に使用されるべきではない、というルール、である。
例示的な態様によれば、チェックサム計算モジュール130は、クラスタリングモジュール120から得られたクラスタの1つ又は複数のチェックサムを計算し、計算されたチェックサムをテストモジュール140に転送するように構成されている。
1つの態様によれば、クラスタのチェックサムは、1つ又は複数のファジーチェックサム(例えば、MD5又はSHA256等)であってもよく、それは、解析モジュール110から得られるデータ(ファイル・セクションの名前と、仮想スタックマシンで実行可能な関数の名前における、MD5セット等)における様々な型から計算される。
例示的な態様によれば、テストモジュール140は、有害なファイルのクラスタにおけるチェックサムのデータベース160で、チェックサム計算モジュール130から得られたチェックサムの検索を実行し、及び、チェックサム計算モジュール130から得られたチェックサムを、有害なファイルのクラスタにおけるチェックサムのデータベース160で、検索した結果を検出するイベントで、有害なファイルを検出するように構成されている。
1つの態様によれば、有害なファイルのクラスタにおけるチェックサムのデータベース160で、チェックサム計算モジュール130から得られたファジーチェックサムを検出する条件は、チェックサム計算モジュール130から得られたファジーチェックサムを構成するチェックサムと一致する数、及び、有害なファイルのクラスタにおけるチェックサムのデータベース160に保存されているそれらのファジーチェックサムを構成するそれらのチェックサムと一致する数、が閾値を超える数であるという条件である。
次の説明は、有害なファイルAdobe Flash(登録商標)を検出する例で、仮想スタックマシンで実行可能な有害なファイルの検出における、図2に示すシステムの操作の一例を提供する。
特に、ファイルlaunchme.swfが有害なファイルを検出するための解析にたどり着いたと仮定して、マルチメディアリソース(画像、オーディオやビデオクリップ等)に加えて、ActionScript 3の言語のコードを含む。この例では、ファイル構造解析モジュール110は、上述したように、解析のためにファイルlaunchme.swfからのデータを識別する。
1つの態様では、データは、ファイル・セクションのパラメータ(コード、名前とセクション・ヘッダ型、データへのオフセット、及びセクションデータのサイズ)を含めることができる。
例えば、
code = 69 (FileAttributes), type = short, offset = 0x14, length = 0x4
code = 9 (SetBackgroundColor), type = short, offset = 0x1a, length = 0x3
code = 82 (DoABC), type = long, offset = 0x1f, length = 0x1a2e
例示的な態様によれば、データは、仮想スタックマシンで実行可能なフラッシュファイルに含まれているActionScript3言語のコードにおける関数のパラメータ(関数本体のインデックス、セクションでの位置と長さ、関数記述子インデックス、関数実行中のスタックの最大の深さ、関数で使用されるローカル変数の数、関数の名前)を含むことができる。
例えば:
Method body 1: offset = 0xd24, length = 0xae, method = 0,
max_stack = 0x3, local_count = 0x1, exception_count = 0x0,
init_scope_depth = 0x0, max_scope_depth = 0x8, trait_count = 0x0.
script0$init():*
上記データを得た後、ファイル構造解析モジュール110は、安全なファイルにおけるクラスタのデータベース150で、ファイル・セクション(例えば、コード(code) = 69, 型(type) = short)の一連のパラメータをもつクラスタ及び仮想スタックマシン(script0$init()等)で実行可能な関数のパラメータが、解析されているlaunchme.swfファイルから識別されたセクション及び関数におけるパラメータと一致しているかを検索するように構成されている。
安全なファイルのクラスタが見つかった場合は、ファイル構造解析モジュール110は、安全なファイルのクラスタであるとセクションのパラメータ(コード、名前とセクション・ヘッダ型、データへのオフセット、及び、セクションデータのサイズ)を識別するように構成されている。
例えば、
code = 69 (FileAttributes), type = short, offset = 0x14, length = 0x4
また、ファイル構造解析モジュール110は、仮想スタックマシンで実行可能な関数のパラメータ(関数本体のインデックス、セクションでの機能コードの位置及び長さ、関数記述子のインデックス、関数実行中のスタックの最大の深さ、関数によって使用されるローカル変数の数、関数の名前)を識別するように構成されている。
例えば、
Method body 1: offset = 0xc67, length = 0xae, method = 0,
max_stack = 0x3, local_count = 0x1, exception_count = 0x0,
init_scope_depth = 0x0, max_scope_depth = 0x8, trait_count = 0x0.
script0$init():*
識別されたデータは、その後、クラスタリングモジュール120に送信することができる。例示的な態様によれば、クラスタリングモジュール120は、解析モジュール110から得られたデータから、3つのクラスタを作成することができる。
・セクションデータのセクション・ヘッダ型とサイズを含むクラスタ(例えば、short, 0x4, short, 0x17, long, 0x2c, short, 0x5,)
・仮想スタックマシンで実行可能な関数によって使用されるローカル変数の数を含むクラスタ(例えば、0x7, 0x5, 0x11, 0x7, 0xc, 0x2, 0xf, 0x5, 0x5, 0xa)
・仮想スタックマシンで実行可能な関数の名前を含むクラスタ(例えば、cript0$init, script0$read_data, script0$inject)
作成されたクラスタは、解析しているファイルから識別するために、データ(すなわち、セクションのパラメータ、及び、仮想スタックマシンで実行可能である関数)を含み、それは、安全なファイルにおけるクラスタのデータベース150で見つけられたクラスタから識別されたデータ(生成されたクラスタに含まれるものではない)は除かれる。生成されたクラスタは、その後、チェックサム計算モジュール130に送られることができる。
例示的な態様によれば、チェックサム計算モジュール130は、クラスタリングモジュール120から受け取ったクラスタに対するファジーチェックサムを計算するように構成されている。つまり、それは、これらのセクションのセクション・ヘッダ及びサイズを含むクラスタ、関数で使用されるローカル変数の数を含むクラスタ、及び、仮想スタックマシンで実行可能な関数の名前を含むクラスタ、のMD5からなるMD5セットを計算する。
0xed4d37994bec687a9c31844e47928ec3
0xb07b30a8430a63ae8ef5bad369d653de
0xcaa351de76e20cff266d24b9bf9ebdc1
計算されたファジーチェックサムは、その後、テストモジュール140に送られる。例示的態様によれば、テストモジュール140は、有害はファイル160におけるクラスタのチェックサムのデータベースで、ファジーチェックサムの検索を実行し、そのようなファジーチェックサムは、少なくとも3つのMD5チェックサムのセットを構成し、そのうち少なくとも2つのセットは、チェックサム計算モジュール130から得られたファジーチェックサムのMD5チェックサムと一致する。
例示的な態様によれば、このようなファジーサムが見つかった場合、テストモジュール140は、解析しているファイルlaunchme.swfが、有害であると結論付ける。データベース160内のチェックサムと一致する計算されたファジーチェックサムの数は、システム設計者の設計する実装に応じて変化できることを理解すべきである。
図2は、例示的態様に係る、仮想スタックマシンでの有害なファイルを検出する方法のためのフローチャートを示す。示されるように、最初に、工程210で、ファイル構造解析モジュール110は、解析しているファイルからのデータを識別する。次に、工程220で、ファイル構造解析モジュール110は、安全なファイルのデータベース150でクラスタの検索を実行する。工程230に示されるように、クラスタリングモジュール120は、解析しているファイルのクラスタの収集に用いられる。工程240で、チェックサム計算モジュール130は、集められたクラスタのチェックサムを計算し、工程250で、テストモジュールは、有害なファイルのチェックサムのデータベース150でチェックサムのテストを行うのに用いられる。最後に、工程260で、テストモジュール140は、ファイルが有害であるかについて決定を行う。
1つの態様によれば、工程210で、データは、解析しているファイルから識別され、それは、仮想スタックマシンで実行可能なファイルである。上述のように、工程210で、解析しているファイル(仮想スタックマシンで実行可能なファイル)から識別されることができるデータは、ファイル・セクションのパラメータ及び、仮想スタックマシンで実行可能な関数のパラメータを含むことができる。
次に、工程220で、安全なファイルにおけるクラスタのデータベース150で、解析されているファイルであって且つ仮想スタックマシンで実行可能なファイルから工程210で識別されたデータ毎に、例えば、以下の値を含むクラスタの検索がなされる。
その値は、
与えられた閾値(例えば、ファイルのセクションの型の数)を超えるファイル・セクションの1つのパラメータの値、
与えられた閾値(例えば、関数によって用いられるローカル変数の数)を超える、仮想スタックマシンで実行可能な関数の1つのパラメータの値、である。
そして、データは、見つけられたクラスタから識別される。
上記示すように、安全なファイルにおけるクラスタのデータベース150で見つけられるクラスタから識別されることができるデータは、ファイル・セクションのパラメータ、及び、仮想スタックマシンで実行可能な関数におけるパラメータを含むことができる。
次に、工程230で、クラスタリングルールによって、解析されているファイルのクラスタは生成される。
次に、工程240で、チェックサムは、工程230で生成されたクラスタに対して計算される。工程230で生成されるクラスタに対して計算されたチェックサムは、ファジーチェックサムである。工程230で生成されるクラスタに対して計算されたファジーチェックサムは、工程210で識別されたデータ(ファイル・セクションの名前及び関数の名前におけるMD5セット等)の様々な型からの一連のチェックサム(例えば、MD5又はSHA256)である。
工程250で、チェックサムは、有害なファイルにおけるクラスタのチェックサムのデータベース160でテストされる。有害なファイルにおけるクラスタのチェックサムのデータベース160で、工程240で得られたファジーチェックサムを検出する条件は、工程240で得られたファジーチェックサムを構成するチェックサムと一致する数、及び、有害なファイルにおけるクラスタのチェックサムのデータベース160に保存されているファジーチェックサムを構成するそれらチェックサムが、与えられた閾値を超える数であるという条件である。
最後に、工程260では、解析しているファイルが有害であるかどうかについての決定がなされる。有害なファイルにおけるクラスタのチェックサムのデータベース160内で、工程240で得られたファジーチェックサムを検出するイベント(工程250)で、解析しているファイルが確かに有害であるということを判断する。
図3は、例示的態様に係る、開示されたシステム及び方法が実装されることができる、汎用コンピュータ・システム(パーソナルコンピュータ又はサーバであってもよい)の例である。
示されるように、コンピュータ・システムは、中央処理ユニット21、システムメモリ22及びシステムバス23を含み、システムバスは、様々なシステムコンポーネント(中央処理ユニット21に付随するメモリを含む)に接続している。システムバス23は、先行文献で知られている任意のバス構造のように実現され、順にバスメモリ又はバスメモリコントローラ、周辺バス、及びローカルバスを含み、それは、任意の他のバスアーキテクチャと相互作用することができる。システムメモリは、読み出し専用メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。基本入出力システム(BOIS)26は、パーソナルコンピュータ20の要素間で情報の転送を保証する基本的な手順を含み、ROM24を使用してオペレーティング・システムをロードする時にも同様である。
パーソナルコンピュータ20は、順に、データの読み書き用ハードディスク27、リムーバブル磁気ディスク29への読み書き用磁気ディスクドライブ28、及び、リムーバブル光ディスク31(CD-ROM、DVD-ROM又は他の光情報媒体等)への読み書き用光ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光ドライブ30は、それぞれ、ハードディスクインターフェース32、磁気ディスクインタフェース33及び光ドライブインターフェース34を介してシステムバス23に接続されている。ドライブ及び対応するコンピュータ情報媒体は、パーソナルコンピュータ20のコンピュータ命令、データ構造、プログラムモジュール、およびその他のデータにおける記憶装置に対して電力独立型モジュールである。
本開示は、ハードディスク27、リムーバブル磁気ディスク29およびリムーバブル光ディスク31を使用するシステムの実装を提供するが、コンピュータによって読み取り可能な形式でデータを格納することができる他の型のコンピュータ情報媒体56(ソリッドステートドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)等)を使用することも可能であることが理解されるべきであり、それらは、コントローラ55を介してシステムバス23に接続される。
コンピュータ20は、ファイルシステム36を有し、そこには記録されたオペレーティング・システム35が保持され、および、追加プログラムアプリケーション37、他のプログラムモジュール38およびプログラムデータ39、もまた同様である。
ユーザは、入力デバイス(キーボード40、マウス42)で、パーソナルコンピュータ20に、コマンドと情報を入力することができる。他の入力デバイス(図示せず)として、マイクロホン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることができる。そのような入力デバイスは、通常、シリアルポート46を介してコンピュータ・システム20に接続され、それは、順番に、システムバスに接続される。それらは、他の方法(例えば、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB))を用いて接続できる。モニター47又は他の型の表示デバイスもまた、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。モニター47に加えて、パーソナルコンピュータは、ラウドスピーカー、プリンター等の他の周辺出力デバイス(図示せず)を搭載することができる。
パーソナルコンピュータ20は、1つ又は複数のリモートコンピュータ49を用いて、ネットワーク環境で作業することができる。図3に示すように、リモートコンピュータ(複数可)49も、前述の要素の大部分又は全てを有するパーソナルコンピュータ又はサーバであり、その要素は、パーソナルコンピュータ20の本質を示している。ルータ、ネットワーク局、ピアデバイスまたは他のネットワークノード等、他のデバイスも、コンピュータネットワークに存在できる。
ネットワーク接続は、有線および/または無線ネットワーク等のローカルエリアコンピュータネットワーク(LAN)50、およびワイドエリアコンピュータネットワーク(WAN)を生成することができる。このようなネットワークは、企業コンピュータネットワークと社内ネットワークで使用されており、これらは一般的にインターネットへのアクセス権を有している。LANまたはWANネットワークでは、パーソナルコンピュータ20は、ネットワークで使用しているネットワークアダプタまたはネットワークインタフェース51を介してローカルエリアネットワーク50に接続される。ネットワークが用いられる場合、パーソナルコンピュータ20は、インターネットのようなワイドエリアコンピュータネットワークとの通信を提供するため、モデム54または他のモジュールを使用する。モデム54は、内部または外部デバイスであり、シリアルポート46によってシステムバス23に接続される。ネットワーク接続は、単なる例であり、ネットワークの正確な構成を示す必要はないことに留意すべきである。すなわち、現実には技術的な通信モジュールによる他のコンピュータの接続を確立する他の方法がある。
様々な態様において、本明細書で説明するシステム及び方法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装することができる。ソフトウェアで実装する場合、その方法は、非一時的なコンピュータ可読媒体上の1つまたは複数の命令またはコードとして格納されることができる。コンピュータ可読媒体は、データ記憶を含む。コンピュータ可読媒体を以下に例示するが、限定するものではない。コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、フラッシュメモリ、又は、他の型の電気的、磁気的、または光記憶媒体、又は他の任意の媒体、を備えることができ、命令またはデータ構造の形で所望のプログラムコードを搬送又は格納するために用いられ、汎用コンピュータのプロセッサによってアクセスすることができる。
様々な態様では、システムおよび方法は、モジュールの観点から、本開示で説明される。本明細書で使用される用語「モジュール」とは、現実世界のデバイス、コンポーネント、または、ハードウェアを用いて実装されたコンポーネントの配置を言及しており、例えば、または、ハードウェアとソフトウェアの組み合わせとして、特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などによって実装され、モジュールの機能を実装するマイクロプロセッサシステムと命令セットなどによって、(実行される間に)マイクロプロセッサシステムを専用のデバイスに変換される。モジュールも、2つの組合せとして実装されることができ、ハードウェアだけによって容易とされる特定の機能、および、ハードウェアとソフトウェアの組み合わせによって容易とされる他の機能と、これらの組み合わせとして実現することができる。特定の実施態様では、少なくとも一部、およびいくつかのケースでは、モジュールのすべては、(例えば、図3上部に詳細に説明したもののように)汎用コンピュータのプロセッサ上で実行することができる。したがって、各モジュールは、適切な様々な構成で実現することができ、そして本明細書中に任意の例示的な実施形態に限定されるものではない。
明瞭にするために、態様のルーチン機能のすべてが、本明細書に開示されているわけではない。本開示における任意の実際の実装における開発で、多数の実装固有の判断が、開発者の特定の目標を達成するためになされなければならないことが理解されるであろう。さらに、これらの具体的な目標は、異なる実装及び異なる開発者に対して変化することが理解されるであろう。そのような開発努力は複雑で時間がかかるかもしれないが、それでも本開示の利益を有する当業者にとっては、エンジニアリングの日常の仕事であると理解されるであろう。
さらに、本明細書で使用される用語又は表現は、説明のためであり、制限するものではなく、つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語または表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであることが理解されるべきである。明示的な記載がない限り、明細書または特許請求の範囲内で、任意の用語に対して、珍しいまたは特別な意味を帰することは意図されていない。
本明細書で開示された様々な態様は、例示のために本明細書に言及した既知のモジュールの、現在および将来の既知の均等物を包含する。さらに、態様および用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。

Claims (20)

  1. ハードウェアプロセッサによって、仮想スタックマシンで実行可能なファイルからのデータであって、前記ファイルのファイル・セクションにおけるパラメータ及び前記仮想スタックマシンで実行可能なファイルの関数におけるパラメータのうち少なくとも1つを含むデータ、を識別する工程と、
    前記ハードウェアプロセッサによって、前記識別されたデータに基づいて、データベースにおいて、第一閾値を超える前記ファイル・セクションの1つのパラメータの値、及び、第二閾値を越える前記関数の1つのパラメータの値、のうちの少なくとも1つを含む、安全なファイルにおける少なくとも1つのクラスタを検索する工程と、
    前記ハードウェアプロセッサによって、前記安全なファイルにおける識別された少なくとも1つのクラスタに少なくとも部分的に基づいて、前記仮想スタックマシンで実行可能なファイルにおけるデータのクラスタを生成する工程と、
    前記ハードウェアプロセッサによって、前記仮想スタックマシンで実行可能なファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算する工程と、
    前記ハードウェアプロセッサによって、有害なファイルのチェックサムのデータベースにアクセスする工程と、
    前記計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムの前記データベースでのチェックサムと一致する場合、前記ハードウェアプロセッサによって、前記仮想スタックマシンで実行可能なファイルが有害なファイルであると判断する工程と、
    を備える、仮想スタックマシンで実行可能である有害なファイルを検出する方法。
  2. 前記ファイルのファイル・セクションにおけるパラメータは、コード、名前、ヘッダー型、前記ファイル・セクションでのデータへのオフセット、及び、前記ファイル・セクションでのデータサイズ、のうち少なくとも1つを含む、請求項1に記載の方法。
  3. 前記ファイルの関数のパラメータは、関数本体のインデックス、前記ファイル・セクションでの関数コードの位置と長さ、関数記述子のインデックス、前記関数実行中のスタックの最大の深さ、前記関数で使用されるローカル変数の数、前記関数の名前、オペランドの数、及びリターンできるデータ型、のうち少なくとも1つを含む、請求項1に記載の方法。
  4. 前記第一閾値は、ファイル・セクションの型の数である、請求項1に記載の方法。
  5. 前記第二閾値は、前記関数で使用されるローカル変数の数である、請求項1に記載の方法。
  6. 少なくとも1つのチェックサムの計算する工程は、
    MD5セットを計算することによって、ファジーチェックサムを計算する工程を備え、
    MD5セットは、これらセクションのセクション・ヘッダ型及びサイズを含むクラスタ、
    前記ファイルの前記関数で使用されるローカル変数の数を含むクラスタ、
    及び、前記仮想スタックマシンで実行可能な関数の名前を含むクラスタ、
    を含む、請求項1に記載の方法。
  7. 前記仮想スタックマシンで実行可能な前記ファイルが有害なファイルであると判断する工程は、前記MD5セットのクラスタの少なくとも2つのチェックサムが有害なファイルにおけるチェックサムの前記データベースでの少なくとも2つのチェックサムと一致する、という判断する工程を含む、請求項6に記載の方法。
  8. 前記ファイルのデータにおけるクラスタの生成する工程は、
    クラスタリングのルールに従って実行され、前記ルールは、
    前記ファイルから識別されている前記データの配列で、前記識別されたデータを連続クラスタに配置するというルール、
    前記ファイル・セクションのデータのサイズがゼロと等しい場合、前記データのクラスタを生成するために、前記ファイル・セクションのパラメータを使わないというルール、
    前記関数で使用されているローカル変数の数がゼロと等しい場合、前記データのクラスタを生成するために、前記ファイルの関数のパラメータを使わないというルール、及び、
    前記データのクラスタを生成するために、安全なファイルにおけるクラスタの前記データベースで識別されたクラスタから識別されたデータを使わないというルールのうちの少なくとも1つを含む、
    請求項1に記載の方法。
  9. 仮想スタックマシンで実行される有害なファイルを検出するためのシステムであって、前記システムは、少なくとも1つのデータベースとハードウェアプロセッサを含み、
    前記データベースは、安全なファイルのクラスタと有害なファイルのチェックサムを保存するように構成され、
    前記ハードウェアプロセッサは、
    前記仮想スタックマシンで実行可能なファイルからのデータであって、前記ファイルのファイル・セクションにおけるパラメータ及び前記仮想スタックマシンで実行可能なファイルの関数におけるパラメータのうち少なくとも1つを含むデータを識別し、
    前記識別されたデータに基づいて、データベースで、第一閾値を超えるファイル・セクションの1つのパラメータの値及び第二閾値を超える関数の1つのパラメータの値のうち少なくとも1つを含む、安全なファイルにおける少なくとも1つのクラスタを検索し、
    安全なファイルにおける前記識別された少なくとも1つのクラスタに少なくとも部分的に基づいて、前記仮想スタックマシンで実行可能な前記ファイルのデータのクラスタを生成し、
    前記仮想スタックマシンで実行可能な前記ファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算し、
    有害なファイルのチェックサムの前記データベースにアクセスし、及び、
    前記計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムの前記データベースでのチェックサムと一致する場合、前記仮想スタックマシンで実行可能なファイルが、有害なファイルであると判断するように構成される、
    システム。
  10. 前記ファイルのファイル・セクションにおけるパラメータは、コード、名前、ヘッダー型、前記ファイル・セクションでのデータへのオフセット、及び、前記ファイル・セクションでのデータサイズ、のうち少なくとも1つを含む、請求項9に記載のシステム。
  11. 前記ファイルの関数のパラメータは、関数本体のインデックス、前記ファイル・セクションでの関数コードの位置と長さ、関数記述子のインデックス、前記関数実行中のスタックの最大の深さ、前記関数で使用されるローカル変数の数、前記関数の名前、オペランドの数、及びリターンできるデータ型、のうち少なくとも1つを含む、請求項9に記載のシステム。
  12. 前記第一閾値は、ファイル・セクションの型の数である、請求項9に記載のシステム。
  13. 前記第二閾値は、前記関数で使用されるローカル変数の数である、請求項9に記載のシステム。
  14. 前記ハードウェアプロセッサは、
    MD5セットを計算することによって、ファジーチェックサムを計算することによって、少なくとも1つのチェックサムの計算し、
    MD5セットは、これらセクションのセクション・ヘッダ型とサイズを含むクラスタ、
    前記ファイルの前記関数で使用されるローカル変数の数を含むクラスタ、
    及び、前記仮想スタックマシンで実行可能な関数の名前を含むクラスタ、
    を含むように、さらに構成されている、請求項9に記載のシステム。
  15. 前記ハードウェアプロセッサは、
    前記MD5セットのクラスタの少なくとも2つのチェックサムが有害なファイルにおけるチェックサムの前記データベースでの少なくとも2つのチェックサムと一致する、という判断によって、前記仮想スタックマシンで実行可能な前記ファイルは有害なファイルであるという判断するように、
    さらに構成されている、請求項14に記載のシステム。
  16. 前記ハードディスクプロセッサは、
    クラスタリングのルールに従って、前記ファイルのデータにおけるクラスタを生成するように、さらに構成され、
    前記ルールは、
    前記ファイルから識別されている前記データの配列で、前記識別されたデータを連続クラスタに配置するというルール、
    前記ファイル・セクションのデータのサイズがゼロと等しい場合、前記データのクラスタを生成するために、前記ファイル・セクションのパラメータを使わないというルール、
    前記関数で使用されているローカル変数の数がゼロと等しい場合、前記データのクラスタを生成するために、前記ファイルの関数のパラメータを使わないというルール、及び、
    前記データのクラスタを生成するために、安全なファイルにおけるクラスタの前記データベースで識別されたクラスタから識別されたデータを使わないというルールのうちの少なくとも1つを含む、
    請求項9に記載のシステム。
  17. 仮想スタックマシンで有害なファイルを検出するため、コンピュータ実行可能命令を格納する非一時的コンピュータ可読媒体であって、
    前記命令は、
    前記仮想スタックマシンで実行可能なファイルからのデータであって、前記ファイルのファイル・セクションにおけるパラメータ及び前記仮想スタックマシンで実行される前記ファイルの関数におけるパラメータ、のうち少なくとも1つのパラメータを含むデータ、を識別する命令と、
    識別された前記データに基づいて、データベースで、第一閾値を超える前記ファイル・セクションの1つのパラメータの値及び第二閾値を超える前記関数の1つのパラメータの値、の少なくとも1つを含む、安全なファイルにおける少なくとも1つのクラスタを検索する命令と、
    安全なファイルにおける前記識別された少なくとも1つのクラスタでの少なくとも1つに基づいて、前記仮想スタックマシンで実行可能な前記ファイルにおけるデータのクラスタを生成する命令と、
    前記仮想スタックマシンで実行可能な前記ファイルのデータにおける生成されたクラスタの少なくとも1つのチェックサムを計算する命令と、
    有害なファイルのチェックサムの前記データベースにアクセスする命令と、
    及び、前記計算された少なくとも1つのチェックサムが、有害なファイルのチェックサムの前記データベースでのチェックサムと一致する場合、前記仮想スタックマシンで実行可能なファイルが有害なファイルであると判断する命令と、を含む、非一時的コンピュータ可読媒体。
  18. 少なくとも1つのチェックサムの計算する命令は、
    MD5セットを計算することによって、ファジーチェックサムを計算する命令をさらに備え、
    MD5セットは、これらセクションのセクション・ヘッダ型とサイズを含むクラスタ、
    前記ファイルの前記関数で使用されるローカル変数の数を含むクラスタ、
    及び、前記仮想スタックマシンで実行可能な関数の名前を含むクラスタ、
    を含む、請求項17に記載の非一時的コンピュータ可読媒体。
  19. 前記仮想スタックマシンで実行可能な前記ファイルが有害なファイルであるという判断をする命令は、前記MD5セットのクラスタの少なくとも2つのチェックサムが有害なファイルにおけるチェックサムの前記データベースでの少なくとも2つのチェックサムと一致する、という判断を、さらに備える、請求項18に記載の非一時的コンピュータ可読媒体。
  20. 前記ファイルのデータにおけるクラスタの生成する命令は、
    クラスタリングのルールに従って実行され、
    前記ルールは、
    前記ファイルから識別されている前記データの配列で、前記識別されたデータを連続クラスタに配置するというルール、
    前記ファイル・セクションのデータのサイズがゼロと等しい場合、前記データのクラスタを生成するために、前記ファイル・セクションのパラメータを使わないというルール、
    前記関数で使用されているローカル変数の数がゼロと等しい場合、前記データのクラスタを生成するために、前記ファイルの関数のパラメータを使わないというルール、及び、
    前記データのクラスタを生成するために、安全なファイルにおけるクラスタの前記データベースで識別されたクラスタから識別されたデータを使わないというルールのうちの少なくとも1つを含む、
    請求項17に記載の非一時的コンピュータ可読媒体。
JP2016093094A 2015-06-30 2016-05-06 仮想スタックマシンで実行可能な有害なファイルを検出するためのシステムおよび方法 Active JP6277224B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2015125974A RU2624552C2 (ru) 2015-06-30 2015-06-30 Способ обнаружения вредоносных файлов, исполняемых с помощью стековой виртуальной машины
RU2015125974 2015-06-30
US14/833,620 2015-08-24
US14/833,620 US9396334B1 (en) 2015-06-30 2015-08-24 System and method for detecting harmful files executable on a virtual stack machine

Publications (2)

Publication Number Publication Date
JP2017021777A true JP2017021777A (ja) 2017-01-26
JP6277224B2 JP6277224B2 (ja) 2018-02-07

Family

ID=56381665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016093094A Active JP6277224B2 (ja) 2015-06-30 2016-05-06 仮想スタックマシンで実行可能な有害なファイルを検出するためのシステムおよび方法

Country Status (5)

Country Link
US (2) US9396334B1 (ja)
EP (1) EP3136276B8 (ja)
JP (1) JP6277224B2 (ja)
CN (1) CN106326737B (ja)
RU (1) RU2624552C2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019082989A (ja) * 2017-09-29 2019-05-30 エーオー カスペルスキー ラボAO Kaspersky Lab 標的型攻撃をクラウド型検出、探索および除去するシステムおよび方法
WO2020183828A1 (ja) 2019-03-12 2020-09-17 日本電気株式会社 ホワイトリスト生成装置、制御方法、及びプログラム

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI599905B (zh) * 2016-05-23 2017-09-21 緯創資通股份有限公司 惡意碼的防護方法、系統及監控裝置
RU2708355C1 (ru) * 2018-06-29 2019-12-05 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных файлов, противодействующих анализу в изолированной среде
US11374946B2 (en) * 2019-07-19 2022-06-28 Palo Alto Networks, Inc. Inline malware detection
US11636208B2 (en) * 2019-07-19 2023-04-25 Palo Alto Networks, Inc. Generating models for performing inline malware detection
US11537523B2 (en) * 2019-07-31 2022-12-27 Red Hat, Inc. Command result caching for building application container images
US11469942B2 (en) 2019-08-15 2022-10-11 At&T Intellectual Property I, L.P. System and method for SDN orchestration validation
US11409868B2 (en) * 2019-09-26 2022-08-09 At&T Intellectual Property I, L.P. Ransomware detection and mitigation
RU2757408C1 (ru) * 2020-09-24 2021-10-15 Акционерное общество "Лаборатория Касперского" Система и способ формирования правила проверки файла на вредоносность
US20230350782A1 (en) * 2022-04-28 2023-11-02 Twilio Inc. Data logging for api usage analytics

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014012863A2 (en) * 2012-07-15 2014-01-23 Eberhard Karls Universität Tübingen Method of automatically extracting features from a computer readable file
JP2014504399A (ja) * 2010-12-01 2014-02-20 ソースファイア インコーポレイテッド 文脈上の確からしさ、ジェネリックシグネチャ、および機械学習法を用いて悪意のあるソフトウェアを検出する方法
WO2014035043A1 (ko) * 2012-09-03 2014-03-06 주식회사 안랩 악성 애플리케이션 진단 장치 및 방법

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6618737B2 (en) * 2000-03-09 2003-09-09 International Business Machines Corporation Speculative caching of individual fields in a distributed object system
EP1154356A1 (en) * 2000-05-09 2001-11-14 Alcatel Caching of files during loading from a distributed file system
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US8813222B1 (en) 2009-01-21 2014-08-19 Bitdefender IPR Management Ltd. Collaborative malware scanning
US8621636B2 (en) * 2009-12-17 2013-12-31 American Express Travel Related Services Company, Inc. Systems, methods, and computer program products for collecting and reporting sensor data in a communication network
US8468602B2 (en) * 2010-03-08 2013-06-18 Raytheon Company System and method for host-level malware detection
US8683216B2 (en) * 2010-07-13 2014-03-25 F-Secure Corporation Identifying polymorphic malware
CN103180862B (zh) * 2010-08-25 2016-03-02 前景公司 用于服务器耦合的恶意软件防止的***和方法
US9454658B2 (en) * 2010-12-14 2016-09-27 F-Secure Corporation Malware detection using feature analysis
RU107621U1 (ru) * 2011-04-25 2011-08-20 Общество с ограниченной ответственностью "ЛАН-ПРОЕКТ" Система для контроля хода выполнения программ
EP2729895B1 (en) * 2011-07-08 2016-07-06 The UAB Research Foundation Syntactical fingerprinting
CN102930206B (zh) 2011-08-09 2015-02-25 腾讯科技(深圳)有限公司 病毒文件的聚类划分处理方法和装置
DE102011056502A1 (de) * 2011-12-15 2013-06-20 Avira Holding GmbH Verfahren und Vorrichtung zur automatischen Erzeugung von Virenbeschreibungen
CN102664875B (zh) * 2012-03-31 2014-12-17 华中科技大学 基于云模式的恶意代码类别检测方法
CN102810138B (zh) * 2012-06-19 2015-12-02 北京奇虎科技有限公司 一种用户端文件的修复方法和***
US9146767B2 (en) 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor
WO2014012106A2 (en) * 2012-07-13 2014-01-16 Sourcefire, Inc. Method and apparatus for retroactively detecting malicious or otherwise undesirable software as well as clean software through intelligent rescanning
RU2514140C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ увеличения качества обнаружений вредоносных объектов с использованием правил и приоритетов
CN102902925B (zh) * 2012-09-29 2016-08-03 北京奇虎科技有限公司 一种染毒文件的处理方法和***
RU2523112C1 (ru) * 2012-12-25 2014-07-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ выбора оптимального типа антивирусной проверки при доступе к файлу
US9317548B2 (en) * 2013-01-30 2016-04-19 International Business Machines Corporation Reducing collisions within a hash table
EP2819054B1 (en) 2013-06-28 2018-10-31 AO Kaspersky Lab Flexible fingerprint for detection of malware
US9058488B2 (en) * 2013-08-14 2015-06-16 Bank Of America Corporation Malware detection and computer monitoring methods
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014504399A (ja) * 2010-12-01 2014-02-20 ソースファイア インコーポレイテッド 文脈上の確からしさ、ジェネリックシグネチャ、および機械学習法を用いて悪意のあるソフトウェアを検出する方法
WO2014012863A2 (en) * 2012-07-15 2014-01-23 Eberhard Karls Universität Tübingen Method of automatically extracting features from a computer readable file
WO2014035043A1 (ko) * 2012-09-03 2014-03-06 주식회사 안랩 악성 애플리케이션 진단 장치 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019082989A (ja) * 2017-09-29 2019-05-30 エーオー カスペルスキー ラボAO Kaspersky Lab 標的型攻撃をクラウド型検出、探索および除去するシステムおよび方法
JP7084778B2 (ja) 2017-09-29 2022-06-15 エーオー カスペルスキー ラボ 標的型攻撃をクラウド型検出、探索および除去するシステムおよび方法
WO2020183828A1 (ja) 2019-03-12 2020-09-17 日本電気株式会社 ホワイトリスト生成装置、制御方法、及びプログラム
US11989281B2 (en) 2019-03-12 2024-05-21 Nec Corporation White list generation device, control method, and program

Also Published As

Publication number Publication date
EP3136276A1 (en) 2017-03-01
CN106326737A (zh) 2017-01-11
CN106326737B (zh) 2019-05-21
US9396334B1 (en) 2016-07-19
US20170004310A1 (en) 2017-01-05
JP6277224B2 (ja) 2018-02-07
EP3136276B1 (en) 2017-10-25
EP3136276B8 (en) 2018-03-07
US10013555B2 (en) 2018-07-03
RU2624552C2 (ru) 2017-07-04
RU2015125974A (ru) 2017-01-11

Similar Documents

Publication Publication Date Title
JP6277224B2 (ja) 仮想スタックマシンで実行可能な有害なファイルを検出するためのシステムおよび方法
JP6346632B2 (ja) モバイルデバイスでの悪質なファイルを検出するシステム及び方法
Aslan et al. Investigation of possibilities to detect malware using existing tools
US10193906B2 (en) Method and system for detecting and remediating polymorphic attacks across an enterprise
CN109145600B (zh) 使用静态分析元素检测恶意文件的***和方法
Afonso et al. Identifying Android malware using dynamically obtained features
CN109271780B (zh) 机器学习恶意软件检测模型的方法、***和计算机可读介质
JP6731988B2 (ja) 訓練された機械学習モデルを使用することで悪意のあるファイルを検出するシステムおよび方法
RU2485577C1 (ru) Способ увеличения надежности определения вредоносного программного обеспечения
US9135443B2 (en) Identifying malicious threads
RU2617654C2 (ru) Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя
US9015814B1 (en) System and methods for detecting harmful files of different formats
RU2491615C1 (ru) Система и способ формирования записей для обнаружения программного обеспечения
RU2634178C1 (ru) Способ обнаружения вредоносных составных файлов
JP6909770B2 (ja) ウィルス対策レコードを作成するシステムと方法
Zakeri et al. A static heuristic approach to detecting malware targets
CN108369541B (zh) 用于安全威胁的威胁风险评分的***和方法
Naz et al. Review of machine learning methods for windows malware detection
Wood et al. Keyloggers in Cybersecurity Education.
JP6322240B2 (ja) フィッシング・スクリプトを検出するためのシステム及び方法
RU2673708C1 (ru) Система и способ машинного обучения модели обнаружения вредоносных файлов
RU2510530C1 (ru) Способ автоматического формирования эвристических алгоритмов поиска вредоносных объектов
Eskandari et al. ERES: an extended regular expression signature for polymorphic worm detection
RU2774042C1 (ru) Система и способ выявления потенциально вредоносных изменений в приложении
Wu et al. Detection of Android Malware Behavior in Browser Downloads

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171129

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180115

R150 Certificate of patent or registration of utility model

Ref document number: 6277224

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