Windows ブート プロセスをセキュリティで保護する

Windowsには、マルウェアからあなたを保護するのに役立つ多くの機能があり、それは驚くほど良い仕事をしています。 企業が内部で開発して使用するアプリを除き、すべての Microsoft Store アプリは、認定されて Microsoft Store に掲載されるための一連の要件を満たしている必要があります。 この認定プロセスでは、セキュリティを含むいくつかの条件が調べられ、マルウェアの Microsoft Store への侵入を防止する有効な手段になっています。 悪意のあるアプリが通過した場合でも、Windows には効果を軽減できる一連のセキュリティ機能が含まれています。 たとえば、Microsoft Store アプリはサンド ボックス化されており、ユーザー データへのアクセスやシステム設定の変更に必要な特権がありません。

また、Windows では、デスクトップ アプリとデータを複数のレベルで保護します。 Windows Defender ウイルス対策は、クラウドを利用したリアルタイム検出を使用して、悪意があるとされるアプリを特定して検疫します。 Windows Defender SmartScreen は、マルウェアとして認識された場合でも、信頼できないアプリの実行を許可する前にユーザーに警告します。 アプリがシステムの設定を変更する前に、ユーザーは、ユーザー アカウント制御を使用して、アプリに管理者特権を付与する必要があります。

これらのコンポーネントは、Windows がユーザーをマルウェアから保護する方法の一部にすぎません。 ただし、これらのセキュリティ機能がユーザーを保護するのは、Windows の起動後のみです。 最新のマルウェアとブートキットは、具体的には、Windowsの前に開始し、OS のセキュリティを完全にバイパスし、非表示のままで済む可能性があります。

統合拡張ファームウェア インターフェイス (UEFI) がサポートされている PC でWindows 10またはWindows 11を実行すると、信頼できるブートによって、電源を入れた瞬間から PC がマルウェアから保護されます。 この保護は、マルウェア対策ソフトウェアが引き継ぐまで続きます。 万が一、マルウェアがPCに感染した場合、隠れたままではいられません。 トラステッド ブートでは、マルウェアがマスクできない方法で、インフラストラクチャに対するシステムの整合性を確認できます。 UEFI を使用しない PC の場合でも、Windows では、以前のバージョンの Windows と比較して、スタートアップ セキュリティが強化されています。

まず、ルートキットとその機能を詳しく見てみましょう。 その後、Windows で保護を確保する方法について説明します。

脅威: ルートキット

ルートキット は、高度で危険な種類のマルウェアです。 OS と同じ特権を使用して、カーネル モードで実行されます。 ルートキットは、OS と同じ権利を持ち、OS より先に起動するため、完全にそれ自身および他のアプリケーションを隠すことができます。 また、ルートキットは、ローカル ログインの回避、パスワードやキー入力の記録、機密ファイルの転送、暗号化データの収集を行うマルウェアのスイートによく含まれています。

スタートアップ プロセスのどのフェーズでルートキットが読み込まれるかは、ルートキットの種類によって異なります。

  • ファームウェア ルートキット。 これらのキットは、Windows より先にルートキットに起動できるように、PC の基本入出力システムやその他のハードウェアのファームウェアを上書きします。
  • ブートキット。 これらのキットは、OS のブートローダー (OS を起動する小さなソフトウェア) を置き換えて、PC が OS の前にブートキットを読み込みます。
  • カーネル ルートキット。 これらのキットは OS カーネルの一部を置き換えるので、OS の読み込み時にルートキットを自動的に起動できます。
  • ドライバー ルートキット。 これらのキットは、Windows が PC ハードウェアと通信するために使用する信頼済みのドライバーのいずれかを偽装します。

対策

