Skip to content

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

Siemphony’s repertoire

Linux browser process spawning a shell or script interpreter

Matches the execution leg of AN0299 on Linux — a shell or scripting interpreter spawned directly by a browser process, the step MITRE describes as "shell or interpreter launched from browser process" after a spearphishing link is followed. This is deliberately not the Windows shape: T1204.001 already owns the DNS-resolution leg of the equivalent Windows analytic (browser resolving a high-risk TLD) and T1567.001 already owns DNS lookups to code-repository domains, and the Windows process_creation leg — a browser or document app spawning a LOLBIN child — is already published at the parent technique T1204 with the same process lists this rule would otherwise repeat. auditd's process_creation carries the real executable in `exe=`, so a Firefox or Chromium binary as ParentImage is a reliable anchor; MITRE's MonitoredBrowsers knob is used verbatim for the parent list, and the child list is authored here from common Linux shells and script interpreters a downloaded payload would invoke. PhishingIndicators (obfuscated/homograph URL regex) has no field to test against in a process-creation event and is not attempted. Requires an auditd rule arming the execve syscall, which is not present on a default install of any mainstream distribution. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0107, 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: Linux browser process spawning a shell or script interpreterid: fcc6ac09-df27-4d2f-8d4d-fecaa55764e2status: experimentaldescription: |  Matches the execution leg of AN0299 on Linux — a shell or scripting  interpreter spawned directly by a browser process, the step MITRE describes  as "shell or interpreter launched from browser process" after a spearphishing  link is followed. This is deliberately not the Windows shape: T1204.001  already owns the DNS-resolution leg of the equivalent Windows analytic  (browser resolving a high-risk TLD) and T1567.001 already owns DNS lookups to  code-repository domains, and the Windows process_creation leg — a browser or  document app spawning a LOLBIN child — is already published at the parent  technique T1204 with the same process lists this rule would otherwise repeat.  auditd's process_creation carries the real executable in `exe=`, so a Firefox  or Chromium binary as ParentImage is a reliable anchor; MITRE's  MonitoredBrowsers knob is used verbatim for the parent list, and the child  list is authored here from common Linux shells and script interpreters a  downloaded payload would invoke. PhishingIndicators (obfuscated/homograph URL  regex) has no field to test against in a process-creation event and is not  attempted. Requires an auditd rule arming the execve syscall, which is not  present on a default install of any mainstream distribution.  UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0107, 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/T1566/002  - https://attack.mitre.org/detectionstrategies/DET0107author: Siemphony pipeline (machine-derived from MITRE ATT&CK v19.2)date: 2026-08-16tags:  - attack.initial-access  - attack.t1566.002logsource:  category: process_creation  product: linuxdetection:  selection_browser_parent:    ParentImage|endswith:      - '/firefox'      - '/firefox-bin'      - '/chrome'      - '/google-chrome'      - '/chromium'      - '/chromium-browser'  selection_interpreter_child:    Image|endswith:      - '/bash'      - '/sh'      - '/dash'      - '/zsh'      - '/python3'      - '/python'      - '/perl'  condition: selection_browser_parent and selection_interpreter_childfalsepositives:  - "xdg-open and its downstream MIME handlers, which browsers on Linux invoke through /bin/sh on essentially every external link, mailto: link and downloaded-file open action — this is not specific to a malicious click and is the single largest source of matches on a desktop system."  - "Browser-extension native messaging hosts (password managers, ad blockers, enterprise policy agents) that communicate with the browser through a small wrapper script exec'd from the browser process, a normal part of how the native messaging protocol works rather than anything the user clicked."  - "The browser's own crash reporter and update helper, which are frequently thin shell scripts spawned directly by the running browser binary during a crash or a background update check."  - "Desktop-environment file-type dispatch invoked from the browser's download bar (\"Open Containing Folder\", \"Open With\") that hands off to a shell before launching the target application, independent of whether the downloaded file came from a phishing link."level: low

Sentinel · KQL

Run this as a search.

DeviceProcessEvents| where ((InitiatingProcessFolderPath endswith "/firefox" or InitiatingProcessFolderPath endswith "/firefox-bin" or InitiatingProcessFolderPath endswith "/chrome" or InitiatingProcessFolderPath endswith "/google-chrome" or InitiatingProcessFolderPath endswith "/chromium" or InitiatingProcessFolderPath endswith "/chromium-browser") and (FolderPath endswith "/bash" or FolderPath endswith "/sh" or FolderPath endswith "/dash" or FolderPath endswith "/zsh" or FolderPath endswith "/python3" or FolderPath endswith "/python" or FolderPath endswith "/perl"))

Splunk · SPL

Run this as a search.

index=* ((ParentImage="*/firefox" OR ParentImage="*/firefox-bin" OR ParentImage="*/chrome" OR ParentImage="*/google-chrome" OR ParentImage="*/chromium" OR ParentImage="*/chromium-browser") AND (Image="*/bash" OR Image="*/sh" OR Image="*/dash" OR Image="*/zsh" OR Image="*/python3" OR Image="*/python" OR Image="*/perl"))

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE ((TO_LOWER(process.parent.executable) LIKE "*/firefox" OR TO_LOWER(process.parent.executable) LIKE "*/firefox-bin" OR TO_LOWER(process.parent.executable) LIKE "*/chrome" OR TO_LOWER(process.parent.executable) LIKE "*/google-chrome" OR TO_LOWER(process.parent.executable) LIKE "*/chromium" OR TO_LOWER(process.parent.executable) LIKE "*/chromium-browser") AND (TO_LOWER(process.executable) LIKE "*/bash" OR TO_LOWER(process.executable) LIKE "*/sh" OR TO_LOWER(process.executable) LIKE "*/dash" OR TO_LOWER(process.executable) LIKE "*/zsh" OR TO_LOWER(process.executable) LIKE "*/python3" OR TO_LOWER(process.executable) LIKE "*/python" OR TO_LOWER(process.executable) LIKE "*/perl"))

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="ParentImage" type="pcre2">(?i)(/firefox$|/firefox-bin$|/chrome$|/google-chrome$|/chromium$|/chromium-browser$)</field>    <field name="Image" type="pcre2">(?i)(/bash$|/sh$|/dash$|/zsh$|/python3$|/python$|/perl$)</field>    <description>Linux browser process spawning a shell or script interpreter</description>    <mitre>      <id>T1566.002</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.