{"source_checked_on":"2026-10-19","schema_version":1,"key":"enterprise/T1613","id":"T1613","name":"Container and Resource Discovery","domain":"enterprise","reviewed_on":"2026-09-28","source_url":"https://attack.mitre.org/techniques/T1613","source_file":{"file":"enterprise.json","url":"https://raw.githubusercontent.com/mitre-attack/attack-stix-data/20664a889568dce884a1dac0ec7b12ae3a199f51/enterprise-attack/enterprise-attack-20.0.json","sha256":"81113ba98afa2928f3dcff62022539f7ce30c315c32e14422f11ff95ce534352","bytes":55271014},"source_object_sha256":"c8699b505b95768a70b39d2b6030673595c911beaddc42024ec92d80fcd1a7ed","description":"Adversaries may attempt to discover containers and other resources that are available within a containers environment. Other resources may include images, deployments, pods, nodes, and other information such as the status of a cluster.\n\nThese resources can be viewed within web applications such as the Kubernetes dashboard or can be queried via the Docker and Kubernetes APIs.(Citation: Docker API)(Citation: Kubernetes API) In Docker, logs may leak information about the environment, such as the environment’s configuration, which services are available, and what cloud provider the victim may be utilizing. The discovery of these resources may inform an adversary’s next steps in the environment, such as how to perform lateral movement and which methods to utilize for execution. ","references":[{"source_name":"mitre-attack","url":"https://attack.mitre.org/techniques/T1613","external_id":"T1613"},{"source_name":"Docker API","description":"Docker. (n.d.). Docker Engine API v1.41 Reference. Retrieved March 31, 2021.","url":"https://docs.docker.com/engine/api/v1.41/"},{"source_name":"Kubernetes API","description":"The Kubernetes Authors. (n.d.). The Kubernetes API. Retrieved March 29, 2021.","url":"https://kubernetes.io/docs/concepts/overview/kubernetes-api/"}],"platforms":["Containers"],"environments":["containers"],"visibility":"source_mapped","visibility_note":null,"parent":null,"children":[],"telemetry":[{"id":"DC0091","name":"Container Enumeration","page":"telemetry/DC0091/","kind":"attack_component","category":"Container runtime","description":"Listing or inspection of container objects.","collection_focus":"Use authorized Docker API access auditing/instrumentation for list requests; a read-only inventory snapshot gives state but does not prove someone else enumerated containers.","providers":[{"name":"Docker Engine events","scope":"Daemon lifecycle events for containers and images; collect continuously.","source_id":"docker"},{"name":"Kubernetes API audit","scope":"Control-plane context in Kubernetes, not a replacement for runtime observations.","source_id":"k8s"}],"configuration":["Subscribe to the lab daemon event stream with filters for the relevant object/action; send it to a durable collector.","Record runtime/container ID, image digest, action, timestamp and host. Join orchestrator identities where available.","Use a protected collector connection. Docker socket access is privileged; never expose it publicly or grant it to the website."],"configuration_example":null,"required_fields":["actor","api_operation","scope","result"],"example":{"schema":"1200km.telemetry.example.v1","synthetic":true,"timestamp":"2026-09-27T12:00:00Z","telemetry_id":"DC0091","collector":"illustrative-lab-collector","observation":{"actor":"lab-reader","api_operation":"container_list","scope":"lab-daemon","result":"success"}},"example_note":"Project-normalized synthetic JSON, not a native provider log, captured event, attack verdict or validated detection. A parser/adapter is required for a real SIEM. Example names, IPs and values are fictional.","limitations":"Runtime event history is bounded and can be lost without continuous collection. Image tags are mutable; pin digests. A lifecycle event is not a full process or file audit.","sources":[{"id":"docker","title":"Docker engine event stream","url":"https://docs.docker.com/reference/cli/docker/system/events/"},{"id":"k8s","title":"Kubernetes audit policies and backends","url":"https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/"}],"association":"attack_component","anomaly_design":"Per workload image and namespace: rare process starts, unexpected image/privilege changes and new network relationships. Use workload/deployment identity, not short-lived container IDs alone."},{"id":"DC0037","name":"Pod Enumeration","page":"telemetry/DC0037/","kind":"attack_component","category":"Kubernetes","description":"Listing or retrieval of Pod resources through the Kubernetes API.","collection_focus":"Include list/get/watch for pods where relevant; retain actor, namespace, user-agent and audit stage. Watches can be long-lived.","providers":[{"name":"Kubernetes API audit","scope":"Who requested a resource action and how the API server handled it.","source_id":"k8s"},{"name":"Managed Kubernetes audit exports","scope":"Provider-managed equivalent when control-plane flags are not customer-configurable.","source_id":"k8s"}],"configuration":["Configure a lab audit policy and log/webhook backend, or the managed service audit export. Start with Metadata for the required verbs/resources and namespace.","Add narrowly scoped Request or RequestResponse only when bodies are required; secrets and tokens can leak into audit data.","Keep auditID, stage, user, verb, objectRef, sourceIPs and responseStatus. Correlate API requests with scheduler, kubelet or runtime state before asserting execution."],"configuration_example":null,"required_fields":["verb","resource","namespace","actor","response_code"],"example":{"schema":"1200km.telemetry.example.v1","synthetic":true,"timestamp":"2026-09-27T12:00:00Z","telemetry_id":"DC0037","collector":"illustrative-lab-collector","observation":{"verb":"list","resource":"pods","namespace":"lab","actor":"lab-reader","response_code":200}},"example_note":"Project-normalized synthetic JSON, not a native provider log, captured event, attack verdict or validated detection. A parser/adapter is required for a real SIEM. Example names, IPs and values are fictional.","limitations":"An API create request does not prove a container ran. Audit stage and response code matter. Pod logs and API audit logs serve different purposes.","sources":[{"id":"k8s","title":"Kubernetes audit policies and backends","url":"https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/"}],"association":"attack_component","anomaly_design":"Per service account and namespace: rare API verbs/resources, exec sessions and role-binding changes. Separate controllers, GitOps reconciliation and emergency operations."}],"detection":{"key":"enterprise/T1613","id":"T1613","name":"Container and Resource Discovery","domain":"enterprise","platforms":["Containers"],"environments":["containers"],"source_url":"https://attack.mitre.org/techniques/T1613","technique_page":"techniques/enterprise/T1613/","page":"detections/enterprise/T1613/","status":"rule_source_available","counts":{"sigma":1,"atlas_basic":1,"atlas_anomaly":0,"strategies":1,"analytics":1,"live_validated":0},"sigma_rules":[{"id":"597a7e84-187d-458b-9e4f-2f5a0e676711","title":"Kubernetes Potential Enumeration Activity","status":"experimental","level":"medium","logsource":{"product":"kubernetes","service":"audit"},"data_path":"data/detection-rules/597a7e84-187d-458b-9e4f-2f5a0e676711.json","source_url":"https://github.com/anpa1200/sigma/blob/b249e9683190cffdcaf188ccbfb90bf4759844e1/rules/application/kubernetes/audit/kubernetes_audit_potential_enumeration_activity.yml","author":"uniqu3-us3r","kind":"sigma"}],"atlas_basic":[{"id":"atlas-basic-t1613-1","technique_id":"T1613","title":"T1613 Container and Resource Discovery","kind":"basic","source_url":"https://1200km.com/anomaly-detection-atlas/attack-basic-detection-rule-catalog/#discovery","source_path":"docs/attack-basic-detection-rule-catalog.md","source_line":135,"pinned_source_url":"https://github.com/anpa1200/anomaly-detection-atlas/blob/e1f75007376022b2f596e413bea8612e514a5aa3/docs/attack-basic-detection-rule-catalog.md#L135","source_file_sha256":"396a87e3d8da74d170684c0f377fe5dc11cd1a486d4f2f89f7fbe94deaaa2a1e","source_row_sha256":"631c1066cefece0dd47783c04d71b958bcac461253356d8cf6d0ce6b36b1ba85","validation":"published_concept_not_executable_or_live_validated","logic":"COUNT(orchestrator_list_or_get_requests BY identity, 5m) >= threshold AND identity NOT_IN approved_cluster_admins -> ALERT","log_sources":[{"title":"Orchestrator Audit Logs","url":"https://1200km.com/anomaly-detection-atlas/security-log-source-taxonomy/#121-orchestrator-audit-logs"},{"title":"Orchestrator Control-Plane Component Logs","url":"https://1200km.com/anomaly-detection-atlas/security-log-source-taxonomy/#122-orchestrator-control-plane-component-logs"}]}],"atlas_anomaly":[],"anomaly_types":[],"strategies":[{"id":"DET0490","name":"Detection Strategy for Container and Resource Discovery","url":"https://attack.mitre.org/detectionstrategies/DET0490","stix_id":"x-mitre-detection-strategy--2f4449cb-0eec-4871-bff3-f846f12bec15","relationship_id":"relationship--56921b29-02bf-40c4-be2c-9ecd4d2a3ae8","description":"","analytics":[{"id":"AN1352","name":"Analytic 1352","guidance":"Detection of adversary attempts to enumerate containers, pods, nodes, and related resources within containerized environments. Defenders may observe anomalous API calls to Docker or Kubernetes (e.g., 'docker ps', 'kubectl get pods', 'kubectl get nodes'), unusual account activity against the Kubernetes dashboard, or unexpected queries against container metadata endpoints. These events should be correlated with user context and network activity to reveal resource discovery attempts.","url":"https://attack.mitre.org/detectionstrategies/DET0490#AN1352","platforms":["Containers"],"tuning":[{"field":"UserAllowList","description":"Defines which service accounts and admin roles are expected to perform discovery actions. Activity by non-allowlisted identities may indicate adversary discovery."},{"field":"TimeWindow","description":"Specifies correlation period (e.g., 10m) for linking multiple discovery attempts across API and daemon logs."},{"field":"PodQueryThreshold","description":"Defines threshold for number of pod/node enumeration requests by a single user. Excessive queries may indicate scanning activity."}],"log_sources":[{"component_id":"DC0037","component":"Pod Enumeration","name":"kubernetes:apiserver","channel":"list or get requests against pods, deployments, or nodes","platforms":["Containers"],"analytic_id":"AN1352","source_url":"https://attack.mitre.org/detectionstrategies/DET0490#AN1352","validation":"upstream_definition_not_locally_validated","component_page":"telemetry/DC0037/"},{"component_id":"DC0091","component":"Container Enumeration","name":"docker:daemon","channel":"docker ps, docker inspect, or docker images commands","platforms":["Containers"],"analytic_id":"AN1352","source_url":"https://attack.mitre.org/detectionstrategies/DET0490#AN1352","validation":"upstream_definition_not_locally_validated","component_page":"telemetry/DC0091/"}]}]}],"telemetry_references":[{"id":"DC0091","name":"Container Enumeration","tag":"Container Enumeration","page":"telemetry/DC0091/","kind":"attack_component"},{"id":"DC0037","name":"Pod Enumeration","tag":"Pod Enumeration","page":"telemetry/DC0037/","kind":"attack_component"}],"visibility":"source_mapped","visibility_note":null,"tool_references":[{"id":"S0683","name":"Peirates","page":"tools/S0683/","kind":"attack_tool","bases":["attack_uses"],"guides":[]}],"related_parent":null,"article_url":"https://1200km.com/articles/read/2026/2026-04-20-malicious-activity-as-a-statistical-signal-a-detection-engineering-analysis-of-anomaly-bas-90df8b6dea12/","validation":{"source_join":"exact_ids","sigma_yaml":"parsed","backend_compilation":"not_run","live_telemetry":"not_run","detection_execution":"not_run"}},"tools":[{"id":"S0683","name":"Peirates","page":"tools/S0683/","kind":"attack_tool","bases":["attack_uses"],"guides":[]}],"software":[{"id":"S0601","name":"Hildegard","url":"https://attack.mitre.org/software/S0601","kind":"malware","description":"[Hildegard](https://attack.mitre.org/software/S0601) has used masscan to search for kubelets and the kubelet API for additional running containers.(Citation: Unit 42 Hildegard Malware) ","relationship_id":"relationship--457ee5f7-ec8f-4990-bfe0-8cf0a6e70b1f","references":[{"source_name":"Unit 42 Hildegard Malware","description":"Chen, J. et al. (2021, February 3). Hildegard: New TeamTNT Cryptojacking Malware Targeting Kubernetes. Retrieved April 5, 2021.","url":"https://unit42.paloaltonetworks.com/hildegard-malware-teamtnt/"}]},{"id":"S0683","name":"Peirates","url":"https://attack.mitre.org/software/S0683","kind":"tool","description":"[Peirates](https://attack.mitre.org/software/S0683) can enumerate Kubernetes pods in a given namespace.(Citation: Peirates GitHub)","relationship_id":"relationship--09f92a2f-282d-484e-a3c9-b0fc603a1fb4","references":[{"source_name":"Peirates GitHub","description":"InGuardians. (2022, January 5). Peirates GitHub. Retrieved February 8, 2022.","url":"https://github.com/inguardians/peirates"}]},{"id":"S9041","name":"TeamPCP Cloud Stealer","url":"https://attack.mitre.org/software/S9041","kind":"malware","description":"[TeamPCP Cloud Stealer](https://attack.mitre.org/software/S9041) can identify Docker and Kubernetes environments for credentials.(Citation: Aqua Security Blog Trivy Compromise APR 2026)(Citation: Wiz TeamPCP KICS MAR 2026)","relationship_id":"relationship--45fa0f91-6a04-45e2-94fd-d058c57bcc7c","references":[{"source_name":"Aqua Security Blog Trivy Compromise APR 2026","description":"Aqua Team. (2026, April 1). Update: Ongoing Investigation and Continued Remediation. Retrieved July 1, 2026.","url":"https://www.aquasec.com/blog/trivy-supply-chain-attack-what-you-need-to-know"},{"source_name":"Wiz TeamPCP KICS MAR 2026","description":"McCarthy, R., Haughom, J., Read, B. (2026, March 23). KICS GitHub Action Compromised: TeamPCP Strikes Again in Supply Chain Attack. Retrieved July 1, 2026.","url":"https://www.wiz.io/blog/teampcp-attack-kics-github-action"}]},{"id":"S9042","name":"CanisterWorm","url":"https://attack.mitre.org/software/S9042","kind":"malware","description":"[CanisterWorm](https://attack.mitre.org/software/S9042) has performed environment fingerprinting to identify Kubernetes clusters.(Citation: Palo Alto TeamPCP MAR 2026) [CanisterWorm](https://attack.mitre.org/software/S9042) has also searched for Kubernetes pods using the command ` os.path.exists(\"/var/run/secrets/kubernetes.io/serviceaccount\") or \"KUBERNETES_SERVICE_HOST\" in os.environ `.(Citation: Aikido CanisterWorm MAR 2026)","relationship_id":"relationship--171a0e7e-7297-4954-83c7-727c45f7a220","references":[{"source_name":"Aikido CanisterWorm MAR 2026","description":"Eriksen, C. (2026, March 22). CanisterWorm Gets Teeth: TeamPCP's Kubernetes Wiper Targets Iran. Retrieved July 27, 2026.","url":"https://www.aikido.dev/blog/teampcp-stage-payload-canisterworm-iran"},{"source_name":"Palo Alto TeamPCP MAR 2026","description":"Unit 42. (2026, March 31). Weaponizing the Protectors: TeamPCP’s Multi-Stage Supply Chain Attack on Security Infrastructure. Retrieved July 1, 2026.","url":"https://unit42.paloaltonetworks.com/teampcp-supply-chain-attacks/"}]}],"actors":[{"id":"G0139","name":"TeamTNT","url":"https://attack.mitre.org/groups/G0139","kind":"intrusion-set","description":"[TeamTNT](https://attack.mitre.org/groups/G0139) has checked for running containers with <code>docker ps</code> and for specific container names with <code>docker inspect</code>.(Citation: Trend Micro TeamTNT) [TeamTNT](https://attack.mitre.org/groups/G0139) has also searched for Kubernetes pods running in a local network.(Citation: Cisco Talos Intelligence Group)","relationship_id":"relationship--40383884-c607-48ac-9522-b5b1c8e256a9","references":[{"source_name":"Cisco Talos Intelligence Group","description":"Darin Smith. (2022, April 21). TeamTNT targeting AWS, Alibaba. Retrieved August 4, 2022.","url":"https://blog.talosintelligence.com/teamtnt-targeting-aws-alibaba-2/"},{"source_name":"Trend Micro TeamTNT","description":"Fiser, D. Oliveira, A. (n.d.). Tracking the Activities of TeamTNT A Closer Look at a Cloud-Focused Malicious Actor Group. Retrieved September 22, 2021.","url":"https://documents.trendmicro.com/assets/white_papers/wp-tracking-the-activities-of-teamTNT.pdf"}]}],"mitigations":[{"id":"M1018","name":"User Account Management","url":"https://attack.mitre.org/mitigations/M1018","kind":"course-of-action","description":"Enforce the principle of least privilege by limiting dashboard visibility to only the required users. When using Kubernetes, avoid giving users wildcard permissions or adding users to the `system:masters` group, and use `RoleBindings` rather than `ClusterRoleBindings` to limit user privileges to specific namespaces.(Citation: Kubernetes RBAC)","relationship_id":"relationship--cbb40150-0414-4b36-a28b-f7d2088f535a","references":[{"source_name":"Kubernetes RBAC","description":"Kubernetes. (n.d.). Role Based Access Control Good Practices. Retrieved March 8, 2023.","url":"https://kubernetes.io/docs/concepts/security/rbac-good-practices/"}]},{"id":"M1030","name":"Network Segmentation","url":"https://attack.mitre.org/mitigations/M1030","kind":"course-of-action","description":"Deny direct remote access to internal systems through the use of network proxies, gateways, and firewalls.","relationship_id":"relationship--1d362b9d-300d-4081-bd42-ca57c892a331","references":[]},{"id":"M1035","name":"Limit Access to Resource Over Network","url":"https://attack.mitre.org/mitigations/M1035","kind":"course-of-action","description":"Limit communications with the container service to managed and secured channels, such as local Unix sockets or remote access via SSH. Require secure port access to communicate with the APIs over TLS by disabling unauthenticated access to the Docker API and Kubernetes API Server.(Citation: Docker Daemon Socket Protect)(Citation: Kubernetes API Control Access) In Kubernetes clusters deployed in cloud environments, use native cloud platform features to restrict the IP ranges that are permitted to access to API server.(Citation: Kubernetes Cloud Native Security) Where possible, consider enabling just-in-time (JIT) access to the Kubernetes API to place additional restrictions on access.(Citation: Microsoft AKS Azure AD 2023)","relationship_id":"relationship--b3e90252-cb18-4cd3-8faf-59d25a39bb46","references":[{"source_name":"Docker Daemon Socket Protect","description":"Docker. (n.d.). Protect the Docker Daemon Socket. Retrieved March 29, 2021.","url":"https://docs.docker.com/engine/security/protect-access/"},{"source_name":"Kubernetes Cloud Native Security","description":"Kubernetes. (n.d.). Overview of Cloud Native Security. Retrieved March 8, 2023.","url":"https://kubernetes.io/docs/concepts/security/overview/"},{"source_name":"Microsoft AKS Azure AD 2023","description":"Microsoft. (2023, February 27). AKS-managed Azure Active Directory integration. Retrieved March 8, 2023.","url":"https://learn.microsoft.com/en-us/azure/aks/managed-aad"},{"source_name":"Kubernetes API Control Access","description":"The Kubernetes Authors. (n.d.). Controlling Access to The Kubernetes API. Retrieved March 29, 2021.","url":"https://kubernetes.io/docs/concepts/security/controlling-access/"}]}],"candidates":[{"id":"ea2255df-d781-493b-9693-ac328f9afc3f","name":"Docker Container and Resource Discovery","platforms":["containers"],"method":"automated","executor":"sh","elevation_required":false,"dependency_count":2,"cleanup_defined":true,"review_status":"not_individually_reviewed","source_url":"https://github.com/redcanaryco/atomic-red-team/blob/388942adbd9641f4dfdcf079d7efe9a75ec0ac43/atomics/T1613/T1613.yaml","description":"Adversaries may attempt to discover containers and other resources that are available within a containers environment.","inputs":{},"dependencies":[{"description":"Verify Docker is installed."},{"description":"Verify Docker service is running."}],"source_definition_sha256":"493ba71e9ee9540d20c78f0a1cb5058317fa0b48b82a09e6fa5c1a1069e3f3e9"},{"id":"fc631702-3f03-4f2b-8d8a-6b3d055580a1","name":"Podman Container and Resource Discovery","platforms":["containers"],"method":"automated","executor":"sh","elevation_required":false,"dependency_count":2,"cleanup_defined":true,"review_status":"not_individually_reviewed","source_url":"https://github.com/redcanaryco/atomic-red-team/blob/388942adbd9641f4dfdcf079d7efe9a75ec0ac43/atomics/T1613/T1613.yaml","description":"Adversaries may attempt to discover containers and other resources that are available within a containers environment.","inputs":{},"dependencies":[{"description":"Verify Podman is installed."},{"description":"Verify Podman service is running."}],"source_definition_sha256":"5e0428e982f4b9b95b5e8248c2694ffc5d7c7019120f4560cfec9f954db267ca"}],"simulation":{"atomic_status":"documented_candidate","lab_execution":"not_run","browser_attack_runner":false,"prerequisites":"Use disposable lab hosts and test accounts, explicit target allowlists, a clean snapshot, bounded egress and a restore plan. Review every candidate and dependency before any execution.","scenario":null},"validation":{"source_identity":"checked_against_pinned_source","relationship_join":"exact_ids_no_inheritance","page_contract":"automated_checks_required","sensor_capture":"not_run","detection_backend":"not_run","adversary_simulation":"not_run","independent_incident_fact_check":"not_performed"},"technique_links":{"T1613":"/ttp-simulation/techniques/enterprise/T1613/"},"synthetic":{"schema":"1200km.ttp.collection-fixture.v1","synthetic":true,"technique_key":"enterprise/T1613","purpose":"Collection/parser contract exercise, NOT a positive example or detection of this TTP.","events":[{"schema":"1200km.telemetry.example.v1","synthetic":true,"timestamp":"2026-09-27T12:00:00Z","telemetry_id":"DC0091","collector":"illustrative-lab-collector","observation":{"actor":"lab-reader","api_operation":"container_list","scope":"lab-daemon","result":"success"}},{"schema":"1200km.telemetry.example.v1","synthetic":true,"timestamp":"2026-09-27T12:00:00Z","telemetry_id":"DC0037","collector":"illustrative-lab-collector","observation":{"verb":"list","resource":"pods","namespace":"lab","actor":"lab-reader","response_code":200}}]}}
