Installer or updater process spawning a shell, script host or downloader
MITRE's Windows analytic for a compromised software supply chain is a four-stage chain: installer runs, binaries are written into program paths, the first run spawns unexpected children or loads unsigned modules, and the host beacons to something that is not an approved update endpoint. Stage three is the only part that is one event, so this rule matches process creation where the parent is an installer, updater or setup binary and the child is a shell, script host or download utility. Read it as a hunt, not as supply-chain detection. The dominant real-world form of this technique never creates a process at all: a payload compiled into a signed vendor assembly, or a malicious DLL side-loaded by the signed application, runs in-process and produces zero events here. The leg that carries that is the brief's driver_load (Sysmon 6) and image_load (Sysmon 7) sources, where Signed, Signature and SignatureStatus let an unsigned or unexpectedly-signed module loading into a vendor process be scored — none of which this rule sees. The child list is a starting set taken from the analytic's wording ("spawns scripts/shells"), not an exhaustive interpreter inventory, and a tampered installer that runs its payload as its own child EXE never touches it. The write-to-first-run-to-egress correlation MITRE specifies needs a 90-minute join across file, module and network telemetry, which Sigma cannot express, and the ApprovedSigners and ApprovedUpdateHosts knobs are list lookups rather than field tests, so neither is modelled here. UNVERIFIED — derived from MITRE ATT&CK DET0309 and never executed against logs.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 ((InitiatingProcessFolderPath endswith "\\msiexec.exe" or InitiatingProcessFolderPath endswith "\\setup.exe" or InitiatingProcessFolderPath endswith "\\install.exe" or InitiatingProcessFolderPath endswith "\\installer.exe" or InitiatingProcessFolderPath endswith "\\update.exe" or InitiatingProcessFolderPath endswith "\\updater.exe" or InitiatingProcessFolderPath endswith "\\upgrade.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 "\\regsvr32.exe"))
Splunk · SPL
Run this as a search.
index=* ((ParentImage="*\\msiexec.exe" OR ParentImage="*\\setup.exe" OR ParentImage="*\\install.exe" OR ParentImage="*\\installer.exe" OR ParentImage="*\\update.exe" OR ParentImage="*\\updater.exe" OR ParentImage="*\\upgrade.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="*\\regsvr32.exe"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE ((TO_LOWER(process.parent.executable) LIKE "*\\\\msiexec.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\setup.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\install.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\installer.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\update.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\updater.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\upgrade.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 "*\\\\regsvr32.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="5"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="ParentImage" type="pcre2">(?i)(\\msiexec\.exe$|\\setup\.exe$|\\install\.exe$|\\installer\.exe$|\\update\.exe$|\\updater\.exe$|\\upgrade\.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$|\\regsvr32\.exe$)</field> <description>Installer or updater process spawning a shell, script host or downloader</description> <mitre> <id>T1195.002</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.