Skip to content

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

Siemphony’s repertoire

Service enumeration via sc query, net start, WMI or Get-Service

Siemphony@siemphonylowT1007unverified
Matches the command shapes AN1325 names for reading the registered service table: `sc query`, `tasklist /svc`, a bare `net start`, `wmic service`, and the PowerShell/CIM equivalents. Each leg pairs the binary with the argument that makes it an enumeration, so `sc.exe create` and `net start <ServiceName>` — which write rather than read — stay outside it; the `net` leg anchors on the command line ending at the verb, which is what excludes starting a named service and also what makes it miss a redirected `net start > out.txt`. The brief offers Security EventID 4688 for this analytic but maps it onto the Sysmon-shaped `process_creation` category, and the rule is written in that vocabulary (`Image`, `CommandLine`); a 4688 feed needs `NewProcessName` mapped onto `Image` and `ProcessCommandLine` onto `CommandLine` before it can match, and 4688 itself requires *Audit Process Creation* plus the separate *Include command line in process creation events* policy, neither of which is enabled by a default install or by the MS/CIS baselines. AN1325's other log source, the PowerShell 4103/4104 channel, is not used, so the cmdlet leg only sees `Get-Service` and the CIM/WMI equivalents when they are carried on a new process's command line; the same cmdlet typed into a session already running, or called from inside a script, creates no process and is invisible here — a quiet result is not evidence that nothing enumerated the services. MITRE's `CommandLineMatch` knob is what the argument gates implement, populated here with the verbs above. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0483, 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 "\\sc.exe" and ProcessCommandLine contains "query") or (FolderPath endswith "\\tasklist.exe" and (ProcessCommandLine contains "-svc" or ProcessCommandLine contains "/svc" or ProcessCommandLine contains "–svc" or ProcessCommandLine contains "—svc" or ProcessCommandLine contains "―svc")) or ((FolderPath endswith "\\net.exe" or FolderPath endswith "\\net1.exe") and ProcessCommandLine endswith " start") or (FolderPath endswith "\\wmic.exe" and ProcessCommandLine contains "service") or (ProcessCommandLine contains "Get-Service" or ProcessCommandLine contains "Get-CimInstance -ClassName Win32_Service" or ProcessCommandLine contains "Get-CimInstance Win32_Service" or ProcessCommandLine contains "Get-WmiObject -Class Win32_Service" or ProcessCommandLine contains "Get-WmiObject Win32_Service"))

Splunk · SPL

Run this as a search.

index=* ((Image="*\\sc.exe" AND CommandLine="*query*") OR (Image="*\\tasklist.exe" AND (CommandLine="*-svc*" OR CommandLine="*/svc*" OR CommandLine="*–svc*" OR CommandLine="*—svc*" OR CommandLine="*―svc*")) OR ((Image="*\\net.exe" OR Image="*\\net1.exe") AND CommandLine="* start") OR (Image="*\\wmic.exe" AND CommandLine="*service*") OR (CommandLine="*Get-Service*" OR CommandLine="*Get-CimInstance -ClassName Win32_Service*" OR CommandLine="*Get-CimInstance Win32_Service*" OR CommandLine="*Get-WmiObject -Class Win32_Service*" OR CommandLine="*Get-WmiObject Win32_Service*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.executable) LIKE "*\\\\sc.exe" AND TO_LOWER(process.command_line) LIKE "*query*") OR (TO_LOWER(process.executable) LIKE "*\\\\tasklist.exe" AND (TO_LOWER(process.command_line) LIKE "*-svc*" OR TO_LOWER(process.command_line) LIKE "*/svc*" OR TO_LOWER(process.command_line) LIKE "*–svc*" OR TO_LOWER(process.command_line) LIKE "*—svc*" OR TO_LOWER(process.command_line) LIKE "*―svc*")) OR ((TO_LOWER(process.executable) LIKE "*\\\\net.exe" OR TO_LOWER(process.executable) LIKE "*\\\\net1.exe") AND TO_LOWER(process.command_line) LIKE "* start") OR (TO_LOWER(process.executable) LIKE "*\\\\wmic.exe" AND TO_LOWER(process.command_line) LIKE "*service*") OR (TO_LOWER(process.command_line) LIKE "*get-service*" OR TO_LOWER(process.command_line) LIKE "*get-ciminstance -classname win32_service*" OR TO_LOWER(process.command_line) LIKE "*get-ciminstance win32_service*" OR TO_LOWER(process.command_line) LIKE "*get-wmiobject -class win32_service*" OR TO_LOWER(process.command_line) LIKE "*get-wmiobject win32_service*"))

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. -->  <!-- 5 rules: the Sigma condition ORs across different fields,       which one rule cannot express. Any one matching is a hit. -->  <rule id="100000" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)\\sc\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)query</field>    <description>Service enumeration via sc query, net start, WMI or Get-Service (1/5)</description>    <mitre>      <id>T1007</id>    </mitre>  </rule>   <rule id="100001" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)\\tasklist\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)(-svc|/svc|–svc|—svc|―svc)</field>    <description>Service enumeration via sc query, net start, WMI or Get-Service (2/5)</description>    <mitre>      <id>T1007</id>    </mitre>  </rule>   <rule id="100002" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\net\.exe$|\\net1\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i) start$</field>    <description>Service enumeration via sc query, net start, WMI or Get-Service (3/5)</description>    <mitre>      <id>T1007</id>    </mitre>  </rule>   <rule id="100003" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)\\wmic\.exe$</field>    <field name="CommandLine" type="pcre2">(?i)service</field>    <description>Service enumeration via sc query, net start, WMI or Get-Service (4/5)</description>    <mitre>      <id>T1007</id>    </mitre>  </rule>   <rule id="100004" level="5">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="CommandLine" type="pcre2">(?i)(Get-Service|Get-CimInstance -ClassName Win32_Service|Get-CimInstance Win32_Service|Get-WmiObject -Class Win32_Service|Get-WmiObject Win32_Service)</field>    <description>Service enumeration via sc query, net start, WMI or Get-Service (5/5)</description>    <mitre>      <id>T1007</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.