Azure AD Graph Access with Suspicious User-Agent
Identifies Azure AD Graph (graph.windows.net) requests originating from user-agent strings associated with offensive tooling, scripting libraries, or generic HTTP clients. First-party Microsoft components calling AAD…
Description
Identifies Azure AD Graph (graph.windows.net) requests originating from user-agent strings associated with offensive tooling, scripting libraries, or generic HTTP clients. First-party Microsoft components calling AAD Graph identify with specific user agents such as "Microsoft Azure Graph Client Library", "Microsoft ADO.NET Data Services", or "Microsoft.OData.Client". Anything outside that recognised set is either a developer prototyping against the legacy API or an enumeration tool walking the directory.
Detection logic
Its licence does not clear it for publishing here
Sunturai publishes a detection's own text where the licence it arrived under has been reviewed and permits it, and Elastic License 2.0 has not. The query as its source wrote it, its canonical form and the hash that pins this revision are in the workspace record.
Detection requirements
- Platform
- ContainersESXiIaaSIdentity ProviderLinuxmacOSOffice SuiteSaaSWindows
The rule states no platform. This is derived from the 3 ATT&CK techniques it maps to.
Known benign triggers
- Authorized red team or penetration test activity using ROADrecon, ROADtools, AADInternalsor similar tooling can match. Add exceptions on the source IP, signed-in user, or app ID after validation.
- Developer activity prototyping against AAD Graph from a workstation may match. Validate via the calling `azure.aadgraphactivitylogs.properties.app_id` and the signed-in user; legitimate developer use is rare in production tenants since Microsoft has been steering callers off AAD Graph for years.
MITRE ATT&CK mappings
0 exclusive techniques.This is coverage no other published rule has; it is not this rule's total technique count.
References
| Reference | Cited by |
|---|---|
| github.com/dirkjanm/ROADtools | 16from 2 sources |
| github.com/gerenios/aadinternals | Only this detection cites it |
| learn.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview | 6 |
| www.sophos.com/en-us/research/tampering-with-conditional-access-policies-using-azure-ad-graph-api | Only this detection cites it |
From the source
- At source
- Open at source
- Upstream identifier
- 3aec394d-ed2a-4f3e-8ed3-4a2adea39f05
- Tagged by the source as
- Data Source: AzureData Source: Azure AD GraphData Source: Azure AD Graph Activity LogsDomain: CloudDomain: IdentityNoise: UnknownPerformance: FastPlatform: Entra IDResources: Investigation GuideRule Type: ES|QLTactic: DiscoveryUse Case: Threat Detection
Licence
- Published under
- Elastic License 2.0Read the licence
- Attribution
- Required
Authorship
- Written by
- Published
- Sep 20, 2026
- Version
- 3