T1496.003 Splunk · SPL

Detect SMS Pumping in Splunk

Adversaries may leverage messaging services for SMS pumping, a telecommunications fraud technique where the attacker first obtains a block of phone numbers from a carrier, then abuses a victim's SMS infrastructure to generate large volumes of messages to those numbers. The adversary earns per-message payments from the carrier proportional to traffic volume. Attack vectors typically target public-facing web forms — OTP verification, account confirmation, password reset — backed by services such as Twilio, AWS SNS, or Amazon Cognito. Indicators include a spike in SMS API calls from a small set of source IPs, sequential or numerically adjacent destination phone numbers, destination numbers concentrated in high-fraud carrier prefixes, and a sharp increase in SMS-related cloud spend. Unlike volumetric DoS, SMS pumping is financially motivated: the attacker profits directly from the victim's messaging bill.

MITRE ATT&CK

Tactic
Impact
Technique
T1496 Resource Hijacking
Sub-technique
T1496.003 SMS Pumping
Canonical reference
https://attack.mitre.org/techniques/T1496/003/

SPL Detection Query

Splunk (SPL)
spl
// Branch 1: AWS CloudTrail — SNS Publish to E.164 phone numbers at high volume
(index=aws sourcetype="aws:cloudtrail" eventSource="sns.amazonaws.com" eventName="Publish"
| spath input=requestParameters output=phoneNumber path=phoneNumber
| where isnotnull(phoneNumber) AND match(phoneNumber, "^\+")
| spath output=userArn path=userIdentity.arn
| bucket _time span=5m
| stats
    count as SMSSendCount,
    dc(phoneNumber) as UniquePhoneNumbers,
    values(sourceIPAddress) as SourceIPs,
    values(userAgent) as UserAgents
    by _time, awsRegion, userArn
| where SMSSendCount > 100
| eval DetectionBranch="SNS-Publish-Spike"
| eval RiskScore=case(SMSSendCount > 500, "Critical", SMSSendCount > 200, "High", 1==1, "Medium")
| table _time, DetectionBranch, RiskScore, SMSSendCount, UniquePhoneNumbers, SourceIPs, awsRegion, userArn)
| append [
  search index=aws sourcetype="aws:cloudtrail" eventSource="cognito-idp.amazonaws.com"
    (eventName="GetUserAttributeVerificationCode" OR eventName="ResendConfirmationCode" OR eventName="ForgotPassword" OR eventName="InitiateAuth")
  | spath output=userArn path=userIdentity.arn
  | bucket _time span=5m
  | stats
      count as SMSSendCount,
      dc(sourceIPAddress) as UniqueIPs,
      values(sourceIPAddress) as SourceIPs,
      dc(requestParameters.username) as UniqueUsernames
      by _time, eventName, awsRegion
  | where SMSSendCount > 50 AND UniqueIPs < 5
  | eval DetectionBranch="Cognito-OTP-Abuse", RiskScore="High"
  | table _time, DetectionBranch, RiskScore, SMSSendCount, UniqueIPs, SourceIPs, awsRegion, eventName
]
| sort - _time
high severity medium confidence

Detects SMS pumping via two AWS CloudTrail branches using the Splunk Add-on for AWS: (1) SNS Publish calls to E.164-formatted destination phone numbers spiking above 100 per 5-minute window per identity, with risk scoring at 200 and 500 thresholds; (2) Amazon Cognito OTP-triggering API calls (ForgotPassword, ResendConfirmationCode, GetUserAttributeVerificationCode, InitiateAuth) exceeding 50 per 5-minute window from fewer than 5 unique source IPs — a ratio indicating automated, non-human traffic. Results are unioned with `append` to handle schema differences between branches.

Data Sources

Cloud Service: Cloud Service ModificationApplication: Application LogsAWS CloudTrailAmazon SNSAmazon Cognito

Required Sourcetypes

aws:cloudtrail

False Positives & Tuning

  • Legitimate bulk transactional SMS campaigns (order confirmations, shipping notifications) sending high volume through SNS from a known IAM role
  • Automated integration or regression test pipelines that exercise Cognito authentication and OTP flows against production user pools
  • A product launch or viral event causing a legitimate spike in new-user account verification and OTP requests
  • Internal DevOps pipelines using service accounts with SNS:Publish permissions for application notification delivery
Download portable Sigma rule (.yml)

Other platforms for T1496.003


Testing Methodology

Validate this detection against 4 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 1AWS SNS Publish Burst to Phone Number via CLI

    Expected signal: AWS CloudTrail: 15 eventName=Publish events from eventSource=sns.amazonaws.com within ~5 seconds, each with requestParameters containing phoneNumber=+15550001234 and message content. Events appear in CloudTrail within ~15 minutes. SNS CloudWatch metric NumberOfMessagesSentToPhoneNumbers increments by 15. SMSMonthToDateSpentUSD increases.

  2. Test 2Amazon Cognito ForgotPassword OTP Flood

    Expected signal: AWS CloudTrail: up to 20 eventName=ForgotPassword events from eventSource=cognito-idp.amazonaws.com within ~10 seconds, all sharing the same sourceIPAddress. requestParameters.username will be consistent across all events. Cognito may throttle after ~5 rapid requests, generating ThrottlingException errors also visible in CloudTrail.

  3. Test 3OTP Form Endpoint Burst via curl Parallel Requests

    Expected signal: Application Insights AppRequests table: 60 request entries for /api/auth/send-otp with identical ClientIP (local machine), ResultCode 200 or 429 (rate-limited), arriving within a ~15-second window. Telemetry visible in Application Insights within 1-2 minutes. If Application Insights SDK is not instrumented in the local app, substitute with reviewing the application access log.

  4. Test 4Twilio REST API SMS Burst

    Expected signal: Twilio Console: 5 outbound messages visible under Monitor > Logs > Messaging Logs within seconds. Twilio REST API: GET /2010-04-01/Accounts/{AccountSid}/Messages.json returns 5 records with Direction=outbound-api, Status=delivered or sent. Twilio usage record increments SMSSent by 5. NOTE: Direct Twilio API calls do NOT generate AWS CloudTrail or Azure Diagnostic events — detection requires Twilio Event Streams ingested into SIEM or Twilio's native fraud scoring dashboard.

Unlock Pro Content

Get the full detection package for T1496.003 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections