Skip to content

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

Siemphony’s repertoire

Stored business data file deleted by a process that does not own it

Siemphony@siemphonymediumT1565.001unverified
Matches the deletion of a business-record file — a SQL Server data or log file, an Access database or an Outlook store — by any process other than the engine or client that owns it, which is the destructive arm of AN0555 and the only arm that produces a discrete event. The exclusion list is MITRE's AuthorizedProcesses knob populated here with the engines and clients that legitimately remove their own files; anything else unlinking one of these extensions is left to alert. Two limits decide what this can be read as. Backup archives are deliberately not in the extension list: deleting backups to block recovery is T1490, not this technique, and retention jobs pruning .bak files would have dominated the output. And Sysmon has no file-modification event, so the arm the technique is actually named for — a non-owning process writing false values into an existing database file in place — generates no record at all and is structurally invisible here. This rule therefore covers destruction of a record, never falsification of one, and a quiet result says nothing about tampering. File-delete telemetry is also absent from most shipped Sysmon configurations and is expensive to collect, so confirm EventID 23 or 26 is actually being gathered before reading silence as an absence. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0193, 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.

DeviceFileEvents| where ((FolderPath endswith ".mdf" or FolderPath endswith ".ldf" or FolderPath endswith ".ndf" or FolderPath endswith ".mdb" or FolderPath endswith ".accdb" or FolderPath endswith ".pst" or FolderPath endswith ".ost") and not ((InitiatingProcessFolderPath endswith "\\sqlservr.exe" or InitiatingProcessFolderPath endswith "\\sqlagent.exe" or InitiatingProcessFolderPath endswith "\\sqlwriter.exe" or InitiatingProcessFolderPath endswith "\\mysqld.exe" or InitiatingProcessFolderPath endswith "\\postgres.exe" or InitiatingProcessFolderPath endswith "\\outlook.exe" or InitiatingProcessFolderPath endswith "\\msaccess.exe")))

Splunk · SPL

Run this as a search.

index=* ((TargetFilename="*.mdf" OR TargetFilename="*.ldf" OR TargetFilename="*.ndf" OR TargetFilename="*.mdb" OR TargetFilename="*.accdb" OR TargetFilename="*.pst" OR TargetFilename="*.ost") AND NOT ((Image="*\\sqlservr.exe" OR Image="*\\sqlagent.exe" OR Image="*\\sqlwriter.exe" OR Image="*\\mysqld.exe" OR Image="*\\postgres.exe" OR Image="*\\outlook.exe" OR Image="*\\msaccess.exe")))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(file.path) LIKE "*.mdf" OR TO_LOWER(file.path) LIKE "*.ldf" OR TO_LOWER(file.path) LIKE "*.ndf" OR TO_LOWER(file.path) LIKE "*.mdb" OR TO_LOWER(file.path) LIKE "*.accdb" OR TO_LOWER(file.path) LIKE "*.pst" OR TO_LOWER(file.path) LIKE "*.ost") AND NOT ((TO_LOWER(process.executable) LIKE "*\\\\sqlservr.exe" OR TO_LOWER(process.executable) LIKE "*\\\\sqlagent.exe" OR TO_LOWER(process.executable) LIKE "*\\\\sqlwriter.exe" OR TO_LOWER(process.executable) LIKE "*\\\\mysqld.exe" OR TO_LOWER(process.executable) LIKE "*\\\\postgres.exe" OR TO_LOWER(process.executable) LIKE "*\\\\outlook.exe" OR TO_LOWER(process.executable) LIKE "*\\\\msaccess.exe")))

Wazuh · XML rule

Deploy to your manager — this is a rule, not a search.

<group name="sigma,windows,file_delete,">  <!-- 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="TargetFilename" type="pcre2">(?i)(\.mdf$|\.ldf$|\.ndf$|\.mdb$|\.accdb$|\.pst$|\.ost$)</field>    <field name="Image" negate="yes" type="pcre2">(?i)(\\sqlservr\.exe$|\\sqlagent\.exe$|\\sqlwriter\.exe$|\\mysqld\.exe$|\\postgres\.exe$|\\outlook\.exe$|\\msaccess\.exe$)</field>    <description>Stored business data file deleted by a process that does not own it</description>    <mitre>      <id>T1565.001</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.