Twitterに書ききれないこと

イベントや技術的なことを記したい・・・

SandPrint: Fingerprinting Malware Sandboxes to Provide Intelligence for Sandbox Evasionの紹介

この記事は情報セキュリティ系論文紹介 Advent Calendar 2016 13日目の記事である.

www.adventar.org

本記事で用いられている図表はこの論文から引用したものである.

筆者は英語に長けおらず,専門知識も乏しいので誤訳・誤解釈している場合があるので,詳細な内容は元論文を参考されたし.

SandPrint: Fingerprinting Malware Sandboxes to Provide Intelligence for Sandbox Evasion - Springer

全然要約できていおらず申し訳ない・・・ 概要,はじめに,おわりに,各章のまとめを流し読めば,だいたいの内容が理解できると思う. 有名所のサンドボックス検知手法を用いずに,サンドボックス検知しているところが面白いなと思った.

概要

増加するマルウェアに対処するため,自動的にプログラムを解析する技術が必要となる.特にマルウェアサンドボックスは,プログラムの動作を抽出するために標準的に用いられる.しかし,プログラムをサブミットできる人は,特定のサンドボックスの特性を学習してリークさせることができる.Windowsがターゲットのサンドボックスの特性を測定してリークさせるプログラムであるSandPrintを紹介する.我々は20のマルウェア分析サービスにツールをサブミットし,2666の分析レポートを収集し,76のサンドボックスクラスタ化する.次に,攻撃者が単一のサンドボックスの特性だけでなく,すべてのサンドボックスに固有の特性のサブセットを検出できるかどうかを評価する.実際に,教師付き学習技術を使用して,敵が自動的にサンドボックスと実際のシステムを区別できるクラスを自動的に生成できることを示す.最後に,3つの一般的なベンダーの市販のマルウェアセキュリティアプライアンスを同様の手法で密かに検出できることを示す.

1. はじめに

悪意のあるソフトウェアは,今日の主要なセキュリティ上の課題の1つである.さまざまな形で,マルウェアはビジネスと同様に消費者にとって脅威である.マルウェアの増加は亜種によるものだが,日常的にほぼ発見される新しい検体によっても引き起こされる.

防御側は大量のマルウェアに対処するために未知のプログラムを自動化する方法を分析するためのいくつかの補完的なアプローチを導入した.特に,Windowsベースのマルウェアサンドボックスは,学術的,業界的にも自動マルウェア分析[24]のデファクトスタンダードになっている.サンドボックスは,新種のマルウェア解析,マルウェア検出メカニズムのための入力データ,マルウェアのC&Cサーバ,バンキングトロイ,リバースエンジニアリングの手作業を支援で活用されて脅威情報を収集する.最後に,サンドボックスは動的マルウェア分析によって組織を保護することを目的の商業マルウェアセキュリティ・アプライアンスの一部として使用される.

未知のプログラムの分析を自動化すると,解析が無人であるというリスクがある. 多くの場合,サンプルを受信し,解析のためにスケジューリングして実行した後に解析結果をサンプル提出者に返すことさえも完全自動化された処理チェーンに組み込まれている.サンドボックスにサンプルを提出できる人は、特定のサンドボックスの特性をリークさせる可能性がある.通常は、自動マルウェア分析サービスにサンプルを提出し,その後サンドボックスのサンプルを再配布し,簡単にグローバルなサンドボックスの内部を洞察する大規模なソースを生成する.

本稿では,この一般的な考え方に沿ってサンドボックスの特性(正確なOS情報、ネットワーク構成、またはインストール,またはエミュレートされたハードウェアなど)を測定してリークするWindowsベースのプログラムであるSandPrintを紹介する.対象としたのは以下のマルウェア解析サービスである.これらの11のサービスから2666の分析レポートを収集した.

サンドボックスを把握しようとする試みでは,教師なし学習メカニズムを使用して,SandPrintレポートとそのさまざまな機能をグループ化し,サンドボックスを識別する. このプロセスは76のサンドボックスを暴く,それらの多くは、マルウェア解析サービスとの自動サンプル交換によってサンプルを得ることが多い.

マルウェアサンドボックスを検出することは可能か? 今のところ、多くのマルウェアファミリーは,個々のサンドボックスアーティファクトを特定する(仮想化を検出したり、特定のサンドボックス構成を回避する)手法を持っている. 我々は代わりに,攻撃者が単一のサンドボックスの特性だけでなく、すべてのサンドボックスに固有の特性を検出する可能性があるかどうかを調べる(たとえば、SandPrintのようなツールを使用して).収集された特徴に基づいた教師あり学習を活用し,サンドボックスを確実に検出する自動分類を訓練する.

最後に、一般的なベンダーのマルウェアアプライアンスを検出する可能性に着目する.これらのアプライアンスが内部的にサンドボックス技術も使用しているため,同様の回避攻撃を受ける可能性が高い. 実際には,上記のサンドボックスの上だけで分類器を訓練することによって,攻撃者がアプライアンスを回避する可能性があることを示している.

