Network-facing service spawning a shell or scripting interpreter
MITRE's Windows analytic for exploitation of remote services correlates inbound traffic to a service port with the service crashing or restarting and with unexpected child processes appearing under it. The inbound-to-crash join, the ServicePortSet and the failed-connection rate are all correlation and threshold conditions Sigma has no way to state, so this rule takes the child process leg on its own: a listening service — IIS worker, database engine, print spooler, DNS server, web server — creating a command shell, a scripting interpreter or a download utility. A daemon that serves requests has no ordinary reason to launch an interactive shell, which makes this the strongest single event in the chain even without the crash that usually precedes it. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0118, 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
title: Network-facing service spawning a shell or scripting interpreterid: 60dea374-d7c3-4a7d-bf9f-8daab3d263e6status: experimentaldescription: | MITRE's Windows analytic for exploitation of remote services correlates inbound traffic to a service port with the service crashing or restarting and with unexpected child processes appearing under it. The inbound-to-crash join, the ServicePortSet and the failed-connection rate are all correlation and threshold conditions Sigma has no way to state, so this rule takes the child process leg on its own: a listening service — IIS worker, database engine, print spooler, DNS server, web server — creating a command shell, a scripting interpreter or a download utility. A daemon that serves requests has no ordinary reason to launch an interactive shell, which makes this the strongest single event in the chain even without the crash that usually precedes it. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0118, not hand-written and not tested by its author. Any lab result is on this rule's own page.references: - https://attack.mitre.org/techniques/T1210 - https://attack.mitre.org/detectionstrategies/DET0118author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags: - attack.lateral-movement - attack.t1210logsource: category: process_creation product: windowsdetection: selection_service_parent: ParentImage|endswith: - '\w3wp.exe' - '\httpd.exe' - '\nginx.exe' - '\tomcat9.exe' - '\tomcat10.exe' - '\sqlservr.exe' - '\mysqld.exe' - '\postgres.exe' - '\spoolsv.exe' - '\dns.exe' - '\sshd.exe' selection_shell_child: Image|endswith: - '\cmd.exe' - '\powershell.exe' - '\pwsh.exe' - '\wscript.exe' - '\cscript.exe' - '\mshta.exe' - '\bitsadmin.exe' - '\certutil.exe' - '\curl.exe' - '\net.exe' - '\net1.exe' condition: selection_service_parent and selection_shell_childfalsepositives: - "Web applications that legitimately shell out — an intranet admin page calling cmd.exe, a reporting feature invoking a batch job, or a deployment hook run by the IIS worker. This is the main source of noise and it is per-application, so the exclusion belongs on the specific site or application pool rather than on w3wp.exe as a whole." - "Database maintenance that uses xp_cmdshell or an SQL Agent job step of type CmdExec, which appears as sqlservr.exe launching cmd.exe on a schedule." - "Printer driver installation and spooler-hosted vendor components, where spoolsv.exe runs a helper script during driver setup — the same parent-child shape that print-spooler exploitation produces." - "OpenSSH server sessions on hosts where sshd is a supported administration path, since every interactive logon spawns a shell from sshd.exe and those hosts need excluding by name before this rule is usable. MITRE's AllowedAdminCIDRs knob is the equivalent suppression on the network side, which this rule cannot apply because the source address is not on the process event."level: highSentinel · KQL
Run this as a search.
DeviceProcessEvents| where ((InitiatingProcessFolderPath endswith "\\w3wp.exe" or InitiatingProcessFolderPath endswith "\\httpd.exe" or InitiatingProcessFolderPath endswith "\\nginx.exe" or InitiatingProcessFolderPath endswith "\\tomcat9.exe" or InitiatingProcessFolderPath endswith "\\tomcat10.exe" or InitiatingProcessFolderPath endswith "\\sqlservr.exe" or InitiatingProcessFolderPath endswith "\\mysqld.exe" or InitiatingProcessFolderPath endswith "\\postgres.exe" or InitiatingProcessFolderPath endswith "\\spoolsv.exe" or InitiatingProcessFolderPath endswith "\\dns.exe" or InitiatingProcessFolderPath endswith "\\sshd.exe") and (FolderPath endswith "\\cmd.exe" or FolderPath endswith "\\powershell.exe" or FolderPath endswith "\\pwsh.exe" or FolderPath endswith "\\wscript.exe" or FolderPath endswith "\\cscript.exe" or FolderPath endswith "\\mshta.exe" or FolderPath endswith "\\bitsadmin.exe" or FolderPath endswith "\\certutil.exe" or FolderPath endswith "\\curl.exe" or FolderPath endswith "\\net.exe" or FolderPath endswith "\\net1.exe"))
Splunk · SPL
Run this as a search.
index=* ((ParentImage="*\\w3wp.exe" OR ParentImage="*\\httpd.exe" OR ParentImage="*\\nginx.exe" OR ParentImage="*\\tomcat9.exe" OR ParentImage="*\\tomcat10.exe" OR ParentImage="*\\sqlservr.exe" OR ParentImage="*\\mysqld.exe" OR ParentImage="*\\postgres.exe" OR ParentImage="*\\spoolsv.exe" OR ParentImage="*\\dns.exe" OR ParentImage="*\\sshd.exe") AND (Image="*\\cmd.exe" OR Image="*\\powershell.exe" OR Image="*\\pwsh.exe" OR Image="*\\wscript.exe" OR Image="*\\cscript.exe" OR Image="*\\mshta.exe" OR Image="*\\bitsadmin.exe" OR Image="*\\certutil.exe" OR Image="*\\curl.exe" OR Image="*\\net.exe" OR Image="*\\net1.exe"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((TO_LOWER(process.parent.executable) LIKE "*\\\\w3wp.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\httpd.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\nginx.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\tomcat9.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\tomcat10.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\sqlservr.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\mysqld.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\postgres.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\spoolsv.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\dns.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\sshd.exe") AND (TO_LOWER(process.executable) LIKE "*\\\\cmd.exe" OR TO_LOWER(process.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.executable) LIKE "*\\\\pwsh.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\mshta.exe" OR TO_LOWER(process.executable) LIKE "*\\\\bitsadmin.exe" OR TO_LOWER(process.executable) LIKE "*\\\\certutil.exe" OR TO_LOWER(process.executable) LIKE "*\\\\curl.exe" OR TO_LOWER(process.executable) LIKE "*\\\\net.exe" OR TO_LOWER(process.executable) LIKE "*\\\\net1.exe"))
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. --> <rule id="100000" level="12"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="ParentImage" type="pcre2">(?i)(\\w3wp\.exe$|\\httpd\.exe$|\\nginx\.exe$|\\tomcat9\.exe$|\\tomcat10\.exe$|\\sqlservr\.exe$|\\mysqld\.exe$|\\postgres\.exe$|\\spoolsv\.exe$|\\dns\.exe$|\\sshd\.exe$)</field> <field name="Image" type="pcre2">(?i)(\\cmd\.exe$|\\powershell\.exe$|\\pwsh\.exe$|\\wscript\.exe$|\\cscript\.exe$|\\mshta\.exe$|\\bitsadmin\.exe$|\\certutil\.exe$|\\curl\.exe$|\\net\.exe$|\\net1\.exe$)</field> <description>Network-facing service spawning a shell or scripting interpreter</description> <mitre> <id>T1210</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.