Detection rules › Splunk
O365 Excessive Authentication Failures Alert
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
| Tactic | Techniques |
|---|---|
| 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.
| Field | Kind | Values | Search |
|---|---|---|---|
UserAuthenticationMethod | eq |
| field:"UserAuthenticationMethod" kind:eq value:"*" |
Workload | eq |
| field:"Workload" kind:eq value:"AzureActiveDirectory" |
count | gt |
| field:"count" kind:gt value:"10" |
sourcetype | eq |
| field:"sourcetype" kind:eq value:"o365:management:activity" |
status | eq |
| field:"status" kind:eq value:"failure" |