Skip to content

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

Siemphony’s repertoire

Database or ledger file created by a script host or LOLBin

Matches a file-create event where a database, ledger or embedded-store file is laid down by a scripting host, a signed-binary proxy or a transfer utility rather than by the engine that owns it, which is the "abnormal changes to structured data outside expected business process activity" half of AN0162. Read the scope narrowly: this is suspicious data-store file *creation*, not detection of records being altered in place. Sysmon EventID 11 fires on create and overwrite only, so a row edited through the application or through SQL produces nothing here, and a freshly dropped store is at least as consistent with T1074-style local staging as with manipulation meant to deceive — the rule cannot separate the two. The brief's EventID 2 (`file_change`) source sits closer to genuine in-place manipulation but is a different logsource and needs its own rule. It also stands in for the stored-data case at the parent level: this is really T1565.001 territory, and when a T1565.001 rule is authored the two should be revisited and merged, with the parent left to carry .002 (transmitted) and .003 (runtime), neither of which this logic touches. Both lists are assembled here: MITRE names the `MonitoredFilePaths` and `AuthorizedProcesses` knobs, and a site should replace the extension list with its own critical data formats and the process list with the services that are actually entitled to write them. The rule is written in the Sysmon EventID 11 vocabulary (`TargetFilename`, `Image`); the Security EventID 4663 feed the brief also maps onto `file_event` splits the same facts into `ObjectName` and `ProcessName`, so it needs a field mapping before a SACL on the data directory would buy anything. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0059, 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: Database or ledger file created by a script host or LOLBinid: e8c7777d-947b-4c81-b66b-99b383861226status: experimentaldescription: |  Matches a file-create event where a database, ledger or embedded-store file is  laid down by a scripting host, a signed-binary proxy or a transfer utility  rather than by the engine that owns it, which is the "abnormal changes to  structured data outside expected business process activity" half of AN0162.  Read the scope narrowly: this is suspicious data-store file *creation*, not  detection of records being altered in place. Sysmon EventID 11 fires on  create and overwrite only, so a row edited through the application or through  SQL produces nothing here, and a freshly dropped store is at least as  consistent with T1074-style local staging as with manipulation meant to  deceive — the rule cannot separate the two. The brief's EventID 2  (`file_change`) source sits closer to genuine in-place manipulation but is a  different logsource and needs its own rule. It also stands in for the  stored-data case at the parent level: this is really T1565.001 territory, and  when a T1565.001 rule is authored the two should be revisited and merged,  with the parent left to carry .002 (transmitted) and .003 (runtime), neither  of which this logic touches. Both lists are assembled here: MITRE names the  `MonitoredFilePaths` and `AuthorizedProcesses` knobs, and a site should  replace the extension list with its own critical data formats and the process  list with the services that are actually entitled to write them. The rule is  written in the Sysmon EventID 11 vocabulary (`TargetFilename`, `Image`); the  Security EventID 4663 feed the brief also maps onto `file_event` splits the  same facts into `ObjectName` and `ProcessName`, so it needs a field mapping  before a SACL on the data directory would buy anything.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0059, 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  - https://attack.mitre.org/detectionstrategies/DET0059author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.impact  - attack.t1565logsource:  category: file_event  product: windowsdetection:  selection_data:    TargetFilename|endswith:      - '.mdf'      - '.ldf'      - '.ndf'      - '.mdb'      - '.accdb'      - '.sqlite'      - '.sqlite3'      - '.db'      - '.dbf'      - '.gdb'      - '.qbw'  selection_process:    Image|endswith:      - '\powershell.exe'      - '\pwsh.exe'      - '\cmd.exe'      - '\wscript.exe'      - '\cscript.exe'      - '\mshta.exe'      - '\rundll32.exe'      - '\regsvr32.exe'      - '\certutil.exe'      - '\curl.exe'      - '\python.exe'      - '\pythonw.exe'      - '\notepad.exe'  condition: selection_data and selection_processfalsepositives:  - "Developer, build and automation hosts. There, Python and PowerShell create .db and .sqlite files as a matter of routine and this is the highest-volume match by a wide margin across the whole rule."  - "Backup, restore and migration windows: a scripted restore lays down .mdf and .ldf under a service account, and curl or PowerShell staging an .accdb or .mdb copy before a cutover matches the same way."  - "Endpoint protection and backup agents that quarantine and recreate a live store in place during on-access scanning, where the recreate step runs through a PowerShell or cmd wrapper rather than the agent binary itself."  - "Reporting and ETL jobs that regenerate an Access or dBase extract on a schedule for finance or BI teams, writing the file through cscript.exe or PowerShell on every cycle."  - "Application installers and first-run setup that seed an empty SQLite or Access store for a line-of-business tool, unpacked by a script wrapper rather than by the application itself."level: low

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 ".sqlite" or FolderPath endswith ".sqlite3" or FolderPath endswith ".db" or FolderPath endswith ".dbf" or FolderPath endswith ".gdb" or FolderPath endswith ".qbw") and (InitiatingProcessFolderPath endswith "\\powershell.exe" or InitiatingProcessFolderPath endswith "\\pwsh.exe" or InitiatingProcessFolderPath endswith "\\cmd.exe" or InitiatingProcessFolderPath endswith "\\wscript.exe" or InitiatingProcessFolderPath endswith "\\cscript.exe" or InitiatingProcessFolderPath endswith "\\mshta.exe" or InitiatingProcessFolderPath endswith "\\rundll32.exe" or InitiatingProcessFolderPath endswith "\\regsvr32.exe" or InitiatingProcessFolderPath endswith "\\certutil.exe" or InitiatingProcessFolderPath endswith "\\curl.exe" or InitiatingProcessFolderPath endswith "\\python.exe" or InitiatingProcessFolderPath endswith "\\pythonw.exe" or InitiatingProcessFolderPath endswith "\\notepad.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="*.sqlite" OR TargetFilename="*.sqlite3" OR TargetFilename="*.db" OR TargetFilename="*.dbf" OR TargetFilename="*.gdb" OR TargetFilename="*.qbw") AND (Image="*\\powershell.exe" OR Image="*\\pwsh.exe" OR Image="*\\cmd.exe" OR Image="*\\wscript.exe" OR Image="*\\cscript.exe" OR Image="*\\mshta.exe" OR Image="*\\rundll32.exe" OR Image="*\\regsvr32.exe" OR Image="*\\certutil.exe" OR Image="*\\curl.exe" OR Image="*\\python.exe" OR Image="*\\pythonw.exe" OR Image="*\\notepad.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 "*.sqlite" OR TO_LOWER(file.path) LIKE "*.sqlite3" OR TO_LOWER(file.path) LIKE "*.db" OR TO_LOWER(file.path) LIKE "*.dbf" OR TO_LOWER(file.path) LIKE "*.gdb" OR TO_LOWER(file.path) LIKE "*.qbw") AND (TO_LOWER(process.executable) LIKE "*\\\\powershell.exe" OR TO_LOWER(process.executable) LIKE "*\\\\pwsh.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cmd.exe" OR TO_LOWER(process.executable) LIKE "*\\\\wscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\cscript.exe" OR TO_LOWER(process.executable) LIKE "*\\\\mshta.exe" OR TO_LOWER(process.executable) LIKE "*\\\\rundll32.exe" OR TO_LOWER(process.executable) LIKE "*\\\\regsvr32.exe" OR TO_LOWER(process.executable) LIKE "*\\\\certutil.exe" OR TO_LOWER(process.executable) LIKE "*\\\\curl.exe" OR TO_LOWER(process.executable) LIKE "*\\\\python.exe" OR TO_LOWER(process.executable) LIKE "*\\\\pythonw.exe" OR TO_LOWER(process.executable) LIKE "*\\\\notepad.exe"))

Wazuh · XML rule

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

<group name="sigma,windows,file_event,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <rule id="100000" level="5">    <!-- 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$|\.sqlite$|\.sqlite3$|\.db$|\.dbf$|\.gdb$|\.qbw$)</field>    <field name="Image" type="pcre2">(?i)(\\powershell\.exe$|\\pwsh\.exe$|\\cmd\.exe$|\\wscript\.exe$|\\cscript\.exe$|\\mshta\.exe$|\\rundll32\.exe$|\\regsvr32\.exe$|\\certutil\.exe$|\\curl\.exe$|\\python\.exe$|\\pythonw\.exe$|\\notepad\.exe$)</field>    <description>Database or ledger file created by a script host or LOLBin</description>    <mitre>      <id>T1565</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.