The User Was Added To A Privileged Group At 3:12AM
The sign-in looked normal.
No impossible travel alert. No malware detection. No suspicious inbox rule. Just another successful Microsoft 365 login.
But at 3:12AM, something changed quietly inside Microsoft Entra ID.
The user was added to a privileged role.
Global Administrator.
No one noticed until hours later. The dashboard looked healthy. The tenant wasn’t.
This Agent Foskett briefing investigates Microsoft 365 privilege escalation, suspicious role assignments, overnight administrative access and the quiet indicators that often appear before a full cloud compromise.
Briefing summary
A quiet role assignment can become a complete Microsoft 365 takeover. GEMXIT investigates suspicious Entra ID role additions, Global Administrator escalation, PIM abuse and overnight privilege changes that often bypass traditional alerts.
What happened
Why privilege escalation matters
First hunt: investigate privileged role assignments
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
SigninLogs | where TimeGenerated > ago(7d) | where UserPrincipalName =~ "admin@company.com" | project TimeGenerated, UserPrincipalName, IPAddress, Location, AppDisplayName, ConditionalAccessStatus, DeviceDetail, AuthenticationRequirement | order by TimeGenerated desc
Second hunt: investigate suspicious administrative sign-ins
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
AuditLogs | where TimeGenerated > ago(14d) | where TargetResources has "user@company.com" | where OperationName has_any ( "Update user", "Disable account", "Reset password", "Revoke user sign in sessions" ) | project TimeGenerated, OperationName, Result, InitiatedBy, TargetResources | order by TimeGenerated desc
Third hunt: look for changes after privilege escalation
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
let EscalationTime = datetime(2026-05-20T03:12:00Z); AuditLogs | where TimeGenerated > EscalationTime | where OperationName has_any ( "Update conditional access policy", "Add service principal", "Consent to application", "Add app role assignment", "Update user", "Add member to role" ) | project TimeGenerated, OperationName, InitiatedBy, TargetResources, Result | order by TimeGenerated desc
Where this becomes dangerous
What should organisations do?
How GEMXIT approaches privilege escalation reviews
Final thought
It is: “Why did they suddenly become an administrator at 3:12AM?”
Continue the investigation with The User Passed MFA But It Wasn't Really Them, The Session Token Never Expired, The Login Came Through A Trusted Device, The Dashboard Was Green, MFA Session Hijacking, Identity and Access Security, Entra ID Security, Zero Trust and the GEMXIT Security Review.
Develop IT. Protect IT. GEMXIT PTY LTD | GEMXIT UK LTD