この論文の貢献を要約を以下に示す. * マルウェアサンドボックスの特性を評価するためのツールであるSandPrintを提供した.それを20のパブリックなマルウェア解析サービスに提出し,教師なし学習技術を使用して76のサンドボックスの特性を特定した. * その結果得られたSandPrintレポートを活用して,サンドボックスとユーザシステムを確実に区別することができるようになった. * マルウェアセキュリティアプライアンスサンドボックスの内部を事前に把握しなくても,それを検出するためにパブリックサンドボックスから学んだ特性を使用できることを示した.

2.背景

この論文全体で使用する用語について説明する.「サンドボックス」という用語は,未知のプログラム(サンプルと呼ぶ)を実行する動的解析環境を指す.サンドボックスは,現在のキャンペーン[19],最近のC&Cサーバーとトラッキングパターン[46,36,44]や攻撃対象[26]など,悪意のあるソフトウェア(マルウェア)に対する識見を得るために広く使用される.同様に、サンドボックスを使用して,疑わしい行動パターンをマルウェアファミリーに分類したり,特定したりすることができる[32]. Egeleらは,既知のサンドボックス実装[24]の包括的な概要を示している.

マルウェアサンドボックスを使用するのは学者だけではない.手動分析とは対照的に,サンドボックスは高度に自動化されている.そのため,アンチウイルス業界のマルウェア対策アプライアンスやセキュリティ会社は,サンドボックスに大きく依存している.

仮想化

分析の規模を拡大するために、ほとんどのサンドボックスは,何らかの形の仮想化に依存している.(ベアメタル型のサンドボックスは例外[30,31]) このためサンドボックスは,VMWare [15]やVirtualBox [10]やCPUエミュレータ[17,4]などのさまざまな仮想化技術に依存している.Cuckoo Sandbox [8]は人気のあるオープンソースサンドボックスである.しかし,多くのセキュリティ組織は商用のサンドボックスから選択するか,独自のソリューションを設計するなど,他のサンドボックスを運用している.仮想化は,多くの仮想マシンVM)を1つのシステムで並列に実行し,それぞれ1つのサンプルを解析できるという利点がある.さらに,仮想化ソフトウェアは,VMのスナップショットを取ることでVMの状態を元の状態に戻すことができる.スナップショットは、マルウェアが実行されるとシステムの状態をリセットするのに役立つ.そのためマルウェア実行の影響を受けない.

オペレーティングシステム

サンドボックスの実装に関係なく,一般的なサンドボックスは,MS Windowsなどの一般的なオペレーティングシステムでサンプルを実行する.Windowsベースのマルウェアが流行しているため,Windowsベースのサンドボックスに焦点を当てるが,本手法はAndroidベースの[37]またはLinuxベースの[39]サンドボックスにも適用できる.

マルウェア解析サービス

マルウェア解析サービス(以下、単に「サービス」)は,サンドボックスとは対照的にサンプルの提出を(例えば、ウェブインターフェースを介して)受け取り,提出されたサンプルを様々な方法で解析し,解析結果をユーザに提供する.これらのサービスは通常,サンプルを分析するために1つまたは複数のサンドボックスを使用する.さらに、VirusTotal [14]やJottiのマルウェアスキャン[28]などのサービスは、アンチウイルススキャンを提供する.また,サービスが他のサンドボックスとサンプルを共有することは一般的である.実際、一部のサービスでは,サンプルのハッシュ値アンチウイルスラベルなどのさまざまなキーワードを使用して他のユーザーの提出物を検索することや,有料のAPIを使用して検索とダウンロードを自動化することができる.表2は、各サービスが提供する分析結果をまとめたものである.サンプルの提出を受け入れるが、分析結果をユーザーに提供しない9つのサービスがある.ベンダーからのフィードバックに従って,提出されたサンプルは,インターネットアクセスなしの隔離された環境で手動で解析した.

表2: 論文から引用 論文から引用

マルウェアセキュリティアプライアンス

サンドボックスは、市販のマルウェアセキュリティアプライアンス(または単に以下のアプライアンス)の不可欠な部分となってる.アプライアンスは,未知のプログラムを動的に解析し,疑わしい動作の動作を検査することによってエンドポイントを保護する.アプライアンスは,しばしばネットワーク層で展開され,悪意のある電子メールの添付ファイルや悪意のあるファイルのダウンロードをエンドポイントから保護するなどウイルス対策に使用される.アプライアンスは内部的はサンドボックス技術を使用してプログラムの動作を解析する.

3. サンドボックスのフィンガープリンティング

このセクションでは,インターネットに接続されたサンドボックスの状況を調査するために,サンドボックスを掘り下げます.フィンガープリントは個々のサンドボックスに特有のアーティファクトを示す.3.1節ではサンドボックスの特定の特性を明らかにする属性(24個の機能)について説明する.次に、サンドボックスから特性を抽出するツールであるSandPrintを紹介する. 3.2節では,このツールを使用して20の一般的なマルウェア分析サービスに送信してフィンガープリントを収集し,取得したデータセットについて説明する.

3.1サンドボックスフィンガープリントの特徴

