Response playbooks, investigation guides, and Atomic Red Team tests are Pro-only. Upgrade to unlock the full detection package for THREAT-Recon-CredentialStuffingValidationSweep.

Upgrade to Pro
THREAT-Recon-CredentialStuffingValidationSweep Splunk · SPL

Detect Credential Stuffing Validation Sweep (Pre-Attack Breach List Testing) in Splunk

Before committing to an intrusion, many adversaries first validate which entries in a purchased or scraped breach-credential list (combo list) are still live against the target's own authentication endpoints. This reconnaissance activity is distinct from brute force or password spraying: the attacker tries exactly one attacker-supplied username/password pair per account — never guessing or repeating passwords across identities — and deliberately throttles request volume to stay under per-account lockout and rate-limiting thresholds. The result is a low-and-slow sweep touching a very large number of distinct, often unrelated identities (many of which do not even exist in the target directory) from a small pool of shared infrastructure (bulletproof VPS, residential proxy pools, or credential-checker tooling such as OpenBullet/SentryMBA configs) using automation-flavoured or generic user agents. Initial access brokers and groups like Scattered Spider/Muddled Libra routinely run this validation step across many organisations' SSO and webmail portals to build a list of confirmed-working credentials before selling or acting on access. Because no individual account sees more than one or two failures, this activity is invisible to lockout policies and easily missed by detections tuned for classic brute force or spray, making the attempts-per-user ratio and aggregate breadth across a single source the key signals.

MITRE ATT&CK

Tactic
Reconnaissance

SPL Detection Query

Splunk (SPL)
spl
index=azure sourcetype="azure:aad:signin"
properties.status.error_code!=0
| eval src_ip=properties.ip_address
| eval user=properties.user_principal_name
| eval error_code=properties.status.error_code
| bin _time span=6h
| stats
    count AS TotalAttempts,
    dc(user) AS UniqueUsers,
    count(eval(error_code==50034)) AS UserNotFoundCount,
    count(eval(error_code==50126)) AS InvalidPasswordCount,
    values(properties.user_agent) AS UserAgents,
    values(properties.app_display_name) AS Applications
  BY src_ip, _time
| eval AttemptsPerUser=round(TotalAttempts/UniqueUsers, 2)
| where UniqueUsers >= 50 AND AttemptsPerUser <= 1.3
| eval UserNotFoundRatio=round(UserNotFoundCount/TotalAttempts, 2)
| eval ThreatType="CredentialValidationSweep_LowAndSlow"
| eval Severity=if(UniqueUsers >= 500, "HIGH", "MEDIUM")
| table _time, src_ip, UniqueUsers, TotalAttempts, AttemptsPerUser, UserNotFoundRatio, UserAgents, Applications, Severity
| sort - UniqueUsers
high severity medium confidence

SPL detection aggregating M365/Entra ID authentication failures per source IP over 6-hour windows, alerting when 50+ distinct accounts are touched at an attempts-per-user ratio no higher than 1.3 — the breach-list validation signature rather than repeated password guessing.

Data Sources

Azure AD Sign-In Logs via Splunk Add-on for Microsoft Cloud Services

Required Sourcetypes

azure:aad:signin

False Positives & Tuning

  • Bulk contractor or seasonal-worker onboarding scripts authenticating many accounts once each from a single automation host
  • Identity federation health-check jobs validating many accounts in a single pass from one service IP
  • Internal credential-hygiene audits testing employee passwords against known breach dumps
  • SaaS integration platforms authenticating on behalf of many tenant users from a shared egress IP

Other platforms for THREAT-Recon-CredentialStuffingValidationSweep


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Low-and-Slow Credential Sweep Simulation via Python Requests

    Expected signal: Authentication logs record one failure per distinct username from the test source IP, spread across the run duration, with no repeated attempts against the same account.

  2. Test 2Credential Checker Tool Simulation (OpenBullet-style Config Replay)

    Expected signal: Web/IdP access logs show sequential single-attempt authentication requests from one source IP with a non-browser user agent string, one distinct username per request.

  3. Test 3Validated Credential Success Injection

    Expected signal: A successful authentication event is recorded from the same source IP that generated the preceding sweep failures.

Unlock playbooks & atomic tests with Pro

Get the full detection package for THREAT-Recon-CredentialStuffingValidationSweep — response playbook and atomic red team tests, plus investigation guidance and hunting queries.

df00tech Pro — £29/user/month

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections