Detection rules › Splunk

Named Pipe Created (Sysmon)

Group by
_time, host
Source
github.com/anvilogic-forge/armory

This use case detects Sysmon events 17 and 18 which are generated when a named pipe is created or connected

MITRE ATT&CK coverage

TacticTechniques
Privilege EscalationT1055 Process Injection
StealthT1055 Process Injection
Command & ControlT1572 Protocol Tunneling

References

Event coverage

Rule body yaml

id: '20002.35589'
title: Named Pipe Created
description: 'This use case detects Sysmon events 17 and 18 which are generated when
  a named pipe is created or connected. - Threat Actor Association: Earth Estries
  - Software Association: Conti, Rhysida'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=17) OR TERM(EventCode=18)
  OR "<EventID>17<" OR "<EventID>18<") ("CreatePipe" OR "ConnectPipe") | table _time,
  host, user, process, process_*, parent_process_* | bin span=1s | stats values(*)
  as * by _time, host '
techniques:
- command-and-control:protocol tunneling
- defense-evasion:process injection
- privilege-escalation:process injection
technique_id: 
- T1572
- T1055
data_category:
- Windows Sysmon
references:
- https://redcanary.com/threat-detection-report/threats/cobalt-strike/
- https://www.youtube.com/watch?v=borfuQGrB8g&t=1783s

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=17) OR TERM(EventCode=18) OR "<EventID>17<" OR "<EventID>18<") ("CreatePipe" OR "ConnectPipe")

Stage 2: table

| table _time, host, user, process, process_*, parent_process_*

Stage 3: bucket

| bin span=1s

Stage 4: stats

| stats values(*) as * by _time, host

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
EventCodeeq
  • 17 corpus 4 (splunk 4)
  • 18 corpus 6 (splunk 4, chronicle 1, kusto 1)

Search terms

Bare-string tokens in the SPL search body. Splunk matches each token against _raw (the untyped raw event text) anywhere it appears, not against a specific field. These don't surface in the Indicators table because they aren't predicates on a known field.

StageTerm
1TERM
1TERM
1"<EventID>17<"
1"<EventID>18<"
1"CreatePipe"
1"ConnectPipe"