Skip to main content
4625SecurityLogon/LogoffSecurity tier 1

Event ID 4625: An account failed to log on

Event ID 4625 is the Windows Security log entry generated on the Audit Logon and Audit Account Lockout subcategories whenever a logon attempt fails, whether from a wrong password, a locked account, or a disabled one. It fires on the machine where the attempt happened and carries a Status/SubStatus code pair that tells you why the logon was rejected.

Event 4625 Fields

FieldWhat it tells youSimulated value
SubjectUserSidSID of the account that reported the failure, almost always a system or machine account, not the attacker.S-1-5-21-424242-360033
SubjectUserNameName paired with SubjectUserSid; reporting identity, not the target of the logon attempt.a.chen
TargetUserNameThe account name the logon attempt tried to authenticate as.svc.inventory
TargetDomainNameDomain or computer name the target account belongs to.corp.socsimulator.example
TargetUserSidSID of the target account; stays S-1-0-0 (null SID) when the name does not resolve to a real account.S-1-5-21-424242-938958
StatusNTSTATUS code giving the high-level reason the logon failed.0xC000006D
SubStatusMore specific NTSTATUS code refining the exact failure reason, such as bad password vs bad username.0xC000006A
FailureReasonHuman-readable string Windows derives from the Status/SubStatus pair.%%2313
LogonTypeNumeric logon type attempted (2 interactive, 3 network, 10 RemoteInteractive/RDP, etc).3
LogonProcessNameName of the trusted logon process that handled the attempt, e.g. User32, NtLmSsp, Kerberos.C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
AuthenticationPackageNameAuthentication protocol used: NTLM, Kerberos, or Negotiate.Negotiate
WorkstationNameName of the machine the logon attempt was made from.WS-SIM-274
IpAddressSource IP of the attempt for network-originated logons; blank or loopback for local console logons.198.51.100.19
IpPortSource port used for the network logon attempt; 0 for interactive logons.25435

Decode Event 4625 Codes

Click a code to see what it means during triage and when it points at something worth escalating.

Example Event 4625 Log

A representative Security entry for Event 4625, generated deterministically by our telemetry engine so every field holds a realistic, internally consistent value.

Simulated example generated by SOCSimulator Research
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-Security-Auditing" />
    <EventID>4625</EventID>
    <Version>0</Version>
    <Level>0</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8020000000000000</Keywords>
    <TimeCreated SystemTime="2025-03-11T04:31:59.000Z" />
    <EventRecordID>305236</EventRecordID>
    <Channel>Security</Channel>
    <Computer>WS-SIM-001.corp.socsimulator.example</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="SubjectUserSid">S-1-5-21-424242-360033</Data>
    <Data Name="SubjectUserName">a.chen</Data>
    <Data Name="TargetUserName">svc.inventory</Data>
    <Data Name="TargetDomainName">corp.socsimulator.example</Data>
    <Data Name="TargetUserSid">S-1-5-21-424242-938958</Data>
    <Data Name="Status">0xC000006D</Data>
    <Data Name="SubStatus">0xC000006A</Data>
    <Data Name="FailureReason">%%2313</Data>
    <Data Name="LogonType">3</Data>
    <Data Name="LogonProcessName">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Data>
    <Data Name="AuthenticationPackageName">Negotiate</Data>
    <Data Name="WorkstationName">WS-SIM-274</Data>
    <Data Name="IpAddress">198.51.100.19</Data>
    <Data Name="IpPort">25435</Data>
  </EventData>
</Event>

Detecting Event 4625

Password spraying: one source, many distinct target accounts

Lucene carries the base filter on failed logons by source; run the distinct-account cardinality and threshold in your SIEM.

index=security sourcetype=WinEventLog:Security EventCode=4625
| bucket _time span=10m
| stats dc(Account_Name) as distinct_accounts, values(Account_Name) as accounts by _time, IpAddress
| where distinct_accounts >= 8

Brute force: one account, many failures from one source

Lucene carries the base filter on account+source; aggregate the failure count and threshold in your SIEM.

