Application Layer Protocol: Web Protocols T1071.001

Tactic: Command & Control

Adversaries may communicate using application layer protocols associated with web traffic to avoid detection/network filtering by blending in with existing traffic. Commands to the remote system, and often the results of those commands, will be embedded within the protocol traffic between the client and server.

Events covered

13 catalog events are tagged with this technique by at least one rule.

Authoring guide

Patterns shared across the 107 rules above: which fields they filter on, what specific values they look for, and what they exclude. The catalog normalizes field names across vendors so Sigma's Image, Elastic's process.name, and Splunk's process_name collapse into one row. Each rule contributes at most once per row.

Fields filtered most (97 distinct)

The fields most rules look at when detecting this technique. The How column shows the operators authors use (eq, wildcard, regex_match, match) and how often each appears. Sample values are concrete examples to start from, not an exhaustive list.

FieldRulesHowSample values
EventType21eq 17, in 3, ne 1exec, proxylogs, ConnectionEvent, ProcessRollup2, exec_event
c-useragent20starts_with 9, eq 8, contains 5, ne 4, ends_with 3, wildcard 1null, Microsoft BITS/, (compatible;msie , Mozilla/, adlib/
process_name20eq 7, in 7, match 3, is_not_null 2, starts_with 2, wildcard 2, ends_with 1curl, bash, cmd.exe, nscurl, wget
event.type19eq 19start, creation, protocol
CommandLine18contains 15, ends_with 2, match 2, wildcard 2 --user-agent , -a , --accept-server-license-terms, .exe tunnel, /d /c
host.os.type14eq 14
Image13ends_with 11, eq 1, starts_with 1/curl, \cmd.exe, \curl.exe, /bash, /bin/lua
c-uri9contains 8, ends_with 2, eq 1, in 1, match 1, starts_with 1*/aux, */com1, */com2, .avi, .cab
sourcetype8eq 6, in 2cisco:sfw:estreamer, nginx:plus:access, nginx:plus:kv, suricata
event.category7in 4, eq 3network, network_traffic
process.args7eq 5, in 3, contains 2, match 2, wildcard 2, starts_with 1--output, *Fiddle.dlopen(*, *Fiddle::Function.new(*, *IO.popen(*, -*O*
DestinationHostname6ends_with 2, regex_match 2, contains 1, eq 1, in 1, is_not_null 1, starts_with 1.4shared.com, .aternos.me, .b-cdn.net, .bar, .beauty
EventID6eq 64688, 1, 15, 3, 4104
cs-host6ends_with 3, eq 3.acrobat.com, .adobe.com, .adobe.io, .com, .net
ParentCommandLine5contains 2, ends_with 2, ne 1 tunnel, .vscode-server, clawdbot, moltbot, openclaw

Top indicator values (1293 distinct)

Specific (field, operator, value) combinations the rules check for, ranked by how many rules under this technique use each one. The Corpus reach column counts how many rules across the entire catalog (any technique) check the same combination. High numbers point to widely-used indicators that are likely noisy on their own; combine them with another condition for useful signal. Blank means the combination is specific to rules under this technique. Click a value to expand the rules under this technique that use it.

FieldKindValueRules (here)Corpus reach
event.typeeq
start
18606
EventTypeeq
exec
7171
EventTypeeq
proxylogs
420
EventTypeeq
ConnectionEvent
39
process_namein
curl
527
process_namein
wget
319
c-useragentne
null
44
event.categoryin
network
415
event.categoryin
network_traffic
415
sourcetypeeq
cisco:sfw:estreamer
432
CommandLinecontains
--accept-server-license-terms
34
CommandLinecontains
code-server.cmd
33
CommandLinecontains
--user-agent
22
CommandLinecontains
-a
25
CommandLinecontains
.exe tunnel
22
CommandLinecontains
/d /c
22
CommandLinecontains
\servers\stable-
22
CommandLinecontains
internal-run
22
CommandLinecontains
service
25
CommandLinecontains
tunnel
22
CommandLinecontains
tunnel-service.log
22
EventTypein
ProcessRollup2
3117
EventTypein
exec
3171
EventTypein
exec_event
3139
EventTypein
start
3134
Imageends_with
/curl
322
data_stream.datasetin
network_traffic.http
34
data_stream.datasetin
network_traffic.tls
34
event.categoryeq
network
312
CommandLineends_with
.exe tunnel
22

Exclusions (316 distinct)

Field/operator/value combinations excluded by rules under this technique (top-level not() clauses), sorted by how many rules exclude each. These are the false-positive paths the community has learned to filter out. A new rule that ignores the high-count entries here will likely fire on the same noisy paths. Click a value to expand the rules under this technique that exclude it.

FieldKindValueRules excluding
dest_ipcidr_match
10.0.0.0/8
4
dest_ipcidr_match
127.0.0.0/8
4
dest_ipcidr_match
169.254.0.0/16
4
dest_ipcidr_match
172.16.0.0/12
4
dest_ipcidr_match
192.168.0.0/16
4
dest_ipcidr_match
192.0.0.0/24
2
dest_ipcidr_match
192.0.2.0/24
2
dest_ipcidr_match
192.88.99.0/24
2
dest_ipcidr_match
224.0.0.0/4
2
dest_ipcidr_match
240.0.0.0/4
2
dest_ipcidr_match
::1
2
dest_ipcidr_match
FE80::/10
2
dest_ipcidr_match
FF00::/8
2
TotalEventsgt
25
2
process.code_signature.trustedeq
true
2

Rules under this technique

Every rule in the catalog tagged with this technique, grouped by vendor. Click a rule title for its full predicates, exclusions, and indicators.

Platform (all)
Domain (all)

Sigma 42 rules

Elastic 30 rules

Splunk 18 rules

Kusto 17 rules