Service enumeration via sc query, net start, WMI or Get-Service
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 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.
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.
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.
No comments yet. Someone who deploys this will have something to say about it.