Skip to content

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

Siemphony’s repertoire

Process opens the whole-disk raw device object bypassing partitions

Siemphony@siemphonymediumT1542.003unverified
AN0428 asks for "raw access to physical drives, modification of boot records (MBR/VBR), and suspicious file creation ... within the EFI System Partition (ESP)" across two Sysmon feeds. This rule is written against the first, EventID 9 (`raw_access_thread`) and matches `Device` on whichever of the two real whole-disk device objects the caller opened. The Windows disk class driver exposes the entire physical disk two ways: `\Device\HarddiskN\DRN`, reached through the `\\.\PhysicalDriveN` symbolic link that essentially every raw-disk tool actually calls — including the malware this technique is named for; NotPetya's MBR overwrite and `dd for Windows` both open `\\.\PhysicalDrive0`, which resolves to `\Device\Harddisk0\DR0` — and the legacy `\Device\HarddiskN\Partition0` alias, the reserved logical unit representing the same unpartitioned whole disk under the older per-disk partition naming. An earlier draft of this rule matched only the Partition0 alias, which a source review found is not the path real raw-disk-access tools take — that selector would validate clean and never fire on the primary case. Both are now matched; either one bypasses every filesystem and partition boundary a normal application respects, and sector 0 of that block is the MBR, so a process opening either device object is asking for exactly the access an MBR/VBR overwrite requires. Almost nothing on a running system has a legitimate reason to address a disk that way instead of through a drive letter or a specific partition, which is what makes this a reasonably tight single-event proxy for "about to touch the boot sectors" even though it cannot see whether a write actually followed. Two honesty points follow directly from what EventID 9 records. First, its own name is RawAccessRead — Sysmon emits it for raw *read* operations issued through the `\\.\` device path, not for writes, so this rule is watching the read that precedes or accompanies a sector edit (most MBR-writing tools open the device and read the existing sectors before patching them, or share one handle for both), not the write itself; a tool that opens the device write-only and never reads is invisible here. Second, this is a Sysmon feed and needs the event enabled in whatever configuration the host is running — a bare `sysmon -i` with no config captures everything, but several widely used community configs restrict EventID 9 to a short device or process allowlist to cut noise, and a bootkit dropper outside that allowlist produces silence that reads as "clean" rather than "not being watched." This rule does not attempt AN0428's second leg (Sysmon EventID 11, ESP file creation) — a different logsource category, so it cannot share this rule — or MITRE's `KnownGoodMBRHashes` and `ESPFileWhitelist` knobs, both hash/ allowlist comparisons lib/sigma has no operator for, or the Linux leg (AN0429, `auditd`/`syslog` writes to `/dev/sda`, `/dev/nvme0n1` or EFI mounts), a separate product and therefore a separate rule. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0150, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

The detection

The 3 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

Splunk · SPL

Run this as a search.

index=* (Device="*\\Partition0" OR Device="*\\DR*")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(Device) LIKE "*\\\\partition0" OR TO_LOWER(Device) LIKE "*\\\\dr*")

Wazuh · XML rule

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

<group name="sigma,windows,raw_access_thread,">  <!-- 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="Device" type="pcre2">(?i)(\\Partition0$|\\DR)</field>    <description>Process opens the whole-disk raw device object bypassing partitions</description>    <mitre>      <id>T1542.003</id>    </mitre>  </rule></group>

Sentinel · KQL

Run this as a search.

Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"category":"raw_access_thread","product":"windows"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL by hand. The Sigma source is on the first tab, unchanged.

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.