ボリュームの暗号化キーの攻撃の種類

Windows には、Unified Extensible Firmware Interface (UEFI) セキュア ブート、トラステッド プラットフォーム モジュール (TPM)、グループ ポリシー、複雑なパスワード、アカウント ロックアウトなど、攻撃から組織を保護する手段が数多く用意されています。

次のいくつかのセクションでは、ボリュームの暗号化キーが BitLocker のものか、Microsoft 以外の暗号化ソリューションのものかにかかわらず、その暗号化キーの侵害に使われる可能性のある攻撃の種類について説明します。攻撃者はボリュームの暗号化キーを侵害した後、システム ドライブからデータを読み取ったり、さらに Windows がオフラインの間にマルウェアをインストールしたりもできます。各セクションは、攻撃の強みと弱みのグラフィカルな概要と、提案される軽減策で始まります。

ブートキットおよびルートキット攻撃

ルートキットは、オペレーティング システムと同じ特権を使ってカーネル モードで実行される、巧妙で危険なマルウェアです。ルートキットは、オペレーティング システムと同じ権利を持つか、それ以上の権利さえも持つことがあるため、Windows からも、マルウェア対策ソリューションからさえも、完全に自らを隠すことができます。また、マルウェアのスイートに含まれることが多く、ローカル ログインを回避し、パスワードを記録し、機密ファイルを転送して、暗号化キーを収集できます。

さまざまな種類のブートキットとルートキットが次のソフトウェア レベルで読み込まれます。

  • カーネル レベル。このレベルのルートキットは、オペレーティング システムの最高の特権を持ちます。悪意のあるコードを挿入したり、オペレーティング システムの中核部 (カーネルやデバイス ドライバーなど) を置き換えたりできる場合があります。

  • アプリケーション レベル。これらのルートキットは、アプリケーション バイナリを悪質なコード (トロイの木馬など) に置き換えることを目指し、既存のアプリケーションの動作さえも変更できます。

  • ライブラリ レベル。このレベルのルートキットは、システム コールに修正プログラムを適用したり、システム コールをフックしたり、悪意のあるコードに置換したりして、マルウェアの存在を隠すことができます。

  • ハイパーバイザー レベル。このレベルのルートキットは、ブート シーケンスを標的にします。主に、ハイパーバイザーとして自らを読み込むようにブート シーケンスを変更することを目指します。

  • ファームウェア レベル。このレベルのルートキットは、PC の BIOS ファームウェアを上書きするため、ハード ディスクからクリーニングや削除されても、マルウェアに低レベルのアクセスを与え、マルウェアのインストールや隠ぺいも可能になることがあります。

オペレーティング システムや暗号化方式にかかわらず、ルートキットは、いったんインストールされると、機密データにアクセスできます。アプリケーション レベルのルートキットは、ボリューム レベルの暗号化を回避して、ユーザーがアクセスできるファイルをすべて読み込めます。カーネル、ライブラリ、ハイパーバイザー、ファームウェア レベルのルートキットは、暗号化されたボリューム上のシステム ファイルに直接アクセスでき、また、メモリから暗号化キーを取得することもできます。

Windows はブートキットやルートキットからの強力な保護機能を備えていますが、攻撃者は Windows がオフラインの間にデバイスに物理的にアクセスして、マルウェアをインストールできると、オペレーティング システムのセキュリティを回避できます。たとえば、攻撃者は Windows の前に起動するマルウェアを格納した USB フラッシュ ドライブから PC を起動する可能性があります。マルウェアは、システム ファイルや PC のファームウェアを置き換えたり、単に自らの制御下で Windows を起動したりできます。

ブートキットとルートキットから PC を十分に保護するには、デバイスでプリブート認証またはセキュア ブートを使うか、または、暗号化ソリューションでデバイスのトラステッド プラットフォーム モジュール (TPM) をエンド ツー エンドのブート プロセスの整合性監視手段として使う必要があります。プリブート認証は、ハードウェアにかかわらず、いずれのデバイスでも使えますが、ユーザーには不便なので、デバイスに対する脅威を軽減するためにのみ使う必要があります。セキュア ブートが有効になっているデバイスでは、ブートキットとルートキットの攻撃から保護するためにプリブート認証を使う必要はありません。

