Process opens its own /proc/self/status, a common debugger-presence check
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 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
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.
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.