個々のサンドボックスの特性を記述するために,サンドボックスを区別するために使用するフィンガープリンティング機能を紹介する.表1に示すように、24の機能のリスト(非網羅的)を提案する.これらの特性を次の5つのカテゴリに分類する.

1. インストールされたシステム

サンドボックスでは,サンプルを実行するためにオペレーティングシステム(OS)が必要である.通常,マニュアル操作を最小限に抑えるために,サンドボックスオペレータはOSを一度インストールして設定後,システムのスナップショットを作成する.サンドボックス(例えばVM)のすべての並列インスタンスが同じシステムスナップショットを使用すると仮定すると,これは実行の中に多くの特徴をもたらす.

2. ハードウェア

エミュレートされているかどうかにかかわらず,基本となるハードウェアはサンドボックスの固有の特性を明らかにすることができる. すべての特徴はハードウェアがエミュレートされているか、実際に物理的に存在しているかには依存しない.

3. ネットワーク構成

サンドボックスは、典型的には、サンプルがインターネット(例えば、C&Cサーバ)と通信できるように構成されている.つまり,ネットワークの特徴とローカルの設定を収集することができる.

4.アクティビティ

システムスナップショットは,過去に(すなわち、インストール時に)発生した特定のイベントを明らかにする. 一般に,これらの特徴はシステムがデフォルト設定に近いかどうかを測定できる.

5. 実行開始

新しく感染していないサンドボックスが開始されると,アナリストが解析したいサンプルを配置する必要がある. このプロセスを自動化する方法は複数存在する.

このリストは、他の特徴でも簡単に拡張できる.我々は,潜在的に高いエントロピーを示し,特定のサンドボックスに特化した特徴を優先させる.選択された特徴のほとんどは決定論的であり,その値は離散的で信頼性がある.ステルス・サンドボックスは,特徴の値を多様化しようとする可能性があることに注意する必要がある.

3.2 SandPrintによるサンドボックスのフィンガープリントの抽出

上記のすべての特徴をシステムから抽出するためのツールSandPrintを実装した.SandPrintは、Cで書かれたWindows 32ビットPEバイナリであり,Windows APIとカスタム関数を使用してその特徴を明らかにする.Sand-Printが実行されると、HTTPを使用してSandPrintサーバーと通信する.各SandPrintサンプルに一意の識別子が割り当てられ,HTTPセッションが確立されるとHTTP POST要求に埋め込まれたこのIDがサーバーに送信される.IDが送信された後,要求を検出するためにチャレンジ・レスポンス認証が行われる.この最初のハンドシェイクの後,,SandPrintはシステムの特徴の収集を開始します.特徴抽出の実装にはsysteminfo,netstat,ipconfigなどのコマンドを使用していない.これらは,しばしばシステムの機能を収集するために使用されるので,実際にはいくつかのサンドボックスが制限していると考えている.さらに(例えば、遅いディスクI / Oのために)個々の特徴を収集することによって生じる潜在的デッドロックを回避するため,特徴収集関数を複数のスレッドに渡って分散させた.加えて実行時間全体を見積もるために,ハートビートスレッドが,SandPrintが実行中であることをサーバに定期的に通知する.各スレッドは,特徴収集処理が完了した後にサーバに特徴を送信する.すべてのSandPrintはHTTPプロトコルを模倣しているため,Webサーバーと通信しているように見える.

我々は20種類のマルウェア解析サービスにSandPrintを提出し,フィンガープリントを収集した.表2にパブリックサービスをまとめた.これには,一般的な学術的サービスと非学術的サービスを含んでいる. 2016年1月5日から2016年1月18日まで,SandPrintを定期的に提出した.

各サービスについて,どこのファイルがどこにアップロードされたかをマップできるように,独自のSandPrintインスタンスを作成した.つまりセマンティクス機能は変更されていないが,その結果のハッシュは区別できる.さらに,実行時に計算される一意の識別子をサーバに報告し,そのサービスが生成する公開分析レポートと対応付ける.分析レポートの対応する識別子と後で一致させることで,レポートが特定のサービスによって生成されたことがわかる.合計で,440回の提出のちの221回から2666個の SandPrintレポートを収集した.平均して1提出ごとに6件のレポートが作成できた.レポートは33カ国を含む395のIPアドレスから送信された.後で説明するように、これは、(i)同じサンプルを複数回(同じサンドボックスまたはわずかに異なるサンドボックスで)再実行し、(ii)サンドボックス/サービス全体でサンプルを共有する傾向が強いことを示している.この観察をより詳細に研究し,さらなる分析のために同様のSandPrintレポートをグループ化する.

4サンドボックスクラスタリング

フィンガープリントの収集は2500以上のレポートから行った.しかし,本当に多くのサンドボックスが存在するのか?複数のレポートを返すサンドボックスがあるか?この質問に答えるために、このセクションでは,類似のレポートをグループ化し,どのレポートがどのサンドボックスによって送信されたかを識別するクラスタリング手法を紹介する.

4.1 クラスタリング