UEFI 構成のパスワード保護は、デバイスの構成を保護するためにも、セキュア ブートの無効化を防ぐためにも大事ですが、TPM とそのプラットフォーム構成レジスタ (PCR) の測定値 (PCR7) を使って、システムのブートローダー (Windows の暗号化ソリューションまたは Microsoft 以外の暗号化ソリューション) が改ざんされていないこと、デバイスで起動する最初のコードであることを確認するのも重要です。デバイスの TPM を使って改ざんからそのコンポーネントを保護しない暗号化ソリューションは、ユーザーのパスワードをログに記録したり暗号化キーを取得したりできるブートキット レベルの感染から自らを保護できない場合があります。

このような理由から、TPM を搭載したデバイスで BitLocker が構成されているときは、必ず TPM とその PCR を使って、オペレーティング システム起動前の環境の整合性が確保されてから、暗号化されたボリュームがアクセス可能になる必要があります。

UEFI 構成にいずれの変更があっても、PCR7 は無効になり、ユーザーは BitLocker 回復キーを入力するように求められます。この機能のため、UEFI 構成をパスワードで保護するのは重要ではありません。攻撃者がセキュア ブートを無効化できた場合、または無効化できなくて UEFI 構成を変更した場合、BitLocker 回復キーを入力する必要がありますが、UEFI パスワード保護はベスト プラクティスであり、TPM を使わないシステム (Microsoft 以外の代替システムなど) にはやはり必要です。

ブルートフォース サインイン攻撃

攻撃者は、推測する時間が十分にあれば、いずれのパスワードも見つけることができます。正しいパスワードを見つけるまで、数百万のさまざまなパスワードを試すプロセスは、ブルートフォース サインイン攻撃として知られています。理論的には、攻撃者はこの方法を使えば、いずれのパスワードも取得できます。

ブルートフォース攻撃には次の 3 つの可能性があります。

  • プリブート認証システムに対して。攻撃者はユーザーの BitLocker の PIN または同等の認証システムを推測しようとすることで、デバイスを直接攻撃する可能性があります。TPM は、ハンマリング対策ロックアウト機能を呼び出すことで、この攻撃を軽減します。この機能ではユーザーに、ロックアウト期間が終了するまで待つか、BitLocker 回復キーを入力するように求めます。

  • 回復キーに対して。攻撃者は 48 桁の BitLocker 回復キーを推測しようとする可能性があります。回復キーは十分に長いため、ロックアウト期間がなくても、このキーに対するブルートフォース攻撃は現実的に不可能です。具体的には、BitLocker 回復キーのエントロピーは 128 ビットであるため、平均的なブルートフォース攻撃ならば、成功するまでに 18,446,744,073,709,551,616 回の推測が必要です。攻撃者が毎秒 100 万個のパスワードを推測できれば、平均的なブルートフォース攻撃ならば、成功するまでに 58 万年以上かかります。

  • オペレーティング システムのサインイン認証システムに対して。攻撃者は有効なユーザー名とパスワードを推測しようとする可能性があります。Windows では、パスワードの推測間に遅延を設けて、ブルートフォース攻撃の速度を下げています。また、Windows の最近のすべてのバージョンでは、管理者は複雑なパスワードとパスワードのロックアウトを求めることができます。同様に、管理者は Microsoft Exchange ActiveSync ポリシーまたはグループ ポリシーを使って、無効なパスワードの指定した試行回数の後に自動的に再起動して BitLocker の 48 桁の回復キーの入力を求めるように、Windows 8.1 と Windows 8 を構成できます。これらの設定が有効になっていて、ユーザーが複雑なパスワードに関するベスト プラクティスに従っていれば、オペレーティング システムのサインインに対してブルートフォース攻撃は現実的に不可能です。

一般的に、管理者が複雑なパスワードとアカウントのロックアウトを適用していると、ブルートフォース サインイン攻撃は Windows に対して現実的に不可能です。

ダイレクト メモリ アクセス攻撃

ダイレクト メモリ アクセス (DMA) では、特定の種類のハードウェア デバイスはデバイスのシステム メモリと直接やり取りできます。たとえば、Thunderbolt を使ってコンピューターに別のデバイスを接続した場合、別のデバイスには自動的にターゲット コンピューターのメモリに対して読み書きアクセス許可が与えられます。

残念ながら DMA ポートでは、認証とアクセス制御を使ってコンピューターのメモリの内容は保護されません。Windows では、多くの場合、システム コンポーネントとアプリはメモリの保護部分への読み書きは禁止されますが、デバイスは DMA を使って、いずれの暗号化キーの位置も含め、メモリ内のいずれの位置も読み取ることができます。

DMA 攻撃は、比較的実行しやすく、技術的なスキルはほとんど必要ありません。だれもがインターネットからツール (PasswareElcomSoft などのツール) をダウンロードして、DMA 攻撃を使って PC のメモリから機密データを読み取ることができます。暗号化ソリューションはその暗号化キーをメモリに格納するため、それらのキーには DMA 攻撃によってアクセスできます。