index=security sourcetype=WinEventLog:Security EventCode=4625
| bucket _time span=5m
| stats count by _time, Account_Name, IpAddress
| where count >= 10

Post-lockout retries: SubStatus 0xC0000234 continuing after account lockout

Lucene carries the base filter on the lockout substatus; aggregate the repeat count in your SIEM.

index=security sourcetype=WinEventLog:Security EventCode=4625 Sub_Status=0xC0000234
| stats count earliest(_time) as first_seen latest(_time) as last_seen by Account_Name, IpAddress
| where count >= 3

Admin and service account failures outside expected schedule

index=security sourcetype=WinEventLog:Security EventCode=4625
| lookup privileged_accounts.csv Account_Name OUTPUT is_privileged
| where is_privileged="true"
| table _time, Account_Name, IpAddress, Sub_Status, Logon_Type

Successful logon (4624) immediately following a burst of 4625 failures for the same account and source

Lucene carries the base filter across both event codes; correlate the burst-then-success sequencing in your SIEM.

index=security sourcetype=WinEventLog:Security (EventCode=4625 OR EventCode=4624)
| transaction Account_Name, IpAddress maxspan=15m
| where eventcount >= 6 AND like(_raw, "%EventCode=4624%") AND like(_raw, "%EventCode=4625%")

What Triggers Event 4625

Event 4625 belongs to two audit subcategories at once: Audit Logon and Audit Account Lockout. Both must be enabled (Success and Failure, though only Failure matters here) under Advanced Audit Policy Configuration, either directly or through the legacy Account Logon Events policy that Windows still maps onto the newer subcategories for compatibility. The event lands in the Security channel, generated by the Microsoft-Windows-Security-Auditing provider, on whichever machine the logon attempt actually touched.

If someone tries to log on to their own workstation, the workstation logs it. If they try to authenticate against a domain controller over the network, the domain controller logs it. A single failed remote logon can therefore produce a 4625 on the target machine and nowhere else, which is why centralizing collection across workstations, member servers and domain controllers matters more for this event than for almost any other in the security log.

The fields that carry the actual investigative weight sit in three groups. Subject identifies the process or service that reported the failure, usually a system account like NT AUTHORITY\SYSTEM for interactive logons or the local machine account for network logons; it is rarely the attacker's identity.

Account For Which Logon Failed is the target: TargetUserName and TargetDomainName tell you who the adversary was trying to become, and TargetUserSid stays S-1-0-0 (a null SID) whenever the account name doesn't resolve, which itself is diagnostic of an enumeration attempt against a name that doesn't exist. Failure Information carries Status and SubStatus, the two NTSTATUS values that explain why the attempt failed, plus FailureReason, a human-readable string Windows derives from those codes.

Network Information gives you IpAddress and WorkstationName, the source of the attempt, though IpAddress is 127.0.0.1 or blank for local interactive logons and only populates meaningfully for network-originated attempts (LogonType 3, 10, 8). LogonType itself matters as much as the failure code: a wave of failures at LogonType 3 against a domain controller reads very differently from failures at LogonType 10 against an internet-facing RDP host, even with the same failure code.

A SOC sees 4625 in a handful of recurring shapes. The single stale-credential case is a user whose password rotated and whose phone or mapped drive still has the old one cached, generating a handful of 4625s at LogonType 3 against a file server every morning until they re-authenticate somewhere.

The service-account case is a scheduled task or application pool identity that fails after a password change nobody communicated to the application owner, producing 4625 at LogonType 4 or 5 at a fixed interval that maps to the job schedule. The credential-stuffing case is a burst of 4625 events against many different TargetUserName values from one IpAddress, using a password list harvested from an unrelated breach, and it shows up as SubStatus 0xC000006A (bad password) far more than 0xC0000064 (bad username) because the attacker only tries names known to be real.

The reconnaissance case is the opposite ratio: many 0xC0000064 failures as an attacker enumerates a username list against a login form or RDP endpoint, learning which accounts exist before ever guessing a password.

Neighboring events change the read entirely. Event 4624 is the successful counterpart; a 4625 immediately followed by a 4624 for the same TargetUserName from the same source, after several failures, is the signature of a slow guess-then-succeed brute force rather than a locked-out legitimate user.

