Deploy Container T1610

Tactic: Execution

Adversaries may deploy a container into an environment to facilitate execution or evade defenses. In some cases, adversaries may deploy a new container to execute processes associated with a particular image or deployment, such as processes that execute or download malware. In others, an adversary may deploy a new container configured without network rules, user limitations, etc. to bypass existing defenses within the environment. In Kubernetes environments, an adversary may attempt to deploy a privileged or vulnerable container into a specific node in order to Escape to Host and access other containers running on the node.

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 22 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 (40 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
event.type9eq 8, ne 1start, deletion
kubernetes.audit.objectRef.resource9eq 9, in 1pods, clusterrolebindings, clusterroles, configmaps
kubernetes.audit.verb9in 6, eq 3create, patch, update, get, list
EventType8in 6, eq 2exec, exec_event, ProcessRollup2, executed, start
data_stream.dataset8eq 8kubernetes.audit_logs
host.os.type8eq 7, in 1
kubernetes.audit.annotations.authorization_k8s_io/decision7eq 7allow
process.args7eq 6, starts_with 2, wildcard 2, in 1--privileged, run, *--as *, *--as-group*, *--as-uid*
process_name7eq 6, in 1, starts_with 1docker, kubectl, ., ctl, runc
kubernetes.audit.stage2eq 1, in 1ResponseComplete, ResponseStarted
process.interactive2eq 2true
username2contains 2serviceaccount
CommandLine1wildcard 1* nc *, * nc.traditional *, * ncat *
Image1wildcard 1./kubectl, /dev/shm/*, /home/*
TargetFilename1wildcard 1/etc/kubernetes/*.conf, /etc/kubernetes/manifests/*, /etc/kubernetes/pki/*

Top indicator values (221 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
pods
911
data_stream.dataseteq
kubernetes.audit_logs
836
event.typeeq
start
8606
kubernetes.audit.annotations.authorization_k8s_io/decisioneq
allow
723
EventTypein
exec
6171
EventTypein
exec_event
5139
EventTypein
start
5134
EventTypein
ProcessRollup2
4117
EventTypein
executed
488
EventTypein
process_started
474
kubernetes.audit.verbin
create
617
kubernetes.audit.verbin
patch
620
kubernetes.audit.verbin
update
619
process.argseq
run
55
process.argseq
--privileged
22
kubernetes.audit.verbeq
create
39
process_nameeq
docker
33
process_nameeq
kubectl
27
EventTypeeq
exec
2171
process.interactiveeq
true
242
usernamecontains
serviceaccount
224
CommandLinewildcard
* nc *
12
CommandLinewildcard
* nc.traditional *
1
CommandLinewildcard
* ncat *
1
CommandLinewildcard
* netcat *
1
CommandLinewildcard
*./.*
1
CommandLinewildcard
*/boot/*
1
CommandLinewildcard
*/dev/shm/*
13
CommandLinewildcard
*/dev/tcp/*
12
CommandLinewildcard
*/etc/init.d*
12

Exclusions (187 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
kubernetes.audit.requestObject.spec.containers.imagestarts_with
rancher/system-agent
5
kubernetes.audit.requestObject.spec.containers.imagestarts_with
docker.elastic.co/beats/elastic-agent
4
kubernetes.audit.requestObject.spec.containers.imagestarts_with
registry.crowdstrike.com/falcon-sensor
4
kubernetes.audit.requestObject.spec.containers.imagestarts_with
registry.k8s.io/sig-storage/csi-node-driver-registrar
4
kubernetes.audit.requestObject.spec.containers.imagestarts_with
quay.io/prometheus/node-exporter
3
kubernetes.audit.requestObject.spec.containers.imagestarts_with
amazon/aws-efs-csi-driver
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
gcr.io/datadoghq/agent
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
ghcr.io/kubereboot/kured
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
jenkins/inbound-agent
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
mcr.microsoft.com/oss/v2/kubernetes-csi
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
openebs/node-disk-manager
2
kubernetes.audit.requestObject.spec.containers.imagestarts_with
quay.io/calico
2
kubernetes.audit.requestObject.spec.containers.imagecontains
/sysdig/
3
kubernetes.audit.requestObject.spec.containers.imagecontains
eks/observability/cloudwatch-agent
2
kubernetes.audit.requestObject.spec.containers.imagecontains
elastic/elastic-agent
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)

Elastic 17 rules

Panther 5 rules