一部の種類のポートは DMA 攻撃に対して脆弱です。特に USB は DMA を許可しませんが、次のいずれかの種類のポートを備えたデバイスは脆弱です。

  • FireWire

  • Thunderbolt

  • ExpressCard

  • PCMCIA

  • PCI

  • PCI-X

  • PCI Express

DMA 攻撃を実行するために、攻撃者は一般的に、メモリ スキャン ツール (Passware、ElcomSoft など) を実行している別の PC を標的のコンピューターの FireWire または Thunderbolt ポートに接続します。接続されると、そのソフトウェアは標的のシステム メモリをスキャンして暗号化キーを見つけます。取得した暗号化キーは、ドライブを暗号化解除して、その内容を読み取ったり変更したりするために使えます。

この攻撃のはるかに効率的な形態は、理論上は存在します。攻撃者は、カスタムの FireWire または Thunderbolt デバイスを作り、そのデバイスに DMA 攻撃ロジックをプログラムします。これで、攻撃者はそのデバイスを物理的に接続するだけで済みます。攻撃者が物理的にアクセスできない場合は、そのデバイスを空の USB フラッシュ ドライブとして偽装し、標的の組織の従業員に配布できます。接続されたら、その攻撃デバイスは DMA 攻撃を使って、PC のメモリをスキャンして暗号化キーを見つけることができます。その後、PC のインターネット接続または自らのワイヤレス接続を使って、キー (または PC のメモリ内のデータ) を送ることができます。この種の攻撃には非常に高度なスキルが必要になります。攻撃者がカスタム デバイスを作る必要があるためです (この種のデバイスは現時点では市場で容易に入手できません)。

現在、Windows デバイスの DMA ポートの最も一般的な用途の 1 つは、開発者によるデバッグ用です。このタスクは、一部の開発者が実行する必要があり、ほとんどの消費者は今後も実行することはありません。USB や DisplayPort など消費者の要求を満たすセキュアなポートの種類が増えるにつれ、最新のモバイル PC は DMA ポートを備えなくなっています。マイクロソフトでは、DMA ポートはその特有のセキュリティ リスクのため、モバイル デバイスに属するものとは考えておらず、いずれの InstantGo 認定デバイスへの搭載も禁止してきました。InstantGo デバイスには、スマートフォンのような電源管理とインスタント オン機能が搭載されています (執筆時点で、それらの機能は主に Windows タブレットに搭載されています)。

DMA ベースの拡張スロットは別の攻撃手段となりますが、これらのスロットは一般的に、デスクトップ PC にのみあり、拡張用に設計されています。組織では、物理セキュリティを使って、デスクトップ PC に対する外部からの攻撃を防いでいます。また、拡張スロットに対する DMA 攻撃にはカスタム デバイスが必要になります。その結果、攻撃者は多くの場合、PC を攻撃するために、従来の DMA ポート (FireWire など) を備えたインターフェイスをスロットに挿入します。

ポートベースの DMA 攻撃を軽減するために、管理者は、DMA ポートを備えた FireWire やその他の種類のデバイスを無効にするように、ポリシー設定を構成できます。また、多くの PC では、ファームウェアの設定を使ってそれらのデバイスを無効にすることができます。プリブート認証は、デバイス レベルでまたは Windows の構成により不要にできますが、BitLocker プリブート認証機能は、必要であれば引き続き使えます。この機能を使うと、いずれの種類のデバイスの DMA ポートと拡張スロットに対するすべての種類の攻撃を軽減できます。

Hyberfil.sys 攻撃

hyberfil.sys ファイルは Windows の休止ファイルです。そのファイルには、デバイスが休止状態に入ると生成されるシステム メモリのスナップショットが格納されており、また、BitLocker などの暗号化テクノロジ用の暗号化キーも格納されています。攻撃者は、hyberfil.sys ファイルから暗号化キーを抽出できたと述べています。

前のセクションで説明した DMA ポート攻撃と同様、hyberfile.sys ファイルをスキャンして暗号化キーを見つけることのできるツール (Passware 製のツールなど) を使えます。マイクロソフトは、Windows がこの種の攻撃に対して脆弱であるとは考えていません。Windows では、暗号化されたシステム ボリューム内に hyberfil.sys ファイルを格納するためです。その結果、攻撃者は PC への物理アクセスとサインイン アクセスの両方ができない限り、hyberfil.sys ファイルにアクセスすることはできません。攻撃者は PC にサインイン アクセスできると、ドライブの暗号化を解除する理由はほとんどありません。そのドライブ内のデータへの完全なアクセス許可は既にあるためです。

