Password spraying against the domain.
What gives it awayMany distinct TargetUserName values with 0x18 from a single IpAddress, spread out to stay under the lockout threshold.
ATT&CK T1110.003Nothing matches that yet. Tell us what you were looking for and it goes on the list.
Windows Security Log · Event 4771
A domain controller refused a Kerberos sign-in, almost always because the password was wrong. In an Active Directory domain this is where failed sign-ins actually land, so it is usually more useful than hunting for 4625 on individual machines.
Also written as 4771Event ID 4771Kerberos pre-authentication failed
The Client Address field is genuine network data rather than a client-supplied name, which makes 4771 more trustworthy than 4776 for source attribution. Note it is often recorded in IPv6-mapped form. Failure code 0x18 is the one that means a wrong password.
Sanitised. Addresses come from the RFC 5737 documentation ranges.
Kerberos pre-authentication failed.
Account Information:
Security ID: CORP\jbrooks
Account Name: jbrooks
Service Information:
Service Name: krbtgt/CORP
Network Information:
Client Address: ::ffff:192.0.2.44
Client Port: 50912
Additional Information:
Ticket Options: 0x40810010
Failure Code: 0x18
Pre-Authentication Type: 2 Everything else in the log line is context.
0x18The password was wrong. This is the overwhelming majority of 4771 events. 0x6The account does not exist. A run of these is username enumeration. 0x12The account is disabled, locked out, or expired. 0x17The password has expired. 0x25The clock on the client is too far out of sync with the domain controller. 0x10Cryptographic mismatch — usually an encryption type the domain no longer accepts. Most of the time it is one of these.
What gives it awayMany distinct TargetUserName values with 0x18 from a single IpAddress, spread out to stay under the lockout threshold.
ATT&CK T1110.003What gives it awayA run of 0x6 failures. Kerberos distinguishes a bad password from a nonexistent account, which is exactly what makes this cheap for an attacker.
ATT&CK T1589.002What gives it awayOne account, high volume of 0x18, usually ending in a 4740 lockout.
ATT&CK T1110.001What gives it awayRequests with PreAuthType 0 for accounts that have pre-authentication disabled. Pair with 4768 to see the full picture.
ATT&CK T1558.004SecurityEvent | where EventID == 4771 | extend Code = tostring(Status) | summarize attempts = count(), accounts = dcount(TargetUserName) by IpAddress, Code, bin(TimeGenerated, 1h) | where accounts > 5 | order by accounts desc SecurityEvent | where EventID == 4771 and Status == '0x6' | summarize count() by IpAddress, bin(TimeGenerated, 30m) | where count_ > 10 index=wineventlog EventCode=4771 | stats count dc(user) as accounts by src_ip Failure_Code | where accounts > 5 The password was wrong. It is by far the most common 4771 result and covers everything from a typo to a saved credential gone stale to deliberate password guessing — the difference is how many attempts there are and how many accounts they target.
Because Active Directory uses Kerberos by default, and Kerberos failures are recorded on the domain controller as 4771. 4625 is written on the machine the sign-in targeted, so if you only collect logs from domain controllers, 4771 is what you will see.
That is an IPv4 address expressed in IPv6-mapped notation. The address after the last colon is the real one. Strip the ::ffff: prefix before comparing it against your network ranges or your queries will silently match nothing.
The client's clock is more than five minutes out of step with the domain controller, and Kerberos refuses to authenticate across that gap by design. Fix time synchronisation on the client; the password is not the problem.
Last reviewed 28 August 2026