Skip to content

Siemphony is in beta and still being built. What ships today, and what does not.

Siemphony’s repertoire

Shell one-liner encodes data and pipes it to a network transfer tool

Siemphony@siemphonymediumT1132unverified
Matches AN0303's Linux observable: a single shell invocation that both names a binary-to-text or compression encoder and a network transfer tool, which is how a piped one-liner (`... | base64 | curl -d @- http://...`) actually surfaces on the process_creation category — auditd's own type=EXECVE record carries only one program's argv, so this rule matches the interpreter's own record, written when a caller passes the whole pipeline as a single string to `sh -c`/`bash -c`, as cron, a downloader stage, a configuration-management task or a webshell all commonly do. It cannot see the equivalent typed interactively at a live shell, or run from a script file invoked by path, where the encoder and the transfer tool are separate child processes with no shared field to join across. 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 — the silence means the syscall is not being recorded, not that the host is quiet. This is deliberately distinct from the technique's Windows sub-techniques T1132.001 and T1132.002, both scoped to PowerShell Script Block Logging and 4104 events that do not exist on Linux, and from T1048.001's openssl/gpg selectors, which match encryption keywords rather than encoding-and-transfer in one line. Of AN0303's two knobs, UserContext is the usable one here — scoping out build and orchestration service accounts is the tuning that removes most of the noise below — while TimeWindow assumes the encode and the transfer arrive as two correlatable events, which is exactly what this rule collapses into a single record and therefore cannot apply. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0108, 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

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where (((FolderPath endswith "/bash" or FolderPath endswith "/sh" or FolderPath endswith "/dash") and (ProcessCommandLine contains "base64" or ProcessCommandLine contains "gzip" or ProcessCommandLine contains "xxd" or ProcessCommandLine contains "uuencode" or ProcessCommandLine contains "b64encode")) and (ProcessCommandLine contains "curl" or ProcessCommandLine contains "wget" or ProcessCommandLine contains "netcat" or ProcessCommandLine contains " nc "))

Splunk · SPL

Run this as a search.

index=* (((Image="*/bash" OR Image="*/sh" OR Image="*/dash") AND (CommandLine="*base64*" OR CommandLine="*gzip*" OR CommandLine="*xxd*" OR CommandLine="*uuencode*" OR CommandLine="*b64encode*")) AND (CommandLine="*curl*" OR CommandLine="*wget*" OR CommandLine="*netcat*" OR CommandLine="* nc *"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (((TO_LOWER(process.executable) LIKE "*/bash" OR TO_LOWER(process.executable) LIKE "*/sh" OR TO_LOWER(process.executable) LIKE "*/dash") AND (TO_LOWER(process.command_line) LIKE "*base64*" OR TO_LOWER(process.command_line) LIKE "*gzip*" OR TO_LOWER(process.command_line) LIKE "*xxd*" OR TO_LOWER(process.command_line) LIKE "*uuencode*" OR TO_LOWER(process.command_line) LIKE "*b64encode*")) AND (TO_LOWER(process.command_line) LIKE "*curl*" OR TO_LOWER(process.command_line) LIKE "*wget*" OR TO_LOWER(process.command_line) LIKE "*netcat*" OR TO_LOWER(process.command_line) LIKE "* nc *"))

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)(/bash$|/sh$|/dash$)</field>    <field name="CommandLine" type="pcre2">(?i)(base64|gzip|xxd|uuencode|b64encode)</field>    <field name="CommandLine" type="pcre2">(?i)(curl|wget|netcat| nc )</field>    <description>Shell one-liner encodes data and pipes it to a network transfer tool</description>    <mitre>      <id>T1132</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.