Skip to main content
4769SecurityAccount LogonSecurity tier 1

Event ID 4769: A Kerberos service ticket was requested

Event ID 4769 is the Windows Security event a domain controller writes every time the Key Distribution Center receives a Kerberos service ticket (TGS) request. It records who asked, which service principal they asked for, the encryption type of the issued ticket, and the client address. RC4 (0x17) tickets for user-account SPNs are the Kerberoasting signal.

What Triggers Event 4769

Event 4769 lives in the Audit Kerberos Service Ticket Operations subcategory and generates only on domain controllers, once per Ticket Granting Service request that reaches the KDC. A user already holds a TGT from the AS exchange; the moment that user (or their machine, or a service running as them) wants to talk to a file share, a SQL instance, an HTTP endpoint or a print server, the Kerberos client presents the TGT and asks the KDC for a service ticket scoped to that target's service principal name. That request is what 4769 records, success or failure. On failure the Status field carries a non-zero Failure Code.

The volume consequence is the thing to internalize first. Every mapped drive reconnect, every Group Policy refresh, every Exchange or SharePoint call, every SCCM check-in and every SMB session a workstation opens generates one of these. A mid-sized domain with a few thousand endpoints can write hundreds of thousands of 4769 records per day across its DCs, and the overwhelming majority are computer accounts talking to other computer accounts. Nobody triages 4769 by reading it. You triage it by knowing what normal looks like for your service accounts and alerting on the deviation, which means the baseline is the detection.

Since the January 2025 security update, Windows Server 2016 and later emit an extended version of the event (Version 2) with additional encryption-policy fields: the msDS-SupportedEncryptionTypes value and available keys for the requesting account, the service, and the DC, plus the client's advertised etypes and the session key encryption type. Older DCs still write the original field set. Your parsers need to tolerate both shapes.

Event 4769 Fields

FieldWhat it tells youSimulated value
TargetUserNameAccount Name: the requester in normalized UPN form (SamAccountName@FULL.DOMAIN). Computer accounts carry a $ suffix. Optional, can be empty.svc.inventory
TargetDomainNameAccount Domain: the Kerberos realm the requester belongs to, in NetBIOS or DNS form.corp.socsimulator.example
ServiceNameService Name: the account or computer the service ticket was requested for. A $ suffix means a computer account; krbtgt means a TGT renewal or referral.simulated-servicename-C61517
ServiceSidService ID: SID of the account or computer object the ticket was issued for. NULL SID on failure events.simulated-servicesid-F4D7DF
TicketOptionsTicket Options: 32-bit flag set for the requested ticket. Common values are 0x40810010, 0x40810000 and 0x60810010.0x8E8BED52
TicketEncryptionTypeTicket Encryption Type: cryptographic suite of the issued service ticket. 0x12 is healthy, 0x17 is RC4, 0xFFFFFFFF appears on failures.0x671AAC89
IpAddressClient Address: IP the TGS request came from, often as ::ffff:IPv4. ::1 means the request was made on the DC itself.198.51.100.199
IpPortClient Port: source port of the request; 0 for local requests.48066
StatusFailure Code: hexadecimal result of the TGS operation. 0x0 on success; 0x20 (ticket expired) dominates failures and is informational.0x12
LogonGuidLogon GUID: correlates this DC-side event with 4624 or 4648 on the server where the ticket is later presented. All zeros when not captured.simulated-logonguid-B921BC
TransmittedServicesTransited Services: SPNs involved when constrained delegation was used; otherwise a dash.simulated-transmittedservices-8085AB
ClientAdvertizedEncryptionTypesAdvertized Etypes (Version 2 only): encryption types the client claimed to support. A list containing only RC4 against an AES-capable service is a roasting signature.simulated-clientadvertizedencryptiontypes-CCB15A
ServiceAvailableKeysAvailable Keys for the service (Version 2 only): which key types exist for the service account in AD, for example AES-SHA1, RC4.simulated-serviceavailablekeys-29243F
SessionKeyEncryptionTypeSession Encryption Type (Version 2 only): suite used for the session key; same value table as Ticket Encryption Type.simulated-sessionkeyencryptiontype-F8C4F7