Windows では、スタートアップ プロセス中にルートキットやブートキットが読み込まれないようにする 4 つの機能をサポートしています。

  • セキュア ブート。 UEFI ファームウェアとトラステッド プラットフォーム モジュール (TPM) を備えた PC は、信頼された OS ブートローダーのみを読み込むように構成できます。
  • トラスト ブート Windows は、読み込む前に、スタートアップ プロセスのすべてのコンポーネントの整合性を確認します。
  • 起動時マルウェア対策 (ELAM)。 ELAM では、すべてのドライバーを読み込む前にテストし、承認されていないドライバーが読み込まれないようにします。
  • メジャー ブート。 PC のファームウェアでブート プロセスをログに記録し、Windows から信頼されたサーバーにそのログを送って、PC の正常性を客観的に評価できます。

図 1 は、Windows のスタートアップ プロセスを示します。

Windows スタートアップ プロセスを示すスクリーンショット。

図 1。 セキュア ブート、トラスト ブート、メジャー ブートによってすべてのステージでマルウェアをブロック:

セキュア ブートとメジャー ブートは、UEFI 2.3.1 と TPM チップを搭載した PC でのみ実行できます。 幸い、Windows ハードウェア互換性プログラムの要件を満たすすべての Windows 10 と Windows 11 PC にはこれらのコンポーネントが搭載されており、以前のバージョンの Windows 向けに設計された多くの PC にも搭載されています。

以降のセクションでは、セキュア ブート、トラスト ブート、ELAM、メジャー ブートについて説明します。

セキュア ブート

PC が起動すると、最初に OS ブートローダーが見つかります。 セキュア ブートを実行していない PC では、PC のハード ドライブにあるブートローダーが実行されます。 信頼できる OS とルートキットを PC で区別する方法はありません。

UEFI が搭載された PC を起動する場合、PC は最初にファームウェアがデジタル署名されていることを確認し、ファームウェアのルートキットのリスクを減らします。 セキュア ブートが有効になっている場合、ファームウェアはブートローダーのデジタル署名を検証して、ファームウェアが変更されていないことを確認します。 ブートローダーが変更されていないときは、ファームウェアは、次の条件のいずれかに該当する場合にのみ、ブートローダーを開始します。

  • ブートローダーが信頼された証明書を使用して署名されている。 Windows 用に認定された PC の場合、Microsoft 証明書を信頼できます。
  • ユーザーが手動でブートローダーのデジタル署名を承認しました。 この操作により、ユーザーは Microsoft 以外のオペレーティング システムを読み込むことができます。

x86 ベースの Windows 認定済み PC はすべて、セキュア ブートに関連するいくつかの要件を満たす必要があります。

  • 既定でセキュア ブートを有効にしておく必要があります。
  • Microsoft の証明書 (したがって、Microsoft が署名したブート ローダー) を信頼する必要があります。
  • ユーザーが他のブートローダーを信頼できるようにするため、セキュア ブートを構成できる必要があります。
  • ユーザーがセキュア ブートを完全に無効にできる必要があります。

これらの要件により、ユーザーは、任意の OS を実行しながら、ルートキットから保護することができるようになります。 Microsoft 以外のオペレーティング システムを実行する場合、次の 3 つのオプションがあります。

  • 認定されたブートローダーで OS を使用します。 すべての Windows 認定済み PC では、Microsoft の証明書を信頼する必要があるため、Microsoft では、すべての Windows 認定済み PC で信頼されるように、Microsoft 以外のブートローダーを分析し、署名するサービスを提供します。 実際に、Linux を読み込むことができるオープン ソースのブートローダーが既に提供されています。 証明書を取得するプロセスを開始するには、https://partner.microsoft.com/dashboard にアクセスしてください。
  • カスタム ブートローダーを信頼するように UEFI を構成します。 すべての Windows 認定済み PC で、UEFI データベースに署名を追加することによって、非認定のブートローダーを信頼して、自作のオペレーティング システムを含む、すべての OS を実行することができます。
  • セキュア ブートを無効にする。 すべての Windows 認定済み PC では、すべてのソフトウェアを実行できるように、セキュア ブートをオフにすることができます。 ただし、この操作によってブートキットから保護できるようにはなりません。

