JP6583838B2 - アプリケーションのシミュレーション - Google Patents

アプリケーションのシミュレーション Download PDF

Info

Publication number
JP6583838B2
JP6583838B2 JP2017566803A JP2017566803A JP6583838B2 JP 6583838 B2 JP6583838 B2 JP 6583838B2 JP 2017566803 A JP2017566803 A JP 2017566803A JP 2017566803 A JP2017566803 A JP 2017566803A JP 6583838 B2 JP6583838 B2 JP 6583838B2
Authority
JP
Japan
Prior art keywords
function call
parameters
recorded
application
function
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
JP2017566803A
Other languages
English (en)
Other versions
JP2018525714A (ja
Inventor
アルメ、クリストフ
ハーン、スラワ
フィンケ、ステファン
Original Assignee
マカフィー,エルエルシー
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 マカフィー,エルエルシー filed Critical マカフィー,エルエルシー
Publication of JP2018525714A publication Critical patent/JP2018525714A/ja
Application granted granted Critical
Publication of JP6583838B2 publication Critical patent/JP6583838B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • 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/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • 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
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Debugging And Monitoring (AREA)

Description

[関連出願の相互参照]
本願は、2015年6月27日に出願された「SIMULATION OF AN APPLICATION」と題する米国特許出願第14/752,911号の利益及びそれらに基づく優先権を主張し、その全体が本明細書に参照により組み込まれる。
本開示は、概して情報セキュリティの分野に関し、より具体的には、アプリケーションのシミュレーションに関する。
ネットワークセキュリティの分野は、現代社会において、ますます重要になってきている。インターネットは、世界中の種々のコンピュータネットワークの相互接続を可能にしている。特に、インターネットは、様々な種類のクライアントデバイスを介して、種々のコンピュータネットワークに接続された種々のユーザ間でデータを交換するための媒体を提供する。インターネットの使用が、ビジネスコミュニケーション及びパーソナルコミュニケーションを変化させてきた一方、それはまた、悪意のあるオペレータが、コンピュータ及びコンピュータネットワークへ不正アクセスを得るための、及び機密情報の意図的な又は不注意な開示のための手段として用いられている。
ホストコンピュータを感染させる悪意のあるソフトウェア(「マルウェア」)は、ホストコンピュータと関連付けられた企業又は個人からの機密情報の盗取、他のホストコンピュータへの伝播、及び/又は分散サービス妨害攻撃に対する支援、ホストコンピュータからのスパム又は悪意のある電子メールの送信等のような任意の数の悪意のある動作を実行することが可能であり得る。従って、悪意のあるソフトウェアによる悪意のある、不注意な搾取からコンピュータ及びコンピュータネットワークを保護するための重要な管理問題が、残っている。
本開示及びその特徴並びに利益に対するより完全な理解を提供するため、添付の図と併せて以下の説明が参照される。同様の参照番号は、同様の部分を表す。
本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの簡略ブロック図である。
本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの一部の簡略ブロック図である。
本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの例示的な詳細の簡略図である。
本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの例示的な詳細の簡略図である。
一実施形態に係る、通信システムと関連付けられ得る潜在的な動作を例示する簡略フローチャートである。
一実施形態に係る、通信システムと関連付けられ得る潜在的な動作を例示する簡略フローチャートである。
一実施形態に係る、ポイントツーポイント構成で配置される例示的なコンピューティングシステムを例示するブロック図である。
本開示の例示的なARMエコシステムシステムオンチップ(SOC)と関連付けられる簡略ブロック図である。
一実施形態に係る、例示的なプロセッサコアを例示するブロック図である。
図面の図は、それらの寸法が、本開示の範囲から逸脱することなく大幅に変更され得るることから、必ずしも縮尺通りに描かれていない。
[例示的な実施形態]
図1は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム100の簡略ブロック図である。通信システム100は、電子デバイス102、クラウドサービス104、及びサーバ106を含み得る。電子デバイス102は、プロセッサ110、メモリ112、オペレーティングシステム(OS)114、及びセキュリティモジュール116を含み得る。セキュリティモジュール116は、エミュレーションモジュール118を含み得る。エミュレーションモジュールは、エミュレーションテーブル120を含み得る。クラウドサービス104及びサーバ106はそれぞれ、ネットワークセキュリティモジュール122、トレーニングセット124、及びサンドボックス環境126を含み得る。ネットワークセキュリティモジュール122は、エミュレーションデータアセッサ146及びエミュレーションテーブル120を含み得る。電子デバイス102、クラウドサービス104、及びサーバ106は各々、ネットワーク108を用いて通信し得る。
例示的な実施形態において、通信システム100は、データマイニング及び機械学習戦略を用いて、プロファイリングされた動作環境用の関連シミュレーションロジックを自動的にモデル化するシステムを含むように構成され得る。通信システム100は、(例えば、トレーニングセット124から)アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブル(例えば、エミュレーションテーブル120)に記録されたパラメータを格納するよう構成され得る。記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含んでよい。ある例では、通信システム100は、全体的なロギングデータを評価し、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定し得る。通信システム100はまた、呼び出されたファンクションの出力に影響を与えない任意のパラメータを除外することができる。エミュレーションテーブルは、電子デバイス102におけるエミュレーションモジュールによって実行時に解釈可能なシステムファンクション毎のマッピングテーブルを含み得、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含み得る。
図1の要素は、任意の好適な接続(有線又は無線)を採用する1又は複数のインタフェースを通じて互いに連結されてよく、それによりネットワーク(例えば、ネットワーク108)通信に対する実行可能な経路を提供する。更に、特定の構成の必要性に基づき、図1のこれらの要素のうち任意の1又は複数のものは、組み合わされ、又はアーキテクチャから除去されてよい。通信システム100は、ネットワークにおけるパケットの送信又は受信用の伝送制御プロトコル/インターネットプロトコル(TCP/IP)通信が可能な構成を含んでよい。通信システム100はまた、適切な場合及び特定の必要性に基づいて、ユーザデータグラムプロトコル/IP(UDP/IP)、又は任意の他の好適なプロトコルと併せて動作し得る。
通信システム100の特定の例示的な技術を例示する目的で、ネットワーク環境をトラバースしている場合がある通信を理解することが重要である。以下の基礎的情報は、本開示が適切に説明され得る根拠とみなされてよい。
いくつかのマルウェア検出アプローチは、ソフトウェアエミュレーションの使用に大いに依存している。つまり、新しいソフトウェアアプリケーションが潜在的に危険な挙動を含むかどうかを判断するために、それぞれのマルウェアスキャナが、安全で仮想のエミュレーション環境内で対象のファイルの実行をシミュレートする。その意図は、実行されたファイルが、エミュレーション環境にどのような影響を与えるかだけでなく、またエミュレーション後ファイルがどのようになるかを両方モニタリングすることである。例えば、悪意のあるWindows(登録商標)実行ファイルは、ランタイムパック化又は難読化されていることが多く、エミュレーションを通じてのみ外部の難読化シェルはファイルから除去され得る。
Windows(登録商標) OS又はウェブブラウザのような環境を合理的に正確にシミュレートするために、システムは、OS又はブラウザがソフトウェアアプリケーション又はスクリプトコードに公開するシステムファンクションをシミュレートしなければならない。現在のところ、これは、マルウェア研究者によって手動で行われている。例えば、何らかの知られたマルウェアが特定のシステムファンクションへの呼び出しを行う時にはいつでも、そのマルウェアファミリーの検出を開発する研究者は、エミュレーション環境がそのシステムファンクションをシミュレートすることを確認する。
システムファンクションのシミュレーションを手動でオーサリングするこのアプローチは、後手的であり、エラーが発生しやすく、高価である。今日知られている唯一の代替案は、元のOSイメージをライセンスし、エミュレーション下でOS全体を実行することである。これには、まず第1に、その高性能コストという非常に明確な制限がある。必要とされるのは、手動でオーサリングされるシミュレーションファンクションとして実行し得るシステム及び方法であるが、同時に、データマイニング及び機械学習の使用によって生成される。
図1に概説されるような、アプリケーションのシミュレーション用の通信システムは、これらの課題(及びその他)を解決することができる。通信システム100は、モニタリングされた元の現実環境におけるソフトウェアアプリケーションの大規模なトレーニングセットをプロファイルし、発生するシステム呼び出しをそれらの入力パラメータ及び出力パラメータとともに追跡し、最も一般的な組み合わせを決定し、アプリケーションの実行をシミュレートするためにエミュレーションコンポーネントによって用いられ得る一般化されたシミュレーションモデルを計算するよう構成され得る。セキュリティモジュールは、アプリケーションからの悪意のある挙動の兆候に関してシミュレート実行を分析し得る。例えば、挙動シーケンスのマルコフモデルを用いる挙動マルウェア分類システムが、悪意のある挙動に関するファイルを分析するために用いられ得る。
ある例では、通信システム100は、アプリケーションがMicrosoft Windows(登録商標)、又はMozilla Firefox(登録商標) ブラウザのような対象の動作環境の元のインストール上で安全に実行され得、モニタリングされたアプリケーションが動作環境に行う全てのシステムファンクション呼び出しが記録されるデータマイニング環境を含むことができる。システムは、ソフトウェアアプリケーションがMicrosoft Windows(登録商標)、又はMozilla Firefox(登録商標) ブラウザのような、対象のOSの元のインストール上で安全に実行され得、モニタリングされたアプリケーション又はスクリプトがOS又はブラウザに行う全てのシステムファンクション呼び出しが記録されるデータマイニング環境を可能にする。例えば、カーネルモード、ユーザモード、ブラウザDOMフック等を用いて、モニタリングされたアプリケーション又はスクリプトが記録され得る。記録されたデータは、システムファンクションの名前及びライブラリ、ファンクションに渡される実際の入力パラメータ、並びにファンクションから返される出力パラメータを含み得る。
機械学習コンポーネントは、その後、記録されたデータを評価し、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定し得る。システムはまた、関連するそれらのパラメータのみへの正規化を実行し、システムファンクション毎にマッピングテーブルを生成し得る。マッピングテーブルは、エミュレーションモジュールに送信され得、そこで、実行時に、エミュレーションモジュールは、これらのマッピングテーブルを解釈し、入力パラメータ条件のテーブルエントリのリストが現在のシミュレーション環境状態と対応するかどうかをチェックし、そうである場合、そのテーブルエントリ内で符号化された出力動作を実行し得る。このプロセスは、アプリケーションを実際に実行させる必要なく、アプリケーションのシミュレーションを可能にする。
更に、システムは、一般的なシステム呼び出しを自動的に決定し、特定の呼び出しを用いて実際のマルウェアサンプルが開始するのを待たないよう構成され得る。手動でオーサリングされたシミュレーションロジックに関するO(m)(mはバイトコードサイズ)と比較して、単一のシステムファンクションをシミュレートするための性能特性は、O(n)(nはリストサイズ)である。換言すると、リスト条件と手動規則バイトコードとの両方が同等の実行時インタープリタを用いると仮定すると、機械学習の生成されたシステムロジックの使用によって性能に追加的な影響が生じることはない。プロファイリングバックエンド環境を設定し、データマイニング出力を機械学習コンパイラに供給するための最初の1回の開発コストはより高くなるが、一旦そのプロセスが確立されると、継続的なメンテナンスコストは比較的かからない。
図1のインフラストラクチャを参照すると、例示的な実施形態に係る通信システム100が示される。概して、通信システム100は、任意の種類の又は任意のトポロジーのネットワークにおいて実装され得る。ネットワーク108は、通信システム100を通じて伝播する情報のパケットを受信及び送信するための、相互接続された通信経路の一連のポイント又はノードを表す。ネットワーク108は、ノード間の通信インタフェースを提供し、任意のローカルエリアネットワーク(LAN)、仮想ローカルエリアネットワーク(VLAN)、ワイドエリアネットワーク(WAN)、無線ローカルエリアネットワーク(WLAN)、メトロポリタンエリアネットワーク(MAN)、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、及び、ネットワーク環境における通信を容易にする任意の他の適切なアーキテクチャ又はシステム、あるいはそれらの任意の好適な組み合わせとして、有線及び/又は無線通信を含みつつ構成され得る。
通信システム100において、パケット、フレーム、信号、データ等を含むネットワークトラフィックは、任意の好適な通信メッセージングプロトコルに従って送信及び受信され得る。好適な通信メッセージングプロトコルは、オープンシステム間相互接続(OSI)モデル、又はそれらのあらゆる派生例若しくは変形例(例えば、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル/IP(UDP/IP))のような多層スキームを含んでよい。更に、セルラーネットワークを介した無線信号通信が、通信システム100において提供されてもよい。好適なインタフェース及びインフラストラクチャは、セルラーネットワークとの通信を可能にするために提供されてもよい。
本明細書で用いられている「パケット」という用語は、パケット交換ネットワーク上で、送信元ノードと宛先ノードとの間でルーティングされ得るデータのユニットを指す。パケットは、送信元ネットワークアドレス及び宛先ネットワークアドレスを含む。これらのネットワークアドレスは、TCP/IPメッセージングプロトコルにおけるインターネットプロトコル(IP)アドレスであってよい。本明細書で用いられている「データ」という用語は、電子デバイス及び/又はネットワークにおいて1つのポイントから別のポイントに伝達され得る、任意の種類のバイナリ、数値、音声、ビデオ、テキスト若しくはスクリプトデータ、又は任意の種類のソースコード若しくはオブジェクトコード、又は、任意の適切なフォーマットの任意の他の好適な情報を指す。更に、メッセージ、要求、応答及びクエリは、ネットワークトラフィックの形式であり、従って、パケット、フレーム、信号、データ等を含み得る。
例示的な実装において、電子デバイス102、クラウドサービス104、及びサーバ106は、ネットワーク要素であり、これらは、ネットワークアプライアンス、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、あるいは、ネットワーク環境の情報を交換するべく動作可能な任意の他の好適なデバイス、コンポーネント、要素又はオブジェクトを包含することが意図される。ネットワーク要素は、それらの動作を容易にする、任意の好適なハードウェア、ソフトウェア、コンポーネント、モジュール又はオブジェクト、並びにネットワーク環境において、データ若しくは情報を受信、送信及び/又はその他の方法で伝達するための好適なインタフェースも含み得る。これは、データ又は情報の効果的な交換を可能にする適切なアルゴリズム及び通信プロトコルを含み得る。
通信システム100と関連付けられた内部構造に関して、電子デバイス102、クラウドサービス104、及びサーバ106の各々は、本明細書に概説されている動作において用いられるべき情報を格納するためのメモリ要素を含み得る。電子デバイス102、クラウドサービス104、及びサーバ106の各々は、任意の好適なメモリ要素(例えば、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、特定用途向け集積回路(ASIC)、等)、ソフトウェア、ハードウェア、ファームウェアにおいて、又は適切で、かつ特定の必要性に基づいた任意の他の好適なコンポーネント、デバイス、要素若しくはオブジェクトにおいて、情報を保存し得る。本明細書に記載されているメモリアイテムの何れも、「メモリ要素」という広義の用語内に包含されているとして解釈されるべきである。更に、通信システム100において用いられている、追跡されている、送信されている、又は受信されている情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、又は他のストレージ構造において提供され得、その全ては、任意の好適なタイムフレームにおいて参照され得る。そのようなストレージの選択肢の何れも、本明細書で用いられている「メモリ要素」という広義の用語内に含まれ得る。
特定の例示的な実装において、本明細書に概説されているファンクションは、1又は複数の有形媒体内に符号化されているロジック(例えば、ASIC内に設けられる埋込みロジック、デジタル信号プロセッサ(DSP)命令、プロセッサによって実行される(オブジェクトコード及びソースコードを潜在的に含む)ソフトウェア、又は他の同様の機械等)によって実装され得、それらは、非一時的コンピュータ可読媒体を含み得る。これらの例のいくつかにおいて、メモリ要素は、本明細書に説明されている動作に用いられるデータを格納できる。これは、本明細書に説明されているアクティビティを行うために実行されるソフトウェア、ロジック、コード又はプロセッサ命令を格納できるメモリ要素を含む。
例示的な実装において、電子デバイス102、クラウドサービス104、及びサーバ106のような通信システム100のネットワーク要素は、本明細書に概説されている動作を実現又は促進するために、ソフトウェアモジュール(例えば、セキュリティモジュール116、エミュレーションモジュール118、ネットワークセキュリティモジュール122、及びエミュレーションデータアセッサ146)を含み得る。これらのモジュールは、特定の構成及び/又はプロビジョニングの必要性に基づき得る、任意の適切な態様で、好適に組み合わされ得る。例示的な実施形態において、そのような動作は、意図される機能を実現するために、これらの要素の外部に実装されるハードウェアによって、又はいくつかの他のネットワークデバイス内に含まれるハードウェアによって実行され得る。更に、モジュールは、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の好適な組み合わせとして実装され得る。これらの要素は、本明細書に概説されているような動作を実現するために、他のネットワーク要素と連携できるソフトウェア(又はレシプロケーティングソフトウェア)も含み得る。
更に、電子デバイス102、クラウドサービス104、及びサーバ106の各々は、本明細書に記載されているようなアクティビティを実行するためのソフトウェア又はアルゴリズムを実行できるプロセッサを含み得る。プロセッサは、本明細書に詳述されている動作を実現するために、データと関連付けられた任意の種類の命令を実行できる。1つの例において、プロセッサは、要素又は物(例えばデータ)を1つの状態又はモノから別の状態又はモノへ変換できる。別の例において、本明細書に概説されているアクティビティは、固定ロジック又はプログラマブルロジック(例えば、プロセッサによって実行されるソフトウェア/コンピュータ命令)で実装され得る。本明細書で識別されている要素は、何らかの種類のプログラマブルプロセッサ、プログラマブルデジタルロジック(例えば、フィールドプログラマブルゲートアレイ(FPGA)、EPROM、EEPROM)、又はデジタルロジック、ソフトウェア、コード、電子命令若しくはそれらの任意の好適な組み合わせを含むASICであり得る。本明細書に説明されている、潜在的な処理要素、モジュール及び機械の何れも、「プロセッサ」という広義の用語内に包含されていると解釈されるべきである。
電子デバイス102は、ネットワーク要素であってよく、例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、パーソナルデジタルアシスタント、スマートフォン、タブレット、又は他の同様のデバイスを含む。クラウドサービス104は、電子デバイス102にクラウドサービスを提供するよう構成される。クラウドサービスは、概して、インターネットのようなネットワークを介したサービスとして供給されるコンピューティングリソースを用いることと定義され得る。典型的に、計算、ストレージ、及びネットワークリソースは、クラウドインフラストラクチャにおいて提供され、作業負荷をローカルネットワークからクラウドネットワークへ効果的にシフトさせる。サーバ106は、サーバ又は仮想サーバのようなネットワーク要素であってよく、何らかのネットワーク(例えば、ネットワーク108)を介する通信システム100において通信を開始することを望んでいる、クライアント、顧客、エンドポイント又はエンドユーザと関連付けられてよい。「サーバ」という用語は、クライアントの要求を果たすため、及び/又は通信システム100内でクライアントに代わって、何らかの計算タスクを実行するために用いられるデバイスを含む。セキュリティモジュール116は、図1において、電子デバイス102に配置されているよう表されているが、これは、例示目的に過ぎない。セキュリティモジュール116は、任意の好適な構成で組み合わされ得、又は分離され得る。更に、セキュリティモジュール116は、クラウドサービス104又はサーバ106のような電子デバイス102によってアクセス可能である別のネットワークと統合され得、又は、別のネットワーク内に分散され得る。
図2を参照すると、図2は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム100の一部の簡略ブロック図である。クラウドサービス104(又はサーバ106又は何らかの他ネットワーク要素)は、ネットワークセキュリティモジュール122、トレーニングセット124、及びサンドボックス環境126を含み得る。ネットワークセキュリティモジュール122は、エミュレーションデータアセッサ146及びエミュレーションテーブル120を含み得る。エミュレーションデータアセッサ146は、プロファイリングモジュール128、データマイニングモジュール130、正規化及び一般化モジュール132、及び変換モジュール134を含み得る。
トレーニングセット124は、サンドボックス環境126で安全に実行され得る1又は複数のアプリケーションを含み得る。サンドボックス環境126は、Microsoft Windows(登録商標)、Mozilla Firefox(登録商標)のようなブラウザ、又はアプリケーションが動作し得る何らかの他の環境のような、対象の動作環境の元のインストールを含み得る。モニタリングされるアプリケーションがサンドボックス環境126中に行うシステムファンクション呼び出しが記録される。
プロファイリングモジュール128は、各モニタリングされた呼び出しに関するデータを記録するよう構成され得る。記録されたデータは、システムファンクションの名前及びライブラリ、入力パラメータと称される、システムファンクション(例えば、スタックの最上部)に渡される実際のパラメータ、並びに出力パラメータと称される、ファンクション(例えば、EAXレジスタ)から返されるパラメータを含み得る。データマイニングモジュール130は、全体的なロギングデータを評価するよう構成され得、システムファンクション毎の入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定する。正規化及び一般化モジュール132は、モニタリングされたファンクションの出力に明らかに影響を与えない任意のパラメータを除外し、関連するそれらのパラメータのみにブレークダウンするように構成され得る。変換モジュール134は、正規化及び一般化モジュール132からのデータを、エミュレーションテーブル120に含まれ得るデータに変換するよう構成され得る。エミュレーションテーブル120におけるデータは、電子デバイス102におけるエミュレーションモジュール118によって実行時に解釈可能なシステムファンクション毎のマッピングテーブルを含み得、入力パラメータのそれぞれのセットが与えられると、システムが、アプリケーションのシミュレーション下で返されるべき出力パラメータを迅速に検索することを可能にする。
図3を参照すると、図3は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システム100の一部の簡略図である。図3は、サンドボックス環境126におけるアプリケーションの一部の実行の具体例を例示する。サンドボックス環境126において、コード148は、トレーニングセット124内のアプリケーションから取得され得る。コードは、サンドボックス環境126内で実行され得、実行することを許可され得る。コードがファンクションコールである場合、次に、呼び出しはフックされ、引数は記録される。例えば、システムスタック150内のファンクションコールからの引数が決定され、記録され得る。各ファンクションコールのために記録されたデータは、システムファンクションの名前及びライブラリ、システムファンクションに渡される実際のパラメータ(例えば、入力パラメータ)、並びにファンクションから返されるパラメータ(例えば、出力パラメータ)を含み得る。記録されたデータは、その後(例えば、データマイニングモジュール130、正規化及び一般化モジュール132、及び変換モジュール134によって)処理され、エミュレーションテーブル120をポピュレートするために用いられ得る。
図4を参照すると、図4は、本開示の一実施形態に係る、アプリケーションのシミュレーションのための通信システムの一部の簡略図である。エミュレーションテーブル120は、ライブラリカラム136、ファンクションカラム138、入力パラメータ条件カラム140、及び出力パラメータ動作カラム142を含み得る。
実行時に、エミュレーションモジュール118は、エミュレーションテーブル120にアクセスし、入力パラメータ条件のテーブルエントリのリストが現在のシミュレーション環境設定と対応するかどうかをチェックし、そうである場合、そのテーブルエントリ内で符号化された出力動作を実行し得る。入力パラメータは、変数、呼び出し、システム構成、オペレーティングシステム、ファイル構成、データ構造等を含み得る。現在のシミュレーション環境は、アプリケーションが実行又は実行することを許可された場合、アプリケーションが実行するであろう環境である。アプリケーションの実行の適切なシミュレーションのため、入力パラメータのテーブルエントリのリストは、アプリケーションが実行又は実行することを許可された場合、アプリケーションが実行するであろう環境と対応するべきである。例えば、図4に例示されているように、mylib32.dll内のファンクション「GetSomeHandleA」のための入力パラメータが8である場合、次に、出力パラメータ又は動作は、スタック[0]ポインタに「22」を書き込むこと、及びEAXを1に設定することである。mylib32.dll内のファンクション「GetSomeHandleA」のための入力パラメータが32である場合、次に、出力パラメータ又は動作は、スタック[0]ポインタに「0」を書き込むこと、EAXを0に設定することである。これは、エミュレーションモジュール118が、アプリケーションを実際に実行する必要なくアプリケーションを実行することをシミュレートし、プロファイリングされた動作環境のための関連するシミュレーションロジックを自動的にモデル化するためにデータマイニング及び機械学習戦略を用いることを可能にする。
図5を参照すると、図5は、一実施形態に係る、アプリケーションのシミュレーションと関連付けられ得るフロー500の考えられる動作を例示する例示的なフローチャートである。一実施形態において、フロー500の1又は複数の動作は、エミュレーションデータアセッサ146及びネットワークセキュリティモジュール122によって実行され得る。502において、システムによってアプリケーションが受信される(又は識別される)。例えば、アプリケーションは、トレーニングセット124から受信され得る。トレーニングセット124は、アプリケーション又はプロセスの大量のバッチを含み得、システムは、トレーニングセット124からの無作為に選択されたアプリケーション、トレーニングセット124からの知られたマルウェアサンプルを受信し得、又は管理者が、受信されるアプリケーションを選択し得る。504において、アプリケーションは、サンドボックス環境で実行することが許可される。例えば、アプリケーションは、サンドボックス環境126で実行することが許可されてよい。506において、各ファンクションコールについて、ファンクションコールのためのパラメータが決定され、記録される。508において、各ファンクションコール及びファンクションコールのパラメータは、エミュレーションテーブルに格納される。
図6を参照すると、図6は、一実施形態に係る、アプリケーションのシミュレーションと関連付けられ得るフロー600の考えられる動作を例示する例示的なフローチャートである。一実施形態において、フロー600の1又は複数の動作は、エミュレーションモジュール118によって実行され得る。602において、システムによってアプリケーションが受信される(又は識別される)。例えば、アプリケーションは、トレーニングセット124から受信されてよい。604において、エミュレーションテーブルを用いて、アプリケーションのシミュレーションが実行される。606において、アプリケーションのシミュレートされた実行は、悪意のあるアクティビティの存在に関して分析される。
図7は、一実施形態に係る、ポイントツーポイント(PtP)構成で配置されるコンピューティングシステム700を例示する。特に、図7は、プロセッサ、メモリ、入力/出力デバイスが、多数のポイントツーポイントインタフェースによって相互接続されるシステムを示す。概して、通信システム100のネットワーク要素のうち1又は複数は、コンピューティングシステム700と同一の又は同様の態様で構成されてよい。
図7に例示されているように、システム700は、いくつかのプロセッサを含み得るが、明確にするために、それらのうちプロセッサ770及び780の2つのみが示されている。2つのプロセッサ770及び780が示されている一方、システム700の一実施形態は、そのようなプロセッサを1つだけ含んでもよいことが理解されるべきである。プロセッサ770及び780は各々、プログラムの複数のスレッドを実行するための1セットのコア(すなわち、プロセッサコア774A及び774B、並びにプロセッサコア784A及び784B)を含んでよい。コアは、図1〜図6を参照して上に述べられたものと同様の態様で、命令コードを実行するように構成され得る。各プロセッサ770、780は、少なくとも1つの共有キャッシュ771、781を含み得る。共有キャッシュ771、781は、プロセッサコア774及び784のような、プロセッサ770、780の1又は複数のコンポーネントによって利用されるデータ(例えば、命令)を格納し得る。
プロセッサ770及び780は各々、メモリ要素732及び734と通信するための集積メモリコントローラロジック(MC)772及び782を含んでもよい。メモリ要素732及び/又は734は、プロセッサ770及び780によって用いられる様々なデータを格納し得る。代替的な実施形態において、メモリコントローラロジック772及び782は、プロセッサ770及び780とは分離したディスクリートロジックであってよい。
プロセッサ770及び780は、任意の種類のプロセッサであり得、それぞれ、ポイントツーポイント(PtP)インタフェース回路778及び788を用いて、ポイントツーポイントインタフェース750を介して、データを交換し得る。プロセッサ770及び780は各々、ポイントツーポイントインタフェース回路776、786、794及び798を用いて、個々のポイントツーポイントインタフェース752及び754を介して、チップセット790とデータを交換し得る。チップセット790は、PtPインタフェース回路であり得るインタフェース回路792を用いて、高性能グラフィックスインタフェース739を介して、高性能グラフィックス回路738とデータを交換してもよい。代替的な実施形態において、図7に例示されている、任意の又は全てのPtPリンクは、PtPリンクではなく、マルチドロップバスとして実装され得る。
チップセット790は、インタフェース回路796を介して、バス720と通信を行ってよい。バス720は、バスブリッジ718及びI/Oデバイス716のような、それを介して通信する1又は複数のデバイスを有してよい。バス710を介して、バスブリッジ718は、キーボード/マウス712(又はタッチスクリーン、トラックボールのような他の入力デバイス等)、(モデム、ネットワークインタフェースデバイス、又はコンピュータネットワーク760を通じて通信し得る、他の種類の通信デバイスのような)通信デバイス726、オーディオI/Oデバイス714、及び/又はデータストレージデバイス728のような他のデバイスと通信を行ってよい。データストレージデバイス728は、プロセッサ770及び/又は780によって実行され得るコード730を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分は、1又は複数のPtPリンクで実装され得る。
図7に図示されているコンピュータシステムは、本明細書に記載されている様々な実施形態を実装するために利用され得る、コンピューティングシステムの一実施形態の概略図である。図7に図示されているシステムの様々なコンポーネントは、システムオンチップ(SoC)アーキテクチャで、又は任意の他の好適な構成で組み合わされ得ることが理解されるであろう。例えば、本明細書に開示されている実施形態は、スマートセルラーフォン、タブレットコンピュータ、パーソナルデジタルアシスタント、携帯型ゲーム機等のようなモバイルデバイスを含むシステム内に組み込まれ得る。これらのモバイルデバイスには、少なくともいくつかの実施形態においてSoCアーキテクチャが設けられ得ることが理解されるであろう。
図8を参照すると、図8は、本開示の例示的なARMエコシステムSOC800と関連付けられる簡略ブロック図である。本開示の少なくとも1つの例示的な実装例は、本明細書に記載されているアプリケーションのシミュレーションの特徴、及びARMコンポーネントを含んでよい。例えば、図8の例は、任意のARMコア(例えば、A−9、A−15等)と関連付けられてよい。更に、アーキテクチャは、任意の種類のタブレット、スマートフォン(Android(登録商標) フォン、iPhone(登録商標)を含む)、iPad(登録商標)、Google Nexus(登録商標)、Microsoft Surface(登録商標)、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ(任意の種類のノートブックを含む)、Ultrabook(登録商標)システム、任意の種類のタッチ式入力デバイス等の一部であってよい。
図8のこの例において、ARMエコシステムSOC800は、複数のコア806−807、L2キャッシュ制御808、バスインタフェースユニット809、L2キャッシュ810、グラフィックス処理ユニット(GPU)815、相互接続802、ビデオコーデック820、及び液晶ディスプレイ(LCD)I/F825を含み得、これらは、LCDに連結するモバイルインダストリプロセッサインタフェース(MIPI)/高解像度マルチメディアインタフェース(HDMI(登録商標))リンクと関連付けられ得る。
ARMエコシステムSOC800は、加入者識別モジュール(SIM)I/F830、ブートリードオンリメモリ(ROM)835、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)コントローラ840、フラッシュコントローラ845、シリアル周辺インタフェース(SPI)マスタ850、好適な電力制御855、ダイナミックRAM(DRAM)860、及びFlash865も含み得る。加えて、1又は複数の例示的な実施形態は、1又は複数の通信能力、インタフェース及びBluetooth(登録商標)870、3Gモデム875、全地球測位システム(GPS)880及び802.11Wi−Fi(登録商標)885の例のような特徴を含む。
動作において、図8の例は、比較的低い消費電力と共に、様々な種類のコンピューティング(例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャ等)を可能とする処理能力を提供できる。加えて、このようなアーキテクチャは、任意の数のソフトウェアアプリケーション(例えば、Android(登録商標)、Adobe(登録商標) Flash(登録商標) Player、Java(登録商標) Platform Standard Edition(Java(登録商標) SE)、Java(登録商標)FX、Linux(登録商標)、Microsoft Windows(登録商標) Embedded、Symbian及びUbuntu等)を可能にし得る。少なくとも1つの例示的な実施形態において、コアプロセッサは、連結された低レイテンシレベル2キャッシュを有するアウトオブオーダ・スーパースカラ・パイプラインを実装し得る。
図9は、一実施形態に係るプロセッサコア900を例示する。プロセッサコア900は、マイクロプロセッサ、埋込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、又は、コードを実行する他のデバイスのような、任意の種類のプロセッサ用のコアであってよい。図9において、1つのプロセッサコア900のみが例示されているが、プロセッサは、図9に例示されているプロセッサコア900の1つより多くを代替的に含んでよい。例えば、プロセッサコア900は、図7のプロセッサ770及び780に関連して示され及び説明されている、プロセッサコア774a、774b、784a及び784bの、1つの例示的な実施形態を表す。プロセッサコア900は、シングルスレッドコアであってもよく、又は、少なくとも1つの実施形態に関して、プロセッサコア900は、コア毎に1つより多くのハードウェアスレッドコンテキスト(又は「ロジカルプロセッサ」)を含み得るという点で、マルチスレッドコアであってもよい。
図9はまた、一実施形態に係る、プロセッサコア900に連結されたメモリ902を例示する。メモリ902は、知られた又はそうでなければ当業者に利用可能な多種多様なメモリ(メモリ階層の様々な層を含む)の何れかであってよい。メモリ902は、プロセッサコア900によって実行されるべき1又は複数の命令であり得るコード904を含み得る。プロセッサコア900は、コード904によって示される、命令のプログラムシーケンスに従い得る。各命令は、フロントエンドロジック906に入り、1又は複数のデコーダ908によって処理される。デコーダは、その出力として、予め定義されたフォーマットで固定幅のマイクロオペレーションのようなマイクロオペレーションを生成してよく、又は元のコード命令を反映する他の命令、マイクロ命令、若しくは制御信号を生成してよい。フロントエンドロジック906はまた、レジスタリネーミングロジック910及びスケジューリングロジック912を含み、これらは概してリソースを割り当て、実行の命令に対応する動作をキューに登録する。
プロセッサコア900は、1セットの実行ユニット916−1から916−Nを有する実行ロジック914を含んでもよい。いくつかの実施形態は、特定のファンクション又は複数のファンクションセット専用の多数の実行ユニットを含み得る。他の実施形態は、1つの実行ユニットのみを含んでもよく、又は特定のファンクションを実行できる1つの実行ユニットを含んでもよい。実行ロジック914は、コード命令によって指定される動作を実行する。
コード命令によって指定される動作の実行が完了した後、バックエンドロジック918は、コード904の命令をリタイアできる。1つの実施形態において、プロセッサコア900は、アウトオブオーダ実行を許可するが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック920は、(例えばリオーダバッファ又は同様の)様々な知られた形式を取ってよい。このように、少なくとも、デコーダ、レジスタリネーミングロジック910によって利用されるハードウェアレジスタ及びテーブル、並びに実行ロジック914によって変更される任意のレジスタ(不図示)により生成される出力に関して、プロセッサコア900は、コード904の実行中に変換される。
図9に例示されていないが、プロセッサは、プロセッサコア900と共に他の要素をチップ上に含んでよく、少なくともそれらのうちいくつかは、図7に関連して本明細書に示され及び説明されている。例えば、図7に示されているように、プロセッサは、プロセッサコア900と共にメモリ制御ロジックを含み得る。プロセッサは、I/O制御ロジックを含んでよく、及び/又はメモリ制御ロジックと統合されるI/O制御ロジックを含んでよい。
本明細書に提供されている例に関して、インタラクションは、2つ、3つ又はそれより多くのネットワーク要素に関して説明され得ることに留意されたい。しかしながら、これは単に、明確性及び例示目的のためになされているものである。特定の場合には、限定的な数のネットワーク要素のみを参照することによって、所与のセットのフローの機能のうち1又は複数を説明することがより容易になる場合がある。通信システム100及びその教示は、容易に拡張可能であり、数多くのコンポーネント、並びにより複雑な/高性能の配置及び構成にも対応できることが理解されるべきである。従って、提供されている例は、潜在的に無数の他のアーキテクチャに適用されるので、通信システム100の範囲を限定し、又はその広範な教示を阻むべきではない。
前述されたフロー図(すなわち図5及び図6)における動作は、考えられる相関シナリオ及びパターンのうち、通信システム100によって実行され得る、又は通信システム100内にある、いくつかのものだけを例示していることに留意することも重要である。これらの動作のうちいくつかのものは、適切な箇所で削除され若しくは除去されてよく、又は、これらの動作は、本開示の範囲から逸脱することなく、大幅に修正若しくは変更されてよい。加えて、これらの動作の多数は、1又は複数の追加的な動作と同時に又は並行して実行されていると説明されている。しかしながら、これらの動作のタイミングは、大幅に変更され得る。前述された動作のフローは、例示及び説明目的のために提供されている。任意の好適な配置、時系列、構成及びタイミングのメカニズムが、本開示の教示から逸脱することなく提供され得るという点で、大きな柔軟性が、通信システム100によって提供される。
本開示は、特定の配置及び構成に関連して詳細に説明されているが、これらの例示的な構成及び配置は、本開示の範囲から逸脱することなく著しく変更され得る。更に、特定のコンポーネントが、特定の必要性及び実装に基づいて、組み合わされ、分離され、排除され、又は追加され得る。更に、通信システム100は、通信プロセスを容易にする特定の要素及び動作を参照して例示されているが、これらの要素及び動作は、通信システム100の意図される機能を実現する任意の好適なアーキテクチャ、プロトコル及び/又はプロセスによって置き換えられてよい。
多数の他の変更、代替、変形、改変及び修正が、当業者に確認され得て、本開示は、全てのそのような変更、代替、変形、改変及び修正を添付の特許請求の範囲内に含まれるものとして包含することが意図される。米国特許商標庁(USPTO)を補助するため、更に、本明細書に添付の特許請求の範囲の解釈において、本願に基づいて発行された任意の特許のあらゆる読者を補助するため、出願人は、(a)「の手段(means for)」又は「の段階(step for)」という文言が、特定の特許請求の範囲において具体的に用いられない限り、出願日において本明細書に存在するよう、添付の特許請求の範囲の何れかに米国特許法第112条第6段落を援用することを出願人が意図しない、(b)明細書におけるあらゆる記述によって、決して、本開示をそうでなければ添付の特許請求の範囲に反映されないように限定することを出願人が意図しない、ことに留意することを望んでいる。
[他の留意事項及び例]
例C1は、少なくとも1つのプロセッサによって実行されるとき、アプリケーションを識別することと、アプリケーションを実行することと、アプリケーションの各ファンクションコールのためのパラメータを記録することと、エミュレーションテーブルに記録されたパラメータを格納することとを少なくとも1つの機械可読媒体に実行させる1又は複数の命令を有する少なくとも1つの機械可読媒体である。
例C2において、例C1の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
例C3において、例C1−C2の何れか1つの主題は、命令は、少なくとも1つのプロセッサによって実行されるとき、全体的なロギングデータを評価し、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定することを少なくとも1つの機械可読媒体に更に実行させることを任意で含んでよい。
例C4において、例C1−C3の何れか1つの主題は、命令は、少なくとも1つのプロセッサによって実行されるとき、各ファンクションコールの出力に影響を与えない任意のパラメータを除外することを少なくとも1つの機械可読媒体に更に実行させることを任意で含んでよい。
例C5において、例C1−C4の何れか1つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
例C6において、例C1−C5の何れか1つの主題は、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含むことを任意で含んでよい。
例C7において、例C1−C6の何れか1つの主題は、命令は、少なくとも1つのプロセッサによって実行されるとき、エミュレーションテーブルを電子デバイスに伝達することを少なくとも1つのプロセッサに更に実行させることを任意で含んでよい。
例C8において、例C1−C7の何れか1つの主題は、アプリケーションがサンドボックス環境で実行されることを任意で含んでよい。
例A1において、装置が、ネットワークエミュレーションモジュールを含み得、ネットワークエミュレーションモジュールは、アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納するよう構成される。
例A2において、例A1の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
例A3において、例A1−A2の何れか1つの主題は、ネットワークエミュレーションモジュールは更に、全体的なロギングデータを評価し、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせを決定するよう構成されることを任意で含んでよい。
例A4において、例A1−A3の何れか1つの主題は、ネットワークエミュレーションモジュールは更に、ファンクションコールの出力に影響を与えない任意のパラメータを除外するよう構成されることを任意で含んでよい。
例A5において、例A1−A4の何れか1つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
例A6において、例A1−A5の何れか1つの主題は、エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含むことを任意で含んでよい。
例A7において、例A1−A6の何れか1つの主題は、モニタリングモジュールは、エミュレーションテーブルを電子デバイスに伝達するよう更に構成されることを任意で含み得る。
例A8において、例A1−A7の何れか1つの主題は、モニタリングモジュールは、サンドボックス環境でアプリケーションを実行するよう更に構成されることを任意で含み得る。
例M1は、電子デバイス上のアプリケーションを識別することと、エミュレーションテーブルを用いてアプリケーションの実行をシミュレートすることであって、エミュレーションテーブルは、アプリケーションの各ファンクションコールのためのパラメータを含む、シミュレートすることとを含む方法である。
例M2において、例M1の主題は、パラメータが入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
例M3において、例M1−M2の何れか1つの主題は、マルウェアの存在のためのアプリケーションの実行のシミュレーションを分析することを任意で含んでよい。
例M4において、例M1−M3の何れか1つの主題は、エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含むことを任意で含んでよい。
例M5において、例M1−M4の何れか1つの主題は、エミュレーションテーブルは、ネットワーク要素によって生成され、ネットワーク要素から電子デバイスへ通信されたことを任意で含んでよい。
例M6において、例M1−M5の何れか1つの主題は、エミュレーションテーブルは、アプリケーションを識別することと、そのアプリケーションを実行することと、そのアプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納することによって生成されたことを任意で含んでよい。
例M7において、例M1−M6の何れか1つの主題は、エミュレーションテーブルの生成の間、ロギングデータが評価され、各ファンクションコールのための入力から出力へのパラメータマッピングの最も一般的な組み合わせが決定されたことを任意で含んでよい。
例S1は、アプリケーションのシミュレーションのためのシステムであり、システムは、アプリケーションを識別し、アプリケーションを実行し、アプリケーションの各ファンクションコールのためのパラメータを記録し、エミュレーションテーブルに記録されたパラメータを格納するよう構成されるネットワークエミュレーションモジュールを含み得る。
例S2において、例S1の主題は、記録されたパラメータがファンクションコール、入力パラメータ、及び出力パラメータを含むことを任意で含んでよい。
例X1は、例A1−A8又は例M1−M7の何れか1つに示されるように、方法を実装するための、又は装置を実現するための機械可読命令を含む機械可読記憶媒体である。例Y1は、例示的な方法M1−M7の何れかを実行するための手段を含む装置である。例Y2において、例Y1の主題は、プロセッサ及びメモリを含む方法を実行するための手段を任意で含んでよい。例Y3において、例Y2の主題は、機械可読命令を含むメモリを任意で含んでよい。

