Cloud Service Discovery T1526

Tactic: Discovery

An adversary may attempt to enumerate the cloud services running on a system after gaining access. These methods can differ from platform-as-a-service (PaaS), to infrastructure-as-a-service (IaaS), or software-as-a-service (SaaS). Many services exist throughout the various cloud providers and can include Continuous Integration and Continuous Delivery (CI/CD), Lambda Functions, Entra ID, etc. They may also include security services, such as AWS GuardDuty and Microsoft Defender for Cloud, and logging services, such as AWS CloudTrail and Google Cloud Audit Logs.

Events covered

1 catalog event is tagged with this technique by at least one rule.

ProviderEventTitle
SysmonEvent ID 1Process creation

Authoring guide

Patterns shared across the 44 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 (92 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
sourcetype7eq 7aws:cloudwatchlogs:eks, azure:monitor:aad, aws:cloudtrail, google:gcp:pubsub:message, kube:objects:events
EventType6eq 3, in 3, ne 1AssumeRoleWithWebIdentity, AttachRolePolicy, Converse, ConverseStream, CreateAccessKey
data_stream.dataset6eq 5, in 1aws.cloudtrail, azure.activitylogs, azure.auditlogs, azure.graphactivitylogs, azure.signinlogs
Provider_Name5eq 3, in 2cloudtrail.amazonaws.com, dynamodb.amazonaws.com, bedrock.amazonaws.com, cloudfront.amazonaws.com, ec2.amazonaws.com
aws::userIdentity.type5eq 3, ne 2AWSService, AWSAccount, AssumedRole, IAMUser
aws::errorCode4eq 3, is_null 1AccessDenied, VpceAccessDenied
Message3eq 2, contains 1UserSignIn, unauthorized access attempt
aws::eventName3eq 1, in 1, starts_with 1ModifyDocumentPermission, PutConfigurationRecorder, PutDeliveryChannel, StartConfigurationRecorder, describe
category3eq 2, in 1MicrosoftGraphActivityLogs, NonInteractiveUserSignInLogs, kube-audit
event.outcome3eq 3success
user3ne 2, starts_with 1awsserviceroleforconfig, system:serviceaccount:, unknown
"user.username"2eq 2system:anonymous
ClientIp2is_not_null 2
aws::sessionCredentialFromConsole2is_null 2
aws::userAgent2eq 1, starts_with 1(azure|sharp|blood)(hound)/., Mozilla/5.0 (Windows NT 10.0; Win64; x64)...

Top indicator values (241 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
data_stream.dataseteq
aws.cloudtrail
4141
event.outcomeeq
success
3251
"user.username"eq
system:anonymous
22
EventTypein
DescribeInstances
22
EventTypein
GetCallerIdentity
22
EventTypein
ListBuckets
22
EventTypein
ListFunctions
22
EventTypein
ListKeys
22
EventTypein
ListRoles
22
EventTypein
ListUsers
22
Messageeq
UserSignIn
26
Provider_Namein
cloudtrail.amazonaws.com
22
Provider_Namein
dynamodb.amazonaws.com
22
Provider_Namein
ec2.amazonaws.com
22
Provider_Namein
iam.amazonaws.com
22
Provider_Namein
kms.amazonaws.com
22
Provider_Namein
lambda.amazonaws.com
22
Provider_Namein
rds.amazonaws.com
22
Provider_Namein
s3.amazonaws.com
22
Provider_Namein
sts.amazonaws.com
22
aws::errorCodeeq
AccessDenied
219
aws::userIdentity.typene
AWSService
25
sourcetypeeq
aws:cloudwatchlogs:eks
22
sourcetypeeq
azure:monitor:aad
247
Activeeq
true
168
AlertSeveritycontains
high
1
AlertSeveritycontains
medium
1
AppIdeq
51f81489-12ee-4a9e-aaae-a2591f45987d
1
Categoryeq
audit.security-events
15
CommandLinecontains
-group=all
1

Exclusions (34 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
eventCategoryne
NetworkActivity
3
eventTypene
AwsVpceEvent
3
ClientIpcidr_match
10.0.0.0/8
1
ClientIpcidr_match
127.0.0.0/8
1
ClientIpcidr_match
169.254.0.0/16
1
ClientIpcidr_match
172.16.0.0/12
1
ClientIpcidr_match
192.168.0.0/16
1
ClientIpstarts_with
127.
1
ClientIpstarts_with
::
1
ClientIpstarts_with
fe80
1
GCPUserUPNcontains
gserviceaccount.com
1
Labelscontains
synced
1
TI_ipEntitycidr_match
10.0.0.0/8
1
TI_ipEntitycidr_match
127.0.0.0/8
1
TI_ipEntitycidr_match
169.254.0.0/16
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 3 rules

Elastic 15 rules

Splunk 8 rules

Kusto 9 rules

Panther 9 rules