You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The enumeration of ROADRecon offers information about the configuration of Entra ID, like users, groups, roles, conditional access policies...
474
+
ROADtools is one of the main open-source frameworks for Entra ID offensive research. The most relevant components are:
475
+
476
+
-**`roadrecon`**: tenant discovery and local dataset generation (users, groups, roles, devices, service principals, applications, directory settings).
477
+
-**`roadtx`**: token acquisition/exchange, refresh-token reuse, device registration, and PRT workflows.
478
+
-**`roadlib`**: lower-level auth/API library used by the other modules.
479
+
480
+
The collected data is stored in a local SQLite database and can be explored in the ROADrecon web UI, which is useful to map privileged users, role assignments, devices, service principals, and application relationships before planning persistence or lateral movement.
481
+
482
+
#### ROADrecon collection
475
483
476
484
```bash
477
485
cd ROADTools
@@ -484,6 +492,41 @@ roadrecon gather
484
492
roadrecon gui
485
493
```
486
494
495
+
ROADrecon originally targeted Azure AD Graph. As of **May 22, 2026**, the official repository still keeps Microsoft Graph support in the **`msgraph`** branch, and community forks such as **Tom2Byrne/ROADtools** continue updating Graph-based collection. In Graph-capable builds, ROADrecon adds the **`-mg`** switch to enumerate endpoints such as **`/users`**, **`/groups`**, **`/devices`**, **`/servicePrincipals`**, and **`/applications`**.
If you already have valid credentials, a refresh token, or a PRT-derived session, ROADtx is commonly used to:
507
+
508
+
-**Register a rogue Entra ID device** against **`urn:ms-drs:enterpriseregistration.windows.net`** to obtain device keys/certificates and create durable device-backed access.
509
+
-**Exchange/reuse refresh tokens** to get fresh Microsoft Graph or other resource tokens without repeating interactive sign-in.
510
+
-**Abuse PRT workflows** to silently mint new access tokens in the background.
511
+
512
+
A useful hunting clue is that default **`roadtx device`** values have historically been:
513
+
514
+
-**OS**: `Windows`
515
+
-**OS version**: `10.0.19041.928`
516
+
-**Name**: `DESKTOP-<RANDOM 8 DIGITS>`
517
+
518
+
These values are easy to change, so treat them as **weak indicators**. They are still useful when correlated with unusual device registration events, non-corporate naming patterns, suspicious source IPs/geos/ASNs, or scripted user agents.
519
+
520
+
#### ROADtools opsec / hunting notes
521
+
522
+
Because ROADtools uses legitimate Microsoft identity APIs, defenders should hunt for the **combination** of token activity, enumeration patterns, and user-agent anomalies instead of expecting malware-like signatures. Useful signals include:
523
+
524
+
-**Device registration** audit operations such as `Add device`, `Add registered owner to device`, `Add registered user to device`, and `Register device`
525
+
- Requests or sign-ins tied to **Device Registration Service**
526
+
- Script-like user agents such as **`python-requests`**, **`urllib`**, or **`curl`**
527
+
- Bursty Microsoft Graph reads against discovery-heavy endpoints like **`/users`**, **`/groups`**, **`/devices`**, **`/servicePrincipals`**, and **`/applications`**
528
+
- Powerful OAuth scopes appearing in audit data, especially **`Directory.ReadWrite.All`**, **`Device.ReadWrite.All`**, **`Application.ReadWrite.All`**, **`AuditLog.ReadWrite.All`**, and **`Policy.ReadWrite.All`**
AzureHound is the BloodHound collector for Microsoft Entra ID and Azure. It is a single static Go binary for Windows/Linux/macOS that talks directly to:
0 commit comments