Unsecured Credentials: Container API T1552.007

Tactic: Credential Access

Adversaries may gather credentials via APIs within a containers environment. APIs in these environments, such as the Docker API and Kubernetes APIs, allow a user to remotely manage their container resources and cluster components.

Events covered

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

ProviderEventTitle
ESFexecProcess Execution (Notify)

Authoring guide

Patterns shared across the 24 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 (36 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
data_stream.dataset7eq 7kubernetes.audit_logs, azure.activitylogs, auditd_manager.auditd, azure.signinlogs
kubernetes.audit.objectRef.resource7eq 6, in 1secrets, configmaps, serviceaccounts
verb7eq 6, in 1get, list, create, delete, patch
EventType6eq 3, in 3get, list, ProcessRollup2, exec, exec_event
objectRef.resource6eq 6secrets, mutatingwebhookconfigurations, validatingwebhookconfigurations
src_ip4is_not_null 4
username4contains 4serviceaccount
kubernetes.audit.verb3in 2, eq 1create, get, delete, list
user3is_not_null 2, starts_with 1system\:node\:, system\:serviceaccount\:
aws::userAgent2contains 1, ends_with 1, is_not_null 1, starts_with 1Go-http, Python, curl
azure.activitylogs.operation_name2eq 2MICROSOFT.KUBERNETES/CONNECTEDCLUSTERS/LISTCLUSTERUSERCRE...
event.dataset2eq 2kubernetes.audit_logs
event.outcome2eq 1, in 1Success, success
kubernetes.audit.objectRef.subresource2eq 2exec, token
kubernetes.audit.requestURI2contains 1, eq 1, starts_with 1/api/v1/namespaces/default/secrets, /api/v1/namespaces/default/secrets?limit, /api/v1/namespaces/kube-system/secrets, command=

Top indicator values (185 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
kubernetes.audit.objectRef.resourceeq
secrets
56
objectRef.resourceeq
secrets
56
data_stream.dataseteq
kubernetes.audit_logs
436
data_stream.dataseteq
azure.activitylogs
234
usernamecontains
serviceaccount
424
verbeq
get
44
EventTypein
get
23
EventTypein
list
23
EventTypein
ProcessRollup2
1117
EventTypein
exec
1171
EventTypein
exec_event
1139
azure.activitylogs.operation_nameeq
MICROSOFT.KUBERNETES/CONNECTEDCLUSTERS/LISTCLUSTERUSERCREDENTIAL/ACTION
22
event.dataseteq
kubernetes.audit_logs
24
kubernetes.audit.verbin
get
27
kubernetes.audit.verbin
list
26
process_nameeq
curl
218
process_nameeq
wget
212
CommandLinewildcard
*http*//*/api/v1/configmaps*
1
CommandLinewildcard
*http*//*/api/v1/namespaces/*/secrets*
1
CommandLinewildcard
*http*//*/api/v1/pods*
1
CommandLinewildcard
*http*//*/api/v1/secrets*
1
CommandLinewildcard
*http*//*/apis/apps/v1/deployments*
1
CommandLinewildcard
*http*//*/apis/authorization.k8s.io/*
1
CommandLinewildcard
*http*//*/apis/rbac.authorization.k8s.io/*
1
Esql.executed_commandregex_match
.*(/var/run/secrets/|/etc/kubernetes/|/var/lib/kubelet/|/etc/shadow|/etc/pass...
1
Esql.timestamp_first_seenge
NOW() - 9
12
Esql.unique_credentialsge
3
1
EventTypeeq
get
1
EventTypeeq
list
1
EventTypeeq
opened-file
14

Exclusions (65 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
usernamein
aksService
4
usernamein
masterclient
4
usernamestarts_with
system:
4
kubernetes.audit.user.groupseq
system:serviceaccounts:ibm-csi
2
namespacein
gke-system
2
namespacein
kube-node-lease
2
namespacein
kube-public
2
namespacein
kube-system
2
resourcene
secrets
2
responseStatus.codege
1
2
responseStatus.codege
400
2
responseStatus.codele
16
2
userin
system:kube-controller-manager
2
Countryeq
United States
1
Esql.executed_commandregex_match
.*/etc/resolv\.conf.*
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 12 rules

Splunk 4 rules

Panther 4 rules