Skip to content

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

Siemphony’s repertoire

Scripted recursive copy sweeping multiple document types

Siemphony@siemphonymediumT1119unverified
Authors a single-event stand-in for AN0531's core signal — "search for and copy information fitting set criteria such as file type" — as a PowerShell Copy-Item invocation that is both recursive and names several unrelated document extensions in one command line, which is what a scripted bulk collection sweep looks like at the point it runs versus an ordinary one-off copy. MITRE's ProcessCountThreshold and ClipboardCheckRate knobs describe a rate over repeated events, which Sigma's lack of aggregation support (no `count() by`) makes impossible to express directly, so this substitutes "several file types requested together" for "many files copied over time" as the single-event proxy for automation. Three limits are structural, and none of them is a false positive. Sysmon EventID 1 records the process command line only, so this fires solely on a sweep typed inline (powershell.exe -Command "Copy-Item -Recurse ... -Include *.doc,*.pdf"); a launch of powershell.exe -File collect.ps1, an -EncodedCommand payload, a pipeline where -Recurse and -Include sit on Get-ChildItem and the trailing Copy-Item carries neither, or plain aliasing (cpi, gci) all put none of the matched tokens on the recorded command line, because the cmdlet text lives inside the script body this event never captures. Inline invocation is one style of scripted collection and not the dominant one for real automation, so treat a silent result as unmeasured rather than clean. Second, 'recurse' is matched as a bare substring, so -Recurse:$false — recursion explicitly turned off, no tree walked — still satisfies that gate. Third, robocopy and xcopy are left out of the selector rather than OR-ed in on a different CommandLine shape, keeping the rule to one condition all four backends render. This is deliberately not the shape already published elsewhere in the corpus: T1005 matches a find/ grep search for credential and SSH-key filenames, and this matches a PowerShell copy of general document types — different tool class, different target, no overlap. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0186, 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 "\\powershell.exe" or FolderPath endswith "\\pwsh.exe") and ProcessCommandLine contains "copy-item") and ProcessCommandLine contains "recurse") and (ProcessCommandLine contains ".doc" or ProcessCommandLine contains ".xls" or ProcessCommandLine contains ".ppt" or ProcessCommandLine contains ".pdf" or ProcessCommandLine contains ".csv" or ProcessCommandLine contains ".txt"))

Splunk · SPL

Run this as a search.

index=* ((((Image="*\\powershell.exe" OR Image="*\\pwsh.exe") AND CommandLine="*copy-item*") AND CommandLine="*recurse*") AND (CommandLine="*.doc*" OR CommandLine="*.xls*" OR CommandLine="*.ppt*" OR CommandLine="*.pdf*" OR CommandLine="*.csv*" OR CommandLine="*.txt*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((((TO_LOWER(process.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.executable) LIKE "*\\\\pwsh.exe") AND TO_LOWER(process.command_line) LIKE "*copy-item*") AND TO_LOWER(process.command_line) LIKE "*recurse*") AND (TO_LOWER(process.command_line) LIKE "*.doc*" OR TO_LOWER(process.command_line) LIKE "*.xls*" OR TO_LOWER(process.command_line) LIKE "*.ppt*" OR TO_LOWER(process.command_line) LIKE "*.pdf*" OR TO_LOWER(process.command_line) LIKE "*.csv*" OR TO_LOWER(process.command_line) LIKE "*.txt*"))

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="7">    <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)(\\powershell\.exe$|\\pwsh\.exe$)</field>    <field name="CommandLine" type="pcre2">(?i)copy-item</field>    <field name="CommandLine" type="pcre2">(?i)recurse</field>    <field name="CommandLine" type="pcre2">(?i)(\.doc|\.xls|\.ppt|\.pdf|\.csv|\.txt)</field>    <description>Scripted recursive copy sweeping multiple document types</description>    <mitre>      <id>T1119</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.