マルウェアがこれらのオプションを悪用できないようにするため、ユーザーは UEFI ファームウェアを手動で構成し、非認定のブートローダーを信頼するか、セキュア ブートを無効にする必要があります。 ソフトウェアは、セキュア ブート設定を変更できません。

セキュア ブートの既定の状態は信頼の範囲が広く、お客様が必要ないブート コンポーネントを信頼する可能性があります。 Microsoft 3rd Party UEFI CA 証明書は、すべての Linux ディストリビューションのブートローダーに署名するため、UEFI データベース内の Microsoft 3rd Party UEFI CA 署名を信頼すると、システムの攻撃対象領域が増加します。 単一の Linux ディストリビューションのみを信頼して起動することを意図しているお客様は、必要な構成よりもはるかに多くのすべてのディストリビューションを信頼します。 いずれかのブートローダーに脆弱性があった場合、システムが露出され、最近の脆弱性 (GRUB ブートローダーファームウェアレベルのルートキットによるブート コンポーネントへの影響など) に見られるように、使用を意図しないブートローダーが悪用される危険が発生します。 セキュア コア PC ではセキュア ブートを有効にする必要があり、可能な限り安全な PC の構成を提供するため、既定で Microsoft サード パーティ UEFI CA 署名を信頼しないよう構成されています。

Linux などのオペレーティング システムと、UEFI 署名によって署名されたコンポーネントを信頼して起動するには、BIOS メニューでセキュア コア PC を構成し、次の手順に従って UEFI データベースに署名を追加できます:

  1. 次のいずれかの操作で、ファームウェア メニューを開きます:
    • PC を起動し、製造元のキーを押してメニューを開きます。 一般的に使用されるキーは、Esc、Delete、F1、F2、F10、F11、F12 です。 タブレットの場合、音量アップまたは音量ダウン ボタンが一般的に使用されています。 起動時には、多くの場合、キーに関する画面が表示されます。 ない場合、または画面が速すぎて表示されない場合は、製造元のサイトをチェックします。
    • または、Windows が既にインストールされている場合は、[サインオン] 画面または [スタート] メニューから [電源 ] ( ) > を選択し、Shift キーを押しながら [再起動] を選択します。 [トラブルシューティング > ] [詳細オプション > UEFI ファームウェア設定] の順に選択します。
  2. ファームウェア メニューから、セキュリティ > セキュア ブートに移動し、"サード パーティ CA" を信頼するオプションを選択します。
  3. 変更を保存して終了します。

Microsoft は引き続き Linux および IHV エコシステム パートナーと協力し、ユーザーの安全を守るため、各機能が信頼できるコンポーネントを慎重に選択し、ユーザーの信頼する発行元とコンポーネントのみを信頼するシステムを設計していきます。

ほとんどのモバイル デバイスと同様に、Microsoft Surface RT をはじめとする ARM ベースのデバイスは、Windows 8.1 のみを実行するよう設計されています。 そのため、セキュア ブートをオフにできず、別の OS を読み込むことができません。 幸いにも、他のオペレーティング システムを実行するように設計された ARM プロセッサ デバイスの大きな市場があります。

トラスト ブート

トラスト ブートは、セキュア ブートが終了する場所を引き継ぎます。 ブートローダーは、Windows カーネルのデジタル署名を読み込む前に検証します。 Windows カーネルは、ブート ドライバー、スタートアップ ファイル、ELAM など、Windows スタートアップ プロセスの他のすべてのコンポーネントを検証します。 ファイルが変更されている場合、ブートローダーは問題を検出し、破損したコンポーネントの読み込みを拒否します。 多くの場合、Windows は破損したコンポーネントを自動的に修理して、Windows の整合性を復元し、PC が正常に起動できるようにします。

起動時マルウェア対策

セキュア ブートはブートローダーを保護し、トラスト ブートは Windows カーネルを保護しているため、マルウェアの次の攻撃は、Microsoft 以外のブート ドライバーに感染することです。 従来のマルウェア対策アプリは、ブート ドライバーが読み込まれるまで起動しないため、ルートキットをドライバーに偽装して実行できる可能性があります。

起動時マルウェア対策 (ELAM) は、Microsoft 以外のすべてのブート ドライバーとアプリケーションよりも先に Microsoft または Microsoft 以外のマルウェア対策ドライバーを読み込むことができるため、セキュア ブートとトラスト ブートによって確立された信頼チェーンが維持されます。 OS はまだ起動しておらず、Windows はできるだけ早く起動する必要があるため、ELAM には、すべてのブート ドライバーを調べて、信頼できるドライバーの一覧にあるかどうかを判断するという簡単なタスクがあります。 信頼されていない場合、Windows では読み込まれません。

ELAM ドライバーは、フル機能のマルウェア対策ソリューションではありません。それはブート プロセスで後ほど読み込みます。 Windows Defender (Windowsに付属) では、Microsoft 以外のいくつかのマルウェア対策アプリと同様に、ELAM がサポートされます。

メジャー ブート

組織内の PC がルートキットに感染した場合、それを認識する必要があります。 エンタープライズのマルウェア対策アプリは、IT 部門にマルウェアの感染を報告できますが、存在を隠して潜んでいるルートキットでは適切に機能しません。 つまり、それが正常かどうかを通知するクライアントを信頼することはできません。

この結果、ルートキットに感染している従来の PC は、マルウェア対策が稼働していても正常に見えます。 マルウェアに感染した PC は、エンタープライズ ネットワークに接続し続けて、膨大な機密データへのアクセスをルートキットに提供し、潜在的にルートキットが内部ネットワーク全体に拡散できるようにします。

メジャー ブートは、Windows の TPM および Microsoft 以外のソフトウェアで動作します。 これにより、ネットワーク上の信頼されたサーバーは、Windows のスタートアップ プロセスの整合性を検証できます。 メジャー ブートでは、次の手順を使用します。

  1. PC の UEFI ファームウェアは、TPM にファームウェア、ブートローダー、ブート ドライバー、マルウェア対策アプリの前に読み込まれるすべてのハッシュを格納します。
  2. スタートアップ プロセスの最後に、Windows は、Microsoft 以外のリモート構成証明クライアントを起動します。 信頼された構成証明サーバーが、一意のキーをクライアントに送信します。
  3. TPM は、一意のキーを使用して、UEFI によって記録されたログにデジタル署名します。
  4. クライアントはサーバーにログを送信します。他のセキュリティ情報も送信される場合があります。

実装と構成に応じて、サーバーでクライアントが正常かどうかを判断できるようになりました。 制限付き検疫ネットワークまたは完全ネットワークへのアクセス権をクライアントに付与できます。

図 2 に、メジャー ブートとリモート構成証明プロセスを示します。

測定ブートとリモート構成証明プロセスを示すスクリーンショット。

図 2。 メジャー ブートでリモート サーバーに PC の正常性を証明します:

Windows には、Measured Boot をサポートするアプリケーション プログラミング インターフェイスが含まれています。 ただし、これを利用するには、リモート構成証明クライアントと信頼された構成証明サーバーを実装するための Microsoft 以外のツールが必要です。 たとえば、Microsoft Research の次のツールを参照してください。

メジャー ブートは、UEFI、TPM、Windows の機能を使って、ネットワーク全体のクライアント PC の信頼性を確実に評価する方法を提供します。

要約

セキュア ブート、トラスト ブートし、メジャー ブートは、根本的にブートキットやルートキットに対して抵抗力のあるアーキテクチャを作成します。 Windows では、これらの機能によって、ネットワークからカーネル レベルのマルウェアを除去することができます。 Windows では、OS の整合性を信頼することができます。