Azure AD Graph Potential Enumeration (ROADrecon)
Detects an Azure AD Graph (graph.windows.net) burst from a user-agent identifying as "aiohttp" (the default HTTP library used by ROADrecon's "gather" command) where a single calling identity issues many requests in a…
Description
Detects an Azure AD Graph (graph.windows.net) burst from a user-agent identifying as "aiohttp" (the default HTTP library used by ROADrecon's "gather" command) where a single calling identity issues many requests in a short window. ROADrecon walks every interesting directory object type via aiohttp, producing a large volume of requests from one user / source IP / UA triple. The combination of "aiohttp" UA with a burst threshold is a structural ROADrecon signature; legitimate first-party Microsoft components do not identify as aiohttp.
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 activity exercising ROADrecon. Document the engagement window and add exceptions on the source IP or calling user.
- Developer activity using aiohttp against AAD Graph for prototyping. Rare in production tenants and typically low-volume; the burst threshold limits exposure.
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/dirkjanm/ROADtools/blob/master/roadrecon/roadtools/roadrecon/gather.py | Only this detection cites it |
| learn.microsoft.com/en-us/graph/migrate-azure-ad-graph-overview | 6 |
From the source
- At source
- Open at source
- Upstream identifier
- 80aa6cca-b343-457b-877e-5877cd71a1f8
- 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