最初の観測では,レポートのリスト全体のサブセットが実際に同様の特性を共有していることが示されている.サンドボックスがすぐに複数のレポートを送信すると,2つのサンプルの実行全体に変わらない可能性が高い特徴が存在する.どちらのレポートにも同じ特徴が含まれているかどうかを確認することができる.しかし,実際には(意図的にでもそうでなくても)サンドボックスの特徴の一部が多様化することがわかった.我々は,同様のレポートをまとめるために教師なし学習技術を使用することを提案する.サンドボックスのラベルや根拠がないため、ここでは古典的な教師なし問題に直面している.集約的な階層的クラスタリングを使用してレポートをグループ化することを選択した.階層的クラスタリングは、カスタム距離関数を指定することができ,事前に予想されるクラスタの数を決定する必要がないという利点がある.距離関数は,2つのレポートがどのように異なるかを決定する.表1のすべての"クラスタリング"特徴(「チェックマーク」を参照)に対応する距離関数を定義する.すなわち,一対のレポートR1とR2について,すべての対の特徴の距離を合計し,平均距離を達成するために特徴の数で割る. 公式で表すとR1とR2との間の距離関数は以下のようになる.

distkは特定の特徴kの値の間の距離である.2つのレポート間で特徴を比較すると等価(EQ)が予想され,そうでない場合は最大相違点が仮定される.すなわち,両方のレポートにおいて特徴kが等しい場合にはdistk(R1; R2)はゼロであり,そうでない場合には1となる.個々のサンドボックスで変化することが観察された選択された特徴に対して,我々は平等になること期待しない・つまり,正規化編集距離(ED)を使用してホスト名を比較し,ユークリッド距離(EU)を展開してディスク名とサンプル名の長さを比較し,Jaccard距離(JD)を使用して最近開いたファイルを比較する.表1に,それに応じて分類した特徴比較方法を示す.すべての距離関数は,範囲[0; 1]を使用して,単一の特徴が偏りを生じさせないようにする. 場合によっては,比較対象のレポートに特徴が存在しない場合がある.この場合は,サンドボックスの解析時間が短すぎてすべての測定を完了できなかった場合など,SandPrintはいくつかの特徴を収集できなかった可能性がある.(たとえば,プログラムディレクトリ内のすべてのファイルを追跡するのに時間がかかる場合がある).疎な特徴に取り組むために,表1のチェックマークで示されているほとんどのレポートに含まれている特徴に焦点を当てる.レポートに残りのフィーチャの特徴がない場合は,2つの特徴が似ているかどうかを判断できない.この問題に対象するため,両方のレポートには存在しない特徴を無視し,それに応じてN(特徴の数)を減らし,平均を取ることで偏りを回避する. 次に,すべてのレポート間の距離を計算し,最も類似したものをグループ化し,凝集単一リンククラスタリングを使用する.このプロセスにより,樹状図(樹状図)が生成され,レポートがどれと一緒にクラスタ化されているかを表すことができる.クラスタリングの後,0.5未満の距離を有するグループをクラスタとみなす.このしきい値は,特徴の少なくとも半分が単一のサンドボックスのレポートで似ていると予想してつけた.

4.2 クラスタリングの結果と検証

クラスタリングは、2666のレポートを76クラスタに減らすのに役立った.これらのうち16個はシングルトンクラスタであり,データセットに1つのレポートのみを提供するサンドボックスである.最大のクラスタは233のレポートにまたがっており,カバレッジクラスタは44のレポートで構成される.シングルトンクラスタを除外すると35のレポートで構成される. クラスタリング出力を検証するために,私たちの研究チームを2つの別々のグループに分けた.1つのグループが独立して自動クラスタリングを設計し実行していた間に,もう1つのグループがクラスタリング出力を検証した.この目的のために,特定のサンドボックスに対して識別された独自の特性に基づいて,同様のサンドボックスを手動でグループ化した.このような優れた特徴ごとに,サンドボックスのすべてのレポートに一致する正規表現を定義した.エントロピーが偶然の衝突を回避するのに十分な大きさの特徴を選択し,サンドボックスごとに少なくとも2つの特徴を定義した. 次に、クラスタリングの結果を、検証グループによって行われた手動の「クラスタリング」の結果と比較した.手動による割り当ての結果は,クラスタ化の結果と同じだったが,自動のクラスタリングでは,手動でグループ化しなかった2つのサンドボックスがマージされていた.このケースでは,ユーザー名,ワーキンググループ名,およびホスト名は似ていたが,OSのインストール日は3年以上離れていた.それ以外は、それ以上の矛盾はなかったため,クラスタリング手法がSandPrintレポート(およびその特徴)を少数のサンドボックスに正確にマッピングできることを示していると言える.

4.3 サンドボックス vs サービス

表2は20のマルウェア解析サービスに対するSandPrintの提出の結果をまとめたものである.9つのサービスからのレポートはなかった.これは,これらのサービスによってデプロイされたサンドボックスにインターネット接続がないこと,または提出されたサンプルに対して動的解析を行わなかったことを意味する.SandPrintは,特徴を収集する前にまずサーバに報告するように実装されている.9つのサービスの初期接続も存在しないためレポートの欠如がフィンガープリントを避けようとしているからではないことが言える.データがないため,これらの9つのサービスを除外し,残りの11つのサービスに焦点を当てる.

