Identity-Led Cloud Abuse and Secret Discovery
An attacker has used stolen credentials harvested from unmanaged devices to bypass MFA via push fatigue, subsequently discovering cloud secrets and internal shares to exfiltrate data.
Based on research by Sekoia 2026-10-13 12 steps · 5 queries T1133 T1190 T1486 T1555
Brief
Why this hunt matters
In a recent post, Sekoia Digital Risk (https://www.sekoia.com/blog/with-sekoia-intelligence-we-gave-you-half-the-picture-heres-the-other-half) highlights the shift toward identity-led breaches. Attackers no longer rely solely on exploits; they use stolen credentials to walk through the front door. This hunt focuses on the 'other half' of that picture: what happens after a credential is stolen. We focus on the transition from an unmanaged device sign-in to the discovery of high-value secrets.
How the hunt flows
The first phase scopes the environment for risk. The query identifies users signing in from non-compliant or unmanaged devices using the hb_auth_signin surface. These sign-ins represent the highest risk for credential theft, as personal devices often lack the endpoint protections found on corporate assets.
Next, the hunt pivots to authentication patterns. It looks for MFA push fatigue, specifically targeting instances where multiple authentication failures are followed by a single success. We enrich this data using Hudson Rock domain exposure logs to see if the organization’s credentials are currently circulating in stealer markets.
Once a suspicious identity is identified, the hunt fans out to look for resource discovery. It examines the hb_cloud_api_activity surface for sensitive operations like GetSecretValue or AssumeRole. Simultaneously, it checks hb_smb_activity for access to administrative shares or backup folders. This correlation separates a simple login anomaly from a confirmed intrusion.
Finally, an agent evaluates the combined evidence. If the hunt connects a non-compliant sign-in and MFA fatigue to specific secret discovery, it triggers a recommendation for account suspension.
Blind spots
This hunt has two primary limitations. First, it requires visibility into device compliance; if the identity provider does not track device state, we cannot distinguish between managed and personal hardware. Second, it does not detect session cookie replay. If an attacker steals a valid session token, they bypass the authentication logs entirely, making their activity appear as a continuation of a valid session.
In this series
Steps
-
Identify non-compliant device sign-ins
Query · scopingScope the estate to users and hosts accessing corporate resources from devices that do not meet management policy.
reads hb_auth_signinsqlSELECT DISTINCT device_hostname, actor_user_name, provider, src_endpoint_ip, time FROM hb_auth_signin WHERE device_is_compliant = 'false' AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESCWhat a hit looks like. A list of hosts and users signing in from personal or unmanaged machines. Silence suggests high compliance.
-
MFA push fatigue patterns
Query · detection candidateDetect many authentication failures followed by a success for a single user, indicating a push bombing attack.
reads hb_auth_signinsqlSELECT actor_user_name, src_endpoint_ip, SUM(CASE WHEN activity_id = 5 THEN 1 ELSE 0 END) as failures, SUM(CASE WHEN activity_id = 1 THEN 1 ELSE 0 END) as successes FROM hb_auth_signin WHERE time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, src_endpoint_ip HAVING failures >= 5 AND successes > 0 ORDER BY failures DESCWhat a hit looks like. A high count of failures followed by success. This is the primary indicator for the Uber-style compromise.
-
Check organizational exposure
Query · enrichmentEnrich the hunt by checking if the organizational domain has existing stealer log exposure.
reads hudsonrock_search_by_domainsqlSELECT domain, total_stealers, last_employee_compromised FROM hudsonrock_search_by_domain WHERE domain = '{{target_domain}}'What a hit looks like. Confirmed stealer log exposure for the domain, increasing the likelihood that recent sign-ins involve stolen material.
-
Evaluate initial access risk
Agent triageWeigh compliance state, MFA patterns, and domain exposure to determine if an account was compromised.
-
Cloud secret discovery and exfiltration
Query · enrichmentSearch Cloud API logs for secret-reading operations or large data transfers.
reads hb_cloud_api_activitysqlSELECT actor_user_name, api_operation, resource_type, resource_name, bytes_out, time FROM hb_cloud_api_activity WHERE (instr(',' || '{{secret_api_ops}}' || ',', ',' || api_operation || ',') > 0 OR bytes_out > 50000000) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY bytes_out DESCWhat a hit looks like. A user reading access keys, assuming roles, or downloading large amounts of data from S3 or similar services.
-
Sensitive SMB share access
Query · enrichmentCorrelate identity access with discovery of backup files or credentials on administrative shares.
reads hb_smb_activitysqlSELECT actor_user_name, share_name, file_name, device_hostname, time FROM hb_smb_activity WHERE instr(',' || '{{sensitive_shares}}' || ',', ',' || LOWER(share_name) || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESCWhat a hit looks like. Users previously identified as high-risk accessing sensitive shares like ADMIN$ or backup locations.
-
Correlate intent and impact
Agent triageConnect anomalous initial access with specific discovery and exfiltration activity.
-
Route on verdict
DecisionDirect the hunt to containment or review based on the agent's findings.
-
Suspend compromised identity
Response actionImmediately halt the attacker's progress by suspending the user account.
-
Analyst remediation review
Analyst taskEnsure all traces of the identity-led breach are addressed.
-
Close out hunt
Analyst taskFinalize the hunt and record findings.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Initial Access via Stolen Identity T1133 · T1190 |
Yes | non-compliant-device-scoping, mfa-fatigue-patterns, hudson-rock-exposure |
| Internal Credential and Secret Discovery T1555 |
Yes | cloud-discovery-exfil, internal-smb-discovery |
| Lateral Movement to Cloud Services T1133 |
Yes | cloud-discovery-exfil, intent-correlation-agent |
| Data Exfiltration and Ransom Extortion T1486 |
Yes | cloud-discovery-exfil, route-on-verdict |
| Infostealer Harvesting from Personal Devices T1555 · T1195 |
Out of scope | Belongs to another part of the 'Introducing Sekoia Digital Risk: Track Identity-Led Breaches' series. |
Blind spots
- Needs EDR telemetry on personal devices. Attackers harvesting credentials from personal laptops are invisible until they use the credential against corporate endpoints. It would answer whether the initial infection happened on a device we do not manage. Remediation: Enforce managed-device-only policies in the IDP.
- Needs hb_auth_signin with session correlation IDs. Cookie replay bypasses MFA and auth failure logging entirely. It would answer whether a valid session cookie was replayed from a different IP. Remediation: Enable session token binding or IP-pinning.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Hostnames identified in the scoping step to focus internal discovery queries. |
secret_api_ops | list[string] | GetSecretValue, DescribeInstances, GetBucketPolicy, ListAccessKeys, AssumeRole | Cloud API operations associated with secret discovery. |
sensitive_shares | list[path] | \\*\admin$, \\*\c$, \\*\ipc$, \\*\backup, \\*\finance | Internal SMB shares typically targeted for credential or data discovery. |
target_domain | string | example.com | Primary domain to check for existing exposure in stealer logs. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Endpoint telemetry (hb_ surfaces) | endpoint | endpoint |
| Identity / sign-in telemetry | identity | identity |
Source
---
analysis: "A rule fires on MFA failures. This hunt connects those failures to compliance\
\ state, underground exposure, and subsequent cloud discovery\u2014providing the\
\ context required to justify account suspension."
blind_spots:
- id: unmanaged-device-visibility
owner: Endpoint Engineering
question: whether the initial infection happened on a device we do not manage
remediation: Enforce managed-device-only policies in the IDP.
requires: EDR telemetry on personal devices
risk: Attackers harvesting credentials from personal laptops are invisible until
they use the credential against corporate endpoints.
stage: identity-led-initial-access
- id: stolen-session-replay
owner: Identity Team
question: whether a valid session cookie was replayed from a different IP
remediation: Enable session token binding or IP-pinning.
requires: hb_auth_signin with session correlation IDs
risk: Cookie replay bypasses MFA and auth failure logging entirely.
stage: identity-led-initial-access
coverage:
- stage: identity-led-initial-access
status: covered
steps:
- non-compliant-device-scoping
- mfa-fatigue-patterns
- hudson-rock-exposure
- stage: internal-credential-discovery
status: covered
steps:
- cloud-discovery-exfil
- internal-smb-discovery
- stage: unauthorised-cloud-resource-access
status: covered
steps:
- cloud-discovery-exfil
- intent-correlation-agent
- stage: data-exfiltration-and-extortion
status: covered
steps:
- cloud-discovery-exfil
- route-on-verdict
- reason: 'Belongs to another part of the ''Introducing Sekoia Digital Risk: Track
Identity-Led Breaches'' series.'
stage: infostealer-credential-harvesting
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: Identity-led breaches avoid zero-days and exploits, making them invisible
to traditional vulnerability management. This hunt validates that even if credentials
are stolen, subsequent abuse is detected.
methodology: model-assisted
trigger: intel-report
hypothesis: An attacker has used stolen credentials harvested from unmanaged devices
to bypass MFA via push fatigue, subsequently discovering cloud secrets and internal
shares to exfiltrate data.
labels:
- hunt
- attack.t1133
- attack.t1190
- attack.t1555
- attack.t1486
- credential access
- impact
- initial access
- lateral movement
- hudsonrock
name: Identity-Led Cloud Abuse and Secret Discovery
parameters:
lookback_days:
default: '14'
description: Days of history to examine.
type: number
scope_hosts:
default: []
description: Hostnames identified in the scoping step to focus internal discovery
queries.
type: list[host]
secret_api_ops:
default:
- GetSecretValue
- DescribeInstances
- GetBucketPolicy
- ListAccessKeys
- AssumeRole
description: Cloud API operations associated with secret discovery.
from:
kind: article
observed: '2023-10-20'
ref: Uber/Okta breach reports
type: list[string]
sensitive_shares:
default:
- \\*\admin$
- \\*\c$
- \\*\ipc$
- \\*\backup
- \\*\finance
description: Internal SMB shares typically targeted for credential or data discovery.
from:
kind: manual
observed: '2024-05-20'
ref: Internal assessment
type: list[path]
target_domain:
default: example.com
description: Primary domain to check for existing exposure in stealer logs.
type: string
provenance:
authors:
- name: Huntbase hunt generation
org: huntbase.io
generated:
by: huntbase-hunt-generation
from: https://www.sekoia.com/blog/with-sekoia-intelligence-we-gave-you-half-the-picture-heres-the-other-half
gates:
- dry-run
- lint
- critic
model: hb_google/gemini-3-flash-preview
rationale: Start with users reporting 'false' for compliance in hb_auth_signin. Focus
on servers and administrative workstations first. Widen the domain check if high
exposure is found in Hudson Rock.
references:
- name: "Sekoia \u2014 With Sekoia Intelligence, we gave you half the picture"
url: https://www.sekoia.com/blog/with-sekoia-intelligence-we-gave-you-half-the-picture-heres-the-other-half
- name: "Mandiant \u2014 Snowflake Data Theft Investigation"
url: https://www.mandiant.com/resources/blog/unc5537-snowflake-data-theft-investigation
related:
- hunt: infostealer-credential-harvesting
reason: This hunt focuses on the use of credentials, not the initial malware infection.
relation: out-of-scope-alternative
- hunt: external-identity-exposure-credential-leaks
relation: follows
scenario:
stages:
- name: Infostealer Harvesting from Personal Devices
observables:
- Lumma malware
- RedLine malware
- Vidar malware
- Raccoon malware
- personal devices
- contractor laptops
- browser saved credentials
- session cookies
- Telegram channels
slug: infostealer-credential-harvesting
tactic: initial-access
techniques:
- T1555
- T1195
- name: Initial Access via Stolen Identity
observables:
- Snowflake login
- Okta service account
- valid session cookie replay
- MFA push notifications
- push notification fatigue
- non-compliant device sign-in
- external contractor credentials
slug: identity-led-initial-access
tactic: initial-access
techniques:
- T1133
- T1190
- name: Internal Credential and Secret Discovery
observables:
- hard-coded admin credentials
- internal network shares
- support case files
- customer session tokens
- browser-synced credentials
slug: internal-credential-discovery
tactic: credential-access
techniques:
- T1555
- name: Lateral Movement to Cloud Services
observables:
- AWS console access
- Google Workspace
- Slack workspace connections
- bug bounty systems
slug: unauthorised-cloud-resource-access
tactic: lateral-movement
techniques:
- T1133
- name: Data Exfiltration and Ransom Extortion
observables:
- 1.3 TB data theft
- Snowflake database records
- ShinyHunters extortion
- Ticketmaster listing
- hundreds of millions of records
slug: data-exfiltration-and-extortion
tactic: impact
techniques:
- T1486
summary: Threat actors leverage infostealer malware (Lumma, RedLine, Vidar) to harvest
credentials and session cookies from personal or contractor devices, which are
later sold via access brokers and Telegram channels. These stolen identities are
used to bypass MFA via session replay or fatigue attacks to gain access to corporate
cloud platforms like Snowflake, AWS, and Slack for large-scale data exfiltration
and extortion.
series:
index: 2
slug: introducing-sekoia-digital-risk-track-identity-led-breaches
title: 'Introducing Sekoia Digital Risk: Track Identity-Led Breaches'
total: 2
severity: high
targets:
analyst:
name: Tier-2 analyst
role: analyst
endpoint:
category: endpoint
name: Endpoint telemetry (hb_ surfaces)
telemetry:
- endpoint
hudsonrock:
category: siem
huntbase:
product: hudsonrock
name: hudsonrock
hunter:
agent: true
name: Hunt agent
identity:
category: identity
name: Identity / sign-in telemetry
telemetry:
- identity
tlp: clear
type: investigation
---
# Identity-Led Cloud Abuse and Secret Discovery
This hunt follows the transition from compromised identity to resource abuse, as seen in the Snowflake and Uber breaches. It begins by scoping users signing in from non-compliant devices, then examines authentication patterns for MFA fatigue and proxy usage. The second phase correlates these suspicious logons with secret discovery in cloud control planes and administrative SMB shares, connecting initial access to malicious intent.
## non-compliant-device-scoping
<!-- Identify non-compliant device sign-ins -->
Scope the estate to users and hosts accessing corporate resources from devices that do not meet management policy.
```sqlite target=identity role=scoping params=(lookback_days=lookback_days)
~~~yaml
expected: A list of hosts and users signing in from personal or unmanaged machines.
Silence suggests high compliance.
reads:
- actor_user_name
- device_hostname
- device_is_compliant
- provider
- src_endpoint_ip
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT DISTINCT device_hostname, actor_user_name, provider, src_endpoint_ip, time FROM hb_auth_signin WHERE device_is_compliant = 'false' AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESC
```
## early-access-parallel
<!-- Assess early stage access anomalies -->
parallel:
- → mfa-fatigue-patterns
- → hudson-rock-exposure
join: → early-stage-triage
## mfa-fatigue-patterns
<!-- MFA push fatigue patterns -->
Detect many authentication failures followed by a success for a single user, indicating a push bombing attack.
```sqlite target=identity role=detection-candidate params=(lookback_days=lookback_days)
~~~yaml
expected: A high count of failures followed by success. This is the primary indicator
for the Uber-style compromise.
reads:
- activity_id
- actor_user_name
- src_endpoint_ip
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT actor_user_name, src_endpoint_ip, SUM(CASE WHEN activity_id = 5 THEN 1 ELSE 0 END) as failures, SUM(CASE WHEN activity_id = 1 THEN 1 ELSE 0 END) as successes FROM hb_auth_signin WHERE time >= datetime('now', '-{{lookback_days}} days') GROUP BY actor_user_name, src_endpoint_ip HAVING failures >= 5 AND successes > 0 ORDER BY failures DESC
```
## hudson-rock-exposure
<!-- Check organizational exposure -->
Enrich the hunt by checking if the organizational domain has existing stealer log exposure.
```sqlite target=hudsonrock role=enrichment params=(target_domain=target_domain)
~~~yaml
expected: Confirmed stealer log exposure for the domain, increasing the likelihood
that recent sign-ins involve stolen material.
reads:
- domain
- last_employee_compromised
- total_stealers
silence: not_evidence_of_absence
source: hudsonrock_search_by_domain
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT domain, total_stealers, last_employee_compromised FROM hudsonrock_search_by_domain WHERE domain = '{{target_domain}}'
```
## early-stage-triage
<!-- Evaluate initial access risk -->
```agent target=hunter
cite: required
context:
- non-compliant-device-scoping
- mfa-fatigue-patterns
- hudson-rock-exposure
max_iterations: 6
objective: Determine if sign-in patterns indicate a successful account takeover via
credential theft or MFA fatigue.
success_criteria: A per-user verdict (malicious | suspicious | benign) citing MFA
success and exposure data.
tools:
- endpoint
- hudsonrock
- identity
```
## follow-on-fan-out
<!-- Check for post-compromise discovery -->
parallel:
- → cloud-discovery-exfil
- → internal-smb-discovery
join: → intent-correlation-agent
## cloud-discovery-exfil
<!-- Cloud secret discovery and exfiltration -->
Search Cloud API logs for secret-reading operations or large data transfers.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, secret_api_ops=secret_api_ops)
~~~yaml
expected: A user reading access keys, assuming roles, or downloading large amounts
of data from S3 or similar services.
reads:
- actor_user_name
- api_operation
- bytes_out
- resource_name
- resource_type
- time
silence: not_evidence_of_absence
source: hb_cloud_api_activity
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT actor_user_name, api_operation, resource_type, resource_name, bytes_out, time FROM hb_cloud_api_activity WHERE (instr(',' || '{{secret_api_ops}}' || ',', ',' || api_operation || ',') > 0 OR bytes_out > 50000000) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY bytes_out DESC
```
## internal-smb-discovery
<!-- Sensitive SMB share access -->
Correlate identity access with discovery of backup files or credentials on administrative shares.
```sqlite target=endpoint role=enrichment params=(lookback_days=lookback_days, scope_hosts=scope_hosts, sensitive_shares=sensitive_shares)
~~~yaml
expected: Users previously identified as high-risk accessing sensitive shares like
ADMIN$ or backup locations.
reads:
- actor_user_name
- device_hostname
- file_name
- share_name
- time
silence: not_evidence_of_absence
source: hb_smb_activity
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT actor_user_name, share_name, file_name, device_hostname, time FROM hb_smb_activity WHERE instr(',' || '{{sensitive_shares}}' || ',', ',' || LOWER(share_name) || ',') > 0 AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') ORDER BY time DESC
```
## intent-correlation-agent
<!-- Correlate intent and impact -->
```agent target=hunter
cite: required
context:
- early-stage-triage
- cloud-discovery-exfil
- internal-smb-discovery
max_iterations: 6
objective: Confirm if accounts identified in the first phase have engaged in unauthorized
secret discovery or large-scale exfiltration.
success_criteria: A final verdict citing the initial access anomaly and the cloud/share
activity that confirms malicious intent.
tools:
- endpoint
- hudsonrock
- identity
```
## route-on-verdict
<!-- Route on verdict -->
if~: "the intent-correlation-agent confirms a high-risk compromise with evidence of secret discovery or exfiltration" (confidence: high, judge=hunter)
then: → suspend-account
indeterminate: → analyst-remediation
unavailable: → analyst-remediation (blind_spot: unmanaged-device-visibility)
else: → hunt-close-out
## suspend-account
<!-- Suspend compromised identity -->
```action target=identity
~~~yaml
approval: required
~~~
Suspend the account(s) identified and revoke all active session tokens.
```
→ analyst-remediation
## analyst-remediation
<!-- Analyst remediation review -->
```manual target=analyst
Review Cloud API activity for AssumeRole operations and subsequent actions. Verify if any downloaded files contained sensitive PII.
```
→ hunt-close-out
## hunt-close-out
<!-- Close out hunt -->
```manual target=analyst
Record the usernames investigated and shares hit. Note any visibility gaps encountered.
```
→ 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, critic, then reviewed by a person.