Multi-Factor Authentication Fatigue (MFA Bombing) Attack
MFA fatigue (also called MFA bombing or push flooding) is a social engineering technique where an attacker who has obtained valid credentials uses repeated MFA push notifications to wear down the victim into approving an authentication request out of annoyance or confusion. Scattered Spider pioneered this at scale, compromising MGM Resorts, Caesars Entertainment, and numerous UK-based organisations. The attacker sends dozens of Authenticator app push notifications in rapid succession, sometimes at 3am to catch sleeping victims, until one is approved. Some variants include calling the victim while bombing, claiming to be IT support (vishing), and guiding them to approve the 'legitimate' request. NCSC and CISA issued a joint advisory on this technique in 2023. With valid M365 credentials available from password spray or phishing, MFA fatigue is the primary way Scattered Spider bypasses MFA.
// THREAT: MFA Fatigue / MFA Bombing Detection
// Detects rapid repeated MFA requests for the same user — push flooding pattern
// Primary telemetry: Azure AD Sign-in logs, MFA request events
// Alert 1: High volume of MFA requests for single user in short window
let MFAFatigueThreshold = 5; // Number of MFA prompts within window
let MFAFatigueWindow = 10m;
AADSignInLogs
| where TimeGenerated > ago(24h)
| where AuthenticationDetails has "MFA" or AuthenticationRequirement =~ "multiFactorAuthentication"
| where Status.errorCode in (
0, // Success
50074, // StrongAuthenticationRequired
50076, // MFA required
500121, // Authentication failed during strong auth
500133 // User did not complete MFA
)
| summarize
MFAAttempts=count(),
Approvals=countif(Status.errorCode == 0),
Denials=countif(Status.errorCode == 500121),
NoResponses=countif(Status.errorCode == 500133),
IPs=make_set(IPAddress),
Locations=make_set(Location),
Apps=make_set(AppDisplayName)
by UserPrincipalName, bin(TimeGenerated, MFAFatigueWindow)
| where MFAAttempts >= MFAFatigueThreshold
| extend FatiguePattern = (Denials > 3 and Approvals == 1) or (NoResponses > 4 and Approvals == 1)
| where MFAAttempts >= MFAFatigueThreshold
| extend ThreatType = "MFA_Fatigue_PushBombing"
| extend ThreatActors = "Scattered Spider, Lapsus$"
| sort by MFAAttempts desc;
// Alert 2: MFA approval following high failure rate (fatigue success indicator)
AADSignInLogs
| where TimeGenerated > ago(24h)
| where Status.errorCode == 0
| where AuthenticationRequirement =~ "multiFactorAuthentication"
| join kind=inner (
AADSignInLogs
| where TimeGenerated > ago(24h)
| where Status.errorCode == 500133 // MFA not completed (prior denials/timeouts)
| summarize PriorDenials=count() by UserPrincipalName
| where PriorDenials >= 3
) on UserPrincipalName
| project TimeGenerated, UserPrincipalName, IPAddress, Location,
AppDisplayName, PriorDenials
| extend ThreatType = "MFA_Fatigue_SuccessAfterDenials" Data Sources
Required Tables
False Positives
- Users with intermittent mobile connectivity who have multiple MFA push notifications queued and delivered in rapid succession
- Automated system accounts or service principals that trigger MFA in rapid succession during batch processing
- MFA enrollment flows that trigger multiple notifications during the enrollment wizard
- Users testing their own MFA setup by repeatedly triggering and denying prompts
References (5)
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-263a
- https://www.ncsc.gov.uk/blog-post/scattered-spider-techniques-and-mitigations
- https://www.microsoft.com/en-us/security/blog/2023/05/26/volt-typhoon-targets-us-critical-infrastructure-with-living-off-the-land-techniques/
- https://learn.microsoft.com/en-us/entra/identity/authentication/how-to-mfa-number-match
- https://attack.mitre.org/techniques/T1621/
Unlock Pro Content
Get the full detection package for THREAT-EntraID-MFAFatigue including response playbook, investigation guide, and atomic red team tests.