clip.exe launched by a one-shot shell, script or service
Matches AN0965's Windows observable in two arms. The first is the one the analytic's own CISA AA21-200B citation describes: clip.exe spawned by a shell that was itself launched to run a single command — `cmd.exe /c ... | clip` or `powershell -Command ... | clip` — recognised through ParentCommandLine rather than through ParentImage, because the parent of clip.exe is the invoking shell whether a human typed the pipeline or an implant spawned it. Excluding cmd.exe and powershell.exe as parents outright, which an earlier draft did, removed the most common real-world invocation of this technique rather than removing noise. The second arm is the analytic's literal claim about parentage: clip.exe with a parent that is not a shell or the desktop shell at all — a service, a scheduled task engine, an Office application, a remote-access agent. WindowsTerminal.exe is deliberately not treated as an interactive parent, because inside a Windows Terminal session the parent of clip.exe is the shell hosted in the tab, not the terminal process. clip.exe only writes stdin to the clipboard, so the binary alone is a poor collection signal and neither arm claims otherwise. PowerShell's Get-Clipboard cmdlet, the other Windows observable MITRE names, leaves no distinct trace on process_creation because it runs inside an already-launched powershell.exe host and needs Script Block Logging to show up at all, so it is deliberately left out rather than folded into a cross-field OR; a binary calling OpenClipboard/GetClipboardData directly is invisible here for the same reason. AN0965's TimeWindow and follow-on network correlation — clipboard read chained to staging or exfiltration — is not modelled; Sigma has no event join for it. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0341, 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 "\\clip.exe" and (((InitiatingProcessFolderPath endswith "\\cmd.exe" or InitiatingProcessFolderPath endswith "\\powershell.exe" or InitiatingProcessFolderPath endswith "\\pwsh.exe") and (InitiatingProcessCommandLine contains "-c " or InitiatingProcessCommandLine contains "/c " or InitiatingProcessCommandLine contains "–c " or InitiatingProcessCommandLine contains "—c " or InitiatingProcessCommandLine contains "―c " or InitiatingProcessCommandLine contains "-command" or InitiatingProcessCommandLine contains "/command" or InitiatingProcessCommandLine contains "–command" or InitiatingProcessCommandLine contains "—command" or InitiatingProcessCommandLine contains "―command" or InitiatingProcessCommandLine contains "-encodedcommand" or InitiatingProcessCommandLine contains "/encodedcommand" or InitiatingProcessCommandLine contains "–encodedcommand" or InitiatingProcessCommandLine contains "—encodedcommand" or InitiatingProcessCommandLine contains "―encodedcommand" or InitiatingProcessCommandLine contains "-enc " or InitiatingProcessCommandLine contains "/enc " or InitiatingProcessCommandLine contains "–enc " or InitiatingProcessCommandLine contains "—enc " or InitiatingProcessCommandLine contains "―enc ")) or not ((InitiatingProcessFolderPath endswith "\\explorer.exe" or InitiatingProcessFolderPath endswith "\\cmd.exe" or InitiatingProcessFolderPath endswith "\\powershell.exe" or InitiatingProcessFolderPath endswith "\\pwsh.exe"))))
Splunk · SPL
Run this as a search.
index=* (Image="*\\clip.exe" AND (((ParentImage="*\\cmd.exe" OR ParentImage="*\\powershell.exe" OR ParentImage="*\\pwsh.exe") AND (ParentCommandLine="*-c *" OR ParentCommandLine="*/c *" OR ParentCommandLine="*–c *" OR ParentCommandLine="*—c *" OR ParentCommandLine="*―c *" OR ParentCommandLine="*-command*" OR ParentCommandLine="*/command*" OR ParentCommandLine="*–command*" OR ParentCommandLine="*—command*" OR ParentCommandLine="*―command*" OR ParentCommandLine="*-encodedcommand*" OR ParentCommandLine="*/encodedcommand*" OR ParentCommandLine="*–encodedcommand*" OR ParentCommandLine="*—encodedcommand*" OR ParentCommandLine="*―encodedcommand*" OR ParentCommandLine="*-enc *" OR ParentCommandLine="*/enc *" OR ParentCommandLine="*–enc *" OR ParentCommandLine="*—enc *" OR ParentCommandLine="*―enc *")) OR NOT ((ParentImage="*\\explorer.exe" OR ParentImage="*\\cmd.exe" OR ParentImage="*\\powershell.exe" OR ParentImage="*\\pwsh.exe"))))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (TO_LOWER(process.executable) LIKE "*\\\\clip.exe" AND (((TO_LOWER(process.parent.executable) LIKE "*\\\\cmd.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\pwsh.exe") AND (TO_LOWER(process.parent.command_line) LIKE "*-c *" OR TO_LOWER(process.parent.command_line) LIKE "*/c *" OR TO_LOWER(process.parent.command_line) LIKE "*–c *" OR TO_LOWER(process.parent.command_line) LIKE "*—c *" OR TO_LOWER(process.parent.command_line) LIKE "*―c *" OR TO_LOWER(process.parent.command_line) LIKE "*-command*" OR TO_LOWER(process.parent.command_line) LIKE "*/command*" OR TO_LOWER(process.parent.command_line) LIKE "*–command*" OR TO_LOWER(process.parent.command_line) LIKE "*—command*" OR TO_LOWER(process.parent.command_line) LIKE "*―command*" OR TO_LOWER(process.parent.command_line) LIKE "*-encodedcommand*" OR TO_LOWER(process.parent.command_line) LIKE "*/encodedcommand*" OR TO_LOWER(process.parent.command_line) LIKE "*–encodedcommand*" OR TO_LOWER(process.parent.command_line) LIKE "*—encodedcommand*" OR TO_LOWER(process.parent.command_line) LIKE "*―encodedcommand*" OR TO_LOWER(process.parent.command_line) LIKE "*-enc *" OR TO_LOWER(process.parent.command_line) LIKE "*/enc *" OR TO_LOWER(process.parent.command_line) LIKE "*–enc *" OR TO_LOWER(process.parent.command_line) LIKE "*—enc *" OR TO_LOWER(process.parent.command_line) LIKE "*―enc *")) OR NOT ((TO_LOWER(process.parent.executable) LIKE "*\\\\explorer.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\cmd.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.parent.executable) LIKE "*\\\\pwsh.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. --> <!-- 2 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)\\clip\.exe$</field> <field name="ParentImage" type="pcre2">(?i)(\\cmd\.exe$|\\powershell\.exe$|\\pwsh\.exe$)</field> <field name="ParentCommandLine" type="pcre2">(?i)(-c |/c |–c |—c |―c |-command|/command|–command|—command|―command|-encodedcommand|/encodedcommand|–encodedcommand|—encodedcommand|―encodedcommand|-enc |/enc |–enc |—enc |―enc )</field> <description>clip.exe launched by a one-shot shell, script or service (1/2)</description> <mitre> <id>T1115</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)\\clip\.exe$</field> <field name="ParentImage" negate="yes" type="pcre2">(?i)(\\explorer\.exe$|\\cmd\.exe$|\\powershell\.exe$|\\pwsh\.exe$)</field> <description>clip.exe launched by a one-shot shell, script or service (2/2)</description> <mitre> <id>T1115</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.