Skip to content

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

Siemphony’s repertoire

Junk data generated with dd, truncate or fallocate

The discriminator in every analytic under this strategy is MITRE's FileSizeThresholdMB knob, and no log source in this brief carries a file size: Sysmon EventID 11 emits `TargetFilename` and the writing process, Security 4663/4656/4670 emit the object name and the access mask, and process creation events carry none — Sigma has no numeric comparison in any case. So this rule takes the Linux execve leg of AN1529 and matches the padding *act* instead of the padded artefact: the three utilities that generate bulk junk, gated on the arguments that mean "produce or grow by a quantity" rather than any use of the tool. Two limits follow directly. Shell redirection is consumed by the shell, so `dd ... >> implant` never puts the append or the target in the execve argv — the junk source is visible, the file it landed in is not. And padding is usually done on the adversary's build host before delivery, or inside a compiled dropper, neither of which produces any event on the victim at all. Prerequisite: auditd ships no execve rule by default, so without an explicit -a always,exit -F arch=b64 -S execve there is no process_creation telemetry on the host at all and this rule returns zero rows regardless of what ran. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0553, 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: Junk data generated with dd, truncate or fallocateid: 28d1851f-e1ec-4b2e-8a56-4ba9fa256516status: experimentaldescription: |  The discriminator in every analytic under this strategy is MITRE's  FileSizeThresholdMB knob, and no log source in this brief carries a file size:  Sysmon EventID 11 emits `TargetFilename` and the writing process, Security  4663/4656/4670 emit the object name and the access mask, and process creation  events carry none — Sigma has no numeric comparison in any case. So this rule  takes the Linux execve leg of AN1529 and matches the padding *act* instead of  the padded artefact: the three utilities that generate bulk junk, gated on the  arguments that mean "produce or grow by a quantity" rather than any use of the  tool. Two limits follow directly. Shell redirection is consumed by the shell,  so `dd ... >> implant` never puts the append or the target in the execve argv  — the junk source is visible, the file it landed in is not. And padding is  usually done on the adversary's build host before delivery, or inside a  compiled dropper, neither of which produces any event on the victim at all.  Prerequisite: auditd ships no execve rule by default, so without an explicit  -a always,exit -F arch=b64 -S execve there is no process_creation telemetry on  the host at all and this rule returns zero rows regardless of what ran.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0553, 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/T1027/001  - https://attack.mitre.org/detectionstrategies/DET0553author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.defense-evasion  - attack.t1027.001logsource:  category: process_creation  product: linuxdetection:  selection_dd:    Image|endswith: '/dd'    CommandLine|contains:      - 'if=/dev/urandom'      - 'if=/dev/zero'      - 'if=/dev/random'  selection_truncate:    Image|endswith: '/truncate'    CommandLine|contains:      - '-s +'      - '--size=+'  selection_fallocate:    Image|endswith: '/fallocate'    CommandLine|contains: '-l'  condition: 1 of selection*falsepositives:  - "Swap file creation. Every cloud and distribution guide for adding swap starts with dd if=/dev/zero of=/swapfile, and provisioning and configuration-management runs repeat it on first boot of each host — this is the loudest match here by a wide margin and is the reason the level is low."  - "Disk throughput benchmarking and storage acceptance tests, where dd if=/dev/zero writing a large test file is the standard one-liner in ops runbooks and in monitoring or QA scripts."  - "Preallocation of database, VM and container disk images with fallocate -l, which is what the tool exists for and what qemu, LVM thin-pool and database initialisation scripts do routinely."  - "Zeroing or randomising a device before decommissioning, before shrinking a VM image or as part of a secure-erase script, using dd with /dev/zero or /dev/urandom against a whole disk or partition."  - "Test fixtures and quota testing that grow a sparse file in place with truncate -s +SIZE rather than writing real data."level: low

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where ((FolderPath endswith "/dd" and (ProcessCommandLine contains "if=/dev/urandom" or ProcessCommandLine contains "if=/dev/zero" or ProcessCommandLine contains "if=/dev/random")) or (FolderPath endswith "/truncate" and (ProcessCommandLine contains "-s +" or ProcessCommandLine contains "--size=+")) or (FolderPath endswith "/fallocate" and ProcessCommandLine contains "-l"))

Splunk · SPL

Run this as a search.

index=* ((Image="*/dd" AND (CommandLine="*if=/dev/urandom*" OR CommandLine="*if=/dev/zero*" OR CommandLine="*if=/dev/random*")) OR (Image="*/truncate" AND (CommandLine="*-s +*" OR CommandLine="*--size=+*")) OR (Image="*/fallocate" AND CommandLine="*-l*"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.executable) LIKE "*/dd" AND (TO_LOWER(process.command_line) LIKE "*if=/dev/urandom*" OR TO_LOWER(process.command_line) LIKE "*if=/dev/zero*" OR TO_LOWER(process.command_line) LIKE "*if=/dev/random*")) OR (TO_LOWER(process.executable) LIKE "*/truncate" AND (TO_LOWER(process.command_line) LIKE "*-s +*" OR TO_LOWER(process.command_line) LIKE "*--size=+*")) OR (TO_LOWER(process.executable) LIKE "*/fallocate" AND TO_LOWER(process.command_line) LIKE "*-l*"))

Wazuh · XML rule

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

<group name="sigma,linux,process_creation,">  <!-- Rule ids must be unique on your manager; 100000+ is the user range. -->  <!-- 3 rules: the Sigma condition ORs across different fields,       which one rule cannot express. Any one matching is a hit. -->  <rule id="100000" level="5">    <!-- Set <if_sid> to the decoder/base rule for linux so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)/dd$</field>    <field name="CommandLine" type="pcre2">(?i)(if=/dev/urandom|if=/dev/zero|if=/dev/random)</field>    <description>Junk data generated with dd, truncate or fallocate (1/3)</description>    <mitre>      <id>T1027.001</id>    </mitre>  </rule>   <rule id="100001" level="5">    <!-- Set <if_sid> to the decoder/base rule for linux so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)/truncate$</field>    <field name="CommandLine" type="pcre2">(?i)(-s \+|--size=\+)</field>    <description>Junk data generated with dd, truncate or fallocate (2/3)</description>    <mitre>      <id>T1027.001</id>    </mitre>  </rule>   <rule id="100002" level="5">    <!-- Set <if_sid> to the decoder/base rule for linux so this only evaluates relevant events. -->    <field name="Image" type="pcre2">(?i)/fallocate$</field>    <field name="CommandLine" type="pcre2">(?i)-l</field>    <description>Junk data generated with dd, truncate or fallocate (3/3)</description>    <mitre>      <id>T1027.001</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.