Skip to content

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

Siemphony’s repertoire

New-credentials logon created by the secondary logon service

Siemphony@siemphonymediumT1550.002unverified
Matches Security 4624 logon sessions of type 9 (NewCredentials) created by the Secondary Logon service, which is the record Windows writes when a process is started under an alternate account for network use only — the local artefact of authenticating as another user without ever holding their cleartext password, and the event a hash-injection tool produces on the host it is run from. This is MITRE's LogonTypeFilter knob set here to type 9, rather than to the type 3 and type 10 that the knob's own examples name: type 3 NTLM is the target-side view, it is far noisier, and it is already the shape of the T1021 rule in this corpus, whereas type 9 fires once, on the operator's own machine, at the moment the credential is injected. The rule sees that injection and not its use — the onward SMB, WMI or service creation performed under the new session is a separate event and Sigma cannot join them — and it cannot compare the requesting account against the supplied account, which is the field pair that would actually separate an operator from an adversary. Unlike much of this corpus the rule needs no audit-policy change, since 4624 is collected by default under Logon/Logoff success, but the record exists only on the source host and never reaches a domain controller, so a fleet-wide endpoint feed is the prerequisite instead. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0409, 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 == 4624 and LogonType == 9 and LogonProcessName =~ "seclogo" and AuthenticationPackageName =~ "Negotiate")

Splunk · SPL

Run this as a search.

index=* (EventID="4624" AND LogonType="9" AND LogonProcessName="seclogo" AND AuthenticationPackageName="Negotiate")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (event.code == 4624 AND LogonType == 9 AND TO_LOWER(LogonProcessName) == "seclogo" AND TO_LOWER(AuthenticationPackageName) == "negotiate")

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)^4624$</field>    <field name="LogonType" type="pcre2">(?i)^9$</field>    <field name="LogonProcessName" type="pcre2">(?i)^seclogo$</field>    <field name="AuthenticationPackageName" type="pcre2">(?i)^Negotiate$</field>    <description>New-credentials logon created by the secondary logon service</description>    <mitre>      <id>T1550.002</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.

No comments yet. Someone who deploys this will have something to say about it.