Investigating IdentityDirectoryEvents in Microsoft Defender XDR
IdentityDirectoryEvents records changes made to identity objects such as users, groups, devices and directory-related activity inside Microsoft Defender XDR.
This table helps defenders investigate account modifications, group membership changes, privileged activity, directory updates and identity-based attack behaviour.
In this lesson, you will learn how to use IdentityDirectoryEvents to follow directory evidence, review account and group changes, and support Microsoft Defender XDR investigations.
Lesson overview
Learn how IdentityDirectoryEvents helps defenders investigate account changes, group updates and directory-based attack activity.
Why IdentityDirectoryEvents matters
Investigation scenario
Step 1 — Review recent directory activity
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
IdentityDirectoryEvents | where Timestamp > ago(7d) | project Timestamp, ActionType, AccountName, AccountDomain, TargetAccountName, TargetAccountDomain, AdditionalFields | order by Timestamp desc
Step 2 — Look for group membership changes
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
IdentityDirectoryEvents | where Timestamp > ago(14d) | where ActionType has_any ("Group", "member", "Membership") | project Timestamp, ActionType, AccountName, TargetAccountName, AdditionalFields | order by Timestamp desc
Step 3 — Investigate privileged activity
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
IdentityDirectoryEvents | where Timestamp > ago(30d) | where AdditionalFields has_any ( "Global Administrator", "Domain Admin", "Security Administrator", "Privileged") | project Timestamp, ActionType, AccountName, TargetAccountName, AdditionalFields | order by Timestamp desc
Step 4 — Focus on one target account
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
IdentityDirectoryEvents | where Timestamp > ago(30d) | where TargetAccountName =~ "rebecca" | project Timestamp, ActionType, AccountName, TargetAccountName, AdditionalFields | order by Timestamp asc
Step 5 — Summarise directory changes
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
IdentityDirectoryEvents | where Timestamp > ago(30d) | summarize DirectoryChanges = count(), FirstSeen = min(Timestamp), LastSeen = max(Timestamp) by AccountName, ActionType | order by DirectoryChanges desc
Step 6 — Correlate with identity logons
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
let UserAccount = "rebecca"; IdentityLogonEvents | where Timestamp > ago(24h) | where AccountName =~ UserAccount | project Timestamp, ActionType, AccountName, DeviceName, IPAddress, LogonType, Protocol | order by Timestamp asc
