/
T1531.Entra.HighlyPrivilegedRoleRemoval.yaml
79 lines (77 loc) · 2.22 KB
/
T1531.Entra.HighlyPrivilegedRoleRemoval.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
id: cd96d5f2-b6ac-46ac-a87e-55954c0c4ea2
name: Privileged Entra Directory Roles unassigned from multiple accounts
version: 1.0.0
kind: Scheduled
description: Highly privileged Entra directory roles removed from multiple accounts.
severity: Medium
queryFrequency: 5m
queryPeriod: 2h
triggerOperator: gt
triggerThreshold: 2
tactics:
- Impact
relevantTechniques:
- T1531
query: |+
let lookback = 2h;
let AdminRoleInfo = datatable (RoleId: guid, RoleDisplayName: string)[
'62e90394-69f5-4237-9190-012177145e10', 'Global Administrator',
'e8611ab8-c189-46e8-94e1-60213ab1f814', 'Privileged Role Administrator'
];
AuditLogs
| where ingestion_time() > ago(lookback)
| where AADOperationType in~ ('AdminRemovePermanentGrantedRole', 'AdminRemovePermanentEligibleRole')
| mv-apply details = AdditionalDetails on (
where details.key == "RoleDefinitionOriginId"
| extend RoleId = toguid(details.value)
)
| mv-apply details = AdditionalDetails on (
where details.key == "ipaddr"
| extend IPAddress = tostring(details.value)
)
| lookup AdminRoleInfo on RoleId
| mv-expand TargetResources
| where TargetResources.type == 'User'
| extend
UserObjectId = TargetResources.id,
UserPrincipalName = TargetResources.userPrincipalName
| extend Actor = iif(isnotempty(InitiatedBy.user), InitiatedBy.user.id, InitiatedBy.app.appId)
| project
ActivityDateTime,
ActivityDisplayName,
RoleDisplayName,
UserPrincipalName,
UserObjectId,
Actor,
IPAddress
suppressionEnabled: false
incidentConfiguration:
createIncident: true
groupingConfiguration:
enabled: true
reopenClosedIncident: false
lookbackDuration: 2h
matchingMethod: Selected
groupByEntities:
- Account
groupByAlertDetails: []
groupByCustomDetails:
- RoleDisplayName
eventGroupingSettings:
aggregationKind: SingleAlert
customDetails:
RoleDisplayName: RoleDisplayName
entityMappings:
- entityType: Account
fieldMappings:
- identifier: AadUserId
columnName: UserObjectId
- entityType: Account
fieldMappings:
- identifier: AadUserId
columnName: Actor
- entityType: IP
fieldMappings:
- identifier: Address
columnName: IPAddress
suppressionDuration: 5h