All articles

Hunting MFA Fatigue Attacks with KQL

Attackers don't always crack MFA — sometimes they just spam it until someone taps approve. Here's a KQL detection to catch MFA fatigue in Microsoft Sentinel.

KQLSentinelDefender XDR

MFA fatigue (a.k.a. MFA bombing) is beautifully low-tech: the attacker already has the password, so they trigger push notification after push notification until a tired user finally taps Approve. No exploit, no malware — just persistence and human nature.

The good news? It leaves a very recognizable footprint in your sign-in logs.

What the pattern looks like

  • A burst of MFA challenges for a single user in a short window
  • Repeated denied or timeout results
  • Then, often, a single success from an unusual location

The detection

Here's a starting-point KQL query for Microsoft Sentinel that flags repeated failed MFA prompts followed by a success:

let lookback = 1h;
let threshold = 5;
SigninLogs
| where TimeGenerated > ago(lookback)
| where ResultType in ("50074", "500121", "0")   // MFA required / denied / success
| summarize
    denials = countif(ResultType != "0"),
    successes = countif(ResultType == "0"),
    countries = dcount(Location),
    firstSeen = min(TimeGenerated),
    lastSeen = max(TimeGenerated)
  by UserPrincipalName, bin(TimeGenerated, lookback)
| where denials >= threshold and successes >= 1
| project UserPrincipalName, denials, successes, countries, firstSeen, lastSeen
| order by denials desc

Tune before you trust it

Every environment is noisy in its own way. Before you promote this to an alert rule:

  • Baseline your normal. Some users genuinely fumble MFA. Look at a week of data first.
  • Add allow-lists for known automation or service accounts.
  • Enrich with risk. Join to AADUserRiskEvents so a fatigue pattern plus a risky sign-in raises the priority.

Then automate the response

A detection you have to babysit doesn't scale. Wire this into a Sentinel SOAR playbook that, on a confirmed hit, revokes the user's sessions, forces a password reset, and pings the SOC channel. That's how you take MTTR from hours to seconds.

MFA fatigue works because it targets people, not technology. Your defense is to make the pattern loud, catch it early, and respond automatically — before someone taps approve.


Want this applied to your tenant?

Book a free Microsoft 365 security review and turn these ideas into a hardened, monitored environment.