4.4 マルウェア解析サービスとサンドボックスマッピング

次に,SandPrintレポートをマルウェア解析サービスにマップすることを目指す.サンドボックスをサービスにマッピングする方法は2つある. 1つ目は,サービスによって返された分析レポート(すなわちSandPrintではなくサービスによって提供されるもの)を調査する.これらのレポートには,提出されたサンプルの挙動が含まれる.そして,それぞれのSandPrintサブミッションに一意の識別子をエンコードした.これが解析レポートに表示される.サービス#2、#11、#13、#20の解析レポートでは,この識別子が見つかった. 2つ目に,残りのサービスをマップするため,サンプルを特定のサービスに提出したときに,一部のサンドボックスが排他的に使用されたかどうかを解析した.つまり,特定のサービスが利用するサンドボックスを特定する.図3(付録参照)は,11個のマルウェア分析サービス(y軸)に提出されたすべてのサンプルとレポートクラスタリング(x軸)に従って76個のサンドボックス間のマッピングを示している.いくつかのマッピングは,解析レポートによって確認することができた.一部のサンドボックスは同じサービスで頻繁に排他的に使用されていることがわかる.たとえば,Sandbox 69はService#11では常に使用され,他のサービスは使用されていない.そのような場合,サービス専用のサンドボックスだと結論づけることができる.合計で、11のサービスのうちの4つの専用サンドボックスを明らかにした. サービスにサンドボックスにマップした後,サービスに1つも属さない71個のサンドボックスが残った.これは図3にも示されているが,さまざまなサービスのサンプルを解析するために一般的に使用される多くのサンドボックスがリストされている.サンプルがサービス間で積極的に共有されることを強調する.

4.5 実証的サンドボックス分析

まず,システムのインストール時の特徴を調べた.これらのサンドボックスでOSが特定できた71個のサンドボックスのうち37個がWindows XPで,29のサンドボックスWindows 7であった.他の5つのサンドボックスWindows 8を実行する.インストール日は,サンドボックスの年齢に近似できる.インストール日が偽装されていないと仮定すると,取得されたOSのインストール日はすべて2008年から2016年の間であった.また,サンドボックスの半分以上が少なくとも3歳以上である.2014年に10のサンドボックスがインストールされていた.2015年または2016年にはすでに18のサンドボックスがインストールされていた.41のサンドボックスWindowsプロダクトIDは静的であり,18のサンドボックスはこの値を変更する.マルウェアWindows製品IDをサンドボックス識別の特徴として使用することが確認されているため,これは多様な目的に役立つ. サンドボックスのホスト名と所有者名の分布は,多様化しているか,完全に静的か2つの極端なケースに分類される.これは,サンドボックス開発者のが偽造されないようにする対策を講じるからだと推測する.ほとんどのホスト名と所有者名を多様化するサンドボックスのランダム化された名前は,一般的なプレフィックスや文字列の固定長などの共通パターンを示す. 場合によっては,サンドボックスの実装を推論することもできる.Cuckoo Sandboxには,サンプルの解析時に動作していなければならないagent.pyという特定のファイルが含まれる.最近の実行したファイルリストにagent.pyが含まれているかどうかを確認することで,Cuckoo Sandboxがインストールされ実行されているかを推測できる.サンドボックスが同じテクノロジを使用していても一緒にクラスタ化されていないことに注意する必要がある.これは主に,Cuckooなどの共通のフレームワークを使用しているかどうかにかかわらず,サンドボックスオペレータが独自のVMイメージを設定する必要があるためである.サンドボックスの中には同じ仮想化テクノロジを使用するものもありますが,これらのサンドボックスはインストール機能(OSのインストール日や製品IDなど)に基づいて区別される. 次に,サンドボックスで使用されているインターネットアップリンクを調べた.64のサンドボックスは,GeoIPに従う単一の国の外部IPアドレスを使用する.その中で1位は米国で22のサンドボックス,ドイツが6つのサンドボックスで2位,中国は5つのサンドボックスで3位,アイルランドは4つのサンドボックスで4位となった.スウェーデン,ロシア,韓国には3つのサンドボックスルーマニア,日本,イギリスには2つのサンドボックスがある.私たちは,外部IPアドレスの多様性が高く地理的位置を特定できない2つのサンドボックスが存在することに気付いた.これらのサンドボックスはTorを使用してIPアドレスを多様化している.また,29のサンドボックスでは固定IPアドレスが1つしか使用されていないため,サーバ側からの検出が容易である.たとえば,マルウェアサンプルがC&Cサーバーにコマンドを送信した場合,IPアドレスはそのサーバ上のブラックリストと照合され,そのサーバーは実行を停止するようにクライアントに指示できる. MACアドレスは,収集したすべての特徴の中で最高の多様性を示す.複数のSandPrintレポートで考慮されるように,単一の固定MACアドレスを使用するのは12のサンドボックスだけであった.大部分のMACアドレスは、少なくとも部分的に多様化されている(例えば、最初の3オクテット,すなわちベンダーIDは,しばしば固定されるが,残りは多様化される). これは,サンドボックスが複数のVMを並列に実行し,同じVMイメージを共有しているが,すべてが一意のMACアドレスを持ち,イーサネットレイヤ上での衝突を避けるためであると考えられる.ベンダーのプレフィックスを隠していないサンドボックスのうち,6つのVMwareベース(pre x:00-50-56)および21のVirtualBoxベース(pre x:08-00-27)のサンドボックスであることが明らかになった.

