Web Service T1102

Tactic: Command & Control

Adversaries may use an existing, legitimate external Web service as a means for relaying data to/from a compromised system. Popular websites, cloud services, and social media acting as a mechanism for C2 may give a significant amount of cover due to the likelihood that hosts within a network are already communicating with them prior to a compromise. Using common services, such as those offered by Google, Microsoft, or Twitter, makes it easier for adversaries to hide in expected noise. Web service providers commonly use SSL/TLS encryption, giving adversaries an added level of protection.

Events covered

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

Authoring guide

Patterns shared across the 59 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 (61 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
DestinationHostname18contains 8, ends_with 7, starts_with 2, wildcard 2, eq 1, in 1, is_not_null 1, is_null 1.localto.net, .localtonet.com, tunnel.ap.ngrok.com, tunnel.au.ngrok.com, tunnel.eu.ngrok.com
process_name17eq 6, in 5, starts_with 4, contains 2, is_not_null 2, ne 1, wildcard 1node, python, curl, osascript, squid
host.os.type11eq 9, in 2
CommandLine10contains 8, in 2 tunnel , *--config*, *authtoken*, *http*, -config
EventType10eq 7, in 3exec, ProcessRollup2, exec_event, BrowserLaunchedToOpenUrl, Publish
Image9ends_with 8, eq 5, starts_with 4, contains 3, is_null 3, wildcard 1\appdata\local\discord\, \appdata\local\flock\, \appdata\local\google\chrome\application\chrome.exe, \brave.exe, \maxthon.exe
event.type7eq 7start
Initiated5eq 5true
dns.question.name5is_not_null 4, wildcard 3, in 1*.2miners.com, *.4shared.com, *.antpool.com, *.blob.core.windows.net, *.blob.storage.azure.net
DvcAction3eq 1, in 1, starts_with 11, 3, BLOCK_, NONE
EventID3eq 322, 4688
event.category3eq 3network, process
Domain2contains 2., 1gh.com, abcxyz.stream
EventMessage2contains 2possible webshell, suspicious connection
HTTP_Status_Code2eq 2200

Top indicator values (1054 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
7606
Imageends_with
\brave.exe
511
Imageends_with
\maxthon.exe
53
Imageends_with
\msedge.exe
514
Imageends_with
\msedgewebview2.exe
53
Imageends_with
\opera.exe
511
Imageends_with
\safari.exe
52
Imageends_with
\seamonkey.exe
53
Imageends_with
\vivaldi.exe
511
Imageends_with
\whale.exe
53
Imageends_with
\windowsapps\microsoftedge.exe
5
Initiatedeq
true
550
Imageeq
c:\program files (x86)\google\chrome\application\chrome.exe
4
Imageeq
c:\program files (x86)\internet explorer\iexplore.exe
4
Imageeq
c:\program files (x86)\microsoft\edge\application\msedge.exe
4
Imageeq
c:\program files (x86)\mozilla firefox\firefox.exe
4
Imageeq
c:\program files\google\chrome\application\chrome.exe
4
Imageeq
c:\program files\internet explorer\iexplore.exe
4
Imageeq
c:\program files\microsoft\edge\application\msedge.exe
4
Imageeq
c:\program files\mozilla firefox\firefox.exe
4
Imagestarts_with
c:\program files (x86)\microsoft\edgecore\
4
Imagestarts_with
c:\program files (x86)\microsoft\edgewebview\application\
4
Imagestarts_with
c:\program files\microsoft\edgecore\
4
process_namestarts_with
python
431
EventTypein
exec
3171
process_namein
node
311
CommandLinecontains
tunnel
23
CommandLinecontains
-config
23
CommandLinecontains
api.telegram.org
22
CommandLinein
*--config*
23

Exclusions (301 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
Imageends_with
\brave.exe
5
Imageends_with
\maxthon.exe
5
Imageends_with
\msedge.exe
5
Imageends_with
\msedgewebview2.exe
5
Imageends_with
\opera.exe
5
Imageends_with
\safari.exe
5
Imageends_with
\seamonkey.exe
5
Imageends_with
\vivaldi.exe
5
Imageends_with
\whale.exe
5
Imageends_with
\windowsapps\microsoftedge.exe
5
Imageeq
c:\program files (x86)\google\chrome\application\chrome.exe
4
Imageeq
c:\program files (x86)\internet explorer\iexplore.exe
4
Imageeq
c:\program files (x86)\microsoft\edge\application\msedge.exe
4
Imageeq
c:\program files (x86)\mozilla firefox\firefox.exe
4
Imageeq
c:\program files\google\chrome\application\chrome.exe
4

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 19 rules

Elastic 18 rules

Splunk 6 rules

Kusto 16 rules