Process opens the whole-disk raw device object bypassing partitions
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 descriptionShow less
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.
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.