Partition-table wipe utility invoked on Linux
Implements the tool-invocation leg of AN0828 on auditd: execution of one of three non-interactive utilities capable of destroying a partition table in a single command — sgdisk, sfdisk, wipefs. The device-path leg that used to sit alongside it has been removed. T1561.001 is already authored in this corpus on the identical logsource with a device selector (`name|startswith` on `/dev/sd`, `/dev/nvme`, `/dev/vd`, `/dev/xvd`, `/dev/hd`, `/dev/mmcblk`, `/dev/md`, `/dev/dm-`, `/dev/mapper/` and `/dev/disk/`) that is a strict superset of the fifteen whole-disk nodes this rule used to enumerate, so every device-leg match here also raised that sibling rule and nothing on the event told the two techniques apart — a write to /dev/sda is equally consistent with a content wipe (.001) and a structure wipe (.002), and the offset that would distinguish them is not a field auditd exposes to Sigma. Keeping the device leg added alert volume, not discriminating power, so it is dropped and this rule now stands only on the coverage genuinely specific to Disk Structure Wipe: sgdisk, sfdisk and wipefs, whose purpose is the partition table rather than disk content, and which are disjoint from T1561.001's dd/shred/wipe/nwipe/scrub/blkdiscard/badblocks tool list. `dd`, `fdisk`, `gdisk`, `parted` and `cfdisk` stay excluded, as before: `dd` is too generic to select on its own name, and the interactive tools cannot be separated from provisioning work without arguments this feed does not supply on the same record as the binary. This leg has no argument gate, which is a real limitation and not just an unused knob: MITRE's log source for AN0828 names arguments as part of the observable ("writing to sector 0 or partition table"), but a raw auditd stream splits one execution into a SYSCALL record carrying `exe` and a separate EXECVE record carrying the arguments, so this selection — matching on `exe` alone — fires identically on a destructive call and on a read-only one. `sfdisk -l` and `sfdisk -d` dump the layout, `sgdisk -p` and `sgdisk --print` print the table, and bare `wipefs /dev/sda` only lists signatures — only `wipefs -a` erases them — and none of that is distinguished here. MITRE's `OffsetThreshold` knob is unreachable for the same reason a write predicate is: this leg observes process launch, never the bytes a syscall touched. The Windows arm AN0827 is not attempted, because Security 4673 carries only `SubjectUserName`, `ProcessName`, `PrivilegeList` and `Service`, and Sysmon `driver_load` carries only `ImageLoaded`, `Hashes` and `Signature` — neither has a field that could hold a `\.\PhysicalDrive` path. Prerequisite: auditd records no execve at all until an exec rule such as `-a always,exit -F arch=b64 -S execve -k exec` is loaded, with its b32 twin — without it this rule returns zero rows, and zero rows here reads as quiet when it actually means blind. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0297, 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=* (type="SYSCALL" AND (exe="*/sgdisk" OR exe="*/sfdisk" OR exe="*/wipefs"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (TO_LOWER(type) == "syscall" AND (TO_LOWER(exe) LIKE "*/sgdisk" OR TO_LOWER(exe) LIKE "*/sfdisk" OR TO_LOWER(exe) LIKE "*/wipefs"))
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,linux,"> <!-- 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 linux so this only evaluates relevant events. --> <field name="type" type="pcre2">(?i)^SYSCALL$</field> <field name="exe" type="pcre2">(?i)(/sgdisk$|/sfdisk$|/wipefs$)</field> <description>Partition-table wipe utility invoked on Linux</description> <mitre> <id>T1561.002</id> </mitre> </rule></group>
Sentinel · KQL
Run this as a search.
Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"product":"linux","service":"auditd"}), 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.