Skip to content

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

Siemphony’s repertoire

Recursive file deletion or secure-overwrite command line

Detects the command lines MITRE's AN0411 names for data destruction — recursive quiet deletes, cipher's free-space wipe, SDelete overwrites and forced recursive Remove-Item. Every selection matches on `CommandLine` alone so the rule is a single-field OR that all backends render, and the flag combinations use `contains|all` because operators reorder switches freely. The analytic's actual discriminator is volume — MITRE's VolumeThreshold and TimeWindow knobs count unique files destroyed by one process — which Sigma cannot express, so this rule fires on a single destructive invocation and the burst has to be judged by the analyst or a downstream aggregation. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0146, 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

title: Recursive file deletion or secure-overwrite command lineid: 418d91f8-a952-46d8-b5ce-ecafe7b851dfstatus: experimentaldescription: |  Detects the command lines MITRE's AN0411 names for data destruction — recursive  quiet deletes, cipher's free-space wipe, SDelete overwrites and forced recursive  Remove-Item. Every selection matches on `CommandLine` alone so the rule is a  single-field OR that all backends render, and the flag combinations use  `contains|all` because operators reorder switches freely. The analytic's actual  discriminator is volume — MITRE's VolumeThreshold and TimeWindow knobs count  unique files destroyed by one process — which Sigma cannot express, so this rule  fires on a single destructive invocation and the burst has to be judged by the  analyst or a downstream aggregation.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0146, 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/T1485  - https://attack.mitre.org/detectionstrategies/DET0146author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.impact  - attack.t1485logsource:  category: process_creation  product: windowsdetection:  selection_del:    CommandLine|contains|all:      - 'del '      - '/s'      - '/q'  selection_rmdir:    CommandLine|contains|all:      - 'rmdir '      - '/s'      - '/q'  selection_cipher_wipe:    CommandLine|contains|all:      - 'cipher'      - '/w'  selection_sdelete:    CommandLine|contains:      - 'sdelete.exe'      - 'sdelete64.exe'  selection_powershell_purge:    CommandLine|contains|all:      - 'Remove-Item'      - '-Recurse'      - '-Force'  condition: 1 of selection*falsepositives:  - "Build, packaging and deployment scripts that clear an output directory with \\\"rmdir /s /q\\\" or \\\"Remove-Item -Recurse -Force\\\" on every run. These are the highest-volume match by a wide margin and are best separated by the TargetFilename thinking behind MITRE's tuning knob — scope the path, since a build tree is not %System32%, Documents or a database directory."  - "Disk-hygiene and decommissioning routines — \\\"cipher /w\\\" run by an approved sanitisation job before a machine is reimaged or returned, and SDelete used by administrators to shred a specific file. Both are genuine secure-overwrite activity, which is why ProcessCommandLine alone cannot separate them from a wiper; the operator identity and the scheduled window are what distinguish them."  - "Installer and uninstaller cleanup, which routinely issues quiet recursive deletes against %TEMP% and its own program directory during a normal software servicing window."  - "Log and cache rotation tasks that call \\\"forfiles\\\" or a cmd one-liner ending in \\\"del /s /q\\\" against an application log directory on a fixed schedule."level: medium

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where ((ProcessCommandLine contains "del " and ProcessCommandLine contains "/s" and ProcessCommandLine contains "/q") or (ProcessCommandLine contains "rmdir " and ProcessCommandLine contains "/s" and ProcessCommandLine contains "/q") or (ProcessCommandLine contains "cipher" and ProcessCommandLine contains "/w") or (ProcessCommandLine contains "sdelete.exe" or ProcessCommandLine contains "sdelete64.exe") or (ProcessCommandLine contains "Remove-Item" and ProcessCommandLine contains "-Recurse" and ProcessCommandLine contains "-Force"))

Splunk · SPL

Run this as a search.

index=* ((CommandLine="*del *" AND CommandLine="*/s*" AND CommandLine="*/q*") OR (CommandLine="*rmdir *" AND CommandLine="*/s*" AND CommandLine="*/q*") OR (CommandLine="*cipher*" AND CommandLine="*/w*") OR (CommandLine="*sdelete.exe*" OR CommandLine="*sdelete64.exe*") OR (CommandLine="*Remove-Item*" AND CommandLine="*-Recurse*" AND CommandLine="*-Force*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.command_line) LIKE "*del *" AND TO_LOWER(process.command_line) LIKE "*/s*" AND TO_LOWER(process.command_line) LIKE "*/q*") OR (TO_LOWER(process.command_line) LIKE "*rmdir *" AND TO_LOWER(process.command_line) LIKE "*/s*" AND TO_LOWER(process.command_line) LIKE "*/q*") OR (TO_LOWER(process.command_line) LIKE "*cipher*" AND TO_LOWER(process.command_line) LIKE "*/w*") OR (TO_LOWER(process.command_line) LIKE "*sdelete.exe*" OR TO_LOWER(process.command_line) LIKE "*sdelete64.exe*") OR (TO_LOWER(process.command_line) LIKE "*remove-item*" AND TO_LOWER(process.command_line) LIKE "*-recurse*" AND TO_LOWER(process.command_line) LIKE "*-force*"))

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="CommandLine" type="pcre2">(?i)((?=.*(?:del ))(?=.*(?:/s))(?=.*(?:/q)).*|(?=.*(?:rmdir ))(?=.*(?:/s))(?=.*(?:/q)).*|(?=.*(?:cipher))(?=.*(?:/w)).*|(sdelete\.exe|sdelete64\.exe)|(?=.*(?:Remove-Item))(?=.*(?:-Recurse))(?=.*(?:-Force)).*)</field>    <description>Recursive file deletion or secure-overwrite command line</description>    <mitre>      <id>T1485</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.