Kerberos TGT issued to an account without preauthentication
AN0316 names the one property of an AS-REP roast that lands on a single Security 4768 record: the authentication service issued a TGT for an account whose Kerberos preauthentication is disabled (`PreAuthType` 0, meaning the requester never had to prove knowledge of the password). The match is limited to successful issuance (`Status` 0x0) because a failed request hands the requester no crackable material — that also drops the ordinary MIT/Heimdal `kinit` opening exchange, which asks without preauthentication, is refused with KDC_ERR_PREAUTH_REQUIRED and never reaches 0x0. Machine accounts are excluded: a computer account authenticating with its own long random secret is not roastable even when its records look unusual. The analytic also names RC4 (`TicketEncryptionType` 0x17) as an accompanying anomaly, and most public write-ups make it a required conjunct; it is deliberately not required here, because the requester chooses the encryption types it offers, and an AS-REP returned under AES for a preauthentication-disabled account is still crackable offline — only more slowly. Gating on 0x17 would turn the whole rule off for the cost of one flag. The other side of that choice is that on a domain still permitting RC4 broadly the encryption type carries no discrimination anyway, so every bit of selectivity here rests on the preauthentication flag. The rest of the analytic does not fit on one event — the AS-REQ/AS-REP volume test behind MITRE's `TGTRequestThreshold` knob is an aggregation, and the correlation with follow-on 4769 service ticket activity inside MITRE's `TimeWindow` knob is a join; lib/sigma models neither, so this rule fires on the first roastable reply rather than on a burst. It also cannot see the enumeration step that precedes the roast, an LDAP read of accounts carrying the DONT_REQ_PREAUTH flag, which leaves no 4768 record at all. Prerequisite: 4768 is written only by domain controllers and only with Audit Kerberos Authentication Service enabled for Success; it is present in the Microsoft and CIS domain controller baselines but is frequently dropped from forwarding for volume, and a rule against a feed nobody ships returns zero rows that read as quiet when they mean blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0113, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full descriptionShow less
The detection
The 4 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.
detection.yml
Sentinel · KQL
Run this as a search.
SecurityEvent| where ((EventID == 4768 and PreAuthType =~ "0" and Status =~ "0x0") and not (TargetUserName endswith "$"))
Splunk · SPL
Run this as a search.
index=* ((EventID="4768" AND PreAuthType="0" AND Status="0x0") AND NOT (TargetUserName="*$"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((event.code == 4768 AND TO_LOWER(PreAuthType) == "0" AND TO_LOWER(Status) == "0x0") AND NOT (TO_LOWER(TargetUserName) LIKE "*$"))
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,windows,"> <!-- Rule ids must be unique on your manager; 100000+ is the user range. --> <rule id="100000" level="7"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="EventID" type="pcre2">(?i)^4768$</field> <field name="PreAuthType" type="pcre2">(?i)^0$</field> <field name="Status" type="pcre2">(?i)^0x0$</field> <field name="TargetUserName" negate="yes" type="pcre2">(?i)\$$</field> <description>Kerberos TGT issued to an account without preauthentication</description> <mitre> <id>T1558.004</id> </mitre> </rule></group>
Verdicts · reactions · comments
Community
Verdicts from engineers who actually deployed it, and the conversation around it.
Nobody has run this in a real environment and said what happened.
Verdicts from engineers who deployed it
0 castNo verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.
Log in to report a verdict.
Log in to join the discussion.
1 thread
@nadia-brandt
The machine-account filter earns its place — without it every RODC and every pre-Windows-2000 compatibility account lights this up all day. What we had to add was a second exclusion for our own AS-REP tripwire accounts, which have preauth disabled by design and therefore fire on every scan. That one is site-specific so I do not think it belongs in the shipped rule, but it belongs in a deployment note, because everyone who has tripwires will hit it in week one.