← All hunts medium TLP:CLEAR Part 2 of 2

Cloud Workload Identity and Network Triage

An adversary uses over-permissioned cloud identities to compromise container workloads, establishing persistence through rare outbound network channels that bypass standard scanning.

Based on research by Microsoft 2026-09-20 9 steps · 3 queries T1071.001 T1078.004 T1190

Brief

Why this hunt

The Microsoft named a Leader in the Frost Radar: Cloud Workload Protection Platforms, 2026 report emphasizes that protection must move beyond static scanning. In cloud-native environments, the most dangerous threats involve the abuse of legitimate identities to modify running infrastructure. When an adversary gains control of a cloud identity with excessive permissions, they can bridge the gap from the control plane to the workload itself. This hunt identifies that transition by looking for the behavioral footprints left behind during and after such a compromise.

Scoping the container fleet

The first phase of the hunt defines the container attack surface. Rather than scanning every host in the environment, we use software inventory data to find machines running Docker, Kubelet, or Containerd. This scoping step is vital for performance and accuracy. It allows the analyst to narrow the focus to the specific infrastructure where containerized workloads reside. By identifying these hosts first, the hunt ensures that subsequent network stack-counting is relevant to the container orchestration layer.

Parallel investigation of identity and egress

Once we define the scope, the hunt executes two parallel queries to gather evidence. The first query focuses on the cloud control plane by searching authentication logs for successful sign-ins to providers like AWS, Azure, and GCP. We look for administrative users and anomalous source IPs. Simultaneously, the second query analyzes DNS activity across the previously identified container hosts. It uses stack-counting to find hostnames queried by very few hosts across the fleet. These rare domains are prime candidates for command-and-control infrastructure.

Correlating the risk

The core of this hunt is the triage and correlation phase. An automated agent or a manual analyst reviews the findings from both parallel branches. The objective is to find temporal or spatial overlaps. For instance, if an administrative account logs in from a new IP address shortly before a container host starts querying a rare domain, the risk of compromise is high. This pivot from identity to network behavior provides a unified view of the incident that isolated alerts might miss. By linking the who at the cloud level to the what at the network level, we can confirm post-exploitation activity.

What the hunt cannot see

No hunt is exhaustive. This playbook has two primary blind spots. First, it relies on DNS telemetry to find outbound connections. If an adversary uses hardcoded IP addresses for direct communication or employs sophisticated domain-fronting, these connections will not appear in rare DNS stacks. Second, there is a visibility gap in the orchestration plane. If an attacker uses stolen Kubernetes service account tokens to modify a workload without a traditional cloud provider login, the identity query will not capture the initial entry. Analysts should consider supplementing this hunt with Kubernetes audit log analysis for deeper coverage.

In this series