5. サンドボックス分類

フィンガープリントを使用して,特定のレポートが同じサンドボックスに属することを発見することができた.ここで,抽出した特徴を利用して,システムがサンドボックスであるかどうかを判断できるかどうかを検討する.直観的に,ハードウェアの制約、スナップショットベースの操作,ユーザーの操作不足からサンドボックス固有の特徴を探索する.これらの固有の特徴を使用して,教師あり機械学習技術を使用してサンドボックスを検出する方法を示す.まず,SVMSupport Vector Machine)[21]を使用したサンドボックスの分類と評価について述べる.

5.1 特徴選択

特徴選択の背後にある重要なアイデアは,人間の制御下にあるマシンではほとんど起こらないサンドボックス操作に特徴的なパターンを探すことである.特定のサンドボックスの特定のフィンガープリントを特定するのではなく,すべてのサンドボックスに共通のサンドボックス固有の機能を探す.

特徴選択プロセス

特徴選択のために,サンドボックスとしては使用されておらず,人間の管理下にある50の汎用WindowsワークステーションでSandPrintを実行する,次に,レポートを手動で調べ,サンドボックスレポートで確認した固有の意味のあるパターンを調査したが,ユーザーレポートではそれほど特徴が存在しなかった.表3はに,ハードウェア,履歴,実行の3つのカテゴリに分けて選択した特徴をまとめる.

2番目の列は特徴名,3番目はサンドボックスレポートからの観測値,最後の列は特徴値をSVMに渡す前に特徴値を整数に変換する方法を示している(5.2節で述べる). 従来の方法では,4:3の表示解像度といった具体的なサンドボックスシグネチャ値でレポートを検索していた.しかし,具体的な値を選択する際にはいくつかの問題がある.具体的な特徴値は必ず正確ではない.このため,このタスクをSVMクラスのトレーニングプロセスに任せる. 同様に,仮想化技術の検出も控え,サンドボックス固有の特徴に焦点を当てう.仮想化はサンドボックスの存在を示唆するが,保証でもない. たとえば,VMWare仮想マシンを示す1つのユーザーレポートが見つかった場合,このマシンをサンドボックスではなくユーザマシンとして分類する必要がある.逆に,サンドボックスたとえば,ベアメタルのサンドボックスの場合など,必ずしも仮想化を使用するとは限らない.私たちのクラスは,サンドボックスがスナップショットを使用し,リソースが制限されていて,ユーザーとのやり取りが乏しいという観察に基づいているため,仮想化が存在に依存せずシステムをサンドボックスとして分類できる.

特徴説明

これらの特徴について,より詳細に説明する.

  • ハードウェア特徴

    • CPUコア数
    • RAM容量
    • PS/2マウスの有無
    • ディスプレイ解像度

    サンドボックスオペレーターが並列化を活用するためにリソースを制限するという事実に基づく.したがって、サンドボックスはシングルコアであり,RAMをほとんど使用せず,ディスクのサイズが小さいのが一般的である.しかし平均的なユーザーPCではこれらの量がはるかに大きい.第2に,サンドボックスは通常人間によってインタラクティブに使用されないため,オペレータはしばしばハードウェア構成をカスタマイズしない.PS/2マウスや小さなディスプレイサイズ,珍しいディスプレイ解像度は,すべてサンドボックスの指標として利用できる.サンドボックスのこれらの構成は通常はデフォルトと同様である.ユーザは自分のVMを対話的に使用し,画面の解像度をカスタマイズし,より多くのコアとRAMを使用して計算能力を向上させる可能性が高い.

  • 履歴特徴

    • ログイン履歴
    • IEのアクセス履歴
    • システムの稼働時間

    サンドボックスがスナップショットテクノロジを活用するという観点に基づく.マルウェアサンプルを分析する前に,サンドボックスはシステム状態を以前にキャプチャされたクリーン状態(スナップショットと呼ばれる)に復元する.スナップショットは,通常サンドボックスの設定時に一度取得され,サンドボックスで使用される(更新されない限り).よって,履歴アーチファクトを示す可能性が高い.たとえば,スナップショットが数か月前に取得された場合,スナップショットが復元されるたびに,ログイン履歴によって最後のログインがその時点であったことがわかる.同様にIEのアクセス履歴も用いることができる.さらに,多くのサンドボックスがユーザーPCは通常より長い稼働時間を持つ.サンドボックスのレポートでは,システムの稼働時間が数秒で表示されることがよくあるが,アップタイムが大きいと感染している脆弱なシステム(たとえば、ドライブバイダウンロードによる)の可能性はかなり高くなる.

  • 実行特徴

    まれな実行パターンを示すサンドボックスが存在することに基づく.たとえば,サンドボックスはイメージの実行ファイル名を自動化の観点から扱いやすいものに変更する傾向があることがある.サンドボックスではMD5ハッシュやvirus.exeなどの総称名を使用するのが一般的であるが,ユーザーの報告によるとそのような名前変更は起こりにくい.また,サンドボックスクリップボードは空であるかランダムではない文字列が含まれていましたが,ユーザーのクリップボードはリンク,テキスト,またはオブジェクトなどの意味のある値を含む傾向がある. 最後に,サンドボックスはシステム製造元の値をユーザレポートでは確認できなかった空の文字列やランダムな文字列など,実際の名前を隠す可能性がある.

