本開示の一態様は、フォレンジクスのために仮想マシンリソースをキャプチャするための方法を提供する。方法は、データ処理ハードウェアで、セキュリティ侵害インジケータを受信することを含む。セキュリティ侵害インジケータは、仮想マシンに対する攻撃が差し迫っていることを示す。セキュリティ侵害インジケータを受信することに応答して、および仮想マシンに対する攻撃が始まる前に、方法は、データ処理ハードウェアが、仮想マシンによって使用される揮発性メモリの揮発性メモリ状態および仮想マシンによって使用される不揮発性メモリの不揮発性メモリ状態のスナップショットを生成すること、データ処理ハードウェアが、仮想マシンの監査レベルを、標準レベルの監査から高められたレベルの監査へ上昇させることを含む。高められたレベルの監査は、仮想マシンによって使用される揮発性メモリおよび仮想マシンによって使用される不揮発性メモリへのすべてのアクセスを表すデータを生成する。仮想マシンに対する攻撃が開始された後、方法は、データ処理ハードウェアが、閾値期間の間、高められたレベルの監査を維持すること、データ処理ハードウェアが、仮想マシンのユーザにセキュリティ侵害インジケータを通知すること、データ処理ハードウェアが、データを仮想マシンの外部のメモリに格納することを含む。
本開示の実装形態は、以下の任意選択の特徴のうちの1つまたは複数を含んでいてよい。いくつかの実装形態においては、不揮発性メモリの状態のスナップショットを生成することは、不揮発性メモリのガベージコレクションを一時停止することを含む。揮発性メモリ状態のスナップショットを生成することは、揮発性メモリのライブマイグレーションを実行することを含んでもよい。いくつかの例では、閾値期間は、仮想マシンのユーザによって設定可能である。任意選択で、セキュリティ侵害インジケータは、疑わしいプロセスの存在に基づいており、閾値期間は、疑わしいプロセスの存在に基づいている。
いくつかの実装形態では、閾値期間は、仮想マシンの存続期間に対応する。任意選択で、データは、高められたレベルの監査中に、仮想マシンによって実行されたすべてのコマンドのリストをさらに含む。いくつかの例では、方法は、データ処理ハードウェアが、攻撃が終了したと判定すること、攻撃が終了したと判定することに応答して、データ処理ハードウェアが、仮想マシンによって使用される揮発性メモリの揮発性メモリ状態および仮想マシンによって使用される不揮発性メモリの不揮発性メモリ状態のスナップショットを生成することをさらに含む。
セキュリティ侵害インジケータを受信することには、データ処理ハードウェア上で実行される侵入検知システムからセキュリティ侵害インジケータを受信することを含んでいてよい。侵入検知システムは、第1の階層的保護ドメインで実行されてよく、仮想マシンのユーザ空間内のソフトウェアリソースは、第2の階層的保護ドメインで実行されてよい。第1の階層的保護ドメインは、第2の階層的保護ドメインよりも多くの特権を有している。いくつかの例では、第1の階層的保護ドメインは、仮想マシンのリング0に対応し、第2の階層的保護ドメインは、仮想マシンのリング3に対応する。いくつかの実装形態では、仮想マシンに対する攻撃の進行中の間は、揮発性メモリの揮発性メモリ状態および不揮発性メモリの不揮発性メモリ状態のスナップショットの生成は発生しない。
本開示の別の態様は、フォレンジクスのために仮想マシンリソースをキャプチャするためのシステムを提供する。システムは、データ処理ハードウェアおよびデータ処理ハードウェアと通信するメモリハードウェアを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる命令を格納しており、動作は、セキュリティ侵害インジケータを受信することを含む。セキュリティ侵害インジケータは、仮想マシンに対する攻撃が差し迫っていることを示す。セキュリティ侵害インジケータを受信することに応答して、および仮想マシンに対する攻撃が始まる前に、動作は、仮想マシンによって使用される揮発性メモリの揮発性メモリ状態および仮想マシンによって使用される不揮発性メモリの不揮発性メモリ状態のスナップショットを生成すること、仮想マシンの監査レベルを、標準レベルの監査から高められたレベルの監査へ上昇させることを含む。高められたレベルの監査は、仮想マシンによって使用される揮発性メモリおよび仮想マシンによって使用される不揮発性メモリへのすべてのアクセスを表すデータを生成する。仮想マシンに対する攻撃が開始された後、動作は、閾値期間の間、高められたレベルの監査を維持すること、仮想マシンのユーザにセキュリティ侵害インジケータを通知すること、データを仮想マシンの外部のメモリに格納することを含む。
この態様は、以下の任意選択の特徴のうちの1つまたは複数を含んでいてよい。いくつかの実装形態においては、不揮発性メモリの状態のスナップショットを生成することは、不揮発性メモリのガベージコレクションを一時停止することを含む。揮発性メモリ状態のスナップショットを生成することは、揮発性メモリのライブマイグレーションを実行することを含んでもよい。いくつかの例では、閾値期間は、仮想マシンのユーザによって設定可能である。任意選択で、セキュリティ侵害インジケータは、疑わしいプロセスの存在に基づいており、閾値期間は、疑わしいプロセスの存在に基づいている。
いくつかの実装形態では、閾値期間は、仮想マシンの存続期間に対応する。任意選択で、データは、高められたレベルの監査中に、仮想マシンによって実行されたすべてのコマンドのリストをさらに含む。いくつかの例では、動作は、攻撃が終了したと判定すること、攻撃が終了したと判定することに応答して、仮想マシンによって使用される揮発性メモリの揮発性メモリ状態および仮想マシンによって使用される不揮発性メモリの不揮発性メモリ状態のスナップショットを生成することをさらに含む。
セキュリティ侵害インジケータを受信することには、データ処理ハードウェア上で実行される侵入検知システムからセキュリティ侵害インジケータを受信することを含んでいてよい。侵入検知システムは、第1の階層的保護ドメインで実行されてよく、仮想マシンのユーザ空間内のソフトウェアリソースは、第2の階層的保護ドメインで実行されてよい。第1の階層的保護ドメインは、第2の階層的保護ドメインよりも多くの特権を有している。いくつかの例では、第1の階層的保護ドメインは、仮想マシンのリング0に対応し、第2の階層的保護ドメインは、仮想マシンのリング3に対応する。いくつかの実装形態では、仮想マシンに対する攻撃の進行中の間は、揮発性メモリの揮発性メモリ状態および不揮発性メモリの不揮発性メモリ状態のスナップショットの生成は発生しない。
本開示の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴、および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
メモリ(揮発性と不揮発性の両方)の状態のスナップショットをキャプチャすることは、コンピュータシステムに対する悪意のあるソフトウェア攻撃を回復または分析するための一般的なアプローチである。これらのスナップショットは、メモリの一部またはすべての、ビット毎の状態をキャプチャする(すなわち、メモリの「写真」を撮るように)。現代のコンピュータは相当量のメモリを使用するため、スナップショットは処理能力およびストレージ空間の両方で非常に高価である。したがって、必要な場合にのみスナップショットをキャプチャすることが望ましい。ただし、現代の保護システムは、攻撃が検出された場合に前のスナップショットに「ロールバック」することを目的として、一定の間隔でスナップショットをキャプチャする傾向がある。しかしながら、一度も使用されないスナップショットのために潜在的に無駄になる大量の処理およびストレージ、およびスナップショットが必要とする複雑なライフサイクル(例えば、いつ削除するか)に加えて、スナップショット間隔の間に機能を実行し、自身を消去する(または他の方法でトラックを隠す)巧妙な攻撃は、決して検出または分析されない可能性がある。ほぼリアルタイムで攻撃を検出できるシステムであっても、攻撃の直前および直後に詳細なフォレンジックデータ(forensic data)を生成することができず、インシデント対応が複雑になる可能性がある。仮想マシンに完全に統合されたシステムでは、必要なスナップショットの数を最小限に抑え、可能な場合にはメモリへの増分変更をキャプチャすることが有利である。
本明細書の実装形態は、フォレンジック分析および/またはリカバリのために仮想マシン(VM)リソースをキャプチャするためのシステムおよび方法を対象としている。フォレンジクスマネージャ(forensics manager)は、悪意のあるソフトウェアからの攻撃が差し迫っていることを検出する。それに応じて、および攻撃が始まる前に、フォレンジクスマネージャは、揮発性および不揮発性メモリの現在の状態のスナップショットをキャプチャする。フォレンジクスマネージャは、監査のレベルを、標準レベルから高められたレベルに上昇させる。高められたレベルの監査は、攻撃の動作を示す攻撃中のすべてのコマンドをキャプチャする。フォレンジクスマネージャが攻撃の終了を検出した後、フォレンジクスマネージャは、メモリの第2のリソーススナップショットをキャプチャし、監査のレベルを、高められたレベルから標準レベルに引き下げることができる。
図1は、リソース110を実行するように構成された分散システム200を含む例示的なシステム100を示している。ユーザ120に関連付けられたユーザコンピュータ130は、ネットワーク140を介して分散システム200にアクセスすることができる。示される例では、ユーザコンピュータ130は、メモリハードウェア134と通信するデータ処理ハードウェア132、ネットワークインタフェースデバイス136、およびユーザインタフェース138を含む。メモリハードウェア134(例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SDD)、および/またはフラッシュメモリ)は、データ処理ハードウェア132上で実行されると、データ処理ハードウェア132に1つまたは複数の動作を実行させる命令を格納している。メモリハードウェア134は、ネイティブアプリケーション、ウェブブラウザ、および/またはオペレーティングシステム(OS)を構成するコンピュータ可読命令を格納することができる。OSは、データ処理ハードウェア132と実行されるアプリケーションとの間のインタフェースとして機能する。ネットワークインタフェースデバイス136は、ネットワーク140と通信するように構成された1つまたは複数のデバイスを含む。ユーザインタフェース138は、ユーザ120から入力を受信し、および/またはユーザ120に出力を提供するように構成された1つまたは複数のデバイスを含む。ユーザインタフェース138は、タッチスクリーン、ディスプレイ、QWERTYキーボード、数字キーパッド、タッチパッド、マイクロフォン、および/またはスピーカーを含むことができるが、これらに限定されない。データ処理ハードウェア132は、ユーザコンピュータ130上に表示するために、グラフィカルユーザインタフェース(GUI)139を実行することができる。
分散システム200は、コンピューティングエンジン、検索エンジン、電子メールサービス、ビデオ共有サービス、および他のサービスなどの1つまたは複数のクライアントサービスを実行することができるが、これらに限定されない。いくつかの実装形態では、分散システム200は、リソース110を含み、これは、ハードウェアリソース110hおよび/またはソフトウェアリソース110sを含み得る。ハードウェアリソース110hは、データ処理デバイス112(コンピューティングデバイスとも呼ばれる)およびメモリハードウェア114(例えば、非一時的メモリ、永続ディスク)を含んでいてよい。ソフトウェアリソース110sは、ソフトウェアアプリケーション、ソフトウェアサービス、アプリケーションプログラミングインタフェース(API)などを含み得る。ソフトウェアリソース110sは、ハードウェアリソース110hに存在してもよい。例えば、ソフトウェアリソース110は、非一時的メモリ114に格納され、1つまたは複数のデータ処理デバイス112によって実行され得る。
図2に示す例では、分散システム200は、リソース110(例えば、ハードウェアリソース110h)の集合体210、仮想マシンモニタ(VMM)220、1つまたは複数の仮想マシン(VM)250を実行するVM層240、およびアプリケーション層260を含む。各ハードウェアリソース110hは、1つまたは複数の物理的な中央処理ユニット(pCPU)112(「物理プロセッサ112」)およびメモリハードウェア114を含むことができる。各ハードウェアリソース110hが単一の物理プロセッサ112を有することが示されているが、任意のハードウェアリソース110hは、複数の物理プロセッサ112を含んでいてもよい。オペレーティングシステム212は、リソース110の集合体210上で実行することができる。
いくつかの例では、VMM220は、VM250を生成および実行するように構成されたソフトウェア、ファームウェア、またはハードウェアのうちの少なくとも1つを含むハイパーバイザー220(例えば、コンピュートエンジン)に対応する。1つまたは複数のVM250を実行するVMM220に関連付けられたコンピュータ(すなわち、データ処理ハードウェア112)は、ホストマシンと呼ばれ、一方、各VM250は、ゲストマシンと呼ばれ得る。ここで、VMM220またはハイパーバイザーは、仮想オペレーティングプラットフォームを有する対応するゲストオペレーティングシステム(OS)212gを各VM250に提供し、VM250上での対応するゲストOS212gの実行を管理するように構成されている。本明細書で使用される場合、各VM250は、「インスタンス」または「VMインスタンス」と呼ばれることがある。いくつかの例では、さまざまなオペレーティングシステムの複数のインスタンスが、仮想化されたリソースを共有することができる。例えば、Linux(登録商標)オペレーティングシステムの第1のVM250、Windows(登録商標)オペレーティングシステムの第2のVM250、およびOS X(登録商標)オペレーティングシステムの第3のVM250は、すべて単一の物理x86マシンで実行できる。
VM層240は、1つまたは複数の仮想マシン250を含む。分散システム200は、ユーザ120がオンデマンドでVM250を起動することを可能にする。VM250は、実際のコンピュータシステムをエミュレートし、かつコンピュータアーキテクチャおよび実際のコンピュータシステムまたは仮想のコンピュータシステムの機能に基づいて動作し、これは、専用のハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。いくつかの例では、分散システム200は、1つまたは複数のVM250を起動する前に、ユーザ120を許可および認証する。ソフトウェアのインスタンス、または単にインスタンスは、分散システム200のデータ処理ハードウェア112上でホストされる(実行される)VM250を指す。
各VM250は、1つまたは複数の仮想中央処理ユニット(vCPU)252(「仮想プロセッサ」)を含み得る。示される例では、第1の仮想マシン250aは、1つまたは複数の仮想プロセッサ252の第1のセット252aを含み、第2の仮想マシン250bは、1つまたは複数の仮想プロセッサ252の第2のセット252bを含む。第2のセット252bは、1つの仮想プロセッサ252のみを含むものとして示されているが、任意の数の仮想プロセッサ252が可能である。各仮想プロセッサ252は、1つまたは複数の物理プロセッサ112をエミュレートする。例えば、1つまたは複数の仮想プロセッサ252の第1のセット252aは、1つまたは複数の物理プロセッサ112の第1のセット113aをエミュレートし、1つまたは複数の仮想プロセッサ252の第2のセット252bは、1つまたは複数の物理プロセッサ112の第2のセット113bをエミュレートする。アプリケーション層260は、仮想マシン250(複数可)上で実行することができるソフトウェアリソース110s、110sa、110sb(ソフトウェアアプリケーション)を含む。
典型的には、ソフトウェアの各インスタンス(例えば、仮想マシン250)は、物理メモリハードウェア114上のサービスに揮発性および不揮発性のストレージ容量を提供する少なくとも1つの仮想ストレージデバイス262を含む。例えば、物理的メモリハードウェア114上の記憶容量は、ユーザ120のためのデータを複数の物理ディスク(例えば、メモリハードウェア114のメモリ領域116(図10)または揮発性のメモリを提供するためのランダムアクセスメモリ(RAM))に渡って格納する永続ディスク(PD)を含むことができる。より具体的には、対応するVM250の各仮想ストレージデバイス262は、バイトまたはビット(ブロック)のシーケンスでデータをメモリハードウェア114上の関連付けられた物理ブロックストレージボリュームVに移動させて、不揮発性ストレージを提供する。したがって、対応するVMインスタンス250の仮想ストレージデバイス262は、メモリハードウェア114上の対応する物理ブロックストレージボリュームVにマッピングされるストレージ容量を提供する。いくつかの例では、仮想ストレージデバイス262は、メモリハードウェア114上のデータへのランダムアクセスをサポートし、概して、バッファリングされたI/Oを使用する。例には、ハードディスク、CD-ROMドライブ、およびフラッシュドライブが含まれる。同様に、物理メモリハードウェア114の揮発性メモリ(例えば、RAM)の部分は、仮想ストレージデバイス262に分割され得る。
各VMインスタンス250のための1つまたは複数の仮想ストレージデバイス262は、ルートディスク262r(例えば、ルート永続ディスク)および1つまたは複数のセカンダリストレージディスク262sを含むことができる。ルートディスク262rは、VMインスタンス250のためのゲストオペレーティングシステム212gを含むルート永続ディスクを含んでいてよく、一方、1つ以上のセカンダリストレージ永続ディスク262は、VMインスタンス250のために追加のストレージ容量/空間を提供する。いくつかの実装形態では、データ処理ハードウェア112は、ユーザ120がVMインスタンス250を作成する場合に、対応するルート永続ディスク262rを自動的に作成する。他の実装形態では、ユーザ120は、スタンドアロンルート永続ディスク262rを作成し、VMインスタンス250を作成した後、スタンドアロンルート永続ディスク262rをVMインスタンス250にアタッチする。ルート永続ディスク262rは、デフォルトのストレージ容量(例えば、10GB)を備えたブロックストレージボリュームVを公開し(expose)、その後、ユーザ120がルート永続ディスク262rのサイズを変更して(例えば、ストレージ容量を増やして)、パフォーマンスを改善し、VMインスタンス250のための追加のストレージオペレーティングシステムファイルを提供できるようにしてよい。追加的または代替的に、ユーザ120は、その後、1つまたは複数のセカンダリストレージディスク262を追加して、必要に応じて、VMインスタンス250上で実行されるアプリケーションのために追加のデータストレージ容量を提供することができる。図2に示す例では、第1のVM250aは、対応するブロックストレージボリュームVを公開する仮想ストレージデバイス262、262r、262sの第1の集合体262aを有し、第2のVM250bは、対応するブロックストレージボリュームVを公開する1つの仮想ストレージデバイス262の第2の集合体262bを含む。
ゲストオペレーティングシステム212g内には、ゲストカーネル214gが存在する。カーネルは、OSへの完全なアクセスおよび制御が可能であるオペレーティングシステムのコアであるコンピュータプログラムである。すなわち、カーネルは、アプリケーション110sとホストマシンのハードウェアリソース110hとの間の仲介役である。現代のコンピューティングシステムのほとんどは、仮想メモリを保護されたカーネル空間とユーザ空間216gとに分離する。カーネルは通常、保護されたカーネル空間内の揮発性メモリに残り、ユーザ空間216gから分離されている。安全性および信頼性を高めるために、アプリケーション110sおよび他のソフトウェアサービスは、通常、ゲストユーザ空間216gで実行され、保護されたカーネル空間と相互作用(interact)するために必要な特権を欠いている。示されている例では、各VM250のカーネル214gは、フォレンジクスマネージャ300を含む。
ここで図3を参照すると、いくつかの実装形態では、対応するゲストカーネル214g内の対応するVM250上で実行されるフォレンジクスマネージャ300は、侵入検知システム(IDS)310、リソーススナップショット生成器(snapshotter)320、およびオーディタ(auditor)330を含む。IDS310は、悪意のあるソフトウェアからの差し迫った攻撃312を示す異常な動作について、1つまたは複数のソフトウェアリソース110sを実行している可能性があるVM250のゲストユーザ空間216gを監視する。IDS310は、ゲストユーザ空間216g内で実行されているプロセス、ファイル転送、特権変更などを監視することができる。例えば、IDS310は、そのプロセスが通常はデータをダウンロードしないときにデータをダウンロードするプロセス、プロセスが通常はアクセスしないファイルを開くプロセス、または他の異常な動作にフラグを立てることができる。IDS310が差し迫った攻撃312を示す動作を検出する場合、IDS310は、攻撃312が仮想マシン250に対して差し迫っていることを示すセキュリティ侵害インジケータ(indication of compromise,IoC)314を生成する。攻撃312はさまざまな形態をとり得るが、概して、攻撃312は、コンピューティングシステムに害を及ぼす(例えば、データの削除、盗用、または破損)ように意図的に設計された悪意のあるソフトウェア(マルウェア)である。いくつかの例では、攻撃312は、代わりに、(意図的に危害を加えるのではなく)危害を引き起こす可能性のあるソフトウェアの意図しない誤動作であってもよい。IoC314に加えて、IDS310は、攻撃通知316を生成し、攻撃通知316をユーザコンピュータ130に送信して、差し迫った攻撃312についてユーザ120に警告することができる。通知316は、任意の数の形式をとることができる。例えば、IDS310は、電子メールを送信し、またはセキュリティアプリケーションで調査結果を発行してもよい。例えば、通知16は、攻撃312によって影響を受けるソフトウェアリソース110s(複数可)および/またはVM250を示し得る。
IoC314を生成した後、IDS310は、IoC314をリソーススナップショット生成器320およびオーディタ330に提供する。IoC314を受信することに応答して、およびVM250に対する攻撃の開始前に、スナップショット生成器320は、VM250の揮発性メモリの揮発性メモリ状態322およびVM250の不揮発性メモリ(例えば、仮想ストレージデバイス262)の不揮発性メモリ状態324のスナップショットを生成するように構成されている。すなわち、攻撃312が重大な目標を達成する機会を得る前に、リソーススナップショット生成器320は、揮発性メモリおよび不揮発性メモリの両方の完全な攻撃前状態322,324(すなわち、メモリの各ビットの状態)をキャプチャする。これらの状態322,324は、攻撃312のリカバリおよびフォレンジック分析のための最初の開始点を提供する。状態322,324をキャプチャすることは、VM250の他のすでに存在する機能を利用することができる。例えば、VM250は、不揮発性メモリへの変更のログを作成し、定期的にガベージコレクションサービスを使用して、不揮発性メモリ内の最新の値のみにログをプルーニングすることができる。この例で不揮発性メモリ324の状態をキャプチャする方法は、変更が永続的に格納されるまでガベージコレクションを一時停止することである。揮発性メモリの場合、リソーススナップショット生成器320は、ライブマイグレーションなどのツールを使用でき、これは通常、クライアントまたはアプリケーションを切断せずに、実行中のVM250を別の物理マシンに移動させるプロセスである。ライブマイグレーションは、必然的に、転送する前に実行中のVMの揮発性メモリ状態322をコピーし、そのような機能は、いくつかの実装形態では、リソーススナップショット生成器320によって取り込まれ得る。
メモリ状態322,324は、リソーススナップショット生成器320によってキャプチャされると、すぐに外部データストア350(例えば、ストレージソース114)にエクスポートされる。すなわち、状態322,324は、キャプチャされた後できるだけ早く、VM250から、ゲストユーザ空間216gによってアクセスできない場所、したがって攻撃312の到達範囲外に転送される。このようにして、フォレンジクスマネージャ300は、攻撃312が、キャプチャされた状態322,324を変更できない、または影響を与えられないことを確実にする。
オーディタ330は、VM250の監査332の現在のレベルを制御するように構成されている。現在のレベルの監査332は、VM250が経験する監査、監視、および/またはロギングの量を制御する。監査レベル332が上昇する/高められると、パフォーマンスの低下(すなわち、処理およびメモリリソース)も同様に増加する。したがって、通常または名目上の動作中、VM250は、わずかなパフォーマンスの低下のみが発生する標準レベルの監査332Sで動作することができる。図4は、例えば、通常の動作中(すなわち、攻撃312が差し迫っていない)、VM250が経験するログイン情報、ネットワーク接続、ファイルの作成および削除などのロギングを含むマイナーまたは中程度の監査を実行することによって、標準レベルの監査332を適用するオーディタ330の概略図400を示す。しかしながら、パフォーマンスへの悪影響を回避するために、標準レベルの監査332Sには、メモリの読み取りまたは書き込みを行うすべての低レベルコマンドのロギングなどの細かい粒度の監査は含まれない。標準レベルの監査は、監査データ334,334Sを生成する。いくつかの例では、構造化され得る監査データ334Sは、データストア350に渡される。
いくつかの実装形態では、動作335でのオーディタ330は、IoC314が受信されたかどうかを判定する。オーディタ330がIoC314を受信していない場合、オーディタは標準の監査332Sを維持する。しかしながら、IoC314を受信することに応答して(すなわち、攻撃312が差し迫っている)、オーディタ330は、現在のレベルの監査332を、高められたレベルの監査332Hに向上させることができる。高められたレベルの監査332Hは、標準レベルの監査332Sよりも高いレベルの監査である。すなわち、高められたレベルの監査332Hは、標準レベルの監査332よりも高い粒度で、より多くの量の、および/またはより多くのパラメータを使用してデータをロギングする。いくつかの実装形態では、高められたレベルの監査332Hは、高められた監査の期間中にVM250によって使用される揮発性メモリおよび不揮発性メモリ262へのすべてのアクセスを表すデータ334Hを生成する。例えば、図5は、時間、タイプ、場所、および関連する値を含む、VM250への各メモリアクセスをロギングするデータ334Hを生成することによって、高められたレベルの監査332Hを適用するオーディタ330の概略図500を示す。いくつかの例では、データ334Hは構造化されている。すなわち、構造化データ(structured data)334Hは、容易に格納、照会、および分析される標準化されたフォーマットで組織化されたデータであってよい。図5に示す例では、構造化データ334Hは、攻撃312の間にオーディタ330によってキャプチャされた対応するVM250に対するすべてのコマンド(例えば、読み取り/書き込み)のリストまたは配列(または任意の他のデータ構造)を提供することによって、標準レベルの監査332S中に得られる監査データ334Sよりもかなり詳細である。他の例では、データは、非構造化された形式で生成および格納される。いくつかの実装形態では、データ334Hは、VM250の外部のデータストア350に直ちに(またはその後すぐに)エクスポートされる。
図3に戻ると、いくつかの実装形態では、オーディタ330は、動作336で閾値期間の間、高められたレベルの監査332Hを維持する。閾値期間は、一定量の時間(例えば、10分)に基づいていてもよい。閾値期間は、攻撃312に基づいていてもよい。例えば、オーディタ330は、攻撃が完了するまで(例えば、攻撃に関連するプロセスが終了するまで)、またはその後の一定時間の間、高められたレベルの監査332Hを維持することができる。すなわち、IoC314は、ユーザ空間216gで実行されている疑わしいプロセスに基づくことができ、閾値期間は、疑わしいプロセスの存在に基づくことができる。さらに他の例では、閾値期間は永続的である。すなわち、VM250は、VM250の存続期間(life)中(例えば、VM250が終了するまで)、高められたレベルの監査332Hを維持することができる。閾値期間は、フォレンジクスで使用するために十分なデータがキャプチャされることを確実にするために、これらまたは任意の他の適切なオプションの中でユーザが設定可能である。閾値期間が満たされると、オーディタ330は、標準レベルの監査332Sに戻ることができる。
いくつかの実装形態では、IDS310は、攻撃312が終了したと判定する。例えば、攻撃312は、終了する特定のプロセスに関連付けられていてよい。攻撃が終了したと判定することに応答して、IDS310は、攻撃完了通知315をリソーススナップショット生成器320および/またはオーディタ330に送信する。リソーススナップショット生成器320は、IDS310から攻撃完了通知315を受信することに応答して、揮発性および不揮発性状態322,324のスナップショットを生成し、状態をデータストア350にエクスポートする。したがって、フォレンジクスマネージャ300は、攻撃前スナップショット、攻撃後スナップショット、および攻撃の進行中にキャプチャされたデータ334H(すなわち、メモリへのアクセス)を使用して、攻撃中の任意の時点のVM250のメモリ状態をで再構築することができ、一方、正確な動作および効果はその後いつでも分析できる。例えば、攻撃前スナップショットは、特定のメモリアドレスの値をロギングすることができる。データ334Hは、メモリアドレスが攻撃中に新しい値で書き込まれ、その後すぐに元の値で書き直されて、攻撃の発生を分かりにくくしたことを示し得る。このような場合、単なる断続的なスナップショットは、メモリが変更されたことを見逃す可能性が高く、巧妙な攻撃またはタイミングの良い攻撃でそのトラックを隠すことに成功する。しかしながら、データ334Hは、攻撃312の正確な効果が文書化されることを保証し(例えば、データ334Hは両方のメモリ書き込みをロギングする)、同時に高価なスナップショット生成を最小限に抑える。いくつかの実装形態では、VM250に対する攻撃312が進行している間、揮発性メモリ状態322および不揮発性メモリ状態324のスナップショットの生成は発生しない。
ここで図6を参照すると、フォレンジクスのためにフォレンジクスマネージャ300によって仮想マシンリソースをキャプチャするためのタイムラインのプロット600は、フォレンジクスマネージャ300が、キャプチャされるスナップショットの数を最小化すると同時に、攻撃312のすべてのステップを完全に再構築するのに十分な粒度でデータ334Hをキャプチャすることを示す。プロット600は、図3~図5を参照して説明することができる。プロット600は、図6の表示に対して左から右に時間が増加することを示している。例えば、時間602で、IDS310は、差し迫った攻撃312を検出し、時間604で、リソーススナップショット生成器320は、揮発性および不揮発性メモリ状態322,324をキャプチャし、オーディタ330は、攻撃312が始まる前に、監査332のレベルを、標準レベル332Sから高められたレベル332Hに上昇させる。ここで、IDS310は、IoC314をリソーススナップショット生成器320に発行し、オーディタ330は、時間602で差し迫った攻撃312の検出に応答し、それにより、スナップショット生成器320およびオーディタ330に、それぞれ、メモリ状態322,324をキャプチャさせ、監査332のレベルを上昇させる。VM250に対する攻撃312が進行中の攻撃期間606中、オーディタ330は、攻撃312中の任意の時点のメモリの状態を再構築することができるデータ334Hをキャプチャするので、スナップショットは必要ない。IDS310が時間608で攻撃312が終了したと判定した場合、IDS310は、リソーススナップショット生成器320および/またはオーディタ330に攻撃完了通知315を発行することができる。攻撃完了通知315を受信することに応答して、リソーススナップショット生成器320は、時間610における揮発性メモリ322および不揮発性メモリ324の状態を再びキャプチャする。このスナップショットは、すべての最終的な攻撃後メモリ状態322,324が、高められたレベルの監査332Hを適用しながらオーディタ330によって取得されたデータ334Hを確証することを検証することができる。時間610において、オーディタ330は、監査332のレベルを標準レベルの監査322Sに戻すことができる。他の例では、高められたレベルの監査322Hは、攻撃312が終了した後閾値期間の間、またはVM250が終了するまで維持される。
ここで図7を参照すると、多くのコンピュータアーキテクチャにおいて、階層的保護ドメイン(保護リングとも呼ばれる)700は、各ドメイン内に特権のレベル(すなわち、リソースへのアクセス)を提供することによって、障害および悪意のある攻撃から保護する。一般に、これらの階層的保護ドメインは、リング0,1,2,3と呼ばれる。リング3は通常、ユーザ空間に対応し、最小の特権またはリソースへのアクセスを有するが、一方、リング0はカーネルに対応し、最大の特権を有する。したがって、リング0は、対応するVM250の仮想プロセッサ252および仮想ストレージデバイス262などのリソース110と最も直接的に相互作用する。中間リング1および2は通常、それぞれのデバイスドライバに対応し、これにより、リング1内のデバイスドライバは、リング2内のデバイスドライバよりも多くの特権を有する。いくつかの例では、フォレンジクスマネージャ300(IDS310、リソーススナップショット生成器320、およびオーディタ330を含む)は、第1の階層的保護ドメイン(例えば、リング0)で実行され、VM250のユーザ空間216g内のソフトウェアリソース110sは、第1の階層的保護ドメインよりも少ない特権を有する第2の階層的保護ドメイン(例えば、リング3)で実行される。例えば、フォレンジクスマネージャ300はリング0で実行されてよく、一方、ユーザ空間216g内のソフトウェアリソース110sはリング3で実行されてよい。攻撃312は通常、ユーザ空間216g内の攻撃312によって標的とされるプロセスの特権を継承するので、リング3で実行されるユーザ空間216g内のハードウェア実施プロセス(例えば、ユーザプログラム)は、ユーザ空間216gにおける成功した攻撃312が、リング0によって保護されたゲストカーネル214gにアクセスするための十分な特権を取得することを防ぐ。攻撃312(例えば、スパイウェア)が特権を昇格させてリング0内のゲストカーネル214gへのアクセスを獲得しようとした場合でも、リング0内のゲストカーネル214gで実行されているIDS310は、そのような動作を検出し、セキュリティ侵害インジケータ314をトリガすることができる。
フォレンジクスマネージャ300の一部は、本発明の範囲または技術思想から逸脱することなく、システムの他のコンポーネントに含まれるか、またはシステムの他のコンポーネントと通信することができる。例えば、IDS310、リソーススナップショット生成器320、および/またはオーディタ330の一部は、VMM220(例えば、ハイパーバイザー220)に含まれていてよい。いくつかの例では、ゲストカーネル214g(すなわち、フォレンジクスマネージャ300)のインストルメンテーションは、キャプチャされたデータ(例えば、データ334H)をVMM220に送信する。
図8は、フォレンジクスのためにVMリソースをキャプチャする方法800のための動作の例示的な配置のフローチャートである。動作802で、方法は、データ処理ハードウェア910(図9)で、仮想マシン250に対する攻撃312が差し迫っていることを示すセキュリティ侵害インジケータ314を受信することを含む。ここで、データ処理ハードウェア910は、コンピューティングリソース112に関連付けられ、仮想マシン250のゲストカーネル214g内で対応するフォレンジックマネージャ300を実行することができ、フォレンジックマネージャ300は、対応する侵入検知システム310、リソーススナップショット生成器320、およびオーディタ330を含む。侵入検知システム310は、攻撃312が差し迫っていることを検出し、スナップショット生成器320およびオーディタ330にセキュリティ侵害インジケータ314を発行することができる。方法800は、セキュリティ侵害インジケータ314を受信することに応答して、および仮想マシン250に対する攻撃312が始まる前に、動作804で、データ処理ハードウェア910が、仮想マシン250によって使用される揮発性メモリの揮発性メモリ状態322および仮想マシン250によって使用される不揮発性メモリの不揮発性メモリ状態324のスナップショットを生成すること、動作806で、データ処理ハードウェア910が、仮想マシン250の監査レベル332を、標準レベルの監査332Sから高められたレベルの監査332Hへ上昇させることも含む。高められたレベルの監査332Hは、仮想マシン250によって使用される揮発性メモリおよび仮想マシン250によって使用される不揮発性メモリへのすべてのアクセスを表すデータ334Hを生成する。
仮想マシン250に対する攻撃312が開始された後、方法800は、動作808で、データ処理ハードウェア910が、閾値期間の間、高められたレベルの監査332Hを維持すること、動作810で、データ処理ハードウェア910が、仮想マシン250のユーザ120にセキュリティ侵害インジケータ314を通知することも含む。動作812で、方法800は、データ処理ハードウェア910が、仮想マシン250の外部のデータストア350にデータ334Hを格納することも含む。
非一時的メモリ(すなわち、メモリハードウェア)114は、コンピューティングデバイス112によって使用するために一時的または永続的にプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理デバイスであってよい。非一時的メモリ114は、揮発性および/または不揮発性のアドレス可能な半導体メモリであってよい。不揮発性メモリの例には、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能読み取り専用メモリ(PROM)/消去可能プログラム可能読み取り専用メモリ(EPROM)/電子的に消去可能プログラム可能読み取り専用メモリ(EEPROM)(例えば、ブートプログラムなどのファームウェアに通常使用される)、並びにディスクまたはテープが含まれるが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、および相変化メモリ(PCM)が含まれるが、これらに限定されない。
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指すことができる。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれることがある。アプリケーションの例には、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションが含まれるが、これらに限定されない。
図9は、この文書で説明されているシステムおよび方法を実装するために使用することができる例示的なコンピューティングデバイス900の概略図である。コンピューティングデバイス900は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図されている。ここに示されているコンポーネント、それらの接続および関係、並びにそれらの機能は、単なる例示を意味するものであり、この文書で説明および/または主張されている発明の実施を制限することを意味するものではない。
コンピューティングデバイス900は、プロセッサ910、メモリ920、ストレージデバイス930、メモリ920および高速拡張ポート950に接続する高速インタフェース/コントローラ940、および低速バス970およびストレージデバイス930に接続する低速インタフェース/コントローラ960を含む。コンポーネント910,920,930,940,950,および960の各々は、様々なバスを使用して相互接続されており、共通のマザーボードに、または必要に応じて他の方法で取り付けることができる。プロセッサ910(例えば、データ処理ハードウェア)は、高速インタフェース940に結合されたディスプレイ980などの外部入力/出力デバイスにグラフィカルユーザインタフェース(GUI)のためのグラフィカル情報を表示するために、メモリ920またはストレージデバイス930に格納された命令を含む、コンピューティングデバイス900内で実行するための命令を処理することができる。他の実装形態では、複数のメモリおよびメモリのタイプとともに、必要に応じて、複数のプロセッサおよび/または複数のバスを使用することができる。また、複数のコンピューティングデバイス900が接続されてもよく、各デバイスは、(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。プロセッサ910は、図2および図3のフォレンジックマネージャ300(複数可)を実行することができる。
メモリ920(例えば、メモリハードウェア)は、コンピューティングデバイス900内に非一時的に情報を格納する。メモリ920は、コンピュータ可読媒体、揮発性メモリユニット(複数可)、または不揮発性メモリユニット(複数可)であってよい。非一時的メモリ920は、コンピューティングデバイス900によって使用するために一時的または永続的にプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理デバイスであってよい。不揮発性メモリの例には、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能読み取り専用メモリ(PROM)/消去可能プログラム可能読み取り専用メモリ(EPROM)/電子的に消去可能プログラム可能読み取り専用メモリ(EEPROM)(例えば、ブートプログラムなどのファームウェアに通常使用される)が含まれるが、これらに限定されない。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープが含まれるが、これらに限定されない。
ストレージデバイス930は、コンピューティングデバイス900に大容量ストレージデバイスを提供することができる。いくつかの実装形態では、ストレージデバイス930は、コンピュータ可読媒体である。様々な異なる実施形態では、ストレージデバイス930は、フロッピーディスク(登録商標)デバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の類似のソリッドステートストレージデバイス、またはストレージエリアネットワークまたは他の構成におけるデバイスを含むデバイスのアレイであってよい。追加の実装形態では、コンピュータプログラム製品は、情報担体に有体的に具現化される。コンピュータプログラム製品は、実行されると、上述したような1つまたは複数の方法を実行する命令を含む。情報担体は、メモリ920、ストレージデバイス930、またはプロセッサ910上のメモリなどの、コンピュータまたは機械で読み取り可能な媒体である。
高速コントローラ940は、コンピューティングデバイス900のための帯域幅集約的な動作を管理し、一方、低速コントローラ960は、より少ない帯域幅を消費する動作を管理する。このような職務の割り当ては例示に過ぎない。いくつかの実装形態では、高速コントローラ940は、メモリ920、ディスプレイ980(例えば、グラフィックプロセッサまたはアクセラレータを介して)に結合され、および様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート950に結合される。いくつかの実装形態では、低速コントローラ960は、ストレージデバイス930および低速拡張ポート990に結合されている。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、ワイヤレスイーサネット)を含み得る低速拡張ポート990は、キーボード、ポインティングデバイス、スキャナなどの1つまたは複数の入力/出力デバイスに、またはスイッチやルーターなどのネットワーキングデバイスに、例えば、ネットワークアダプタを介して結合され得る。
コンピューティングデバイス900は、図に示されるように、複数の異なる形態で実装することができる。例えば、それは、標準サーバ900aとして、またはそのようなサーバ900aのグループに複数回、ラップトップコンピュータ900bとして、またはラックサーバシステム900cの一部として実装することができる。
本明細書に記載のシステムおよび技術の様々な実装形態は、デジタル電子および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現することができる。これらの様々な実装形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらへデータおよび命令を送信するために結合された、専用または汎用であり得る少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムにおける実装形態を含むことができる。
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース110s)は、コンピューティングデバイスに1つまたは複数のタスクを実行させるコンピュータソフトウェアを指すことができる。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれることがある。アプリケーションの例には、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションが含まれるが、これらに限定されない。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサのマシン命令を含み、高レベルの手続き型および/またはオブジェクト指向のプログラミング言語、および/またはアセンブリ/マシン言語で実装することができる。本明細書で使用される場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受信する機械可読媒体を含む。「機械可読信号」という用語は、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
本明細書に記載のプロセスおよび論理フローは、データ処理ハードウェアとも呼ばれる1つまたは複数のプログラム可能なプロセッサによって実行でき、これは、1つまたは複数のコンピュータプログラムを実行して、入力データを操作し、出力を生成することによって機能を実行する。プロセスおよびロジックフローは、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの特定用途のロジック回路によっても実行できる。コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受け取る。コンピュータの重要な素子は、命令を実行するためのプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを格納するための1つまたは複数の大容量ストレージデバイス、例えば、磁気、光磁気ディスク、または光ディスクを含むか、またはそれらからデータを受信し、または転送し、あるいはその両方のために動作可能に結合される。しかしながら、コンピュータがそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体は、あらゆる形態の不揮発性メモリ、媒体およびメモリデバイスを含み、それらは、例えば、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、およびCD ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、特定用途の論理回路によって補完されてよく、または特定用途の論理回路に組み込まれてもよい。
ユーザとのインタラクションを提供するために、本開示の1つまたは複数の態様は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管)、LDC(液晶ディスプレイ)モニタ、またはタッチスクリーンを有するコンピュータ上に実装されてもよく、コンピュータは、任意選択で、キーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールを有し、これによって、ユーザがコンピュータに入力を提供できる。他の種類のデバイスを使用して、ユーザとのインタラクションを提供することもでき、例えば、ユーザに提供されるフィードバックは、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、任意の形態の感覚的フィードバックであってよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受け取ることができる。加えて、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することにより、ユーザと対話(interact)でき、これは、例えば、Webブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のWebブラウザにWebページを送信することによって行われる。
複数の実装形態が説明された。それにもかかわらず、本開示の技術思想および範囲から逸脱することなく、様々な修正を行うことができることが理解されるであろう。したがって、他の実装形態は、以下の特許請求の範囲内にある。