T1556.005 Microsoft Sentinel · KQL

Detect Reversible Encryption in Microsoft Sentinel

Adversaries may enable the AllowReversiblePasswordEncryption property on Active Directory user accounts to gain access to plaintext credentials. When enabled, Active Directory stores user passwords in a reversibly encrypted form (G$RADIUSCHAP in userParameters) rather than as one-way hashes. An adversary with SYSTEM access can decrypt these passwords using four components from AD user structures and LSA secrets. Adversaries can set this via PowerShell (Set-ADUser -AllowReversiblePasswordEncryption $true), Local Group Policy, or Fine-Grained Password Policy (FGPP) if Domain Functional Level is Windows Server 2008+.

MITRE ATT&CK

Tactic
Credential Access Defense Evasion Persistence
Technique
T1556 Modify Authentication Process
Sub-technique
T1556.005 Reversible Encryption
Canonical reference
https://attack.mitre.org/techniques/T1556/005/

KQL Detection Query

Microsoft Sentinel (KQL)
kusto
let ReversibleEncryptionEvents = SecurityEvent
| where TimeGenerated > ago(24h)
| where EventID == 4738  // User Account Changed
| extend UserAccountControl = extractjson("$.UserAccountControl", AdditionalInfo)
| where AdditionalInfo has "ENCRYPTED_TEXT_PASSWORD_ALLOWED"
    or AdditionalInfo has "%%2054"  // UserAccountControl flag for reversible encryption
| project TimeGenerated, Computer, TargetUserName, TargetDomainName,
          SubjectUserName, SubjectDomainName, AdditionalInfo;
let PowerShellReversibleEncryption = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName in~ ("powershell.exe", "pwsh.exe")
| where ProcessCommandLine has_any (
    "AllowReversiblePasswordEncryption",
    "ENCRYPTED_TEXT_PASSWORD_ALLOWED",
    "Set-ADUser",
    "Set-ADDefaultDomainPasswordPolicy",
    "New-ADFineGrainedPasswordPolicy"
  )
| where ProcessCommandLine has_any ("$true", "true", "1", "enable")
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine;
union ReversibleEncryptionEvents, PowerShellReversibleEncryption
| sort by TimeGenerated desc, Timestamp desc
high severity high confidence

Detects enabling of reversible password encryption on Active Directory user accounts via Security Event ID 4738 (User Account Changed) with the ENCRYPTED_TEXT_PASSWORD_ALLOWED flag, and PowerShell commands like Set-ADUser with AllowReversiblePasswordEncryption. Both the account modification event and the tooling used to set the property are monitored.

Data Sources

User Account: User Account ModificationActive Directory: Active Directory Object ModificationCommand: Command ExecutionWindows Security Event Log

Required Tables

SecurityEventDeviceProcessEvents

False Positives & Tuning

  • Legitimate legacy application requirements — some old RADIUS/802.1x implementations require reversible encryption for MS-CHAP authentication; these should be documented
  • Help desk or IT admin enabling reversible encryption per application support request — verify against approved change tickets
  • Automated provisioning scripts that set reversible encryption for specific service accounts used with RADIUS
  • Domain migrations or password synchronization tools that temporarily enable reversible encryption
Download portable Sigma rule (.yml)

Other platforms for T1556.005


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Enable Reversible Password Encryption on a Test Account

    Expected signal: Security Event ID 4738: User Account Changed for testuser_atomic, with UserAccountControl value showing ENCRYPTED_TEXT_PASSWORD_ALLOWED. PowerShell ScriptBlock Log Event ID 4104 with the Set-ADUser command. Sysmon Event ID 1 for powershell.exe with AllowReversiblePasswordEncryption in CommandLine.

  2. Test 2Audit Accounts with Reversible Encryption Enabled

    Expected signal: PowerShell ScriptBlock Log Event ID 4104 with the Get-ADUser filter query. Active Directory query events. Security Event ID 4662 for directory object access on enumerated user objects.

  3. Test 3Set Reversible Encryption via Fine-Grained Password Policy

    Expected signal: Security Event ID 4738/5136 (DS Object Modified): Fine-Grained Password Policy object creation with msDS-PasswordReversibleEncryptionEnabled attribute set. PowerShell ScriptBlock Log Event ID 4104 with New-ADFineGrainedPasswordPolicy.

Unlock Pro Content

Get the full detection package for T1556.005 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections