Executable path uses RLO or trailing-space filename trick
AN0356's Linux leg names two masquerading mechanisms — dropping a renamed binary in an uncommon directory such as /tmp or /dev/shm, and "special characters in names (e.g., trailing space, Unicode RLO)" — joined to a cronjob or execution that follows shortly after. This rule takes only the second mechanism. The Unicode right-to-left override (U+202E) and a space inserted immediately before the final extension are both classic filename masquerades: RLO reverses the characters that follow it so a name built as `cod.exe<RLO>gnp.` displays as `.png.exe`-reversed-to-`.exe.png`, and a trailing space is the same trick worked by whitespace rather than a control character. Both are properties of the executed `Image` path itself, so a single auditd execve record carries the whole observable — no join or window is needed for this half of the analytic, unlike the directory-drop half. That half is deliberately not attempted: execution from /tmp or /dev/shm alone, with `ExecutionDelayWindow` removed because lib/sigma has no timeframe construct, is indistinguishable from the very large volume of legitimate temp-directory execution already producing false positives elsewhere in this corpus, and MITRE's own framing treats the short delay after file drop as what makes it suspicious, not the directory alone. This is `FilenameAnomalies`, MITRE's knob for "regex for Unicode/RLO/space abuse in filenames", populated here with those two specific constructions rather than a general anomaly score no field in this brief can compute. AN0355 (Windows) is not attempted: its single-event half — `OriginalFilenameMismatch` on a renamed LOLBIN — is the exact observable T1036.003 already publishes against Sysmon EventID 1, and re-authoring it here under a different technique ID would double-count the same signal rather than add coverage; its other half needs 7045 correlated to a prior file write within a `TimeWindow`, which is unsupported, and 7045 alone carries no PE-metadata field to test a mismatch against. AN0357 (macOS) is not attempted either: all three of its log sources — unifiedlog, EndpointSecurity, osquery — have no standardised Sigma field vocabulary, the same blocker recorded against these sources for T1027.005 and T1027.008; inventing field names for `InfoPlistDiscrepancy` would produce a rule that parses and renders in four backends while matching nothing. Prerequisite: auditd records no execve at all until a rule such as `-a always,exit -F arch=b64 -S execve -k exec` is loaded, which no mainstream distribution ships by default — until then this rule returns zero rows, and zero rows here means blind rather than quiet. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0127, 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
Sentinel · KQL
Run this as a search.
DeviceProcessEvents| where (FolderPath contains "" or FolderPath matches regex "(?i) \\.[A-Za-z0-9]{1,6}$")
Splunk · SPL
Run this as a search.
index=* | where (match(Image, "(?i)") OR match(Image, " \\.[A-Za-z0-9]{1,6}$"))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="7"> <!-- Set <if_sid> to the decoder/base rule for linux so this only evaluates relevant events. --> <field name="Image" type="pcre2">(?i)(| \.[A-Za-z0-9]{1,6}$)</field> <description>Executable path uses RLO or trailing-space filename trick</description> <mitre> <id>T1036</id> </mitre> </rule></group>
Elastic · ES|QL
Run this as a search.
Elastic cannot express this construct. ES|QL RLIKE uses Lucene regexp syntax, which has no case-insensitive flag, and Sigma regexes are case-insensitive. Use |contains/|startswith/|endswith, or write the ES|QL 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.