実際、hyberfil.sys への攻撃により攻撃者が追加のアクセス許可を得られる要因となるのは、管理者が Windows の既定の構成を変更して、暗号化されていないドライブに hyberfil.sys ファイルを格納していることのみです。既定で、Windows 10 はこの種の攻撃に対してセキュアであるように設計されています。

メモリ残存攻撃

メモリ残存攻撃は、PC の再起動後にメモリから暗号化キーを読み取るサイドチャンネル攻撃です。PC のメモリは PC の再起動時にクリアされると考えられることがよくありますが、電源を切っても、メモリ チップからすぐに記憶内容が失われることはありません。そのため、PC のメモリに物理的にアクセスできる攻撃者は、メモリから直接、暗号化キーなどのデータを読み取ることができる場合があります。

この種のコールド ブート攻撃を実行するとき、攻撃者は PC の物理メモリにアクセスし、電源を切ってから数秒または数分以内に暗号化キーを復元します。この種の攻撃は、プリンストン大学の研究者によって明らかにされました。その暗号化キーを使って、攻撃者はドライブを暗号化解除し、そのファイルにアクセスできるようになります。

キーを取得するために、攻撃者は次のプロセスに従います。

  1. PC のメモリを凍結します。たとえば、攻撃者はエアロゾル エア ダスター スプレーを噴霧することで、メモリを -50 ℃に凍結できます。

  2. PC を再起動します。

  3. Windows を再起動する代わりに、別のオペレーティング システムで起動します。この操作は通常、起動可能なフラッシュ ドライブを接続するか、起動可能な DVD を読み込むことで行います。

  4. 起動可能なメディアはメモリ残存攻撃ツールを読み込み、攻撃者はそれらのツールを使って、システムメモリをスキャンして暗号化キーを見つけます。

  5. 攻撃者は暗号化キーを使って、ドライブのデータにアクセスします。

攻撃者は別のオペレーティング システムでデバイスを起動できない場合 (起動可能なフラッシュ ドライブが無効になっているか、セキュア ブートが有効になっている場合など)、凍結したデバイスからメモリを物理的に取り外し、別のおそらくは同等のデバイスに接続できます。幸いなことにこのプロセスは、攻撃者にとって非常に信頼性が低いことが、Defence Research and Development Canada (DRDC) Valcartier グループの分析によって明らかになっています (「An In-depth Analysis of the Cold Boot Attack」をご覧ください)。最新のデバイスが普及するにつれ、この種の攻撃は不可能になっています。メモリはマザーボードに直接ハンダ付けされているためです。

プリンストン大学の研究者によって、この種の攻撃はリムーバブル メモリを備えたデバイスに対して可能であることが発表されましたが、発表当時の 2008 年から、デバイスのハードウェアは変わっています。

  • セキュア ブートは、この種の攻撃が依存している悪意のあるツールが標的のデバイスで実行されるのを防げます。

  • BIOS または UEFI を使う Windows システムは、パスワードでロックダウンでき、USB ドライブから起動されるのを防げます。

  • USB からのブートがデバイスで必要な場合は、セキュア ブートを使って、信頼されたオペレーティング システムの起動に制限できます。

  • メモリの放電率はデバイス間で実にさまざまですが、多くのデバイスには、メモリ残存攻撃からまったく影響を受けないメモリが搭載されています。

  • メモリの高密度化により、その残存性は下がり、攻撃の成功率も低くなります。これは、メモリが物理的に取り外され、同等のシステムに取り付けられて、悪意のあるツールをそのシステムの構成で起動できても同じです。

これらの要因のため、この種の攻撃は最新のデバイスに対してほとんど不可能です。リスクの要因が従来のデバイスにある場合でも、攻撃は攻撃者にとって信頼できないとわかります。科学捜査でのメモリ取得の実用的な用途について、また、コンピューターをメモリ残存攻撃に対して弱くする/強くする要因について詳しくは、「An In-depth Analysis of the Cold Boot Attack」をご覧ください。

BitLocker のプリブート認証機能によって、ほとんどのデバイスに対するメモリ残存攻撃を軽減できますが、システム UEFI または BIOS の保護によっても、このような攻撃を軽減でき、外部メディア (USB フラッシュ ドライブや DVD など) からの PC の起動を防げます。多くの場合、後者の方法をお勧めします。プリブート認証でユーザーに不便をかけることなく、十分な保護が可能になるためです。

関連項目