5.2 分類

前述の特徴を使用して,未知の特徴レポートがサンドボックスまたはユーザーPCのものかをどうかを予測するためのモデルを自動的に学習できる分類器を訓練する.このために,50のユーザーレポートすべてと,各サンドボックスクラスタからの選択した3つのランダムサンプルで構成されるトレーニングデータセットを構築した.合計で,202レポートのトレーニングセットを提供する.そのうちの50レポートはユーザーレポートで,152レポートはサンドボックスレポートである. 分類器を構築するために,ラジアル基底関数カーネルを持つSVMを使用する.SVMに渡す特徴ベクトルを正規化するには,特徴値を数値に変換する必要がある.この方法は表3の最後の列に示す.idは単純に数値を取ることを意味し,lenは特徴文字列の長さを考慮することを意味し,[0,1]はブール値である(PS / 2マウスがあるかないか).同様に、イメージ名の特徴については,イメージ名が変更されているかどうかをチェックする.4章で説明した理由により,すべての特徴がすべてのレポートで使用できるわけではないため,欠損値を推定するために平均代用を使用することにした.最後に値を[0; 1]の範囲で最小 - 最小スケーリングして使用する. クラスを構築するには,SVM正規化定数Cとカーネルパラメータの有効な組み合わせを指定する必要がある.この目的のために,グリッド検索と10-fold cross validationによるハイパーパラメータチューニングを使用して,クラスの精度を計算する.最初のステップでは,個々の特徴の強さを評価するために,個々の特徴ごとにクラスを作成した.この実験の結果は図1に示す.単一の特徴であっても,トップのRAM特徴で98:06%の精度でサンドボックスを検出することができた.

ただし,1つの特徴は,複数の特徴よりもサンドボックスオペレーターが簡単に修正できる. 我々はまた、すべての機能を訓練するクラスを作成しました。 図1の右端のグラフは,この分類器が100%の完全精度(偽陽性0および偽陰性0)を有し,複数の検出特徴を組み合わせる強度を示している.

5.3 既存のソリューションとの比較

私たちの分類器の評価ために,提案手法と既存の研究と比較する. 評価のためにマルウェアによって使用されているよく知られたサンドボックス検出技術のコレクションからなる人気のあるフレームワークParanoid Fish(Pafish)を使用した. PafishがSandPrintで使用した45の検出手法をエンコードし,実行した.これらの45件の検出結果を使用し,以前と同じ方法で分類器を構築した.各検出結果は1つのクラスを構築するための特徴であると考えており,45種類のすべての機能を組み合わせたクラスも作成した.これらの分類器の精度結果を図2に示す.明るい色の各グラフは単一の特徴の精度を示し,黒いバーはすべての特徴を組み合わせた分類器の精度を示す.単一の特徴の精度は推測より良くない.2つの機能は80%以上の精度を持ち,最も優れた単一特徴(仮想化を検出するためのrdtsc時間測定[18])は93%の精度である.組み合わせたバージョンの精度は97.8%であった.

より良い精度を持つことに加えて,提案手法がPafishよりも2つの理由で優れている.一つ目は,Pafishが主に仮想化の成果物をチェックしている点である.これは前述の理由から控えるべきである.2つ目は,Pafishのチェックの大半は,レジストリネットワークアダプタなどの情報である.こらはサンドボックスによって監視される可能性が高い.このため,Pafishはマルウェアとして検出される危険性がある.対照的に提案手法で用いる情報の抽出はよりステルスである.

5.4 まとめ

これまでに述べたように、サンドボックス固有の機能に基づいて,サンドボックスとユーザーマシンを確実に区別することができる. フィーチャの数は非常に少ないように見えるが,これらの特徴を非表示にすると,サンドボックスオペレーターに多くの苦労がある.画面サイズを変更し,USBエミュレートされたマウスに切り替えることは可能ですが,並列計算アーティファクトを取り除くことは簡単ではない.コアの数とメモリの量を増やすことは,サンドボックスの生産性を低下させるので,オペレータの選択肢ではない可能性がある.これはサンドボックスに多くのリソースを与えることで解決できる.同様に,スナップショットによって導入された履歴アーティファクトを回避するのにも苦労する.サンドボックスオペレータは、システム上のすべての関連する履歴情報が正常であるかどうかを確認できる.解決策は,サンドボックススナップショットをカスタマイズし,非サンドボックスシステムのように最新の状態に保つことである.残念ながらこれカスタマイズは労力が多く,エラーが発生しやすくなり,解析中のすべてのオペレーティングシステムを再実装する必要がある.サンドボックスオペレータが適用できる他の対策については,7.1節で述べる.そこでは,この側面と作業の倫理的な議論を組み合わせて議論する.

