THREAT-VPN-CredentialStuffing Splunk · SPL

Detect VPN and Remote Access Credential Stuffing / Brute Force in Splunk

Credential stuffing and brute force against VPN and remote access gateways is a persistent initial access vector for ransomware operators and nation-state actors. NCSC and CISA have repeatedly warned about Fortinet, Cisco ASA/FTD, Ivanti Connect Secure, Palo Alto GlobalProtect, and SonicWall VPN gateways being targeted. Attackers use credential databases from prior breaches and automated tools to test credentials at scale against VPN login portals. Unlike password spraying against M365, VPN credential stuffing often targets a single account at high frequency (bypassing account lockout through IP rotation) or uses a large pool of breached credential pairs. Volt Typhoon (China-nexus) specifically targets small business routers and VPN gateways for SOHO Living-off-the-Land access. Compromised VPN access gives attackers direct network access, bypassing perimeter defences entirely.

MITRE ATT&CK

Tactic
Credential Access Initial Access

SPL Detection Query

Splunk (SPL)
spl
index=network sourcetype IN ("fortigate:vpn", "cisco:asa", "cisco:ftd", "juniper:junos",
                                "panos:traffic", "sonicwall:tz", "ivanti:vpn")
(
  (action IN ("failure", "failed", "denied", "rejected") AND
   type IN ("vpn", "ssl-vpn", "ipsec", "remote-access", "auth"))
  OR (match(message, "(?i)(vpn|ssl.vpn|remote.access).*(fail|invalid|reject|denied|bad.*password|credential)"))
)
| bin _time span=15m
| stats
    count AS FailureCount,
    dc(user) AS UniqueUsers,
    dc(src_ip) AS UniqueSourceIPs,
    values(user) AS TargetedUsers,
    values(src_ip) AS SourceIPs
  BY dest_ip, dest_port, _time
| where FailureCount >= 20 OR UniqueUsers >= 5
| eval ThreatType="VPN_CredentialStuffing"
| eval ThreatActors="Volt Typhoon, LockBit affiliates, GhostSec"
| eval Severity=case(FailureCount >= 100, "CRITICAL",
                     FailureCount >= 50, "HIGH",
                     true(), "MEDIUM")
| sort - FailureCount
high severity high confidence

SPL credential stuffing detection for VPN and remote access gateways. Aggregates authentication failures across major VPN vendor log formats and triggers on high failure counts or targeting of multiple accounts from the same source.

Data Sources

Fortinet FortiGate VPN logsCisco ASA/FTD VPN logsPalo Alto GlobalProtect logsIvanti Connect Secure logsSonicWall VPN logs

Required Sourcetypes

fortigate:vpncisco:asapanos:traffic

False Positives & Tuning

  • Users with recently changed passwords retrying with old credentials
  • Remote workers with VPN split-brain connectivity issues causing automatic reconnects
  • Certificate-based VPN clients with expired certificates generating auth failures
Download portable Sigma rule (.yml)

Other platforms for THREAT-VPN-CredentialStuffing


Testing Methodology

Validate this detection against 1 adversary technique 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 1VPN Credential Stuffing Simulation via Python Requests

    Expected signal: VPN authentication logs record multiple failures (error: invalid credentials) for multiple usernames from the test IP within the 15-minute window.

Unlock Pro Content

Get the full detection package for THREAT-VPN-CredentialStuffing including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections