Skip to content

Siemphony is in beta and still being built. What ships today, and what does not.

Siemphony’s repertoire

Core Windows system binary name running from outside System32

Siemphony@siemphonymediumT1036.005unverified
AN0983 asks for binaries "executed from trusted directories or using trusted names where the metadata, hash, or parent process does not align", and the one half of that a single process-creation event can settle by itself is location: a process carrying the file name of a core Windows system component while running from a path that is not System32, SysWOW64 or the servicing store. The name list is deliberately restricted to images that live in System32 in every supported Windows build, so a hit means the name was borrowed rather than that the process moved — explorer.exe is left out for exactly that reason, since it legitimately lives in C:\Windows and allowing that directory would also allow C:\Windows\Temp. The path filter is MITRE's `trusted_directory_list` knob, populated here with those three directories and written as `contains` rather than an absolute prefix so a system volume other than C: is still covered; the cost is that a planted C:\Temp\Windows\System32 directory would satisfy it. A bare `contains` on those directories would also excuse everything *below* them, including the handful of subdirectories under System32 and SysWOW64 that ordinary users can write to — spool\drivers\color is the one malware actually uses — so a second selection, added here rather than taken from the brief, puts those back in scope; nothing shipped by Windows runs any of these fifteen images from them. Metadata and hash comparison are not attempted: a hash needs a per-file baseline this corpus has no source for, and the metadata-mismatch case is a different observable, authored as its own rule under T1036.003. The brief maps Security 4688 onto Sigma's `process_creation` category, which is Sysmon-shaped, and this rule is written in that vocabulary (`Image`); on a 4688 feed the same value is `NewProcessName`, so that feed needs a field mapping before the rule matches at all, and 4688 itself only exists once *Audit Process Creation* is enabled — it is off in a default install and in the MS and CIS baselines, and zero rows would read as quiet when it means blind. The analytic's Sysmon EventID 11 leg is not attempted, nor are the Linux (AN0984) or macOS (AN0985) arms. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0347, 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.

DeviceProcessEvents| where ((FolderPath endswith "\\svchost.exe" or FolderPath endswith "\\lsass.exe" or FolderPath endswith "\\services.exe" or FolderPath endswith "\\csrss.exe" or FolderPath endswith "\\smss.exe" or FolderPath endswith "\\wininit.exe" or FolderPath endswith "\\winlogon.exe" or FolderPath endswith "\\spoolsv.exe" or FolderPath endswith "\\dllhost.exe" or FolderPath endswith "\\conhost.exe" or FolderPath endswith "\\taskhostw.exe" or FolderPath endswith "\\dwm.exe" or FolderPath endswith "\\sihost.exe" or FolderPath endswith "\\ctfmon.exe" or FolderPath endswith "\\rundll32.exe") and ((FolderPath contains "\\System32\\spool\\drivers\\color\\" or FolderPath contains "\\System32\\spool\\PRINTERS\\" or FolderPath contains "\\System32\\spool\\SERVERS\\" or FolderPath contains "\\System32\\Tasks_Migrated\\" or FolderPath contains "\\System32\\com\\dmp\\" or FolderPath contains "\\System32\\FxsTmp\\" or FolderPath contains "\\System32\\Microsoft\\Crypto\\RSA\\MachineKeys\\" or FolderPath contains "\\SysWOW64\\com\\dmp\\" or FolderPath contains "\\SysWOW64\\FxsTmp\\") or not ((FolderPath contains "\\Windows\\System32\\" or FolderPath contains "\\Windows\\SysWOW64\\" or FolderPath contains "\\Windows\\WinSxS\\"))))

Splunk · SPL

Run this as a search.

index=* ((Image="*\\svchost.exe" OR Image="*\\lsass.exe" OR Image="*\\services.exe" OR Image="*\\csrss.exe" OR Image="*\\smss.exe" OR Image="*\\wininit.exe" OR Image="*\\winlogon.exe" OR Image="*\\spoolsv.exe" OR Image="*\\dllhost.exe" OR Image="*\\conhost.exe" OR Image="*\\taskhostw.exe" OR Image="*\\dwm.exe" OR Image="*\\sihost.exe" OR Image="*\\ctfmon.exe" OR Image="*\\rundll32.exe") AND ((Image="*\\System32\\spool\\drivers\\color\\*" OR Image="*\\System32\\spool\\PRINTERS\\*" OR Image="*\\System32\\spool\\SERVERS\\*" OR Image="*\\System32\\Tasks_Migrated\\*" OR Image="*\\System32\\com\\dmp\\*" OR Image="*\\System32\\FxsTmp\\*" OR Image="*\\System32\\Microsoft\\Crypto\\RSA\\MachineKeys\\*" OR Image="*\\SysWOW64\\com\\dmp\\*" OR Image="*\\SysWOW64\\FxsTmp\\*") OR NOT ((Image="*\\Windows\\System32\\*" OR Image="*\\Windows\\SysWOW64\\*" OR Image="*\\Windows\\WinSxS\\*"))))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.executable) LIKE "*\\\\svchost.exe" OR TO_LOWER(process.executable) LIKE "*\\\\lsass.exe" OR TO_LOWER(process.executable) LIKE "*\\\\services.exe" OR TO_LOWER(process.executable) LIKE "*\\\\csrss.exe" OR TO_LOWER(process.executable) LIKE "*\\\\smss.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wininit.exe" OR TO_LOWER(process.executable) LIKE "*\\\\winlogon.exe" OR TO_LOWER(process.executable) LIKE "*\\\\spoolsv.exe" OR TO_LOWER(process.executable) LIKE "*\\\\dllhost.exe" OR TO_LOWER(process.executable) LIKE "*\\\\conhost.exe" OR TO_LOWER(process.executable) LIKE "*\\\\taskhostw.exe" OR TO_LOWER(process.executable) LIKE "*\\\\dwm.exe" OR TO_LOWER(process.executable) LIKE "*\\\\sihost.exe" OR TO_LOWER(process.executable) LIKE "*\\\\ctfmon.exe" OR TO_LOWER(process.executable) LIKE "*\\\\rundll32.exe") AND ((TO_LOWER(process.executable) LIKE "*\\\\system32\\\\spool\\\\drivers\\\\color\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\spool\\\\printers\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\spool\\\\servers\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\tasks_migrated\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\com\\\\dmp\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\fxstmp\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\system32\\\\microsoft\\\\crypto\\\\rsa\\\\machinekeys\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\syswow64\\\\com\\\\dmp\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\syswow64\\\\fxstmp\\\\*") OR NOT ((TO_LOWER(process.executable) LIKE "*\\\\windows\\\\system32\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\windows\\\\syswow64\\\\*" OR TO_LOWER(process.executable) LIKE "*\\\\windows\\\\winsxs\\\\*"))))

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,windows,process_creation,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <!-- 2 rules: the Sigma condition ORs across different fields,       which one rule cannot express. Any one matching is a hit. -->  <rule id="100000" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\svchost\.exe$|\\lsass\.exe$|\\services\.exe$|\\csrss\.exe$|\\smss\.exe$|\\wininit\.exe$|\\winlogon\.exe$|\\spoolsv\.exe$|\\dllhost\.exe$|\\conhost\.exe$|\\taskhostw\.exe$|\\dwm\.exe$|\\sihost\.exe$|\\ctfmon\.exe$|\\rundll32\.exe$)</field>    <field name="Image" type="pcre2">(?i)(\\System32\\spool\\drivers\\color\\|\\System32\\spool\\PRINTERS\\|\\System32\\spool\\SERVERS\\|\\System32\\Tasks_Migrated\\|\\System32\\com\\dmp\\|\\System32\\FxsTmp\\|\\System32\\Microsoft\\Crypto\\RSA\\MachineKeys\\|\\SysWOW64\\com\\dmp\\|\\SysWOW64\\FxsTmp\\)</field>    <description>Core Windows system binary name running from outside System32 (1/2)</description>    <mitre>      <id>T1036.005</id>    </mitre>  </rule>   <rule id="100001" level="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\svchost\.exe$|\\lsass\.exe$|\\services\.exe$|\\csrss\.exe$|\\smss\.exe$|\\wininit\.exe$|\\winlogon\.exe$|\\spoolsv\.exe$|\\dllhost\.exe$|\\conhost\.exe$|\\taskhostw\.exe$|\\dwm\.exe$|\\sihost\.exe$|\\ctfmon\.exe$|\\rundll32\.exe$)</field>    <field name="Image" negate="yes" type="pcre2">(?i)(\\Windows\\System32\\|\\Windows\\SysWOW64\\|\\Windows\\WinSxS\\)</field>    <description>Core Windows system binary name running from outside System32 (2/2)</description>    <mitre>      <id>T1036.005</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.