1. Credential Guardとは
従来、Windows Serverでは LSASS(Local Security Authority Subsystem Service) がログイン認証やActive Directory認証を担当し、パスワードハッシュやKerberosチケットなどの認証情報を管理していました。これらの認証情報はLSASSのメモリ上に保持されるため、攻撃者がサーバーへ侵入して管理者権限を取得した場合、認証情報が窃取されるリスクがありました。代表的な例として、MimikatzはLSASSのメモリから認証情報を取得するために利用されるツールとして知られています。
Credential Guard は、LSASSが扱う認証情報を、Hyper-Vベースの仮想化技術を利用した VBS(Virtualization-Based Security) の保護領域に分離して格納し、不正なアクセスや認証情報の窃取を防ぐためのセキュリティ機能です。
Credential GuardやVBSの利用が従来よりも推奨されており、Windows Server 2025 以降では、以下の要件を満たせば、明示的に無効になるように構成されていない限りはデフォルトで有効になります。
https://learn.microsoft.com/ja-jp/windows/security/identity-protection/credential-guard/#default-enablement-on-windows-server
- ライセンス要件を満たす
- ハードウェアとソフトウェアの要件を満たす
- Credential Guard を無効にするように明示的に構成されていない
- ドメインに参加している
- ドメイン コントローラーではない
一方で、これらの機能はCPUの仮想化支援機能やHyper-Vベースの保護機構を使用するため、仮想サーバー環境ではハイパーバイザーやデバイスドライバーとの互換性問題が発生する可能性があります。
- 参考
2. IBM Cloud VSIではどうなっている?
IBM Cloud VSIのWindows Server 2025ではCredential Guardは無効になっています。
PS C:\> Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber
Caption Version BuildNumber
------- ------- -----------
Microsoft Windows Server 2025 Standard 10.0.26100 26100
# 0: Credential Guard が無効になっている (実行されていません)。
# 1: Credential Guard が有効になっている (実行中)
PS C:\> (Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning
0
Cloudbase-Initのログ、C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\cloudbase-init.logを参照すると、以下が強制的に設定されています。これはMicrosoftで定めているレジストリ変数の設定通りです。
- Intuneで無効にする方法:
- GPOで無効にする方法:
- レジストリ変数で無効にする方法:
function disable-lsa-cred-guard () {
# Disable Credential Guard in LSA configuration
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "LsaCfgFlags" -Value 0 -Type DWord -Force
# Disable Credential Guard in Device Guard policies
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" -Force -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" -Name "LsaCfgFlags" -Value 0 -Type DWord -Force
}
PS C:\> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
LsaCfgFlags REG_DWORD 0x0
PS C:\> reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard" /v LsaCfgFlags
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard
LsaCfgFlags REG_DWORD 0x0
一方で、
PS C:\> reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled
ERROR: The system was unable to find the specified registry key or value.
のように上記は設定されていません。
PS C:\> Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard
AvailableSecurityProperties : {8}
CodeIntegrityPolicyEnforcementStatus : 2
InstanceIdentifier : 4ff40742-2649-41b8-bdd1-e80fad1cce80
RequiredSecurityProperties : {0}
SecurityFeaturesEnabled : {0}
SecurityServicesConfigured : {0}
SecurityServicesRunning : {0}
SmmIsolationLevel : 0
UsermodeCodeIntegrityPolicyEnforcementStatus : 0
Version : 1.0
VirtualizationBasedSecurityStatus : 0
VirtualMachineIsolation : False
VirtualMachineIsolationProperties : {0}
PSComputerName :
3. CredentialGuard\Enabled=1にしてみる
PS C:\> reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled /t REG_DWORD /d 1 /f
The operation completed successfully.
PS C:\> reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard" /v Enabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard
Enabled REG_DWORD 0x1
これで再起動してみたら、以下のように起動しなくなってしまいました。
仕方がないので、Safe Modeで起動します。
- Troubleshoot -> Startup Settings -> Restart
- Safe Modeを選択
- Safe Modeで起動した後、
HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuard\Enabledを 0 にする。
これで復旧しました。