Steps

  1. Scope container workloads

    Query · scoping

    Find the hosts running container orchestration and runtime software to narrow the hunt's focus to workloads.

    reads hb_software_inventorysql
    SELECT DISTINCT device_hostname, package_name, vendor_name, package_version FROM hb_software_inventory WHERE (LOWER(package_name) LIKE '%docker%' OR LOWER(package_name) LIKE '%kube%' OR LOWER(package_name) LIKE '%containerd%') OR (LOWER(vendor_name) LIKE '%kubernetes%' OR LOWER(vendor_name) LIKE '%docker%')

    What a hit looks like. A list of hostnames associated with container infrastructure. Silence means no container engines were identified in the current inventory.

  2. Cloud identity sign-ins

    Query · enrichment

    Identify administrative sign-ins to cloud control planes that could precede workload modifications.

    reads hb_auth_signinsql
    SELECT actor_user_name, src_endpoint_ip, dst_endpoint_name, provider, time FROM hb_auth_signin WHERE status_id = 1 AND instr(',' || '{{cloud_providers}}' || ',', ',' || LOWER(provider) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days')

    What a hit looks like. Successful logins to AWS, Azure, or GCP consoles and APIs. Unusual source IPs for admin users are higher risk.

  3. Rare workload DNS activity

    Query · detection candidate

    Stack-count DNS queries across the workload fleet to find rare destinations indicative of C2 persistence.

    reads hb_dns_activitysql
    SELECT query_hostname, COUNT(DISTINCT device_hostname) AS hosts, COUNT(*) AS lookups, MIN(time) AS first_seen FROM hb_dns_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY query_hostname HAVING hosts <= 3 ORDER BY hosts ASC, lookups DESC

    What a hit looks like. DNS hostnames queried by only a few container workloads. Silence on this surface may indicate IP-direct communication.

  4. Triage workload risk

    Agent triage

    Correlate identity sign-in telemetry with rare network behavior to identify compromised accounts and workloads.

  5. Route on risk

    Decision

    Direct the response based on the agent's correlation verdict.

  6. Isolate and revoke

    Response action

    Neutralize the intrusion by revoking credentials and isolating the workload.

  7. Analyst review

    Analyst task

    Verify the findings to ensure legitimate administrative activities were not incorrectly flagged.

  8. Close out

    Analyst task

    Finalize the hunt and record gaps.

Coverage

Scenario coverage

StageCoveredHow, or why not
Abuse of Over-Permissioned Identities
T1078
Yes cloud-identity-signins, triage-risk
Outbound Command and Control
T1071
Yes rare-workload-dns, triage-risk
Exploit Public-Facing Application
T1190
Out of scope Belongs to another part of the 'Microsoft named a Leader in the Frost Radar™: Cloud Workload Protection Platforms, 2026' series.
Malicious Process Execution in Containers
T1059
Out of scope Belongs to another part of the 'Microsoft named a Leader in the Frost Radar™: Cloud Workload Protection Platforms, 2026' series.
Container Binary Drift
T1542
Out of scope Belongs to another part of the 'Microsoft named a Leader in the Frost Radar™: Cloud Workload Protection Platforms, 2026' series.

Blind spots

  • Needs TLS inspection or application-proxy logs. Encrypted C2 traffic over standard ports may appear as legitimate workload traffic to unknown external APIs. It would answer Is the rare outbound traffic legitimate API usage or encrypted C2?.
  • Needs hb_auth_signin enrichment with K8s API audit data. Adversaries can modify the orchestration plane (K8s API) without generating a standard cloud login event, leaving the initial compromise steps invisible. It would answer Did the identity modify K8s configurations or secrets?.

Parameters & data

Parameters

ParameterTypeDefaultWhat it is
cloud_providerslist[string]aws, azure, gcpCloud providers to monitor for control plane access.
lookback_daysnumber14Days of historical telemetry to examine.
scope_hostslist[host]Target hostnames found in the scoping step; leave empty to scan all cloud instances.

Telemetry

SourceCategoryTelemetry
Endpoint telemetry (hb_ surfaces)endpointendpoint
Identity / sign-in telemetryidentityidentity

Source

Download hunt.md Definition (JSON) An open hunt.md file; it runs anywhere that reads the format.
---
analysis: A single rule can find known C2 domains; this hunt stack-counts DNS lookups
  specifically for container hosts identified in inventory and correlates them with
  administrative identity activity.
blind_spots:
- id: encrypted-c2-blindspot
  question: Is the rare outbound traffic legitimate API usage or encrypted C2?
  requires: TLS inspection or application-proxy logs
  risk: Encrypted C2 traffic over standard ports may appear as legitimate workload
    traffic to unknown external APIs.
  stage: outbound-command-and-control
- id: missing-k8s-audit-logs
  question: Did the identity modify K8s configurations or secrets?
  requires: hb_auth_signin enrichment with K8s API audit data
  risk: Adversaries can modify the orchestration plane (K8s API) without generating
    a standard cloud login event, leaving the initial compromise steps invisible.
  stage: over-permissioned-identity-access
coverage:
- stage: over-permissioned-identity-access
  status: covered
  steps:
  - cloud-identity-signins
  - triage-risk
- stage: outbound-command-and-control
  status: covered
  steps:
  - rare-workload-dns
  - triage-risk
- reason: "Belongs to another part of the 'Microsoft named a Leader in the Frost Radar\u2122\
    : Cloud Workload Protection Platforms, 2026' series."
  stage: initial-access-exploit
  status: out_of_scope
- reason: "Belongs to another part of the 'Microsoft named a Leader in the Frost Radar\u2122\
    : Cloud Workload Protection Platforms, 2026' series."
  stage: runtime-container-execution
  status: out_of_scope
- reason: "Belongs to another part of the 'Microsoft named a Leader in the Frost Radar\u2122\
    : Cloud Workload Protection Platforms, 2026' series."
  stage: persistence-through-drift
  status: out_of_scope
guardrails:
  claims: no_unsupported
  evidence: citation_required
  missing_data: not_benign
  telemetry: untrusted
hunt:
  applicability: campaign-specific
  handoff: promote-to-detection
  justification: The 2026 Frost Radar highlights that a vulnerability is only a risk
    if it is running and reachable; this hunt correlates identity abuse with the runtime
    network telemetry needed to prioritize real intrusions.
  methodology: model-assisted
  trigger: intel-report
hypothesis: An adversary uses over-permissioned cloud identities to compromise container
  workloads, establishing persistence through rare outbound network channels that
  bypass standard scanning.
labels:
- hunt
- attack.t1078.004
- attack.t1071.001
- attack.t1190
name: Cloud Workload Identity and Network Triage
parameters:
  cloud_providers:
    default:
    - aws
    - azure
    - gcp
    description: Cloud providers to monitor for control plane access.
    from:
      kind: article
      observed: '2026-08-19'
      ref: msrc-blog-frost-radar-2026
    type: list[string]
  lookback_days:
    default: '14'
    description: Days of historical telemetry to examine.
    from:
      kind: manual
      observed: '2026-08-19'
      ref: hunt-standard-lookback
    type: number
  scope_hosts:
    default: []
    description: Target hostnames found in the scoping step; leave empty to scan all
      cloud instances.
    from:
      kind: manual
      observed: '2026-08-19'
      ref: analyst-defined-scope
    type: list[host]
provenance:
  authors:
  - name: Huntbase hunt generation
    org: huntbase.io
  generated:
    by: huntbase-hunt-generation
    from: https://www.microsoft.com/en-us/security/blog/2026/08/19/microsoft-named-a-leader-in-the-frost-radar-cloud-workload-protection-platforms-2026/
    gates:
    - dry-run
    - lint
    model: hb_google/gemini-3-flash-preview
rationale: Target workloads running Docker, Kubelet, or Containerd. Use the hostnames
  identified in the scoping step to narrow the network investigation in the parallel
  branches.
references:
- name: 'Microsoft named a Leader in the Frost Radar: Cloud Workload Protection Platforms,
    2026'
  url: https://www.microsoft.com/en-us/security/blog/2026/08/19/microsoft-named-a-leader-in-the-frost-radar-cloud-workload-protection-platforms-2026/
related:
- hunt: kubernetes-drift-analysis
  reason: Detection of execution within the container itself via runtime drift is
    handled by a separate hunt.
  relation: out-of-scope-alternative
- hunt: cloud-workload-runtime-exploitation-behavior
  relation: follows
scenario:
  stages:
  - name: Exploit Public-Facing Application
    observables:
    - Incoming HTTP requests to vulnerable web applications
    - Presence of known vulnerabilities on internet-exposed assets
    - Misconfigured cloud infrastructure services
    slug: initial-access-exploit
    tactic: initial-access
    techniques:
    - T1190
  - name: Malicious Process Execution in Containers
    observables:
    - Suspicious process launches in Kubernetes pods
    - eBPF-detected anomalous runtime events
    - Interactive shell execution within running containers
    slug: runtime-container-execution
    tactic: execution
    techniques:
    - T1059
  - name: Container Binary Drift
    observables:
    - Unauthorized binary changes mid-run (drift)
    - Modifications to files within running container layers
    - Unexpected process activity from modified binaries
    slug: persistence-through-drift
    tactic: defense-evasion
    techniques:
    - T1542
  - name: Abuse of Over-Permissioned Identities
    observables:
    - Authentication using high-privilege service accounts
    - Anomalous sign-ins to cloud control planes (Azure, AWS, GCP)
    - Identity-linked access to Kubernetes API and resources
    slug: over-permissioned-identity-access
    tactic: credential-access
    techniques:
    - T1078
  - name: Outbound Command and Control
    observables:
    - DNS queries from Kubernetes pods to external domains
    - Outbound network connections to suspicious IP addresses
    - High-volume data transfer from container workloads
    slug: outbound-command-and-control
    tactic: command-and-control
    techniques:
    - T1071
  summary: This campaign involves the exploitation of public-facing applications to
    gain initial access to cloud workloads, particularly Kubernetes environments.
    Once inside, attackers execute malicious processes, leverage over-permissioned
    identities, and establish persistence through binary drift and outbound command-and-control
    traffic.
series:
  index: 2
  slug: microsoft-named-a-leader-in-the-frost-radar-cloud-workload-protection-platforms-2026
  title: "Microsoft named a Leader in the Frost Radar\u2122: Cloud Workload Protection\
    \ Platforms, 2026"
  total: 2
severity: medium
targets:
  analyst:
    name: Tier-2 analyst
    role: analyst
  endpoint:
    category: endpoint
    name: Endpoint telemetry (hb_ surfaces)
    telemetry:
    - endpoint
  hunter:
    agent: true
    name: Hunt agent
  identity:
    category: identity
    name: Identity / sign-in telemetry
    telemetry:
    - identity
tlp: clear
type: investigation
---


# Cloud Workload Identity and Network Triage

This hunt identifies and correlates identity-based control plane abuse with network-level anomalies in running container environments. By combining software inventory to scope container hosts, cloud authentication logs to identify identity abuse, and stack-counted DNS activity to find rare command-and-control targets, the hunt provides a unified view of post-exploitation risk in cloud-native workloads.

## scope-container-workloads
<!-- Scope container workloads -->
Find the hosts running container orchestration and runtime software to narrow the hunt's focus to workloads.

```sqlite target=endpoint role=scoping
~~~yaml
expected: A list of hostnames associated with container infrastructure. Silence means
  no container engines were identified in the current inventory.
reads:
- device_hostname
- package_name
- vendor_name
- package_version
silence: not_evidence_of_absence
source: hb_software_inventory
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT DISTINCT device_hostname, package_name, vendor_name, package_version FROM hb_software_inventory WHERE (LOWER(package_name) LIKE '%docker%' OR LOWER(package_name) LIKE '%kube%' OR LOWER(package_name) LIKE '%containerd%') OR (LOWER(vendor_name) LIKE '%kubernetes%' OR LOWER(vendor_name) LIKE '%docker%')
```

## investigate-identity-and-egress
<!-- Investigate identity and egress -->
parallel:
- → cloud-identity-signins
- → rare-workload-dns
join: → triage-risk

## cloud-identity-signins
<!-- Cloud identity sign-ins -->
Identify administrative sign-ins to cloud control planes that could precede workload modifications.

```sqlite target=identity role=enrichment params=(lookback_days=lookback_days, cloud_providers=cloud_providers)
~~~yaml
expected: Successful logins to AWS, Azure, or GCP consoles and APIs. Unusual source
  IPs for admin users are higher risk.
reads:
- actor_user_name
- src_endpoint_ip
- dst_endpoint_name
- provider
- time
- status_id
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT actor_user_name, src_endpoint_ip, dst_endpoint_name, provider, time FROM hb_auth_signin WHERE status_id = 1 AND instr(',' || '{{cloud_providers}}' || ',', ',' || LOWER(provider) || ',') > 0 AND time >= datetime('now', '-{{lookback_days}} days')
```

## rare-workload-dns
<!-- Rare workload DNS activity -->
Stack-count DNS queries across the workload fleet to find rare destinations indicative of C2 persistence.

```sqlite target=endpoint role=detection-candidate params=(lookback_days=lookback_days, scope_hosts=scope_hosts)
~~~yaml
baseline:
  compare: first_seen
  window: '{{lookback_days}}d'
expected: DNS hostnames queried by only a few container workloads. Silence on this
  surface may indicate IP-direct communication.
prevalence:
  by: device_hostname
  key:
  - query_hostname
  rare_below: 3
reads:
- query_hostname
- device_hostname
- time
silence: not_evidence_of_absence
source: hb_dns_activity
verified: dry-run
verified_at: '2026-09-20'
~~~
SELECT query_hostname, COUNT(DISTINCT device_hostname) AS hosts, COUNT(*) AS lookups, MIN(time) AS first_seen FROM hb_dns_activity WHERE ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY query_hostname HAVING hosts <= 3 ORDER BY hosts ASC, lookups DESC
```

## triage-risk
<!-- Triage workload risk -->
```agent target=hunter
cite: required
context:
- cloud-identity-signins
- rare-workload-dns
max_iterations: 6
objective: Determine if any successful administrative sign-in originated from a source
  IP or occurred at a time that corresponds with the first appearance of a rare DNS
  destination from a container host. Assess if the over-permissioned account likely
  modified the workload.
success_criteria: A per-host and per-identity verdict of malicious | suspicious |
  benign, citing specific rows and timestamps.
tools:
- endpoint
- identity
```

## route-risk
<!-- Route on risk -->
if~: "the triage-risk verdict is malicious for at least one workload-identity pair" (confidence: high, judge=hunter)
then: → isolate-and-revoke
indeterminate: → analyst-review
unavailable: → analyst-review (blind_spot: encrypted-c2-blindspot)
else: → close-out

## isolate-and-revoke
<!-- Isolate and revoke -->
```action target=endpoint
~~~yaml
approval: required
~~~
Isolate the identified container host and revoke all active session tokens for the compromised cloud identity.
```
→ analyst-review

## analyst-review
<!-- Analyst review -->
```manual target=analyst
Review the cited rows from the triage agent. Verify if the rare DNS queries represent legitimate new application dependencies or known malicious domains.
```
→ close-out

## close-out
<!-- Close out -->
```manual target=analyst
Document the hosts and identities examined. Note any visibility gaps such as missing Kubernetes audit logs for future platform hardening.
```
→ end

Run it

Take this hunt into your environment.

Open it in Huntbase to run every step against your own connections, with Scout weighing the evidence and your analysts in command. Or take the open hunt.md file anywhere that reads the format.

Machine-drafted by huntbase-hunt-generation using hb_google/gemini-3-flash-preview, gated by dry-run, lint, then reviewed by a person.