Decode Event 4769 Codes

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

Example Event 4769 Log

A representative Security entry for Event 4769, 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>4769</EventID>
    <Version>0</Version>
    <Level>0</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8020000000000000</Keywords>
    <TimeCreated SystemTime="2025-06-29T02:00:38.000Z" />
    <EventRecordID>623391</EventRecordID>
    <Channel>Security</Channel>
    <Computer>WS-SIM-001.corp.socsimulator.example</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="TargetUserName">svc.inventory</Data>
    <Data Name="TargetDomainName">corp.socsimulator.example</Data>
    <Data Name="ServiceName">simulated-servicename-C61517</Data>
    <Data Name="ServiceSid">simulated-servicesid-F4D7DF</Data>
    <Data Name="TicketOptions">0x8E8BED52</Data>
    <Data Name="TicketEncryptionType">0x671AAC89</Data>
    <Data Name="IpAddress">198.51.100.199</Data>
    <Data Name="IpPort">48066</Data>
    <Data Name="Status">0x12</Data>
    <Data Name="LogonGuid">simulated-logonguid-B921BC</Data>
    <Data Name="TransmittedServices">simulated-transmittedservices-8085AB</Data>
    <Data Name="ClientAdvertizedEncryptionTypes">simulated-clientadvertizedencryptiontypes-CCB15A</Data>
    <Data Name="ServiceAvailableKeys">simulated-serviceavailablekeys-29243F</Data>
    <Data Name="SessionKeyEncryptionType">simulated-sessionkeyencryptiontype-F8C4F7</Data>
  </EventData>
</Event>

Detecting Event 4769

RC4 (0x17) service ticket requested for a user-account SPN

Excludes computer accounts ($) and krbtgt so only tickets with human-managed keys remain. Lucene is the base filter; group by requester and service in your SIEM.

index=wineventlog EventCode=4769 Ticket_Encryption_Type=0x17
| where NOT match(Service_Name, "\\$$") AND Service_Name!="krbtgt"
| stats count min(_time) as first_seen max(_time) as last_seen values(Service_Name) as services by Account_Name, Client_Address
| sort - count

Kerberoasting sweep: one requester asking for many distinct SPNs in a short window

Catches the enumeration regardless of encryption type, so it still works in AES-only domains. Tune the threshold to your baseline; 10 in 5 minutes is a conservative start.

index=wineventlog EventCode=4769 Failure_Code=0x0
| where NOT match(Service_Name, "\\$$") AND Service_Name!="krbtgt" AND NOT match(Account_Name, "\\$@")
| bucket _time span=5m
| stats dc(Service_Name) as distinct_spns values(Service_Name) as spns values(Ticket_Encryption_Type) as etypes by _time, Account_Name, Client_Address
| where distinct_spns >= 10

Failure code spike per client, with the informational 0x20 suppressed

Surfaces SPN guessing (0x7), delegation probing (0xD) and blocked RC4 requests (0xE). Some codes only log when KdcExtraLogLevel is set on the DC.

index=wineventlog EventCode=4769 Failure_Code!=0x0 Failure_Code!=0x20
| bucket _time span=15m
| stats count values(Failure_Code) as codes dc(Service_Name) as distinct_targets by _time, Client_Address, Account_Name
| where count >= 15 OR codes IN ("0xe","0xE","0xd","0xD")

Service ticket requests from a client address outside the expected internal ranges

Only IPv4 requesters are scored here. The ::ffff: prefix is stripped first, loopback (a request made on the DC itself) is dropped rather than treated as external, and anything that is not a plain dotted quad is left out instead of being flagged. Widen the CIDR list to your own estate.

