Windows Defender Credential Guardを使用した認証情報の保護
今日はWindows10 Enterpriseで使用可能なセキュリティ機能、Credential Guardについての記事です。
Windows Enterprise E3及びE5はProと比較してセキュリティ機能が強化されたOSです。これは私の持論ですが、Enterprise エディションのWindows10は大企業向けというわけでは決してないと思います。もちろん、Windows 10 Enterpriseでのみ使用可能な機能のうち、Branch Cacheなどの幾つかの機能は確かに大企業のニーズに適しているでしょう。
しかし、機密情報や顧客情報を保有するあらゆる規模の企業は、Enterpriseの機能を活用しサイバーセキュリティ対策に積極的なアプローチをしていくべきだと考えています。サイバー攻撃は日々進歩しています。AzureADには素晴らしい認証保護機能がインクルードされていますが、Office365を構成し、活用するだけでは情報資産を完全には守れません。
日々進化し、新しい手法や攻撃ツールが開発されていくサイバー攻撃に対して、特に機密情報や顧客情報を取り扱う企業は、新しい攻撃手法に対して素早く保護が可能なセキュリティソリューションを選択するべきです。このようなセキュリティソリューションは、企業規模を問わず導入を検討してくべきでだと思います。日々進化し続けるサイバー攻撃を防ぐの為の手段の一つとして、今回の投稿させていただくCredential Guardは有効です。
■Credential Guardの概要
認証トークンが攻撃者の手に渡り、アイデンティティの詐称に利用されると、ユーザーリソースへのアクセスを許してしまうことになります。Credential Guardによって、ユーザーアクセストークンは「Hyper-V」上で稼働する仮想化に基づいたセキュリティ環境内に格納され、Windows 10のカーネルから隔離されるようになります。このため、機器が悪人の手に落ちたとしても、ユーザーの資格情報が悪用される心配はありません。つまり、Pass-the-Hash攻撃やその他のAPT攻撃からの保護に役立ちます。マルウェアがセキュリティ資格情報にアクセスできなければ、データセンター内に設置された1台のマシンが悪人の手に落ちたとしても、被害の拡大は防げるようになります。
■QA
Q_なんのために資格情報を保護するのでしょうか。
A_ あらゆるITシステムには、特権アカウント(Administratorとかrootとか)があります。エンドポイントのデバイスからオンプレミスのサーバ、クラウドサービス、社会インフラに利用されているITシステム、最近ではIoT機器まで、およそビジネスに利用されているITシステムはすべて特権アカウントで管理されています。この特権アカウントを保護することが重要で、攻撃者から特権アカウントを盗まれてしまった場合、その特権アカウントで管理されている企業のITシステムは全て乗っ取られてしまいます。こういった事態が発生した場合、企業活動が遂行できなくなって攻撃を受けた企業は、非常に大きなダメージを被ります。また、この特権アカウントの保護は内部からの攻撃と外部からの攻撃に対策をする必要があり、このCredential Guardは主に外部からの攻撃に対する対策です。Credential Guardだけでは特権アカウントの完全な保護はできないので、内部からの攻撃に対しても対策を計画してください。
Q_資格情報をハッシュ化するだけではいけないのでしょうか。
A_ Windows 8.1までは認証情報をハッシュとして”OSの中”に保存していました。しかし、OSの内部に保存をしている為、ハッシュ化された資格情報が盗み出される可能性がありました。Credential Guardでは認証情報を、OSが稼働する領域とは別の仮想領域に保存するので、OSの内部に保存する場合と比較してより安全性の高い保護が可能です。
また、Credential Guardを有効化すると、Windows OS上で認証情報を扱うLSA(Local Security Authority)プロセスは、リモートプロシージャコールを使って、VBS上のCredential Guardと通信して認証します。
Q_どんな攻撃から保護をしてくれるのでしょうか。
A_主にPass-the-Hash攻撃からの保護が可能です。Pass the Hash攻撃とは、認証時に使用されるパスワードのハッシュ情報を不正に取得し、そのハッシュ情報を使用して認証を行う”なりすまし攻撃”のことです。OS内部に保持しているパスワードがハッシュ化されているケースで攻撃者からハッシュ情報を盗み出された場合、安全ではありません。OSの内部にハッシュ化された資格情報を保持していた場合、そのハッシュ化された情報が盗まれてしまったら、攻撃者はハッシュ化されたままの資格情報を使って認証を行います。そうすると、下図のように次から次へ複数のコンピュータに侵入するよというものです。(多分w 詳細はwikipediaで調べてくださいw)
■仕組み
右側がこの機能でよく出てくる用語のVBS(Virtuallization based security)の説明です。
このようにOSの領域と、資格情報を保存する領域を仮想的に分離しています。
■Windows10のセキュリティ機能役割分担(ざっくり)
・Windows Hello for Business
→ユーザーの資格情報を強化、保護するもの
・Credential Guard
→ユーザーの認証によって生成されるユーザーアクセストークンを仮想化テクノロジを使用して保護するもの
→つまり、Hello for Businessで行われる保護よりも前の段階で高度な保護をするもの
・Windows Defender Device Guard
→仮想化テクノロジーを使用して実行されるコードの整合性のチェックを行い、コード実行を保護するもの
■システム要件(ハードウェアとソフトウェア)
※必須の要件には”必須”と記載。”任意”はあると望ましい要件
要件 | 説明 |
OS (必須) | Windows 10 Enterprise、Windows 10 Education、Windows Server 2016、またはWindows 10 IoT Enterprise |
UEFI ファームウェア バージョン 2.3.1 以上とセキュア ブート (必須) | ファームウェアが UEFI バージョン 2.3.1 以上とセキュア ブートを使用していることを確認するには、Windows ハードウェア互換性プログラムの要件 System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby を使って検証します。 |
仮想化拡張機能 (必須) | 仮想化ベースのセキュリティをサポートするには、次の仮想化拡張機能が必要です。
|
x64 アーキテクチャ (必須) | Windows ハイパーバイザー上で仮想化ベースのセキュリティが使用する機能は、64 ビット PC でのみ実行できます。 |
VT-d または AMD-Vi IOMMU (入出力メモリ管理ユニット) (任意) | Windows 10 では、IOMMU によって、メモリ攻撃からのシステムの回復性を強化します。¹ |
トラステッド プラットフォーム モジュール (TPM) バージョン 1.2 または 2.0 (必須) | TPM 1.2 および 2.0 は、ファームウェアに格納されている暗号化キーの保護を提供します。TPM 1.2 は、Windows 10 (ビルド 10240) ではサポートされていませんが、Windows 10 バージョン 1511 (ビルド 10586) 以降でサポートされています。 注 TPM がインストールされていない場合でも Credential Guard は有効になりますが、Credential Guard を暗号化するために使われるキーは TPM によって保護されません。 |
安全なファームウェア更新プロセス (必須) | UEFIファームウェアは、次のWindowsハードウェア互換性プログラムの要件(System.Fundamentals.Firmware.UEFISecureBoot)にある安全なファームウェアの更新をサポートする必要があります。 |
セキュア MOR の実装に対応するために更新されたファームウェア (任意) | Credential Guard は、特定のメモリ攻撃を防ぐためにセキュア MOR ビット リビジョン2を必要とします。 |
物理 PC (必須) | Windows 10 を実行している PC の場合、仮想マシンで Credential Guard を実行することはできません。 |
ファームウェア:ブート設定と管理のセキュリティ保護 (任意) | •BIOSパスワードまたはより強力な認証がサポートされている必要があります。 •BIOS設定では、BIOS認証を設定する必要があります。 •オペレーティングシステムで行われたBOOTORDERの変更を無効にし、許可された起動デバイスのリスト(たとえば、「内蔵ハードドライブからの起動のみ」)とデバイスの起動順序を設定するには、保護されたBIOSオプションがサポートされている必要があります。 •BIOS設定では、他のオペレーティングシステムの起動を防止し、BIOS設定の変更を防止するために、セキュリティオプションと起動オプション(許可された起動デバイスのリスト、起動順序)に関するBIOSオプションを保護する必要があります。 |
■Credential Guardの実装方法
1_グループポリシーで有効化する方法
2_マスターイメージに組み込む方法
3_レジストリで有効化する方法
4_専用のツールを使って有効化する方法
■1_グループポリシーでの設定
グループ ポリシーを使った Credential Guard の有効化
グループ ポリシーを使うことにより、仮想化に基づくセキュリティ機能が追加されるため、Credential Guard を有効にすることができます。
1. グループ ポリシー管理コンソールから、[コンピューターの構成]、[管理用テンプレート]、[システム]、[Device Guard] の順に移動します。
2. [仮想化ベースのセキュリティを有効にする] をダブルクリックし、[有効] をクリックします。
3. [プラットフォームのセキュリティ レベルを選択する] ボックスで、[セキュア ブート] または [セキュア ブートと DMA 保護] を選びます。
4. [Credential Guard Configuration] (Credential Guard の構成) ボックスで、[Enabled with UEFI lock] (UEFI ロックありで有効化) をクリックしてから [OK] をクリックします。Credential Guard をリモートでオフにできるようにする場合は、[Enabled without lock] (ロックなしで有効化) を選択します。
5. グループ ポリシー管理コンソールを閉じます。
注意点
※グループ ポリシーの設定で [セキュア ブートと DMA 保護] を選んだ場合、IOMMU が必要です。グループ ポリシーの [セキュア ブート] オプションを選ぶと、IOMMU のないデバイスで Credential Guard を実行できます。
■2_OSイメージへの Credential Guard の追加
Credential Guard をイメージに追加する場合は、仮想化ベースのセキュリティ機能を追加し、Credential Guard を有効にすることでこれを実行できます。
仮想化ベースのセキュリティ機能の追加
最初に、仮想化ベースのセキュリティ機能を追加する必要があります。コントロール パネルまたは展開イメージのサービスと管理ツール (DISM) を使うことでこれを行うことができます。
注 グループ ポリシーを使って Credential Guard を有効にする場合、次の手順は必要ありません。グループ ポリシーによって、この機能がインストールされます。
[プログラムと機能] を使って仮想化ベースのセキュリティ機能を追加する
1. コントロール パネルの [プログラムと機能] を開きます。
2. [Windows の機能の有効化または無効化] をクリックします。
3. [分離ユーザー モード] チェック ボックスをオンにします。
4. [Hyper-V]、Hyper-V プラットフォーム] の順に移動し、[Hyper-V Hypervisor] チェック ボックスをオンにします。
5. [OK] をクリックします。
DISM を使って仮想化ベースのセキュリティ機能をオフライン イメージに追加する
1. 管理者特権でのコマンド プロンプトを開きます。
2. 次のコマンドを実行して Hyper-V Hypervisor を追加します。 dism /image:<WIM file name> /Enable-Feature /FeatureName:Microsoft-Hyper-V-Hypervisor
3. 次のコマンドを実行して分離ユーザー モードを追加します。 dism /image:<WIM file name> /Enable-Feature /FeatureName:IsolatedUserMode
注
DISM または Configuration Manager を使用して、これらの機能をオンライン イメージに追加することもできます。
3_レジストリを使って Credential Guard を有効にする
グループ ポリシーを使わない場合は、レジストリを使って Credential Guard を有効にすることができます。
1. レジストリ エディターを開きます。
2. 仮想化ベースのセキュリティを有効にします。
○ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceGuard に移動します。
○ EnableVirtualizationBasedSecurity という名前の新しい DWORD 値を追加します。仮想化ベースのセキュリティを有効にするには、このレジストリ設定の値を 1 に設定します。無効にするには、0 に設定します。
○ RequirePlatformSecurityFeatures という名前の新しい DWORD 値を追加します。[セキュア ブート] のみを使用するには、このレジストリ設定の値を 1 に設定します。[セキュア ブートと DMA 保護] を使用するには、2 に設定します。
3. Credential Guard を有効にします。
○ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA に移動します。
○ LsaCfgFlags という名前の新しい DWORD 値を追加します。Credential Guard を UEFI ロックありで有効にするにはレジストリ設定の値を 1 に設定し、ロックなしで Credential Guard を有効にするには 2 に設定し、無効化するには 0 に設定します。
4. レジストリ エディターを閉じます。
注 FirstLogonCommands 無人設定のレジストリ エントリを設定して Credential Guard を有効にすることもできます。
4_[参考情報]Device Guard and Credential Guard hardware readiness tool”を使用してWindows Defender Credential Guardを有効にする
Device Guard and Credential Guard hardware readiness tool ダウンロードリンク
https://www.microsoft.com/en-us/download/details.aspx?id=53337
ツールの説明
ハードウェアがDevice GuardおよびCredential Guardの準備が整っているかどうかを確認します。これを使用して、Device GuardまたはCredential Guardをイネーブルにすることもできます。
このツールは、昇格された権限で実行する必要があるWindows PowerShellスクリプトです。Windows 10(バージョン1607以降)およびWindows Server 2016で動作します。このツールは、次の方法で使用できます。
1. デバイスがDevice GuardまたはCredential Guardを実行できるかどうかを確認する
2. デバイスがパートナーによって実行されているハードウェアラボキットテストと互換性があるかどうかを確認する
3. Device GuardまたはCredential Guardをイネーブルまたはディセーブルにする
4. デバイス上のデバイスガードまたはクレデンシャルガードのステータスを確認する
5. System Center Configuration Managerまたはその他の展開メカニズムと統合して、デバイスの機能を反映するレジストリ設定を構成する
6. カスタムポリシーが提供されていない場合にDevice Guardを有効にするためにデフォルトで使用できる、組み込みのConfigCIポリシーを監査モードで使用する
構文
DG_Readiness.ps1 –[Enable/Disable/Capable/Ready] –[DG/CG/HVCI/HLK] -Path <ConfigCI policy> -AutoReboot
Device Guard and Credential Guard hardware を有効化する場合のコマンド例
DG_Readiness_Tool_v3.2.ps1 -Enable -AutoReboot
■Device Guardと併用すると効果的な保護対策
いくつかグループ ポリシー設定を有効にすることによって、資格情報への攻撃に対する保護を強化できます。
• ドメイン コントローラーで、グループ ポリシーを使って、”KDC で信頼性情報、複合認証、および Kerberos 防御をサポートする” システムを構成します。[KDC で信頼性情報、複合認証、および Kerberos 防御をサポートする] グループ ポリシー設定を、[サポート] または [常に信頼性情報を提供する] に設定します。
• Windows 10 を実行するデバイスでも、グループ ポリシーを使ってこの機能を有効にすることができます。これを行うには、[コンピューターの構成]、[管理用テンプレート]、[システム]、[Kerberos] の順に移動して、[Kerberos クライアントで信頼性情報、複合認証、および Kerberos 防御をサポートする] と [常に複合認証を先に送信する] グループ ポリシー設定を有効にします。
■Device Guard有効化前の考慮事項
新しいコンピュータでは、Windows 10、バージョン1607以降、デフォルトでTrusted Platform Module(TPM 2.0)を有効にする必要があります。
[参考情報] https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-security-considerations
■注意事項
• リモートデスクトップクライアントによって保存されたWindows資格情報をリモートホストに送信することはできません。保存されたWindows資格情報を使用しようとすると、 “ログオンに失敗しました”というエラーメッセージが表示されます。
• Windows資格情報を抽出するアプリケーションが失敗します。
• Windows Defender資格情報ガードが有効になっているPCから資格情報をバックアップすると、Windows資格情報を復元できません。資格情報をバックアップする必要がある場合は、Windows Defender資格情報ガードを有効にする前にこれを行う必要があります。そうしないと、これらの資格情報を復元できません。
■考慮事項
Windows 10 バージョン 1511 以降、資格情報マネージャーを使って保存されるドメイン資格情報は Credential Guard で保護されています。資格情報マネージャーでは、Web サイトやネットワーク上の他のコンピューターにログオンするために使われるユーザー名とパスワードなどの資格情報を格納できます。資格情報マネージャーのための Credential Guard による保護には、次の考慮事項が適用されます。
• リモート デスクトップ サービスで保存された資格情報は、パスワードを入力せずに別のコンピューターにリモートで接続するために使うことはできません。
• 資格情報マネージャーからドメインの派生資格情報を抽出するアプリケーションは、それらの資格情報を使えなくなります。
• Credential Guard がオンになっている PC から資格情報がバックアップされている場合は、資格情報マネージャーのコントロール パネルを使って資格情報を復元することができません。資格情報をバックアップする必要がある場合は、Credential Guard を有効にする前に行う必要があります。それ以外の場合は、それらの資格情報を復元できません。
■Credential Guard によって保護されないシナリオ
次のような資格情報の格納方法は、Credential Guard によって保護されません。
• Windows 機能の保護の外部にある資格情報を管理するソフトウェア
• ローカル アカウントと Microsoft アカウント
• ドメイン コント ローラーやリモート デスクトップ ゲートウェイなどの特定のサーバーの役割を実行する Windows Server 2016 Technical Preview サーバー。Windows Server 2016 Technical Preview サーバーをクライアント PC として使用している場合は、Windows 10 Enterprise を実行している場合と同様に保護されます。
• キー ロガー
• 物理的な攻撃
• 攻撃者が PC 上のマルウェアを使って、資格情報に関連付けられている特権を使用することを防止しません。IT 担当者や、組織内の重要な資産にアクセスできるユーザーなど、重要性の高いアカウントには専用の PC を使うことをお勧めします。
※Windows Defender Credential Guardが有効になっていると、特定の認証機能がブロックされるため、このような機能を必要とするアプリケーションは破損します。アプリケーションは、機能低下との互換性を確保するために、展開前にテストする必要があります。
※ドメインコントローラでのWindows Defender資格情報ガードの有効化はサポートされていません。
ドメインコントローラは、Windows Defender資格情報ガードが有効になっているときに分離されたプロセスと統合され、クラッシュを引き起こす認証サービスをホストします。
※以下の機能を利用しているアプリケーションは機能しなくなります
• Kerberos DES暗号化のサポート
• Kerberosの制約のない委任
• Kerberos TGTの抽出
• NTLMv1
Device Guardを有効化している場合に、これらが要求された場合には、プロンプトを表示します。
• ダイジェスト認証
• 資格情報の委任
• MS-CHAPv2
※ファイル共有、リモートデスクトップ、またはBranchCacheなど、Kerberosに依存するサービスまたはプロトコルは引き続き機能し、Windows Defenderの資格情報ガードの影響を受けません。
■サードパーティアプリケーションに関する既知の問題
Cisco AnyConnectセキュアモビリティクライアント
McAfeeアプリケーションおよび、MACC
AppSense Environment Manager
Citrixアプリケーション・・・・
[詳細情報] Windows Defender Credential Guard: Known issues
https://docs.microsoft.com/ja-jp/windows/security/identity-protection/credential-guard/credential-guard-known-issues
■ベンダーサポート状況
Windows Defender Credential Guardは、これらの製品、製品バージョン、コンピュータシステム、またはWindows 10バージョンではサポートされていません。
• McAfee Encryption製品
• Check Point Endpoint Security Client
• Windows Defenderの場合Windows 10の資格ガードとVMWare Workstation Windows Defender資格ガードが有効な場合にVMWare Workstationを実行するとWindows 10ホストが失敗する
• 特定のバージョンのLenovo ThinkPad
• Symantec Endpoint Protection
※これらは包括的なリストではありません。
[この記事の情報ソース]
■Protect derived domain credentials with Windows Defender Credential Guard [English]
https://docs.microsoft.com/ja-jp/windows/security/identity-protection/credential-guard/credential-guard
■Windows Defender Credential Guard: Requirements [English]
https://docs.microsoft.com/ja-jp/windows/security/identity-protection/credential-guard/credential-guard-requirements
■Windows Defender Credential Guard: Known issues [English]
https://docs.microsoft.com/ja-jp/windows/security/identity-protection/credential-guard/credential-guard-known-issues
■Credential Guard によるドメインの派生資格情報の保護 [ 日本語] ※最終更新 2016年
https://technet.microsoft.com/ja-jp/library/mt483740(v=vs.85).aspx
2件のフィードバック
[…] パスワードを使用しない認証方法。主にユーザー固有の生体情報やスマートカード及びPINを利用する。Microsoft アカウント、Windows Server Active Directory アカウント、Microsoft Azure Active Directory (Azure AD) アカウントのほか、Fast IDentity Online (FIDO) 認証をサポートする Microsoft 以外のサービスに対する認証を行える。ハードウェアに、TPMが搭載されている場合、秘密キーはTPMで保護される。物理的なTPMチップはこの機能を使用する場合に必須ではなく、TPMチップが搭載されていない場合にはソフトウェアで秘密キーを生成できる。ちなみに前回の記事で紹介したCredential Guardは、Hello for Businessでの認証よりも前の段階で資格情報の保護を行っています。Windows10の初期バージョンで、Microsoft Passportという名前で存在していた機能はHello for Buisnessに吸収されました。この機能はWIndows10 ProまたはEnterpriseで使用できます。 […]
[…] Windows Defender Credential Guardを使用した認証情報の保護 […]