エミュレータ

コードエミュレーションテクノロジーについて
マルウェア検知のコードエミュレーション方式では、仮想(エミュレートされた)環境でファイルの実行をエミュレートして、ファイルのふるまいをスキャンします。一般に、このアプローチはサンドボックスでのマルウェアの検知アプローチと似ていますが、エミュレーションとフル装備のサンドボックスでは、設計とアプリケーションの詳細が異なります。この違いについて見てみましょう。
フル機能のサンドボックスは、エミュレータとは異なり、「重い」方式です。サンドボックスでは、環境全体をエミュレートし、実際のオペレーティングシステム(OS)とアプリケーションがインストールされた仮想マシンでスキャンされたサンプルを実行します。その結果、この方式では高い計算能力が必要になり、ホストシステムの互換性が制限されます。このため、サンドボックスは、一元管理されたオンプレミスソリューションとクラウド内ソリューションで最も効果的ですが、ユーザーホストやその他の通常のコンピューターでのマルウェアの検知には適していません。
エミュレータでは、サンプル自体の実行のみをエミュレートし、マルウェアが盗もうとするパスワード、マルウェアが停止しようとするアンチウイルス、メモリ、システムレジストリなど、サンプルが操作するオブジェクトを一時的に作成します。これらのオブジェクトは、OSまたはソフトウェアの実際の部分ではなく、エミュレータによって作成された模倣的なオブジェクトです。エミュレータでは、エミュレートされた環境を制御することで、時間を早送りして、将来のファイルのふるまいを監視し、時間を送らせてマルウェアが検知を回避するのを防ぎます。
エミュレータは、使用するリソースがサンドボックスよりもはるかに少なく、スキャンされたファイルのふるまいの重要な特徴を判断するため、ユーザーホストに適しています。不明なファイルの実行は、通常、エミュレータでスキャンされるまで延期されます。エミュレーションのアプローチは新しいものではありませんが、非常に高度なエミュレータもあり、マルウェアの検知で大きなシェアを占めているものもあります。現在のエミュレータは、クラウドベースのレピュテーションサービスを備えており、その効果は機械学習によって強化されています。
カスペルスキーのエミュレータ
カスペルスキーのソリューションでは、多層保護アプローチの最終防御ラインの1つとして、エミュレータを導入しています。エミュレータでは、バイナリファイルとスクリプトをエミュレートします。特に、スクリプトの重要性は、スクリプトベースのファイルレス攻撃の広がりとともに高まっています。
エミュレーションは、限られたコンピューターリソース用に最適化されています。サンドボックスよりもオブジェクトあたりのRAMがはるかに少なくて済み、システムに実質的な負荷をかけることなく、同時に多くのオブジェクトをスキャンできます。また、ハードウェアアクセラレーションにより、エミュレータがプロセッサを安全に使用して、約20倍高速にスキャンします。
カスペルスキーのソリューションでは、「オンデマンド」(ユーザーがディスクスキャンを要求したとき)、または「オンアクセス」(オブジェクトのアクセスまたは実行前にオブジェクトが自動的にスキャンされたときに)にエミュレーションスキャンを開始します。エミュレーションは、クラウドのプロセスレピュテーションのリクエストなど、他の検知方式と同時に開始できます。
エミュレータは、カスペルスキーのエンドポイントソリューション、ゲートウェイレベルのソリューション(プロキシサーバーやメールサーバーなど)、仮想化環境保護に実装されています。カスペルスキーのインフラストラクチャでは、強力なエミュレータがオブジェクト分類パイプラインを構成しています。
エミュレータのタスク:
- 実行可能ファイル(PE)(*.exe、*.dll、*.sys、Windows環境のその他のファイル)の実行をエミュレートします。
- JavaScript、VBScript、AutoITスクリプトのタイプ、スタンドアロンスクリプト(ファイルとしてダウンロード)を処理します。
- PDFファイルとMS Officeファイルに埋め込まれたWebリンク(Webページ、メール、メッセージ)経由で受信したスクリプトをスキャンします。
アップデート
エミュレーションテクノロジーは、エミュレーションコアと、コアから提供されたデータを分析する検知レコードで実現されます。レコードはカスペルスキーで作成され、ソリューションによってアップデートが1時間ごとにダウンロードされます。バイナリコンテンツが異なるが、ふるまいが類似しているさまざまなマルウェアサンプルを1つの検知レコードで検出できます。
マルウェア検知ワークフロー
- セキュリティソリューションの別のコンポーネントから、オブジェクト(実行可能ファイルまたはスクリプト)のスキャンの要求をエミュレータが受け取ります。
- エミュレータは、オブジェクトのエントリポイントから開始し、仮想環境でオブジェクトの命令を1つずつ安全に実行します。命令によって環境(OS、レジストリ、その他のファイル、Web、メモリなど)が操作される場合、エミュレータはこれらのオブジェクトからの応答を模倣します。
- エミュレータがアーティファクトを収集し、ヒューリスティックアナライザに渡します。アナライザは、これらのアーティファクトに基づく判定を、分析を要求したコンポーネントに渡します。
- マルウェアを検出するのに十分なアーティファクトがある場合、またはタイムアウトした場合、エミュレーションは停止します。
エミュレータで収集されるアーティファクト
実行可能ファイル(バイナリ):
- API呼び出しのログ
- ファイルシステム、システムレジストリのすべての変更
- メモリダンプ
スクリプト:
- 文字列の処理の引数と戻り値
- 埋め込み機能と環境で提供される機能の呼び出し
- イベント
- ファイルシステムと子スクリプトへのドロップ
保護の回避
高度なマルウェアの作成者は、エミュレーションでの検知を回避する機能をマルウェアに組み込むため、カスペルスキーのエミュレータは、このような新たな回避手法を追跡し、それに対抗します。例:
回避A:実行する前に、マルウェアを解凍する必要があります。これには多くの計算時間がかかるため、通常はエミュレーションがタイムアウトし、検知を十分に回避できます。
回避対策A:圧縮されたファイルをエミュレータが認識し、それに応じてエミュレーションの深度を調整します。ハードウェアアクセラレーションを使用することで、エミュレータによるマルウェアの解凍能力を十分に高めることができます。
回避B:マルウェアは、悪意のあるペイロードを実行する前に、その環境のWebリソースまたはパラメータ(コンピューター名、ディスクサイズなど)にアクセスし、それらが利用可能で有意義かどうかを確認する場合があります。有意義な応答がない場合、マルウェアはそのペイロードを実行せず、検出を回避します。
回避対策B:スキャンされたファイルの要求に応じて、エミュレータが環境とシステムリソースに関する情報を模倣し、可能な限り有意義なものにします。例えば、コンピューター名をランダムにし、エミュレーションで実行されていることを示すシグナルとして、特定のコンピューター名をマルウェアが使用できないようにします。
関連するカスペルスキー製品
第三者評価機関のベンチマーク結果
関連テクノロジー

Multi-layered Approach

SandBox
