Stored business data file deleted by a process that does not own it
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 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
title: Stored business data file deleted by a process that does not own itid: 95361a8a-b91f-43e3-a3ef-f1eafc6f5a1bstatus: experimentaldescription: | 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.references: - https://attack.mitre.org/techniques/T1565/001 - https://attack.mitre.org/detectionstrategies/DET0193author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags: - attack.impact - attack.t1565.001logsource: category: file_delete product: windowsdetection: selection_stored_data: TargetFilename|endswith: - '.mdf' - '.ldf' - '.ndf' - '.mdb' - '.accdb' - '.pst' - '.ost' filter_owning_applications: Image|endswith: - '\sqlservr.exe' - '\sqlagent.exe' - '\sqlwriter.exe' - '\mysqld.exe' - '\postgres.exe' - '\outlook.exe' - '\msaccess.exe' condition: selection_stored_data and not filter_owning_applicationsfalsepositives: - "Database maintenance done by hand. A DBA detaching a database and deleting its .mdf and .ldf from Explorer, cmd.exe or PowerShell, or a developer resetting a local instance, matches precisely because the deleting image is a shell rather than the engine, and on a shared development server this is the most frequent source." - "Antivirus and EDR engines removing a file. A scheduled scan quarantining an infected .pst or .ost attachment store, or deleting a corrupted Access or SQL data file, deletes it under the scanner's own image, which is a non-owning process exactly like an attacker's shell." - "Mailbox cache and profile churn driven by something other than outlook.exe — profile migration tooling, a mail-archiving product clearing a stale .ost, or a user deleting an old .pst archive from Explorer." - "Installers and uninstallers. msiexec.exe and vendor setup programs remove bundled Access .mdb files and SQL Express data files during an upgrade, a repair run or a clean removal."level: mediumSentinel · 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.
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.