Skip to content

Commit 93f33cc

Browse files
authored
Merge pull request #3268 from nterl0k/nterl0k-t1110-mfasweep-detection
Nterl0k - T1110 MFA Sweep / Excessive OS indicators from a user.
2 parents 284dfc8 + e4b7d78 commit 93f33cc

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: O365 Multiple OS Vendors Authenticating From User
2+
id: 3451e58a-9457-4985-a600-b616b0cbfda1
3+
version: 1
4+
date: '2024-12-19'
5+
author: Steven Dick
6+
status: production
7+
type: TTP
8+
description: The following analytic identifies when multiple operating systems are used to authenticate to Azure/EntraID/Office 365 by the same user account over a short period of time. This activity could be indicative of attackers enumerating various logon capabilities of Azure/EntraID/Office 365 and attempting to discover weaknesses in the organizational MFA or conditional access configurations. Usage of the tools like "MFASweep" will trigger this detection.
9+
data_source:
10+
- Office 365 Universal Audit Log
11+
search: |-
12+
`o365_management_activity` Operation IN (UserLoginFailed,UserLoggedIn)
13+
| eval -time = _time
14+
| bin _time span=15m
15+
| stats values(Operation) as signature, values(ErrorNumber) as signature_id, values(OS) as os_name, dc(OS) as os_count, count, min(-time) as firstTime, max(-time) as lastTime by ClientIP, UserId, _time
16+
| where os_count >= 4
17+
| eval src = ClientIP, user = UserId
18+
| `security_content_ctime(firstTime)`
19+
| `security_content_ctime(lastTime)`
20+
| `o365_multiple_os_vendors_authenticating_from_user_filter`
21+
how_to_implement: You must install the Splunk Microsoft Office 365 Add-on and ingest Office 365 management activity events. The thresholds set within the analytic (such as unique OS) are initial guidelines and should be customized based on the organization's user behavior and risk profile. Security teams are encouraged to adjust these thresholds to optimize the balance between detecting genuine threats and minimizing false positives, ensuring the detection is tailored to their specific environment.
22+
known_false_positives: IP or users where the usage of multiple Operating systems is expected, filter accordingly.
23+
references:
24+
- https://attack.mitre.org/techniques/T1110
25+
- https://www.blackhillsinfosec.com/exploiting-mfa-inconsistencies-on-microsoft-services/
26+
- https://sra.io/blog/msspray-wait-how-many-endpoints-dont-have-mfa/
27+
- https://github.com/dafthack/MFASweep/tree/master
28+
drilldown_searches:
29+
- name: View the detection results for - "$user$"
30+
search: '%original_detection_search% | search user = "$user$"'
31+
earliest_offset: $info_min_time$
32+
latest_offset: $info_max_time$
33+
- name: View risk events for the last 7 days for - "$user$"
34+
search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$user$") starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
35+
earliest_offset: $info_min_time$
36+
latest_offset: $info_max_time$
37+
- name: Investigate logons from $user$
38+
search: '`o365_management_activity` Operation IN (UserLoginFailed,UserLoggedIn) "$user$"'
39+
earliest_offset: $info_min_time$
40+
latest_offset: $info_max_time$
41+
rba:
42+
message: The user account $user$ authenticated with $os_count$ unique operating system types over a short period from $src$.
43+
risk_objects:
44+
- field: user
45+
type: user
46+
score: 60
47+
threat_objects:
48+
- field: src
49+
type: ip_address
50+
tags:
51+
analytic_story:
52+
- Office 365 Account Takeover
53+
asset_type: O365 Tenant
54+
mitre_attack_id:
55+
- T1110
56+
product:
57+
- Splunk Enterprise
58+
- Splunk Enterprise Security
59+
- Splunk Cloud
60+
security_domain: threat
61+
tests:
62+
- name: True Positive Test
63+
attack_data:
64+
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1110/azure_mfasweep_events/azure_mfasweep_events.log
65+
source: o365
66+
sourcetype: o365:management:activity

0 commit comments

Comments
 (0)