index=wineventlog EventCode=4769
| rex field=Client_Address "^(?:::ffff:)?(?<src_ip>\\d+\\.\\d+\\.\\d+\\.\\d+)$"
| eval on_dc=if(Client_Address IN ("::1","127.0.0.1"),"yes","no")
| where on_dc="no" AND isnotnull(src_ip)
  AND NOT cidrmatch("10.0.0.0/8", src_ip)
  AND NOT cidrmatch("172.16.0.0/12", src_ip)
  AND NOT cidrmatch("192.168.0.0/16", src_ip)
| stats count values(Service_Name) as services by src_ip, Account_Name

Service-account baseline: requester and source never seen for this SPN in the last 30 days

The anomaly rule that makes the rest usable. Lucene carries only the base filter; the 30-day comparison needs your SIEM. Seed the baseline for at least two weeks before alerting.

index=wineventlog EventCode=4769 Failure_Code=0x0 earliest=-30d
| where NOT match(Service_Name, "\\$$") AND Service_Name!="krbtgt"
| eval pair=Account_Name."|".Client_Address
| stats earliest(_time) as first_seen latest(_time) as last_seen count by Service_Name, pair
| where first_seen >= relative_time(now(), "-1d")
| table Service_Name, pair, first_seen, count

Service Name and Service ID: Reading the SPN Side

Service Name (ServiceName in the XML) is the account or computer for which the ticket was requested, and Service ID (ServiceSid) is its SID. This pair is where the Kerberoasting logic lives. A ticket for a computer account shows a Service Name ending in a dollar sign, for example FS01$. The service key behind it is the machine account password, 120 characters of random data rotated every 30 days by default, which is not crackable in any useful timeframe.

A ticket for a user account with a registered SPN (svc_sql, svc_backup, a gMSA, an application identity someone created in 2016) is a different animal. That ticket is encrypted with a key derived from a human-chosen password, and anyone with a valid domain logon can request it. The offline crack is the attack; the request is the only part you can see. So a 4769 whose Service Name is a user-style account name, not a $-suffixed computer, is the population you care about, and it is a small fraction of total volume once you carve it out.

The krbtgt service name is its own special case. Requests with ServiceName equal to krbtgt are TGT renewals and cross-realm referrals, not service access, and they are extremely common. Filter them with the machine accounts. Service ID shows NULL SID on failure events, so joins on ServiceSid only work on successes.

Account Name (TargetUserName) is the requester in normalized UPN form (user@FULL.DOMAIN), built from the SamAccountName plus the domain, not the actual userPrincipalName attribute. Computer accounts also carry the $ suffix here. Logon GUID lets you tie a DC-side 4769 back to the 4624 or 4648 the target server writes when the ticket is used, which is how you confirm the ticket was actually presented somewhere rather than just requested and cracked.

MITRE ATT&CK® Techniques

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

Practice Investigating Event 4769

Reading about a kerberos service ticket was requested is one thing. Working the detection inside a live console is another. These free SOCSimulator operations cover the attack techniques Event 4769 helps you detect:

Credential Harvesting: The Lookalike Login

Credential Harvesting: The Lookalike Login

Investigate an adversary-in-the-middle (AiTM) credential phishing campaign that lured an employee to a lookalike Microsoft 365 login page. Working entirely from SIEM logs, you will identify the lookalike domain, reconstruct the multi-hop redirect chain through a compromised legitimate site, uncover a secondary phishing wave against another employee, and confirm account takeover in Azure AD sign-in logs via impossible travel and session-token replay. You finish by choosing the containment action that actually evicts an attacker holding a valid session token. Foundational skills for SOC analysts in lookalike-domain analysis and identity-centric incident response.

20m·257 tasks
View Operation
FortiOS Bypass to Hunters International Ransomware

FortiOS Bypass to Hunters International Ransomware

