Web Service: Bidirectional Communication T1102.002

Tactic: Command & Control

Adversaries may use an existing, legitimate external Web service as a means for sending commands to and receiving output from a compromised system over the Web service channel. Compromised systems may leverage popular websites and social media to host command and control (C2) instructions. Those infected systems can then send the output from those commands back over that Web service channel. The return traffic may occur in a variety of ways, depending on the Web service being utilized. For example, the return traffic may take the form of the compromised system posting a comment on a forum, issuing a pull request to development project, updating a document hosted on a Web service, or by sending a Tweet.

Events covered

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

Authoring guide

Patterns shared across the 19 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 (25 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
process_name9in 4, is_not_null 2, starts_with 2, eq 1, ne 1, wildcard 1curl, node, *.com, *.pif, aws
host.os.type7eq 6, in 1
CommandLine4contains 4api.telegram.org, -encodedcommand, configure, run, spawnclient
DestinationHostname4contains 1, in 1, is_null 1, starts_with 1, wildcard 1afdxtest.z01.azurefd.net, azurefd.net, calendar.app.google, eth-mainnet*, eth.*.com
event.type4eq 4start
EventType3in 2, eq 1ProcessRollup2, exec, exec_event, modification
Image3ends_with 2, wildcard 1/library/fonts/*, /library/graphics/*, /library/webserver/*, \runner.listener.exe, \runner.worker.exe
dns.question.name3is_not_null 3, wildcard 3*.2miners.com, *.4shared.com, *.antpool.com, *.blob.core.windows.net, *.blob.storage.azure.net
EventID2eq 222, 4688
RequestURL2contains 1, is_not_null 1graph.microsoft.com/v1.0/me/drive/root:/documents/data.tx..., graph.microsoft.com/v1.0/me/drive/root:/documents/respons...
process.code_signature.exists2eq 2false
process.code_signature.trusted2eq 2false
query2eq 2api.telegram.org
EfectiveCommand1regex_match 1regexEmpire
EventData1contains 1-encodedcommand, powershell.exe, powershell_ise.exe

Top indicator values (488 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
4606
CommandLinecontains
api.telegram.org
22
EventTypein
ProcessRollup2
2117
EventTypein
exec
2171
EventTypein
exec_event
2139
EventTypein
executed
288
EventTypein
process_started
274
dns.question.namewildcard
*.blob.core.windows.net
22
dns.question.namewildcard
*.blob.storage.azure.net
22
dns.question.namewildcard
*.blogspot.com
22
dns.question.namewildcard
*.cloud.es.io
22
dns.question.namewildcard
*.devtunnels.ms
22
dns.question.namewildcard
*.elastic-cloud.com
22
dns.question.namewildcard
*.ngrok.io
22
dns.question.namewildcard
*.onedrive.org
22
dns.question.namewildcard
*.portmap.*
22
dns.question.namewildcard
*.publicvm.com
22
dns.question.namewildcard
*.sharepoint.com
22
dns.question.namewildcard
*.supabase.co
22
dns.question.namewildcard
*.zulipchat.com
22
dns.question.namewildcard
*files.1drv.com
22
dns.question.namewildcard
*googleapis.com
22
dns.question.namewildcard
*hosting-profi.de
22
dns.question.namewildcard
*icp0.io
22
dns.question.namewildcard
*localtunnel.me
22
dns.question.namewildcard
*pagekite.me
22
dns.question.namewildcard
*up.freeo*.space
22
dns.question.namewildcard
?.top4top.io
22
dns.question.namewildcard
api.anonfile.com
22
dns.question.namewildcard
api.github.com
22

Exclusions (155 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
Imagewildcard
?:\program files (x86)\*.exe
2
Imagewildcard
?:\program files\*.exe
2
Imagewildcard
?:\users\*\appdata\local\bravesoftware\*\application\brave.exe
2
Imagewildcard
?:\users\*\appdata\local\google\chrome\application\chrome.exe
2
Imagewildcard
?:\users\*\appdata\local\programs\fiddler\fiddler.exe
2
Imagewildcard
?:\users\*\appdata\local\programs\opera*\opera.exe
2
Imagewildcard
?:\users\*\appdata\local\vivaldi\application\vivaldi.exe
2
Imagewildcard
?:\windows\system32\svchost.exe
2
process.code_signature.subject_nameeq
Island Technology Inc.
2
process.code_signature.subject_nameeq
Mozilla Corporation
2
process.code_signature.trustedeq
true
2
CommandLinein
* --single-argument*
1
CommandLinein
*-osint -url*
1
DestinationHostnamecontains
afdxtest.z01.azurefd.net
1
DestinationHostnamecontains
fp-afd.azurefd.net
1

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

Elastic 10 rules

Splunk 2 rules

Kusto 3 rules