6. マルウェアアプライアンスの検出

アプライアンスは,マルウェアの完全な動作を分析するのではなく,機密性の高いインフラストラクチャをサイバー攻撃から保護するためにマルウェアを検出することが主な目的であるという点でサンドボックスとは異なります.高度な攻撃者は,アプライアンスを検出する技術に興味を持つかもしれない.攻撃者がアプライアンスを検出できた場合,アプライアンス内のアラートをトリガーしないように,プログラムの悪意ある動作を隠すことができる.5章の特徴選択を見ると,アプライアンスサンドボックスと同じ特徴特性を持っている可能性があることがわかる.これを検証するため,我々は有名なベンダーの人気のある3つのアプライアンスでSandPrintを実行した(個々のアプライアンスの弱点を突き止めないようにベンダー名を省略).この目的のために、アプライアンスのさまざまなインスタンスWindows 7Windows XP,32/64ビット,さまざまなサービスパックなど)に導入した.各インスタンスでSandPrintを4回実行し,40のレポートを収集した.アプライアンスはネットワーク通信を許可していないため,公開されているサンドボックスと同様に,特徴を取得するのは簡単ではなかった.この問題を解決するため,SandPrintを実行後,アプライアンスが作成した解析レポートに抽出された特徴をエンコードした.特徴レポートを手動で調べると,特徴の特性に関する仮定が正しいことがわかった.サンドボックスと同様に、アプライアンスは全ての特徴を持つ.いくつかの特徴はサンドボックスの場合よりもさらに強力であった.たとえば、すべての40のレポートには,画面幅が小さく,画面解像度が4:3であった. 次に,アプライアンスごとにサンドボックスおよびユーザーレポートでトレーニングした分類器がアプライアンスレポートをどれくらい正確に判定できるかを測定した.100%の精度で,分類器はすべてのアプライアンスを非ユーザーマシンとして検出した.しかし,重要なのは検出方法を隠蔽することである.アプライアンスが作成したレポートを確認すると,SandPrintがマザーボード情報,BIOS情報,シリアル番号などの情報を読み取ることで,多くのセキュリティ警告を作成していることがわかった.次に,Sandprintに使用された特徴がアラートのリストにも含まれているかどうかを確認した.Pafishがチェックがする多くの項目は,アプライアンスによって検出された.大部分のサンドボックス固有の特徴はアプライアンスのアラートにならなかったが,あるアプライアンスではディスク情報の読み取りを疑わしい動作とみなされた.これに対処するために,特徴ベクトルからディスク特徴を除去し,アプライアンスのレポートでクラスを再度評価し,ステルス回避について考慮した上で精度100%にした. 要約すると,攻撃者は公開されているサンドボックスの特性を明らかにし,収集した情報を使用して,ユーザーのPCとアプライアンスを完全に区別できるクラスを構築できる.セキュリティアプライアンスについての知識があれば,攻撃者は微調整することで,アプライアンスで検出されないようにすることができる.

7. 議論と制限

私たちの研究の倫理的側面と潜在的な限界について述べる.

7.1 倫理的な考慮事項

省略

7.2 責任ある開示

省略

7.3 独立したサンドボックス

ほとんどのサンドボックスは解析中のプログラムをインターネット上で通信することができましたが,9つのサービスと3つのアプライアンスは通信することができなかった.解析レポートのイベントに特徴をエンコードすることで分離されたサンドボックスアプライアンス)の特徴をある程度抽出することができる.ただし,これには分離されたサンドボックスにアクセスする必要があるため,攻撃者にとって特徴を入手しにくい可能性がある.提案するサンドボックス分類はネットワーク構成に依存する特徴を使用しなかったことに注意する必要がある.原則として,分類結果は非接続サンドボックスにも一般化する必要がある.提案する分類器では不十分な非接続のサンドボックスがある可能性を除外することはできないが,アプライアンスの検出に成功している.インターネットに接続されたサンドボックスが想定されているため実際のサンドボックスの数は,クラスタリング結果の示唆よりも高くなる可能性がある.しかし,分析は最も一般的な解析サービスサービス,統計的に重要なサンドボックスを対象に行っている.

8. 関連研究

省略

9. おわりに

現実のマルウェアサンドボックスの調査において,マルウェアサンドボックスであるかを把握することは非常に簡単である.調査用のバイナリを20のサービスにアップロードすることで,76のサンドボックスを識別しました.これらのサービスは,サンドボックス固有の特性に基づいて検出され回避された.マルウェアアプライアンスの検出と回避が同様に可能であることを示唆した.これは,今後のサンドボックス回避の脅威から,どのように保護することができるのかという疑問を呼び起こした.また,サンドボックスオペレータがマルウェアによって悪用されている可能性のある脅威について知らせるためのヘッドアップとして役立つ.