An attribute on an account was modified. It fires constantly and most of it is meaningless, but a handful of the flags it records are among the clearest attack indicators in Active Directory — particularly the one that disables Kerberos pre-authentication.
Also written as Event ID 4738A user account was changed4738 account changed
How oftenFires often
Vendor calls itAudit Success
LogSecurity
SourceMicrosoft-Windows-Security-Auditing
What it means for you
On a personal computer
A setting on an account was changed. Windows logs this for almost any account edit, so on its own it rarely means anything.
For an analyst
Only the User Account Control field is worth alerting on. The message shows values that changed and dashes for those that did not, so diffing is done for you. DONT_REQ_PREAUTH being set is close to a standalone alert — it makes the account AS-REP roastable and there is essentially no legitimate reason to enable it.
What it looks like
Sanitised. Addresses come from the RFC 5737 documentation ranges.
Sample
A user account was changed.
Subject:
Security ID: CORP\jbrooks-adm
Account Name: jbrooks-adm
Account Domain: CORP
Logon ID: 0x3E9A11
Target Account:
Security ID: CORP\svc-legacy
Account Name: svc-legacy
Account Domain: CORP
Changed Attributes:
SAM Account Name: svc-legacy
Display Name: -
User Principal Name: -
Home Directory: -
Script Path: -
Password Last Set: -
Account Expires: -
User Account Control:
'Don't Require Preauth' - Enabled
The fields that decide it
Everything else in the log line is context.
TargetUserName
The account that was modified.
SubjectUserName
Who changed it.
User Account Control
The account flags that changed. This is the only part of the event that reliably matters.
DONT_REQ_PREAUTHKerberos pre-authentication disabled. Makes the account AS-REP roastable — an attacker can request material to crack offline without ever authenticating. Almost never legitimate.
DONT_EXPIRE_PASSWDThe password will never expire. Common for service accounts, and a way to make a compromised credential last indefinitely.
PASSWD_NOTREQDThe account may have no password at all. Rarely legitimate.
TRUSTED_FOR_DELEGATIONUnconstrained delegation. Lets the host impersonate any user that authenticates to it — a serious escalation route.
ENCRYPTED_TEXT_PWD_ALLOWEDReversible encryption for the password, which effectively stores it in a recoverable form.
NORMAL_ACCOUNTOrdinary account type. Appears in most of these events and means nothing on its own.
Password Last Set
Shown when the password changed as part of the modification.
SAM Account Name
The account name, which can itself be changed here — worth noticing when it is.
Account Expires
When the account stops working. Extending this on a temporary account deserves a question.
Identity management tooling synchronising attributes from an HR system, which produces very high volume.
Password changes and resets, each of which also writes a 4738.
Enabling or disabling an account, which writes this alongside 4722 or 4725.
Service account configuration during a legitimate application deployment.
When it is not ordinary
Making an account AS-REP roastable.
What gives it awayDONT_REQ_PREAUTH appearing in the User Account Control field. The attacker can then request encrypted material for the account and crack it offline without ever needing to authenticate.
kqlAS-REP roasting preparation. Worth alerting on directly.
SecurityEvent | where EventID == 4738 and RenderedDescription contains 'DONT_REQ_PREAUTH' | project TimeGenerated, Computer, TargetUserName, SubjectUserName
powershellThe current state rather than the change. Run it periodically — it finds accounts that were made roastable before you started collecting logs.
index=wineventlog EventCode=4738 ("DONT_REQ_PREAUTH" OR "PASSWD_NOTREQD" OR "TRUSTED_FOR_DELEGATION") | table _time Account_Name Security_ID Message
Common questions
Why does Event 4738 fire so often?
Because almost any modification to an account writes one — password changes, enabling and disabling, attribute updates from HR synchronisation, group changes. In a domain with identity management tooling it is one of the highest-volume account events. Filter to the User Account Control field and the volume collapses to something readable.
What does 'Don't Require Preauth' mean and why does it matter?
It disables Kerberos pre-authentication for that account. With it off, anyone can ask a domain controller for encrypted material for the account and try to crack the password offline, without ever authenticating or triggering a failed logon. It is called AS-REP roasting, and there is almost no legitimate reason to enable the flag — treat it as a finding.
Why are most fields in Event 4738 shown as a dash?
A dash means that attribute did not change. Windows lists the full set of attributes every time and fills in only the ones that were modified, so the dashes are how you tell what the change actually was.
Is 'Password Never Expires' worth alerting on?
It is worth reviewing rather than alerting. It is genuinely common on service accounts where rotation would break an application. What matters is it appearing on a normal user account, or being newly set on an account that previously rotated — that turns a stolen password into permanent access.