追加の LSA 保護を構成する
資格情報を侵害する可能性のあるコード インジェクションを防止するために、ローカル セキュリティ機関 (LSA) プロセスの追加保護を構成する方法について説明します。
LSA には、Local Security Authority Server Service (LSASS) プロセスが含まれており、ローカルおよびリモート サインインでユーザーを検証し、ローカル セキュリティ ポリシーを適用します。 Windows 8.1 以降では、追加の LSA 保護が提供されており、保護されていないプロセスによるメモリの読み取りやコード インジェクションを防止します。 この機能により、LSA が格納して管理する資格情報のセキュリティが強化されます。 UEFI ロックおよびセキュア ブートと組み合わせて使用する場合には、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa レジストリ キーを無効にしても効果がなくなるため、さらに保護が強化されます。
プラグインまたはドライバーの保護されたプロセスの要件
LSA のプラグインまたはドライバーが保護されたプロセスとして正常に読み込まれるには、次の要件を満たしている必要があります。
署名の検証
保護モードでは、LSA に読み込まれるすべてのプラグインが、Microsoft 署名を使ってデジタル署名されている必要があります。 未署名のプラグインや Microsoft 署名を使って署名されていないプラグインは、LSA に読み込まれません。 プラグインの例には、スマート カードのドライバー、暗号化のプラグイン、およびパスワード フィルターがあります。
- スマート カードのドライバーなど、ドライバーである LSA プラグインは、WHQL 認定を使って署名されている必要があります。 詳しくは、「WHQL リリース署名」を参照してください。
- WHQL 認定プロセスがない LSA プラグインは、LSA のファイル署名サービスを使用して署名する必要があります。
Microsoft セキュリティ開発ライフサイクル (SDL) のプロセス ガイダンスへの準拠
- プラグインはすべて、該当する SDL のプロセス ガイダンスに準拠している必要があります。 詳細については、「Microsoft セキュリティ開発ライフサイクル (SDL) – プロセス ガイダンス」を参照してください。
- プラグインが Microsoft 署名を使って適切に署名されている場合でも、SDL のプロセスに準拠していない場合、プラグインを読み込むことができない可能性があります。
推奨プラクティス
次の一覧を使用して、この機能を広く展開する前に、LSA の保護が有効になっていることを幅広くテストします。
- 組織が使用するすべての LSA プラグインとドライバーを特定します。 これには、スマート カードのドライバーや暗号化のプラグインなどの Microsoft 以外のドライバーやプラグイン、およびパスワード フィルターやパスワードの変更通知を適用するために内部で開発されたソフトウェアが含まれます。
- LSA 保護の下でプラグインの読み込みが失敗しないように、すべての LSA プラグインが Microsoft 証明書でデジタル署名されていることを確認します。
- 正しく署名されたすべてのプラグインが、LSA に正常に読み込むことができ、意図したとおりに動作することを確認します。
- 監査ログを使用して、保護されたプロセスとして実行できない LSA プラグインおよびドライバーを識別します。
LSA 保護の有効化に関する制限事項
追加の LSA 保護が有効になっている場合、カスタム LSA プラグインはデバッグできません。 LSASS が保護されたプロセスである場合、LSASS にデバッガーはアタッチできません。 一般に、実行中の保護されたプロセスをデバッグする方法はサポートされていません。
保護されたプロセスとして読み込まれない LSA プラグインとドライバーの監査
LSA 保護を有効にする前に、監査モードを使用して、LSA 保護モードで読み込みに失敗する LSA プラグインとドライバーを特定します。 監査モードでは、LSA 保護が有効になっている場合、LSA の下で読み込みに失敗するすべてのプラグインとドライバーを識別するイベント ログが生成されます。 メッセージは、実際にプラグインやドライバーをブロックすることなく、ログに記録されます。
ここで説明するイベントは、イベント ビューアーの [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[CodeIntegrity] の下にある操作ログに記録されます。 これらのイベントは、署名が原因で読み込まれていない LSA プラグインおよびドライバーを識別するのに役立ちます。 これらのイベントを管理するには、wevtutil コマンド ライン ツールを使用できます。 このツールの詳細については、Wevtutil に関するページを参照してください。
重要
デバイスで スマート アプリ コントロール が有効になっていると、監査イベントが生成されません。 スマート アプリ コントロールの有効状態を確認または変更するには、Windows セキュリティ アプリケーションを開き、[アプリとブラウザーの制御] ページに移動します。 追加 LSA 保護を監査したい場合には、[スマート アプリ コントロールの設定] を選択して有効状態を確認し、構成を [オフ] に変更してください。
Note
追加 LSA 保護での監査モードは、Windows 11 バージョン 22H2 以降を実行しているデバイスで既定で有効になっています。 デバイスがこのビルド以降を実行している場合、追加 LSA 保護を監査するために他のアクションは必要ありません。
単一のコンピューター上で LSASS.exe の監査モードを有効にする
- レジストリ エディター (RegEdit.exe) を開き、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe にあるレジストリ キーに移動します。
- レジストリ キーの値を AuditLevel=dword:00000008 に設定します。
- コンピューターを再起動します。
これらの手順を実行した後、イベント 3065 とイベント 3066 の結果を分析します。 イベント ビューアーで、[アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[CodeIntegrity] の下にある操作ログでこれらのイベントを確認します。
- イベント 3065 は、プロセス (通常は LSASS.exe) が共有セクションのセキュリティ要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。 ただし、現在設定されているシステム ポリシーにより、イメージの読み込みは許可されました。
- イベント 3066 は、プロセス (通常は LSASSexe) が Microsoft 署名のレベル要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。 ただし、現在設定されているシステム ポリシーにより、イメージの読み込みは許可されました。
プラグインまたはドライバーに共有セクションが含まれている場合、イベント 3066 はイベント 3065 と共に記録されます。 プラグインが Microsoft 署名のレベル要件を満たしていない場合を除き、共有セクションを削除するとどちらのイベントも発生しなくなります。
重要
これらの操作イベントは、カーネル デバッガーがシステムにアタッチされ、有効になっている場合は生成されません。
複数のコンピューター上で LSASS.exe の監査モードを有効にする
ドメイン内の複数のコンピューターについて監査モードを有効にするには、グループ ポリシー用のレジストリのクライアント側拡張機能を使用して、LSASS.exe の監査レベルのレジストリ値を展開できます。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe レジストリ キーを変更する必要があります。
- [実行] ダイアログ ボックスに「gpmc.msc」と入力するか、[スタート] メニューから [グループ ポリシー管理コンソール] を選択して、グループ ポリシー管理コンソール (GPMC) を開きます。
- ドメイン レベルでリンクされるか、または使用するコンピューター アカウントが含まれている組織単位にリンクされる新しいグループ ポリシー オブジェクト (GPO) を作成します。 または、既に展開されている GPO を選択します。
- GPO を右クリックし、[編集] を選択してグループ ポリシー管理エディターを開きます。
- [コンピューターの構成]>[基本設定]>[Windows の設定] を展開します。
- [レジストリ] を右クリックし、[新規] をポイントして、[レジストリ項目] を選択します。 [新しいレジストリのプロパティ] ダイアログ ボックスが表示されます。
- [ハイブ] の一覧で、HKEY_LOCAL_MACHINE を選択します。
- [キー パス] の一覧で、SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe に移動します。
- [値の名前] ボックスに「AuditLevel」と入力します。
- [値の種類] ボックスで、[REG_DWORD] を選択します。
- [値のデータ] ボックスに「00000008」と入力します。
- [OK] を選択します。
Note
GPO を有効にするには、GPO の変更をドメイン内のすべてのドメイン コントローラーに対してレプリケートする必要があります。
複数のコンピューター上で追加の LSA 保護をオプトインするには、グループ ポリシーに対するレジストリのクライアント側拡張機能を使用して HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa を変更します。 手順については、この記事で後述する「追加の LSA 資格情報保護の構成」を参照してください。
LSASS.exe が読み込みに失敗するプラグインとドライバーを特定する
LSA 保護が有効になっている場合、LSA の下で読み込みに失敗するすべてのプラグインとドライバーを識別するイベント ログが生成されます。 LSA 保護の追加をオプトインした後、イベント ログを使用して LSA 保護モードで読み込みに失敗した LSA プラグインとドライバーを識別できます。
イベント ビューアー上の [アプリケーションとサービス ログ]>[Microsoft]>[Windows]>[CodeIntegrity]>[Operational] で次のイベントを確認します。
- イベント 3033 は、プロセス (通常は LSASSexe) が Microsoft 署名のレベル要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。
- イベント 3063 は、プロセス (通常は LSASS.exe) が共有セクションのセキュリティ要件を満たしていないドライバーの読み込みを試行したことを、コードの整合性チェックによって特定したことを記録します。
共有セクションは、通常、インスタンス データが、同じセキュリティ コンテキストを使用するその他のプロセスとやり取りできるようにするためのプログラミング手法の結果であり、セキュリティの脆弱性が生じる可能性があります。
追加の LSA 資格情報保護を有効にして構成する
このセクションの手順を使用して、Windows 8.1 以降または Windows Server 2012 R2 以降を実行しているデバイスに対して追加の LSA 保護を構成できます。
セキュア ブートと UEFI を使用するデバイス
セキュア ブートまたは UEFI を使用する x86 ベースまたは x64 ベースのデバイスで LSA 保護を有効にすると、レジストリ キーまたはポリシーを使用して UEFI 変数を UEFI ファームウェアに格納できます。 UEFI ロックありで有効化されている場合、LSASS は保護されたプロセスとして実行され、この設定はファームウェアの UEFI 変数に格納されます。
設定がファームウェアに格納されている場合、レジストリの編集やポリシーによって UEFI 変数を削除したり変更を加えたりして追加の LSA 保護を有効にすることはできません。 UEFI 変数のリセットは、「LSA 保護 UEFI 変数の削除」に示す手順を使用して行う必要があります。
UEFI ロックなしで有効化されている場合、LSASS は保護されたプロセスとして実行され、この設定は UEFI 変数に格納されません。 この設定は、Windows 11 バージョン 22H2 以降の新しいインストールを使用するデバイスに既定で適用されます。
UEFI をサポートしていない、またはセキュア ブートが無効になっている x86 ベースまたは x64 ベースのデバイスは、LSA 保護の構成をファームウェアに格納することはできません。 これらのデバイスは、レジストリ キーの存在のみに依存します。 このシナリオでは、デバイスへのリモート アクセスを使って LSA の保護を無効にできます。 LSA 保護の無効化は、デバイスを再起動するまで反映されません。
自動有効化
Windows 11 バージョン 22H2 以降を実行しているクライアント デバイスでは、次の条件が満たされている場合、追加 LSA 保護が既定で有効になります。
- デバイスは Windows 11 バージョン 22H2 以降の新しいインストールであり、以前のリリースからアップグレードされていない。
- デバイスはエンタープライズに参加している (Active Directory ドメインに参加、Microsoft Entra ドメインに参加している、またはハイブリッド Microsoft Entra ドメインに参加している)。
- デバイスはハイパーバイザーで保護されたコード整合性 (HVCI) に対応している。
Windows 11 バージョン 22H2 以降における追加 LSA 保護の自動有効化では、この機能の UEFI 変数は設定されません。 UEFI 変数を設定する場合は、レジストリ構成またはポリシーを使用してください。
Note
Windows RT 8.1 が実行されているデバイスでは、追加 LSA 保護は常に有効になっており、無効にすることはできません。
単一のコンピューター上で LSA 保護を有効にする
レジストリを使用するか、ローカル グループ ポリシーを使用して、単一のコンピューター上で LSA 保護を有効にすることができます。
レジストリを使用して有効にする
- レジストリ エディター (RegEdit.exe) を開き、レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa に移動します。
- レジストリ キーを次の値に設定します。
- UEFI 変数を使って機能を構成する場合、"RunAsPPL"=dword:00000001。
- UEFI 変数なしで機能を構成する場合は、"RunAsPPL"=dword:00000002 に設定します。これは、Windows 11 ビルド 22H2 以降でのみ適用されます。
- コンピューターを再起動します。
Windows 11 バージョン 22H2 以降でローカル グループ ポリシーを使用して有効にする
- gpedit.msc と入力して、ローカル グループ ポリシー エディターを開きます。
- [コンピューター構成]>[管理用テンプレート]>[システム]>[ローカル セキュリティ機関] を展開します。
- [Configure LSASS to run as a protected process] (保護されたプロセスとして実行するように LSASS を構成する) ポリシーを開きます。
- このポリシーを 有効に設定します。
- [オプション] で、次のいずれかのオプションを選択します。
- UEFI 変数を使って機能を構成する場合は、[UEFI ロックありで有効]。
- UEFI 変数を使わずに機能を構成する場合は、[UEFI ロックなしで有効]。
- [OK] を選択します。
- コンピューターを再起動します。
グループ ポリシーを使用して LSA 保護を有効にする
- [実行] ダイアログ ボックスに「gpmc.msc」と入力するか、[スタート] メニューから [グループ ポリシー管理コンソール] を選択して、GPMC を開きます。
- ドメイン レベルでリンクされるか、または使用するコンピューター アカウントが含まれている組織単位にリンクされる新しい GPO を作成します。 または、既に展開されている GPO を選択します。
- GPO を右クリックし、[編集] を選択してグループ ポリシー管理エディターを開きます。
- [コンピューターの構成]>[基本設定]>[Windows の設定] を展開します。
- [レジストリ] を右クリックし、[新規] をポイントして、[レジストリ項目] を選択します。 [新しいレジストリのプロパティ] ダイアログ ボックスが表示されます。
- [ハイブ] の一覧で、HKEY_LOCAL_MACHINE を選択します。
- キー パス 一覧の SYSTEM\CurrentControlSet\Control\Lsaを参照してください。
- [値の名前] ボックスに「RunAsPPL」と入力します。
- [値の種類] ボックスで、[REG_DWORD] を選択します。
- [値のデータ] ボックスに次のように入力します。
- UEFI 変数を使って LSA の保護を有効にする場合: 00000001
- UEFI 変数を使わずに LSA 保護を有効にする場合: 00000002 (Windows 11 バージョン 22H2 以降にのみ適用されます)
- [OK] を選択します。
カスタム デバイス構成プロファイルを作成して LSA 保護を有効にする
Windows 11 バージョン 22H2 以降を実行しているデバイスの場合は、Microsoft Intune 管理センターでカスタム デバイス構成プロファイルを作成することで、LSA 保護を有効にし構成できます。
- Intune 管理センターで、[デバイス]>[Windows]>[構成プロファイル] に移動し、[プロファイルの作成] を選択します。
- [プロファイルの作成] 画面で、次のオプションを選択します。
- プラットフォーム: Windows 10 以降
- プロファイルの種類: [テンプレート] を選択し、[カスタム] を選択します。
- [作成] を選択します
- [基本] 画面で、プロファイルの名前と省略可能な説明を入力し、[次へ] を選択します。
- [構成設定] 画面で、[追加] を選択します。
- [行の追加] 画面で、次の情報を指定します。
- 名前: OMA-URI 設定の名前を指定します。
- OMA-URI:「./Device/Vendor/MSFT/Policy/Config/LocalSecurityAuthority/ConfigureLsaProtectedProcess」と入力します。
- データ型: [Integer] を選択します。
- 値: UEFI ロックを使用して保護されたプロセスとして実行するように LSASS を構成するには 1、UEFI ロックなしで保護されたプロセスとして実行するように LSASS を構成するには 2 を入力 します。
- 保存 を選択してから、次へ を選択します。
- [割り当て] ページで、割り当てを構成し、[次へ] を選択します。
- [適用規則] ページで、適用規則を構成し、[次へ] を選択します。
- [確認と作成] ページで、構成を確認し、[作成] を選択します。
- コンピューターを再起動します。
このポリシー CSP の詳細については、「LocalSecurityAuthority - ConfigureLsaProtectedProcess」を参照してください。
LSA 保護を無効にする
LSA 保護を無効にするには、レジストリを使用するか、ローカル グループ ポリシーを使用します。 デバイスがセキュア ブートを使用していて、ファームウェアで LSA 保護 UEFI 変数が設定されている場合は、ツールを使用して UEFI 変数を削除できます。
レジストリを使用して無効にする
- レジストリ エディター (RegEdit.exe) を開き、レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa に移動します。
- レジストリ キーの値を "RunAsPPL"=dword:00000000 に設定するか、DWORD を削除します。
- UEFI 変数を使って PPL が有効化されている場合、ローカル セキュリティ機関で保護されたプロセスのオプトアウト ツールを使用して UEFI 変数を削除します。
- コンピューターを再起動します。
Windows 11 バージョン 22H2 以降でローカル ポリシーを使用して無効にする
- gpedit.msc と入力して、ローカル グループ ポリシー エディターを開きます。
- [コンピューター構成]>[管理用テンプレート]>[システム]>[ローカル セキュリティ機関] を展開します。
- [Configure LSASS to run as a protected process] (保護されたプロセスとして実行するように LSASS を構成する) ポリシーを開きます。
- このポリシーを 有効に設定します。
- [オプション] で [無効] を選択します。
- [OK] を選択します。
- コンピューターを再起動します。
Note
このポリシーを [未構成] に設定しても、ポリシーが過去に有効になっていた場合は、以前の設定がクリーンアップされず、引き続き適用されてしまいます。 この機能を無効にするには、[オプション] ドロップダウンでポリシーを [無効] に設定する必要があります。
LSA 保護の UEFI 変数を削除する方法
デバイスがセキュア ブートを使用している場合は、Microsoft ダウンロード センターからローカル セキュリティ機関 (LSA) 保護プロセスのオプトアウト ツール (LSAPPLConfig) を使用して UEFI 変数を削除できます。
Note
ダウンロード センターには、LsaPplConfig.efi という名前 の 2 つのファイルが用意されています。 小さいファイルは x86 ベースのシステム用で、大きなファイルは x64 ベースのシステム用です。
セキュア ブートの管理の詳細については、「 UEFI ファームウェア」を参照してください。
注意事項
セキュア ブートが無効になると、セキュア ブートおよび UEFI に関連するすべての構成がリセットされます。 LSA の保護を無効にする他の方法がすべて失敗した場合にのみ、セキュア ブートを無効にしてください。
LSA 保護を確認する
Windows の起動時に LSA が保護モードで開始されたかどうかを確認するには、イベント ビューアーで [Windows ログ]>[システム]で以下の WinInit イベントを確認します。
- 12: LSASS.exe が、次のレベルの保護されたプロセスとして起動されました。レベル: 4
LSA と Credential Guard
LSA 保護は、信頼されていない LSA コード インジェクションとプロセス メモリ ダンプをブロックすることで、資格情報などの機密情報を盗難から保護するセキュリティ機能です。 LSA 保護は、LSA プロセスをコンテナー内に分離し、悪意のあるアクターやアプリなどの他のプロセスが機能にアクセスできないようにすることで、バックグラウンドで実行されます。 この分離により、LSA 保護は重要なセキュリティ機能となり、Windows 11 では既定で有効になっています。
Windows 10 以降では、Credential Guard は、NTLM パスワード ハッシュ、Kerberos チケット許可チケット (TGT)、およびアプリケーションによってドメイン資格情報として格納される資格情報を保護することで、資格情報の盗難攻撃を防ぐのにも役立ちます。 Kerberos、NTLM、Credential Manager では、仮想化ベースのセキュリティ (VBS) を使用してシークレットを分離します。
Credential Guard が有効の場合、LSA プロセスは、シークレットを格納および保護する分離 LSA プロセス (LSAIso.exe) と呼ばれるコンポーネントと通信します。 分離 LSA プロセスによって格納されたデータは VBS を使用して保護され、オペレーティング システムの残りの部分からはアクセスできません。 LSA は、リモート プロシージャ コールを使って分離 LSA プロセスと通信します。
Windows 11 バージョン 22H2 以降では、システム要件を満たすすべてのデバイスで VBS と Credential Guard が既定で有効になっています。 Credential Guard は、64 ビットセキュア ブート デバイスでのみサポートされています。 LSA 保護と Credential Guard は補完的であり、Credential Guard に対応している、または、既定で有効になっているシステムでも、LSA 保護を有効にしてメリットを得ることができます。 Credential Guard の詳細については、「Credential Guard の概要」を参照してください。