Windows Event ID 4625 — Failed Logon
Logged every time an account fails to authenticate via NTLM or local SAM. A single failure is normal; the security signal comes from volume, distribution, and pattern — many failures against one account is brute force, many different accounts from one IP is password spray, and Sub Status 0xC0000064 in bulk is account enumeration. Note: Kerberos failures on domain controllers appear as Event ID 4771 instead.
MITRE ATT&CK
T1110 · Brute Force
Credential Access
Why It Matters
4625 is the primary NTLM credential attack indicator. Attackers use automated tools to spray common passwords across accounts or hammer a single account to force a lockout. Left undetected, these attacks lead to account compromise and lateral movement. Because 4625 only covers NTLM and local authentication, a DC showing low 4625 volume but active Kerberos traffic still needs 4771 analysis — relying on 4625 alone creates a blind spot for Kerberos-protocol credential attacks.
Key Fields
Investigation Tips
- 1.Brute force: 20+ failures against the same Account Name from the same Source Network Address within 5 minutes, all with Sub Status 0xC000006A (wrong password). The correct username + wrong password means the attacker already knows valid account names.
- 2.Password spray: one Source Network Address, 5+ distinct Account Names, short window, all 0xC000006A — attacker is trying one or two common passwords across many accounts to stay below the lockout threshold per account.
- 3.Account enumeration precursor: bulk failures with Sub Status 0xC0000064 (username does not exist). This is the recon phase — attacker is probing to find which account names are valid before launching credential attacks.
- 4.Correlate with 4740 (account lockout) — if your lockout policy is configured, high-volume brute force against a single account will trigger lockouts. Lockout events confirm the threshold was crossed and identify which accounts were targeted.
- 5.Credential attack success: 4625 spike from a source IP followed by a 4624 from the same source = attacker succeeded. The time gap between last failure and first success is your detection window. If it's hours, your alerting needs tuning.
- 6.RDP brute force (Type 10): failures from an external or VPN IP you don't recognize, usually in bursts. Correlate with firewall logs — many RDP brute-force tools pause between attempts to evade rate limiting.
- 7.4625 does not capture Kerberos failures on domain controllers — if a DC shows low 4625 volume but you see suspicious authentication patterns, check Event ID 4771 on the same DC for the Kerberos-protocol view.
Detection Logic
Microsoft Sentinel (KQL) — detect brute force (20+ failures against one account in 5 min) and password spray (1 source IP targeting 5+ distinct accounts).
// Brute force: 20+ failures against one account from one source within 5 minutes
SecurityEvent
| where EventID == 4625
| summarize FailCount=count() by TargetAccount, IpAddress, bin(TimeGenerated, 5m)
| where FailCount >= 20
| sort by TimeGenerated desc
// Password spray: one IP targeting 5+ distinct accounts within 30 minutes
SecurityEvent
| where EventID == 4625
| summarize Accounts=dcount(TargetAccount), IPs=make_set(IpAddress)
by IpAddress, bin(TimeGenerated, 30m)
| where Accounts >= 5
| extend Alert = "Password spray — one source targeting multiple accounts"
| sort by TimeGenerated descSeeing Event ID 4625 in your own logs? Upload an .evtx file — EventPeeker flags failed logon automatically, maps it to MITRE ATT&CK, and writes the triage report. No account, files auto-deleted.
Analyze my logs →Related Event IDs
Frequently Asked Questions
- Why am I getting so many Event ID 4625 failed logon events?
- Multiple legitimate causes generate 4625: a user mistyping their password, a service configured with an old credential, a laptop cached with a stale password reconnecting to the domain, or a scheduled task with an expired account. Check the SubStatus code first — 0xC000006A (wrong password) from one account occasionally is normal. What's not normal: the same SubStatus from one source IP across many accounts (password spray), 20+ failures for one account within 5 minutes from one IP (brute force), or failures for accounts that don't exist (0xC0000064, account enumeration). Use the source IP and account variance to distinguish attack from noise.
- Is Event ID 4625 always a sign of an attack?
- No. Single failed logons are routine — users mistype passwords, services have stale credentials, and laptops reconnect with cached passwords. Attack patterns are defined by volume, velocity, and spread: brute force shows many failures for one account from one IP in rapid succession; password spray shows one or two failures per account across many accounts from one IP in a short window; credential stuffing hits many accounts from many IPs. Check the Failure Reason and SubStatus fields — 0xC000006A (bad password) repeatedly is suspicious; 0xC0000064 (no such user) in bulk is account enumeration.
- How do I tell the difference between brute force and password spray in Event ID 4625?
- Brute force: many 4625 failures for the same TargetUserName from the same source IP — attacker is hammering one account with many passwords. Password spray: one or two failures per TargetUserName, but many different TargetUserNames from the same source IP — attacker is trying one common password across the entire org to stay under lockout thresholds. In your SIEM: group 4625 by SourceIPAddress; brute force = one IP, one account, count > 10; spray = one IP, many distinct TargetUserNames, failures spread evenly. Spray is harder to trigger lockouts but equally effective.
- My account keeps locking out — how do I find the source using Event ID 4625?
- Filter 4625 for your account name (TargetUserName) and look at the IpAddress field — this shows where the failed attempts are coming from. Also check the Workstation Name field if IpAddress is blank (common for Type 2 interactive lockouts). Correlate with Event 4740 (account lockout) on the DC — 4740 includes the Caller Computer Name that triggered the lockout. Common culprits: a phone or tablet cached with an old password, a mapped drive with saved credentials, or an old RDP session reconnecting automatically. If IpAddress shows an external IP, treat as an active attack.
Go deeper: the full Event ID 4625 — Failed Logon guide
Builds on this page with the attack chain, step-by-step investigation, immediate containment actions, KQL/Sigma detection queries, and an annotated example log.
Read the Event ID 4625 — Failed Logon guide →See Event ID 4625 in your logs
Upload a Windows Event Log (.evtx) file — EventPeeker automatically detects failed logon patterns, maps findings to MITRE ATT&CK, and generates an AI triage report.
Analyze EVTX Logs Free →