Stale objects
S-OldNtlm
What it means
Windows supports several authentication protocols, from very old and insecure (LM, NTLMv1) to modern and secure (NTLMv2, Kerberos). The older protocols have known vulnerabilities that attackers can exploit to capture and crack passwords on the network.
The LAN Manager authentication level controls which protocols are allowed. It should be set to level 5, meaning "only accept NTLMv2, refuse all older protocols."
What the scan checks
The AD Scan reads Group Policy Objects (GPOs) to verify that the LmCompatibilityLevel setting is set to 5. If no GPO defines this setting, Windows uses a default of level 3, which still accepts some weaker protocols.
0-2
LM and/or NTLMv1
No
3
NTLMv2 (but doesn't refuse old protocols)
No
5
NTLMv2 only, refuse LM & NTLMv1
Yes
Why the alert may persist
You changed the registry directly instead of using a GPO. The AD Scan reads GPO files, not local registry settings. Even if the DC has the correct value in the registry, the alert persists if it wasn't set through Group Policy.
Conflicting GPOs: One GPO sets level 5, but another GPO overrides it with a lower level.
No GPO at all: Without any GPO, the default is level 3 (insecure).
How to diagnose
# Check the effective setting on each DC
Get-ADDomainController -Filter * | ForEach-Object {
$level = Invoke-Command -ComputerName $_.HostName -ScriptBlock {
(Get-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa" `
-Name LmCompatibilityLevel -ErrorAction SilentlyContinue).LmCompatibilityLevel
}
Write-Host "$($_.HostName): LmCompatibilityLevel = $level"
}
# Check which GPOs define this setting
Import-Module GroupPolicy
Get-GPO -All | ForEach-Object {
[xml]$r = Get-GPOReport -Guid $_.Id -ReportType Xml
if ($r.InnerXml -match "LmCompatibilityLevel") {
Write-Host "GPO: $($_.DisplayName)"
}
}How to fix
Via Group Policy Management Console (recommended):
Open
gpmc.mscEdit the GPO linked to
OU=Domain ControllersNavigate to:
Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security OptionsSet "Network security: LAN Manager authentication level" to
Send NTLMv2 response only. Refuse LM & NTLMSet "Network security: Do not store LAN Manager hash value on next password change" to
EnabledRun
gpupdate /forceon all Domain Controllers
Via PowerShell:
S-AesNotEnabled
What it means
When you authenticate in Active Directory, your password is used to encrypt communication using a specific algorithm. Older algorithms (DES, RC4) are weak and can be cracked relatively easily. Modern algorithms (AES-128, AES-256) are much stronger.
AES support was introduced with Windows Server 2008. However, accounts that existed before the upgrade, or accounts with specific configurations, may still be using the old, weaker encryption.
What the scan checks
An account is flagged in two situations:
The account's password was set before your domain was upgraded to Server 2008. Since AES encryption keys are only generated when a password is set on a modern DC, these old passwords only have weak RC4/DES keys.
The account has a Service Principal Name (SPN) and its encryption settings don't include AES (the
msDS-SupportedEncryptionTypesattribute is missing AES flags).
How to diagnose
How to fix
For accounts with old passwords: Simply reset the password. This generates new AES keys:
For accounts missing AES encryption settings: Enable AES in the account's encryption types:
Note: Enabling AES is non-destructive: existing authentication continues to work. However, test with critical services before bulk-applying.
Last updated
Was this helpful?