Claims (28)

  1. 少なくとも1つのプロセッサによって実行されることで、
    サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行することと、
    前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録することと、
    後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも1つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納することと
    前記ファンクションコールのうち少なくとも1つの出力に影響を与えない少なくとも1つのパラメータを除去することと
    を前記少なくとも1つのプロセッサに実行させる1又は複数の命令を備える
    プログラム。
  2. 前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項1に記載のプログラム。
  3. 前記少なくとも1つのプロセッサによって実行されることで、
    全体的なロギングデータを評価し、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせを決定することを前記少なくとも1つのプロセッサに更に実行させる1又は複数の命令を更に備える、請求項1又は2に記載のプログラム。
  4. 前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項1から3の何れか一項に記載のプログラム。
  5. 前記エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含む、請求項1からの何れか一項に記載のプログラム。
  6. 前記少なくとも1つのプロセッサによって実行されることで、
    前記エミュレーションテーブルを電子デバイスに伝達することを前記少なくとも1つのプロセッサに更に実行させる1又は複数の命令を更に備える、請求項1からの何れか一項に記載のプログラム。
  7. 前記エミュレーションテーブルは、第1ファンクションコールを実行する必要なく、前記シミュレーション環境において前記第1ファンクションコールの実行をシミュレートするために用いられ、前記複数のファンクションコールは、前記第1ファンクションコールを含む、請求項1からの何れか一項に記載のプログラム。
  8. 少なくとも1つのプロセッサによって実行されることで、
    前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録することと、
    前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
    前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
    前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用することと
    を前記少なくとも1つのプロセッサに実行させる1又は複数の命令を備える、請求項1から7の何れか一項に記載のプログラム。
  9. サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行し、 前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
    後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも1つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納し、
    それぞれのファンクションコールの出力に影響を与えないパラメータを除外する、
    ネットワークエミュレーションモジュール
    を備える
    装置。
  10. 前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項9に記載の装置。
  11. 前記ネットワークエミュレーションモジュールは更に、
    全体的なロギングデータを評価し、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせを決定する、請求項9又は10に記載の装置。
  12. 前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項9から11の何れか一項に記載の装置。
  13. 前記エミュレーションテーブルは、複数のファンクションコールのための複数の記録されたパラメータを含む、請求項9から12の何れか一項に記載の装置。
  14. 前記ネットワークエミュレーションモジュールは更に、
    前記エミュレーションテーブルを電子デバイスに伝達する、請求項9から13の何れか一項に記載の装置。
  15. 前記エミュレーションテーブルは、第1ファンクションコールを実行する必要なく、前記シミュレーション環境において前記第1ファンクションコールの実行をシミュレートするために用いられ、前記複数のファンクションコールは、前記第1ファンクションコールを含む、請求項9から14の何れか一項に記載の装置。
  16. 前記ネットワークエミュレーションモジュールは、
    前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
    前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
    前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
    前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する、請求項9から15の何れか一項に記載の装置。
  17. 少なくとも1つのプロセッサによって実行される方法であって、
    サンドボックス環境で複数のファンクションコールを含むアプリケーションを実行する段階と、
    前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録する段階と、
    後でシミュレーション環境で使用して前記ファンクションコールのうち少なくとも1つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータをメモリに格納する段階と、
    前記ファンクションコールのうち少なくとも1つの出力に影響を与えない少なくとも1つのパラメータを除去する段階と、
    を備える方法。
  18. 電子デバイス上の前記アプリケーションを識別する段階と、
    前記エミュレーションテーブルを用いて前記アプリケーションの実行をシミュレーションすることであって、前記エミュレーションテーブルは、前記アプリケーションのそれぞれの前記ファンクションコールのためのパラメータを含む、シミュレーションする段階と
    更に備える、請求項17に記載の方法。
  19. 前記パラメータは、入力パラメータ及び出力パラメータを含む、請求項18に記載の方法。
  20. マルウェアの存在のための前記アプリケーションの前記実行の前記シミュレーションを分析する段階を更に備える、請求項18又は19に記載の方法。
  21. 前記エミュレーションテーブルにおけるデータは、エミュレーションモジュールによって実行時に解釈可能なファンクションコール毎のマッピングテーブルを含む、請求項19又は20に記載の方法。
  22. 前記エミュレーションテーブルは、ネットワーク要素によって生成され、前記ネットワーク要素から前記電子デバイスへ通信された、請求項19から21の何れか一項に記載の方法。
  23. 前記エミュレーションテーブルは、
    サンドボックス環境で前記アプリケーションを実行することと、
    前記アプリケーションのそれぞれのファンクションコールのための前記パラメータを記録することと、
    前記エミュレーションテーブルに前記記録されたパラメータを格納することと
    によって生成された、請求項19から22の何れか一項に記載の方法。
  24. 前記エミュレーションテーブルの生成の間、ロギングデータが評価され、それぞれのファンクションコールのための入力から出力へのパラメータマッピングの一般的な組み合わせが決定された、請求項19から23の何れか一項に記載の方法。
  25. 前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録する段階と、
    前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用する段階であって、前記ファンクションコールの実行をシミュレートすることは、
    前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定する段階、および
    前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合ことの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信する段階、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する段階と
    を備える、請求項17から24の何れか一項に記載の方法。
  26. アプリケーションのシミュレーションのためのシステムであって、前記システムは、
    サンドボックス環境でアプリケーションを実行し、
    前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
    後でシミュレーション環境で使用して、前記ファンクションコールを実行する必要なく前記ファンクションコールのうち少なくとも1つの実行をシミュレートするべく、エミュレーションテーブルに前記記録されたパラメータを格納し、
    それぞれのファンクションコールの出力に影響を与えないパラメータを除外する、
    ネットワークエミュレーションモジュールを備える、
    システム。
  27. 前記記録されたパラメータは、ファンクションコール、入力パラメータ、及び出力パラメータを含む、請求項26に記載のシステム。
  28. 前記ネットワークエミュレーションモジュールは、
    前記サンドボックス環境で複数の前記ファンクションコールを含む前記アプリケーションを実行し、
    前記サンドボックス環境で実行中に前記アプリケーションのそれぞれのファンクションコールのためのパラメータを記録し、
    前記複数のファンクションコールのうちのファンクションコールの実行をシミュレートするために前記シミュレーション環境で前記記録されたパラメータを使用することであって、前記ファンクションコールの実行をシミュレートすることは、
    前記ファンクションコールのための現在のシミュレーション環境のパラメータセットが、前記ファンクションコールのための前記記録された入力パラメータと適合するかどうかを、前記エミュレーションテーブルから判定すること、および
    前記現在のシミュレーション環境のパラメータセットが、記録された入力パラメータと適合することの判定に応答して、前記ファンクションコールのための前記記録された出力パラメータを返信すること、によって前記ファンクションコールを実行することなく前記ファンクションコールをシミュレートすることを含む、前記記録されたパラメータを使用する、請求項26または27に記載のシステム。