Operators consistent with the Hunters International ransomware group abuse a FortiOS super-admin authentication bypass on an internet-facing FortiGate, plant rogue accounts, pivot over the SSL-VPN tunnel by RDP, sweep the network with Advanced IP and Port Scanner, and push roughly 6.8 GB of share data to a single external host over SFTP before running the encrypter. Work the FortiGate edge, the directory records, the perimeter egress, and the endpoint process tree to reconstruct the intrusion from entry to encryption.

30m·256 tasks
View Operation
The Template That Read the Disk

The Template That Read the Disk

The file-transfer portal that Tideglow Logistics' partners upload to spent a morning returning host files it was never meant to publish, and finished it running an administrator session nobody had logged into. The root cause is CVE-2024-4040 in CrushFTP 10.6.0. Walk the access logs and firewall traffic step by step to trace how a client holding no credentials turned a request parameter into a read of the host, and that read into a takeover.

25m·256 tasks
View Operation
Start investigating free

Frequently Asked Questions

What is Kerberoasting and how does event 4769 detect it?
Kerberoasting is requesting service tickets for user accounts that have an SPN, then cracking the tickets offline to recover the account password. Every such request writes a 4769 on the domain controller. The tell is a Ticket Encryption Type of 0x17 (RC4-HMAC) for a Service Name that does not end in $, especially when one requester asks for many distinct SPNs in a short window.
What does ticket encryption type 0x17 mean in event 4769?
0x17 is RC4-HMAC, the default Kerberos suite before Windows Server 2008 and Vista. Its key is the account's NT hash, which makes cracked tickets far cheaper to brute force than AES (0x11 or 0x12). Microsoft recommends alerting on any value other than 0x11 and 0x12 on modern domains, and 0x17 for a user-account SPN is the classic Kerberoasting indicator.
Why are there so many event ID 4769 logs?
Because every access to any Kerberos-protected service needs a service ticket, and the KDC logs each request. Mapped drives, Group Policy, Exchange, SharePoint and SCCM traffic all generate one. Most rows are computer accounts (Service Name ending in $) or krbtgt renewals; filter both out and the remaining set is small enough to baseline.
What is the difference between event 4768 and 4769?
4768 records the initial authentication (AS exchange) that issues a Ticket Granting Ticket. 4769 records the follow-on TGS exchange where that TGT is traded for a ticket to a specific service. Kerberoasting shows up in 4769 because it targets service tickets; AS-REP roasting shows up in 4768.
Is failure code 0x20 in event 4769 a security problem?
No. 0x20 (KRB_AP_ERR_TKT_EXPIRED) means a service ticket reached the end of its lifetime and the client asked for a fresh one, which Windows handles automatically. Microsoft classes it as informational. Exclude it before counting failures; the codes worth attention are 0x7, 0xC, 0xD and 0xE.

Sources

Event description (generates on every TGS request, only on domain controllers), subcategory, the Version 2 field set added by the January 2025 update, the Ticket Encryption Type table (0x1, 0x3, 0x11, 0x12, 0x17, 0x18, 0xFFFFFFFF), the common Ticket Options values, the Failure Code table including 0x20 as informational, the KdcExtraLogLevel flags, and the monitoring recommendations on Client Address, Client Port and encryption types other than 0x11/0x12.

T1558.003 Kerberoasting: adversaries request service tickets for SPN-bearing accounts and crack them offline; RC4 tickets are the preferred target; Rubeus is among the tools listed; the detection guidance names event 4769.

Microsoft Sentinel SecurityEvent table reference: the TargetUserName, ServiceName and IpAddress columns the KQL queries filter on.

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 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
Glossary

What is Alert Triage? SOC Glossary

Alert triage is the structured process of reviewing, prioritizing, and investigating security alerts to determine their …

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

Steal or Forge Kerberos Tickets (T1558): Detection Training

This technique subverts Kerberos by stealing tickets from memory or forging them from domain secrets, enabling Pass-the-…

Read more
Technique

Valid Accounts (T1078): Detection Training

Valid Accounts is among the hardest abuses to spot because nothing is technically broken, the adversary simply authentic…

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