Skip to content

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

Siemphony’s repertoire

Process opens its own /proc/self/status, a common debugger-presence check

Siemphony@siemphonylowT1622unverified
AN1046 asks for access to `/proc/self/status` with attention to the `TracerPID` field, the standard Linux way of asking "is something tracing me" without calling `ptrace()` directly (a non-zero `TracerPID` means a debugger or strace-like tool is attached). This rule matches an auditd `PATH` record naming that exact path — the literal string a process passes to `open`/`openat` when it queries itself this way, since `/proc/self` is a kernel-resolved symlink to the caller's own PID and so appears verbatim in the syscall argument rather than as a numeric PID. It does not attempt to read `TracerPID` out of the file's contents: auditd's PATH record carries only the name that was opened, never the bytes subsequently read, so this rule can only place "something asked", not "and the answer was non-zero" — a benign self-check and a successful evasion look identical on this log source. The Windows leg AN1045 is not attempted at all: its only log source is Sysmon EventID 1 (process_creation), a launch record with no view into a running process's own calls, and `IsDebuggerPresent()`, `NtQueryInformationProcess()`, the PEB `BeingDebugged` flag and repeated `OutputDebugStringW()` calls MITRE describes are all in-process API calls that create no process and leave nothing on this channel — a selector built from those names would validate clean, render in four backends and never fire once, on any host, against any sample. The macOS leg AN1047 (`ptrace` with `PTRACE_TRACEME`) is not attempted either: its log source is `macos:unifiedlog`, which has no standardised Sigma field vocabulary anywhere in this corpus, the same blocker recorded against it for other techniques. A PATH record for this path requires auditd to already be watching the syscall that opened it; a static `-w` watch cannot target `/proc/self/status` by inode the way it can a real file, since `self` is a different symlink target for every calling process, so this needs a broad `-S openat` (or `open`) audit rule with `-F success=1` rather than a path watch. That is far higher-volume than a watch and is not present in any mainstream default auditd configuration; without it, an empty result means the telemetry is off, not that nothing checked for a debugger. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0371, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full description

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

Splunk · SPL

Run this as a search.

index=* (type="PATH" AND name="/proc/self/status")

Elastic · ES|QL

Run this as a search.

FROM logs-*| WHERE (TO_LOWER(type) == "path" AND TO_LOWER(name) == "/proc/self/status")

Wazuh · XML rule

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

<group name="sigma,linux,">  <!-- 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="type" type="pcre2">(?i)^PATH$</field>    <field name="name" type="pcre2">(?i)^/proc/self/status$</field>    <description>Process opens its own /proc/self/status, a common debugger-presence check</description>    <mitre>      <id>T1622</id>    </mitre>  </rule></group>

Sentinel · KQL

Run this as a search.

Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"product":"linux","service":"auditd"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL 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.

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.