JP2017566803A 2015-06-27 2016-05-24 アプリケーションのシミュレーション Active JP6583838B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/752,911 US9846774B2 (en) 2015-06-27 2015-06-27 Simulation of an application
US14/752,911 2015-06-27
PCT/US2016/033853 WO2017003582A1 (en) 2015-06-27 2016-05-24 Simulation of an application

Publications (2)

Publication Number Publication Date
JP2018525714A JP2018525714A (ja) 2018-09-06
JP6583838B2 true JP6583838B2 (ja) 2019-10-02

Family

ID=57602477

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017566803A Active JP6583838B2 (ja) 2015-06-27 2016-05-24 アプリケーションのシミュレーション

Country Status (5)

Country Link
US (1) US9846774B2 (ja)
EP (1) EP3314503B1 (ja)
JP (1) JP6583838B2 (ja)
CN (1) CN108093652B (ja)
WO (1) WO2017003582A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698732B2 (en) 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10452539B2 (en) * 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US11977484B2 (en) 2016-07-19 2024-05-07 Sap Se Adapting in-memory database in hybrid memory systems and operating system interface
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
RU2659742C1 (ru) * 2017-08-17 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных
CN110908893A (zh) * 2019-10-08 2020-03-24 深圳逻辑汇科技有限公司 联邦学习的沙盒机制
CN113722020A (zh) * 2020-05-26 2021-11-30 腾讯科技(深圳)有限公司 接口调用方法、装置和计算机可读存储介质
US20210374229A1 (en) * 2020-05-28 2021-12-02 Mcafee, Llc Methods and apparatus to improve detection of malware in executable code
CN113759749B (zh) * 2020-06-02 2024-05-03 青岛海信日立空调系统有限公司 一种冷水机组仿真系统

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0883198A (ja) * 1994-09-12 1996-03-26 Toshiba Corp プログラムシミュレーション装置
JPH08147195A (ja) * 1994-11-16 1996-06-07 Oki Electric Ind Co Ltd 障害検出/記録装置
JPH08147196A (ja) * 1994-11-17 1996-06-07 Nippon Telegr & Teleph Corp <Ntt> システムコールエミュレータ
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
US7146305B2 (en) * 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US7814308B2 (en) * 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
US8281401B2 (en) * 2005-01-25 2012-10-02 Whitehat Security, Inc. System for detecting vulnerabilities in web applications using client-side application interfaces
US8135994B2 (en) * 2006-10-30 2012-03-13 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
CN101329638B (zh) * 2007-06-18 2011-11-09 国际商业机器公司 程序代码的并行性的分析方法和系统
KR100951852B1 (ko) 2008-06-17 2010-04-12 한국전자통신연구원 응용 프로그램 비정상행위 차단 장치 및 방법
US8914879B2 (en) * 2010-06-11 2014-12-16 Trustwave Holdings, Inc. System and method for improving coverage for web code
CN102034050A (zh) * 2011-01-25 2011-04-27 四川大学 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法
US9672355B2 (en) * 2011-09-16 2017-06-06 Veracode, Inc. Automated behavioral and static analysis using an instrumented sandbox and machine learning classification for mobile security
US8806639B2 (en) * 2011-09-30 2014-08-12 Avaya Inc. Contextual virtual machines for application quarantine and assessment method and system
CN103186740B (zh) * 2011-12-27 2015-09-23 北京大学 一种Android恶意软件的自动化检测方法
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9336025B2 (en) * 2013-07-12 2016-05-10 The Boeing Company Systems and methods of analyzing a software component
GB2518636B (en) * 2013-09-26 2016-03-09 F Secure Corp Distributed sample analysis
CN103685251B (zh) * 2013-12-04 2016-08-17 电子科技大学 一种面向移动互联网的Android恶意软件检测平台
CN104462973B (zh) * 2014-12-18 2017-11-14 上海斐讯数据通信技术有限公司 移动终端中应用程序的动态恶意行为检测系统及方法

