External Identity Exposure and Credential Leaks
Adversaries are using corporate credentials harvested from unmanaged personal devices by infostealers to bypass authentication controls and gain initial access to cloud resources.
Based on research by Sekoia 2026-10-13 9 steps · 3 queries T1078.004 T1133 T1195 T1555
Brief
Why This Hunt Matters
High-profile intrusions, such as the 2024 Snowflake and CircleCI breaches, demonstrate that the perimeter now begins at the employee's home browser. Adversaries do not always need to exploit a zero-day when they can simply buy valid credentials. In the post Introducing Sekoia Digital Risk: Track Identity-Led Breaches, Sekoia highlights the necessity of monitoring the criminal "stealer" economy to complete the security picture.
How the Hunt Flows
The first phase identifies active corporate workstations. The query scans authentication logs to build a list of hostnames where corporate domain logons occur. This scoping ensures the hunt focuses on active identities rather than stale accounts.
Next, the hunt branches into two parallel paths. The first path establishes a behavioral baseline by stack-counting source IPs per user. It identifies rare authentication sources that deviate from the user's normal pattern. Simultaneously, the second path performs an enrichment lookup against Hudson Rock. This check identifies if corporate identities for the target domain have recently appeared in indexed stealer logs from families like RedLine or Lumma.
In the triage phase, an analyst or automated agent weighs the intersection of these two paths. The hunt flags users who show both external exposure in criminal markets and internal behavioral anomalies, such as a login from an IP never seen before in the environment. If the correlation holds, the hunt provides instructions to revoke active sessions and force a credential reset.
What the Hunt Cannot See
This hunt has two primary blind spots. First, it lacks visibility into the unmanaged endpoint. We can see the result of a credential theft, but we cannot see the initial infection on the user's personal machine or what other personal data was stolen. Second, there is a latency gap. A credential might be stolen and used by an adversary before it is indexed by external monitoring platforms. During this window, the hunt cannot rely on enrichment data to flag the identity.
How to Run the Hunt
This hunt is provided as an open hunt.md playbook. It is designed to be portable and imports directly into Huntbase or any runtime that supports the hunt.md standard. Because it relies on both internal logs and external API lookups, ensure your environment has the necessary integrations for authentication telemetry and Hudson Rock data.
In this series
Steps
-
Identify active corporate workstations
Query · scopingIdentify which workstations are actively recording corporate domain logons to scope the subsequent behavioral analysis.
reads hb_auth_signinsqlSELECT DISTINCT device_hostname FROM hb_auth_signin WHERE LOWER(actor_user_name) LIKE '%@{{target_domain}}' AND time >= datetime('now', '-{{lookback_days}} days')What a hit looks like. A list of hostnames. These are the devices analysts should prioritize for the scope_hosts parameter in the fan-out.
-
Find rare authentication sources
Query · baselineStack-count source IPs per user on the scoped hosts to find anomalous logins that might indicate stolen credential or session usage.
reads hb_auth_signinsqlSELECT device_hostname, actor_user_name, src_endpoint_ip, src_location_country, COUNT(*) AS login_count, MIN(time) AS first_seen FROM hb_auth_signin WHERE LOWER(actor_user_name) LIKE '%@{{target_domain}}' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, actor_user_name, src_endpoint_ip HAVING login_count < 10What a hit looks like. Login events from source IPs seen rarely across the scoped fleet, potentially indicating attacker infrastructure.
-
Check for domain-wide identity leaks
Query · enrichmentIdentify if corporate credentials for the domain have recently appeared in stealer logs indexed by Hudson Rock.
reads hudsonrock_search_by_domainsqlSELECT domain, total_stealers, last_employee_compromised, stealer_families, employees_urls FROM hudsonrock_search_by_domain WHERE domain = '{{target_domain}}'What a hit looks like. A summary of recent compromises, listing stealer families (Lumma, RedLine) and counts. Silence means no indexed exposure for this domain in the Hudson Rock archive.
-
Weigh exposure and sign-in behavior
Agent triageCorrelate the external compromise data with internal rare sign-in patterns to find high-confidence identity compromises.
-
Route on verdict
DecisionDirect the hunt to containment or review based on the severity of the findings.
-
Revoke sessions and reset credentials
Response actionContain the risk by immediately revoking access for compromised identities found in the hunt.
-
Examine post-login activity
Analyst taskReview internal logs for the compromised identities to determine if any unauthorized actions were performed before containment.
-
Close out hunt
Analyst taskDocument findings and update the behavioral baseline.
Coverage
Scenario coverage
| Stage | Covered | How, or why not |
|---|---|---|
| Infostealer Harvesting from Personal Devices T1555 · T1195 |
Yes | find-active-corporate-hosts, rare-authentication-patterns, domain-exposure-lookup |
| Initial Access via Stolen Identity T1133 · T1190 |
Out of scope | Belongs to a separate hunt focusing on the sign-in event and subsequent MFA fatigue or session replay. |
| Internal Credential and Secret Discovery T1555 |
Out of scope | Belongs to another part of the 'Introducing Sekoia Digital Risk: Track Identity-Led Breaches' series. |
| Lateral Movement to Cloud Services T1133 |
Out of scope | Belongs to another part of the 'Introducing Sekoia Digital Risk: Track Identity-Led Breaches' series. |
| Data Exfiltration and Ransom Extortion T1486 |
Out of scope | Belongs to another part of the 'Introducing Sekoia Digital Risk: Track Identity-Led Breaches' series. |
Blind spots
- Needs Endpoint telemetry from the user's personal/home machine. While we see the corporate logon from the beachhead, we remain blind to the source infection on the unmanaged device that led to the compromise. It would answer Exactly how the infection occurred and what other non-corporate passwords were stolen.
- Needs Real-time access to the specific Telegram channel where the log was first leaked. There is a window of latency between the initial leak in a private criminal channel and its visibility in monitoring platforms, during which the attacker can act. It would answer Whether a credential has been stolen but not yet indexed by Hudson Rock or Flare.
Parameters & data
Parameters
| Parameter | Type | Default | What it is |
|---|---|---|---|
lookback_days | number | 14 | Days of history to examine. |
scope_hosts | list[host] | — | Hostnames to focus on; leave empty to hunt across all hosts reporting corporate logons. |
target_domain | string | example.com | Corporate domain to scope the identity search. |
Telemetry
| Source | Category | Telemetry |
|---|---|---|
| Identity / sign-in telemetry | identity | identity |
Source
---
analysis: "A rule fires on a known bad IP; the hunt finds the 'unlocked doors'\u2014\
valid credentials already in circulation\u2014by correlating external exposure telemetry\
\ with a behavioral baseline of host sign-ins. An analyst weighs whether a rare\
\ login source matches an identity compromise reported in criminal markets."
blind_spots:
- id: unmanaged-endpoint-blind-spot
question: Exactly how the infection occurred and what other non-corporate passwords
were stolen
requires: Endpoint telemetry from the user's personal/home machine
risk: While we see the corporate logon from the beachhead, we remain blind to the
source infection on the unmanaged device that led to the compromise.
stage: infostealer-credential-harvesting
- id: external-telemetry-blind-spot
question: Whether a credential has been stolen but not yet indexed by Hudson Rock
or Flare
requires: Real-time access to the specific Telegram channel where the log was first
leaked
risk: There is a window of latency between the initial leak in a private criminal
channel and its visibility in monitoring platforms, during which the attacker
can act.
stage: infostealer-credential-harvesting
coverage:
- stage: infostealer-credential-harvesting
status: covered
steps:
- find-active-corporate-hosts
- rare-authentication-patterns
- domain-exposure-lookup
- reason: Belongs to a separate hunt focusing on the sign-in event and subsequent
MFA fatigue or session replay.
stage: identity-led-initial-access
status: out_of_scope
- reason: 'Belongs to another part of the ''Introducing Sekoia Digital Risk: Track
Identity-Led Breaches'' series.'
stage: internal-credential-discovery
status: out_of_scope
- reason: 'Belongs to another part of the ''Introducing Sekoia Digital Risk: Track
Identity-Led Breaches'' series.'
stage: unauthorised-cloud-resource-access
status: out_of_scope
- reason: 'Belongs to another part of the ''Introducing Sekoia Digital Risk: Track
Identity-Led Breaches'' series.'
stage: data-exfiltration-and-extortion
status: out_of_scope
guardrails:
claims: no_unsupported
evidence: citation_required
missing_data: not_benign
telemetry: untrusted
hunt:
applicability: campaign-specific
handoff: keep-as-periodic-hunt
justification: Identity-led breaches, such as the 2024 Snowflake intrusions, bypass
traditional perimeters. This hunt provides the business with the assurance that
its employee credentials are not currently available in the criminal 'stealer'
economy, or identifies them for immediate rotation if they are.
methodology: model-assisted
trigger: intel-report
hypothesis: Adversaries are using corporate credentials harvested from unmanaged personal
devices by infostealers to bypass authentication controls and gain initial access
to cloud resources.
labels:
- hunt
- attack.t1555
- attack.t1195
- attack.t1133
- attack.t1078.004
- credential access
- impact
- initial access
- lateral movement
- hudsonrock
name: External Identity Exposure and Credential Leaks
parameters:
lookback_days:
default: '14'
description: Days of history to examine.
from:
kind: manual
observed: '2024-01-01'
ref: hunt-standard
type: number
scope_hosts:
default: []
description: Hostnames to focus on; leave empty to hunt across all hosts reporting
corporate logons.
from:
kind: manual
observed: '2024-01-01'
ref: scoping-output
type: list[host]
target_domain:
default: example.com
description: Corporate domain to scope the identity search.
from:
kind: manual
observed: '2024-01-01'
ref: organization-config
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 by identifying the workstations that record the highest volume of
corporate logons. Focus especially on hosts belonging to contractors or departments
known to use personal devices.
references:
- name: "Sekoia \u2014 Introducing Sekoia Digital Risk"
url: https://www.sekoia.com/blog/with-sekoia-intelligence-we-gave-you-half-the-picture-heres-the-other-half
related:
- hunt: identity-led-initial-access-detection
reason: This hunt identifies the exposure; the follow-on hunt monitors for the actual
login attempt and initial cloud enumeration.
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: 1
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
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
---
# External Identity Exposure and Credential Leaks
An agent weighs the intersection of these surfaces to find 'unlocked doors' before they are exploited at scale. The hunt identifies compromised corporate identities by correlating external exposure data from infostealer logs with anomalous internal sign-in behavior. Inspired by the Snowflake and CircleCI breaches, the hunt first identifies active workstations used by corporate identities, then fans out to check for domain-wide exposure in criminal markets (via Hudson Rock) alongside a search for rare authentication patterns from those same workstations.
## find-active-corporate-hosts
<!-- Identify active corporate workstations -->
Identify which workstations are actively recording corporate domain logons to scope the subsequent behavioral analysis.
```sqlite target=identity role=scoping params=(target_domain=target_domain, lookback_days=lookback_days)
~~~yaml
expected: A list of hostnames. These are the devices analysts should prioritize for
the scope_hosts parameter in the fan-out.
reads:
- device_hostname
- actor_user_name
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT DISTINCT device_hostname FROM hb_auth_signin WHERE LOWER(actor_user_name) LIKE '%@{{target_domain}}' AND time >= datetime('now', '-{{lookback_days}} days')
```
## parallel-evidence-gathering
<!-- Corroborate exposure and behavior -->
parallel:
- → rare-authentication-patterns
- → domain-exposure-lookup
join: → triage-verdict
## rare-authentication-patterns
<!-- Find rare authentication sources -->
Stack-count source IPs per user on the scoped hosts to find anomalous logins that might indicate stolen credential or session usage.
```sqlite target=identity role=baseline params=(target_domain=target_domain, scope_hosts=scope_hosts, lookback_days=lookback_days)
~~~yaml
baseline:
compare: first_seen
window: '{{lookback_days}}d'
expected: Login events from source IPs seen rarely across the scoped fleet, potentially
indicating attacker infrastructure.
prevalence:
by: device_hostname
key:
- src_endpoint_ip
rare_below: 3
reads:
- device_hostname
- actor_user_name
- src_endpoint_ip
- src_location_country
- time
silence: not_evidence_of_absence
source: hb_auth_signin
verified: dry-run
verified_at: '2026-10-13'
~~~
SELECT device_hostname, actor_user_name, src_endpoint_ip, src_location_country, COUNT(*) AS login_count, MIN(time) AS first_seen FROM hb_auth_signin WHERE LOWER(actor_user_name) LIKE '%@{{target_domain}}' AND ('{{scope_hosts}}' = '' OR instr(',' || '{{scope_hosts}}' || ',', ',' || device_hostname || ',') > 0) AND time >= datetime('now', '-{{lookback_days}} days') GROUP BY device_hostname, actor_user_name, src_endpoint_ip HAVING login_count < 10
```
## domain-exposure-lookup
<!-- Check for domain-wide identity leaks -->
Identify if corporate credentials for the domain have recently appeared in stealer logs indexed by Hudson Rock.
```sqlite target=hudsonrock role=enrichment params=(target_domain=target_domain)
~~~yaml
expected: A summary of recent compromises, listing stealer families (Lumma, RedLine)
and counts. Silence means no indexed exposure for this domain in the Hudson Rock
archive.
reads:
- domain
- total_stealers
- last_employee_compromised
- stealer_families
- employees_urls
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, stealer_families, employees_urls FROM hudsonrock_search_by_domain WHERE domain = '{{target_domain}}'
```
## triage-verdict
<!-- Weigh exposure and sign-in behavior -->
```agent target=hunter
cite: required
context:
- find-active-corporate-hosts
- rare-authentication-patterns
- domain-exposure-lookup
max_iterations: 4
objective: Determine which users from rare-authentication-patterns correlate with
the exposure levels and stealer families identified in domain-exposure-lookup.
success_criteria: A per-host and per-user verdict citing specific rare IPs and the
exposure timeframe.
tools:
- hudsonrock
- identity
```
## route-on-verdict
<!-- Route on verdict -->
if~: "the triage verdict identifies at least one corporate identity showing both external exposure in stealer logs and anomalous sign-in behavior" (confidence: high, judge=hunter)
then: → revoke-identity-sessions
indeterminate: → manual-analyst-review
unavailable: → manual-analyst-review (blind_spot: external-telemetry-blind-spot)
else: → close-out
## revoke-identity-sessions
<!-- Revoke sessions and reset credentials -->
```action target=identity
~~~yaml
approval: required
~~~
Revoke all active browser and OAuth sessions for the confirmed identities. Trigger a forced password reset and require an MFA re-enrollment.
```
→ manual-analyst-review
## manual-analyst-review
<!-- Examine post-login activity -->
```manual target=analyst
Use hb_cloud_api_activity and hb_auth_signin to trace the actions of the compromised identities. Look for mass data access (S3/SharePoint) or modification of IAM policies.
```
→ close-out
## close-out
<!-- Close out hunt -->
```manual target=analyst
Record the identities found and the specific stealer families involved. Recommend security policy updates such as requiring managed devices for all administrative cloud access.
```
→ 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.