Event 4740 (account locked out) is the downstream consequence of enough consecutive 4625 failures against one account, and its own LockoutSource field pinpoints which machine did the locking, useful when the lockout itself, not the failed logons, is the alert. Event 4776 is the NTLM-specific credential validation event and often precedes or accompanies 4625 on domain controllers when NTLM rather than Kerberos handled the attempt, giving you a second data source for the same failure with slightly different fields.

Event 4771 is the Kerberos pre-authentication failure equivalent and will often fire alongside or instead of 4625 depending on the authentication path, so an investigation that only pulls 4625 can miss a chunk of the failed-logon picture on a Kerberos-heavy domain.

Attackers who light up 4625 heavily fall into a few TTP buckets. Password spraying tools like Kerbrute or custom scripts deliberately throttle attempts per account to stay under lockout thresholds while rotating through many accounts. Classic brute force tools like Hydra or Medusa hammer a single account or a small set of high-value accounts (Administrator, svc_backup, sa) without regard for lockout. And RDP-facing scanners blast LogonType 10 attempts against internet-exposed hosts around the clock, which is why RDP honeypots see thousands of 4625 events a day that have nothing to do with a targeted campaign against that specific organization.

True Positive vs False Positive

The benign floor for 4625 is high, and that is the central triage problem: most organizations generate hundreds to thousands of these events daily without a single active attacker. Password rotation lag is the largest source, users and service accounts authenticating with a credential that changed somewhere upstream, and it self-resolves once the cached credential updates, typically within a day.

Typos and fat-fingered passwords produce isolated singletons, one 4625 per user per rare event, with no pattern across accounts or time. Expired accounts and disabled accounts (SubStatus 0xC0000193 and 0xC0000072) frequently reflect IT operations, like accounts disabled during an offboarding process that a departing employee's remaining sessions or scheduled tasks still try to use.

The judgment call an analyst makes rests on four axes read together, never on the failure code alone. Breadth: one TargetUserName with many failures is brute force against that account; many TargetUserName values with few failures each from one IpAddress is spraying; both patterns from many source IPs simultaneously is credential stuffing using leaked-breach lists, and that combination is rarely benign.

Velocity: a burst of failures inside seconds or a couple of minutes is scripted, not a human retyping a password, and legitimate users producing more than three or four failures in a short window is itself unusual enough to warrant a look. Source legitimacy: failures from an IP address, ASN or country that has never authenticated for that account before is a stronger signal than the failure code itself, especially when the LogonType is 3 or 10 (network-facing) rather than 2 (console).

Code-to-context fit: SubStatus 0xC0000064 (account name does not exist) against a fixed dictionary of admin-sounding names (admin, administrator, root, backup) is enumeration, not a mistake; the same code against one plausible internal username, once, is almost always a typo.

SubStatus 0xC0000234 (account locked out) needs its own rule because it is a symptom, not a cause. Every failure that arrives after the lockout is a side effect of whatever drove the account to lock in the first place, so an analyst who only sees the post-lockout 0xC0000234 wave and stops there has found the smoke, not the fire. The investigation has to walk backward to the failures that preceded the lockout, typically 0xC000006A repeats, to find the actual attack pattern, then confirm whether the lockout also produced a 4740 with a LockoutSource that matches expectations, or whether it points at an unfamiliar host acting as an authentication proxy.

Service and admin account failures deserve permanent low-tolerance monitoring regardless of volume: these accounts should almost never fail to log on at all in a well-run environment, so even a single unexplained 4625 against a Tier 0 service account or a domain admin, especially outside its documented schedule or from a workstation it has no business touching, is worth escalating before waiting for a volume threshold to trip.

MITRE ATT&CK® Techniques

Event 4625 telemetry feeds detections for these ATT&CK® techniques:

Practice Investigating Event 4625

Reading about an account failed to log on is one thing. Working the detection inside a live console is another. These free SOCSimulator operations cover the attack techniques Event 4625 helps you detect:

Start investigating free

Frequently Asked Questions