Also Published As

Publication number Publication date
CN108093652B (zh) 2021-08-24
EP3314503A4 (en) 2019-05-08
CN108093652A (zh) 2018-05-29
US20160378977A1 (en) 2016-12-29
EP3314503A1 (en) 2018-05-02
US9846774B2 (en) 2017-12-19
WO2017003582A1 (en) 2017-01-05
JP2018525714A (ja) 2018-09-06
EP3314503B1 (en) 2023-12-13

Similar Documents

Publication Publication Date Title
JP6583838B2 (ja) アプリケーションのシミュレーション
US11870793B2 (en) Determining a reputation for a process
US10176344B2 (en) Data verification using enclave attestation
US20200065493A1 (en) Identification of malicious execution of a process
KR101884548B1 (ko) 멀웨어의 추적 및 검출을 위한 시스템 및 방법
JP6583865B2 (ja) プロファイリングイベントに基づいたエクスプロイト検出
US10366228B2 (en) Detection and mitigation of malicious invocation of sensitive code
JP2018519604A (ja) マルウェアの検出
JP2018519603A (ja) シェルコードの検知
JP2018520437A (ja) デジタル証明書を使用したマルウェア検出
JP2020113290A (ja) マルウェアの軽減
JP6598221B2 (ja) マルウェアを特定するための変則検知
JP2018524716A5 (ja)
US11386205B2 (en) Detection of malicious polyglot files

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190507

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190826

R150 Certificate of patent or registration of utility model

Ref document number: 6583838

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