Detection rules › Splunk

O365 Excessive Authentication Failures Alert

Status
production
Severity
low
Group by
aws::recipientAccountId, dest, user, vendor_product
Author
Rod Soto, Splunk
Source
github.com/splunk/security_content

The following analytic identifies an excessive number of authentication failures, including failed attempts against MFA prompt codes. It uses data from the o365_management_activity dataset, focusing on events where the authentication status is marked as failure. This behavior is significant as it may indicate a brute force attack or an attempt to compromise user accounts. If confirmed malicious, this activity could lead to unauthorized access, data breaches, or further exploitation within the environment.

Known false positives

  • The threshold for alert is above 10 attempts and this should reduce the number of false positives.

MITRE ATT&CK coverage

TacticTechniques
Credential Access

Rules detecting the same action

These rules filter on the same operation.

Rule body

name: O365 Excessive Authentication Failures Alert
id: d441364c-349c-453b-b55f-12eccab67cf9
version: 11
creation_date: '2020-12-16'
modification_date: '2026-05-13'
author: Rod Soto, Splunk
status: production
type: Anomaly
description: The following analytic identifies an excessive number of authentication failures, including failed attempts against MFA prompt codes. It uses data from the `o365_management_activity` dataset, focusing on events where the authentication status is marked as failure. This behavior is significant as it may indicate a brute force attack or an attempt to compromise user accounts. If confirmed malicious, this activity could lead to unauthorized access, data breaches, or further exploitation within the environment.
data_source: []
search: |-
    `o365_management_activity` Workload=AzureActiveDirectory UserAuthenticationMethod=* status=failure
      | stats count earliest(_time) AS firstTime latest(_time) AS lastTime values(UserAuthenticationMethod) AS UserAuthenticationMethod values(UserAgent) AS user_agent values(status) AS status values(src_ip) AS src values(signature) as signature
        BY user vendor_account vendor_product
           dest
      | where count > 10
      | `security_content_ctime(firstTime)`
      | `security_content_ctime(lastTime)`
      | `o365_excessive_authentication_failures_alert_filter`
how_to_implement: You must install splunk Microsoft Office 365 add-on. This search works with o365:management:activity
known_false_positives: The threshold for alert is above 10 attempts and this should reduce the number of false positives.
references:
    - https://attack.mitre.org/techniques/T1110/
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: User $user$ has caused excessive number of authentication failures from $src$ using UserAgent $user_agent$.
threat_objects:
    - field: src
      type: ip_address
analytic_story:
    - Office 365 Account Takeover
asset_type: O365 Tenant
mitre_attack_id:
    - T1110
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: cloud
security_domain: threat

Stages and Predicates

Stage 1: search

`o365_management_activity` Workload=AzureActiveDirectory UserAuthenticationMethod=* status=failure

Stage 2: stats

| stats count earliest(_time) AS firstTime latest(_time) AS lastTime values(UserAuthenticationMethod) AS UserAuthenticationMethod values(UserAgent) AS user_agent values(status) AS status values(src_ip) AS src values(signature) as signature
    BY user vendor_account vendor_product
       dest

Stage 3: where

| where count > 10

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `security_content_ctime(lastTime)`

Stage 6: search

| `o365_excessive_authentication_failures_alert_filter`

Indicators

These rows show field, operator, and value matches.