What causes event ID 4625?
Event 4625 fires whenever a logon attempt fails on the machine where the attempt occurred, generated by the Audit Logon and Audit Account Lockout subcategories. Common causes are wrong passwords, non-existent usernames, disabled or expired accounts, accounts locked out from prior failures, and logon attempts outside allowed hours or from disallowed workstations.
How do I fix event ID 4625?
There is nothing to patch on the event itself; it is a record of a rejected logon, not an error condition. Resolution means fixing the underlying cause: correcting a stale cached credential, re-enabling or unlocking a legitimate account, adjusting a service account's stored password, or blocking a source IP if the failures are malicious.
What is the difference between event ID 4624 and 4625?
Event 4624 logs a successful logon and 4625 logs a failed one. They share most of the same fields (LogonType, TargetUserName, IpAddress), which is what makes it possible to correlate them: a 4625 sequence immediately followed by a 4624 for the same account and source is the classic pattern for a successful brute force guess.
What does status code 0xC000006A mean in event 4625?
0xC000006A means the account name was valid but the password supplied was wrong. It is the dominant SubStatus in credential-stuffing and targeted brute-force activity because those attacks work from lists of known-real usernames, unlike enumeration attacks which produce 0xC0000064 (bad username) instead.
Does event ID 4625 show the source IP address?
Yes, in the IpAddress field under Network Information, but only for logons that actually crossed the network (LogonType 3, 8, 10 and similar). Purely local interactive logons at the console populate IpAddress with 127.0.0.1 or leave it blank, so a missing IP does not by itself indicate an error in the event.

Sources

Event description, field list, subcategories (Audit Logon / Audit Account Lockout), and the Status/SubStatus monitoring recommendation table including 0xC000006A, 0xC0000064, 0xC0000072, 0xC0000193, 0xC0000234.

T1110 Brute Force is a current, non-deprecated Enterprise ATT&CK parent technique with four sub-techniques (password guessing, password cracking, password spraying, credential stuffing).

Real Sigma detection logic for failed logons with different target accounts from a single source system, using Windows event IDs 529/4625/4776, grounding the password-spraying detection query.

Glossary

What is Brute Force Attack? SOC Glossary

A brute force attack systematically tries large numbers of username and password combinations, or decryption keys, until…

Read more
Glossary

What is Lateral Movement? SOC Glossary

Lateral movement is the attack phase where adversaries expand access from an initial foothold to additional systems, usi…

Read more
Glossary

What is MFA? SOC Glossary

Multi-Factor Authentication (MFA) requires a user to prove their identity with two or more independent factors, somethin…

Read more
Glossary

What is SIEM? SOC Glossary

Security Information and Event Management (SIEM) is a platform that aggregates, normalizes, and correlates log data from…

Read more
Career Path

SOC Analyst (Tier 1) Career Guide: Salary & Skills

Tier 1 SOC Analysts are the front line. You monitor alert queues, triage incoming detections, classify them as true or f…

Read more
Career Path

SOC Analyst (Tier 2) Career Guide: Salary & Skills

Tier 2 SOC Analysts handle the investigations that Tier 1 escalates. You dig into multi-stage attacks, coordinate contai…

Read more
Technique

Brute Force (T1110): Detection Training

Brute Force covers any guess-driven path to credentials: classic password guessing, password spraying a few common passw…

Read more
Comparison

SOCSimulator vs. LetsDefend: Platform Comparison

SOCSimulator wins on operational realism. You get multi-tool shift simulation with SLA pressure, noise injection, and al…

Read more
Event ID

Windows Event ID Library: SOC Reference

Windows Security and Sysmon event IDs with simulated log samples, field tables, and tested detection queries.

Read more
Feature

Shift Mode: Real-Time SOC Simulation

Practice alert triage under realistic time pressure with SLA timers and noise injection.

Read more
Feature

Operations: Guided Training Operations

Structured CTF-style investigation operations covering real-world attack scenarios.

Read more
Blog

SOCSimulator Blog: Security Training Insights

Articles on SOC analyst skills, detection engineering, and career development.

Read more