GNU split invoked with a command-executing --filter argument
Matches execution of the coreutils split binary with a --filter argument, the mechanism MITRE's own technique text and its GTFO split citation name as the parent-level example of proxying a command through a trusted binary — split hands each output chunk to the filter program on stdin, so any command named there runs as its child. This is the one piece of AN0227 with a fixed, checkable shape; the rest of the analytic ("uncommon sequences or chained behaviors") and its AnomalyScore knob describe a statistical baseline no Sigma selector expresses. CommandLine here is reconstructed from auditd's a0..aN fields, and a --filter value containing a space (a shell redirection or pipe, the common benign form) lands in one argument auditd hex-encodes whole, so this rule reliably catches only the plain --filter=<binary> form GTFOBins itself documents, not a redirected one. It is also the only genuinely parent-level slice of the technique: the Windows binaries AN0226 names — rundll32.exe, msiexec.exe and regsvr32.exe — each already have a dedicated child sub-technique in the current ATT&CK v19.2 corpus (Rundll32 T1218.011, Msiexec T1218.007, Regsvr32 T1218.010, all confirmed against attack.mitre.org/techniques/T1218 and against this pipeline's own T1218.007/.009/.010/.011 scaffolds) and belong there, not here. That crosswalk is not supplied anywhere in this technique's own brief.json — it comes from checking the sibling techniques directly, not from anything in this scaffold — so treat it as authored, verifiable background rather than a MITRE-sourced field. PREREQUISITE — auditd does not record execve by default; this rule needs an armed watch rule such as `-a always,exit -F arch=b64 -S execve`, the same prerequisite the sibling T1071 rule in this corpus states. Without it, zero matches means the syscall was never audited, not that no proxying occurred. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0081, 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 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
Sentinel · KQL
Run this as a search.
DeviceProcessEvents| where (FolderPath endswith "/split" and (ProcessCommandLine contains "--filter=" or ProcessCommandLine contains "--filter "))
Splunk · SPL
Run this as a search.
index=* (Image="*/split" AND (CommandLine="*--filter=*" OR CommandLine="*--filter *"))Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (TO_LOWER(process.executable) LIKE "*/split" AND (TO_LOWER(process.command_line) LIKE "*--filter=*" OR TO_LOWER(process.command_line) LIKE "*--filter *"))
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. --> <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)/split$</field> <field name="CommandLine" type="pcre2">(?i)(--filter=|--filter )</field> <description>GNU split invoked with a command-executing --filter argument</description> <mitre> <id>T1218</id> </mitre> </rule></group>
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.