@@ -921,9 +921,9 @@ function Invoke-ComServerRegistryPermissionCheck {
921
921
922
922
process {
923
923
Get-ComClassFromRegistry |
924
- Where-Object { $null -ne $_.HandlerRegPath } |
925
- Invoke-CommandMultithread - InitialSessionState $ (Get-InitialSessionState ) - Command " Get-ModifiableComClassEntryRegistryPath" - InputParameter " ComClassEntry" |
926
- ForEach-Object { $AllResults += $_ }
924
+ Where-Object { $null -ne $_.HandlerRegPath } |
925
+ Invoke-CommandMultithread - InitialSessionState $ (Get-InitialSessionState ) - Command " Get-ModifiableComClassEntryRegistryPath" - InputParameter " ComClassEntry" |
926
+ ForEach-Object { $AllResults += $_ }
927
927
928
928
$CheckResult = New-Object - TypeName PSObject
929
929
$CheckResult | Add-Member - MemberType " NoteProperty" - Name " Result" - Value $AllResults
@@ -959,9 +959,9 @@ function Invoke-ComServerImagePermissionCheck {
959
959
960
960
process {
961
961
Get-ComClassFromRegistry |
962
- Where-Object { ($_.HandlerType -like " *server*" ) -and ($null -ne $_.HandlerData ) } |
963
- Invoke-CommandMultithread - InitialSessionState $ (Get-InitialSessionState ) - Command " Get-ModifiableComClassEntryImagePath" - InputParameter " ComClassEntry" - OptionalParameter @ { " CheckedPaths" = $AlreadyCheckedPaths } |
964
- ForEach-Object { $AllResults += $_ }
962
+ Where-Object { ($_.HandlerType -like " *server*" ) -and ($null -ne $_.HandlerData ) } |
963
+ Invoke-CommandMultithread - InitialSessionState $ (Get-InitialSessionState ) - Command " Get-ModifiableComClassEntryImagePath" - InputParameter " ComClassEntry" - OptionalParameter @ { " CheckedPaths" = $AlreadyCheckedPaths } |
964
+ ForEach-Object { $AllResults += $_ }
965
965
966
966
$CheckResult = New-Object - TypeName PSObject
967
967
$CheckResult | Add-Member - MemberType " NoteProperty" - Name " Result" - Value $AllResults
@@ -1302,33 +1302,46 @@ function Invoke-NtlmDowngradeAttackCheck {
1302
1302
NtlmMinClientSecDescription : Require 128-bit encryption
1303
1303
RestrictSendingNTLMTraffic : 0
1304
1304
RestrictSendingNTLMTrafficDescription : Allow all
1305
-
1306
1305
#>
1307
1306
1308
1307
[CmdletBinding ()]
1309
1308
param (
1310
1309
[UInt32 ] $BaseSeverity
1311
1310
)
1312
1311
1312
+ begin {
1313
+ $CredentialGuard = Get-CredentialGuardConfiguration
1314
+ }
1315
+
1313
1316
process {
1314
1317
$Vulnerable = $false
1315
- $NtlmConfig = Get-LanManagerConfiguration
1318
+ $Result = Get-LanManagerConfiguration
1316
1319
1317
1320
# Auth level must be lower than "Send NTLMv2 response only".
1318
- if ($NtlmConfig .LmCompatibilityLevel -lt 3 ) {
1321
+ if ($Result .LmCompatibilityLevel -lt 3 ) {
1319
1322
1320
1323
# Min client sec must not include "Require NTLMv2 session security".
1321
- if (($NtlmConfig .NtlmMinClientSec -band 0x80000 ) -ne 0x80000 ) {
1324
+ if (($Result .NtlmMinClientSec -band 0x80000 ) -ne 0x80000 ) {
1322
1325
1323
1326
# Outgoing NTLM traffic must not be set to "Deny all".
1324
- if ($NtlmConfig.RestrictSendingNTLMTraffic -ne 2 ) {
1327
+ if (($null -eq $Result.RestrictSendingNTLMTraffic ) -or ($Result.RestrictSendingNTLMTraffic -ne 2 )) {
1328
+
1329
+ # "Block NTLMv1 SSO" must not be enforced (Windows 11 24H2).
1330
+ if (($null -eq $Result.BlockNtlmv1SSO ) -or ($Result.BlockNtlmv1SSO -eq 0 )) {
1325
1331
1326
- $Vulnerable = $true
1332
+ $Vulnerable = $true
1333
+ }
1327
1334
}
1328
1335
}
1329
1336
}
1330
1337
1331
- $Result = $NtlmConfig | Select-Object LmCompatibilityLevel, LmCompatibilityLevelDescription, NtlmMinClientSec, NtlmMinClientSecDescription, RestrictSendingNTLMTraffic, RestrictSendingNTLMTrafficDescription
1338
+ $Result | Add-Member - MemberType " NoteProperty" - Name " CredentialGuard" - Value $CredentialGuard.CredentialGuardDescription
1339
+
1340
+ # If the config is vulnerable but Credential Guard is running, the system
1341
+ # overall is not vulnerable.
1342
+ if ($Vulnerable -and $CredentialGuard.CredentialGuardRunning ) {
1343
+ $Vulnerable = $false
1344
+ }
1332
1345
1333
1346
$CheckResult = New-Object - TypeName PSObject
1334
1347
$CheckResult | Add-Member - MemberType " NoteProperty" - Name " Result" - Value $Result
0 commit comments