Skip to content

Siemphony is in beta and still being built. How a rule earns its badge.

Siemphony’s repertoire

Kerberos service ticket issued with RC4 encryption

Siemphony@siemphonylowT1558.003unverified
Matches successful Kerberos TGS issuance (Security 4769) where the ticket was encrypted with RC4-HMAC (`TicketEncryptionType` 0x17), the variant Kerberoasting is easiest against — the RC4 portion of the TGS-REP cracks fastest offline. It is not the only variant: a TGS encrypted with AES (`TicketEncryptionType` 0x12) is crackable too, only far more slowly, so an operator roasting an account configured AES-only, or one whose toolkit does not force an RC4 downgrade, produces no match here at all. That is this rule's largest blind spot, and it is not visible in its output. Machine accounts and `krbtgt` are excluded on `ServiceName` because computer SPNs are backed by a 120-character random password and krbtgt requests belong to the AS/TGT path, so neither is a roasting target and both would otherwise dominate the output. The `TicketOptions: 0x40810000` fingerprint quoted in most public write-ups is deliberately not required here: ordinary Windows clients send the same option set, so it adds little precision while excluding toolkits that ask for different flags. MITRE's AN0444 also counts tickets per account inside a window and compares requested SPNs against a per-account baseline; neither a count nor a baseline is expressible in Sigma, so this fires on one RC4 ticket rather than on a burst, and it cannot distinguish a single roast from a sweep. 4769 is written only by domain controllers, under Audit Kerberos Service Ticket Operations (Success) — that subcategory is on in the Default Domain Controllers Policy, but the event is very high volume and is routinely dropped at the forwarder or the SIEM's ingest filter, so confirm the events actually arrive before reading silence as absence of the behaviour. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0157, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

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 == 4769 and TicketEncryptionType =~ "0x17" and Status =~ "0x0") and not ((ServiceName endswith "$" or ServiceName endswith "krbtgt")))

Splunk · SPL

Run this as a search.

index=* ((EventID="4769" AND TicketEncryptionType="0x17" AND Status="0x0") AND NOT ((ServiceName="*$" OR ServiceName="*krbtgt")))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((event.code == 4769 AND TO_LOWER(TicketEncryptionType) == "0x17" AND TO_LOWER(Status) == "0x0") AND NOT ((TO_LOWER(service.name) LIKE "*$" OR TO_LOWER(service.name) LIKE "*krbtgt")))

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="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="EventID" type="pcre2">(?i)^4769$</field>    <field name="TicketEncryptionType" type="pcre2">(?i)^0x17$</field>    <field name="Status" type="pcre2">(?i)^0x0$</field>    <field name="ServiceName" negate="yes" type="pcre2">(?i)(\$$|krbtgt$)</field>    <description>Kerberos service ticket issued with RC4 encryption</description>    <mitre>      <id>T1558.003</id>    </mitre>  </rule></group>

Verdicts · reactions · comments

Community

Verdicts from engineers who actually deployed it, and the conversation around it.

Log in to react
Not yet reported on

Nobody has run this in a real environment and said what happened.

Verdicts from engineers who deployed it

0 cast

No 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

  • @hana-kobayashi

    Low is correct and I wish more published rule sets were this willing to say it. In a domain that has not enforced AES, this is a report, not an alert — a handful of legacy SPNs will produce the overwhelming majority of it every single day. The version worth alerting on is the burst: one account requesting tickets for forty SPNs inside two minutes. That needs an aggregation Sigma cannot express, which the description says outright instead of pretending otherwise.

    • @nadia-brandt

      That is how we run it — the Sigma rule is the filter, and a distinct-count of ServiceName by TargetUserName over a short window sits on top of it in the platform. Splitting the two that way also means the rule stays portable: the aggregation is the part that is specific to whichever SIEM you happen to own this year.