0%
BACK TO OVERVIEW

The Entra ID Attack Path: When Pentests Stop Finding Passwords

The Entra ID Attack Path: When Pentests Stop Finding Passwords
Entra ID Attack Path: When the Pentest No Longer Finds Passwords

Three weeks of domain hardening, forty minutes to Global Admin

The IT team presents a clean tiering model, LAPS on every client, a long minimum password length for admin accounts, SMB signing enforced everywhere, and alerting on suspicious Kerberos tickets. The on-prem Active Directory is in a state that takes most companies two years to reach. After a day and a half on the internal network, there is exactly zero usable escalation.

So the test shifts layers and targets the tenant, where the identities actually live. The Entra ID attack path a pentest uncovers today rarely starts with a password and almost always starts with an object nobody manages anymore. Enumeration runs through Microsoft Graph and the Azure REST APIs, collected with AzureHound and imported into BloodHound to visualize roles, ownership, and permission chains as a graph.

The hit is called RPA-Rechnungsimport-TEST, created in 2021 by an external contractor who left in 2023. The client secret has expired. The permissions have not. The owner of the associated service principal is an accounting account without any admin role, which had already been taken over earlier in the test through a phishing simulation. This exact path is covered in a detailed write-up: owning a privileged service principal is enough to assume its identity simply by adding a new client secret.

The rest is legwork. Create a new secret, authenticate as the service principal, inherit its permissions, issue a Temporary Access Pass for a Global Admin account, sign in to the Azure portal. Total time from the compromised accounting account: roughly forty minutes. No hashes, no cracking, no Kerberoasting.

The entire chain ran without a single cracked password. It ran on object ownership and API permissions.

Entra ID is not Active Directory with a web UI

In Entra ID, credentials are just one of several currencies. Alongside them are consent grants, client secrets, certificates, role assignments on workload identities, and ownership. All of it is reachable via API, and all of it survives a password reset.

22%
99.2%
of identity-based attacks blocked by MFA
25
organizations with compromised mailboxes in Storm-0558
531,770
findings from 4,970 analyzed pentests

Compromised credentials were the initial vector, and Microsoft justifies mandatory MFA registration in Security Defaults by pointing out that MFA blocks more than 99.2% of identity-based attacks. Even so, starting in May 2023, Storm-0558 accessed the email accounts of around 25 organizations, including government agencies, using forged tokens rather than passwords. The sheer breadth of the issue is also reflected in the sample of the Penetration Testing Intelligence Report 2026: 531,770 vulnerabilities from 4,970 pentests.

On-Prem AD
Credential-centric
Kerberos · NTLM · Tiering · LAPS
→
Escalation requires a hash, a ticket, or a cleartext password
→
Attack surface ends at the firewall
→
A password reset usually revokes access
→
Objects are users, groups, computers
Entra ID
Permission-centric
OAuth · Graph · Service Principals · Consent
→
Escalation requires a secret you create yourself
→
Attack surface is reachable worldwide via API
→
A password reset leaves app tokens untouched
→
Objects are apps, principals, roles, grants

On top of that comes time pressure from Redmond. Starting February 1, 2026, Microsoft enforces MFA for administrative roles, and for new tenants, legacy authentication protocols are already switched off as of January 15, 2026. Anyone who doesn't validate their Conditional Access policies beforehand risks a false sense of security. On the regulatory side, NIS2 pulls in the same direction: under Section 30(2), sentence 2, no. 9 of the German BSI Act (BSIG), important and essential entities must document concepts for access control and the management of ICT systems. An access control concept that doesn't mention app registrations is incomplete as NIS2 evidence.

The Entra ID attack path in a pentest: five steps without a single password

Step 1
Consent Phishing
Malicious OAuth app, victim clicks "Accept", app gains persistent data access.
Step 2
Enumeration
Graph and Azure REST APIs return roles, owners, and permission chains as a graph.
Step 3
Ownership Abuse
The owner of a privileged service principal creates a new client secret.
Step 4
Pivot
Inherited permissions reset a Global Admin password or issue a TAP.
Step 5
Policy Bypass
A broker token flow disguises access as a legitimate request from a trusted host app.

Step 1 is the most inconspicuous. In a so-called illicit consent grant, the attacker tricks the victim into granting a malicious OAuth app access to their data, after which the app gains account-wide access without ever asking for an organizational account password. To the user, it looks like any other Microsoft sign-in prompt. To the SIEM, it looks like a successful login.

Step 5 is the one that frustrates defenders the most. In many organizations, Conditional Access is considered the final control, yet it can be bypassed via Nested App Authentication using the brk_client_id and brk_redirect_uri parameters in an otherwise unremarkable token request. The request poses as the broker flow of a trusted host app toward login.microsoftonline.com.

Case // January 2024
Midnight Blizzard: getting in through a forgotten test application
The attackers got into Microsoft's own corporate environment because a highly privileged Entra ID user had previously granted a "legacy test OAuth application" permissions such as User.ReadWrite.All or Directory.ReadWrite.All. Through this leftover, they created a new user account and granted themselves additional consents in the tenant. The permission had been valid for years and was never revoked.
Source: Wiz - Midnight Blizzard attack on Microsoft corporate environment

Unmanaged app registrations are persistent access paths that keep authenticating long after the team and the business purpose behind them are gone.

Three things you hear over and over again

Myth 01
"Our AD is hardened."
Tiering, LAPS, password policy
  • Addresses credential theft, not object ownership
  • Consent grants sit outside the tier model
  • Service principals have no password that could expire
Myth 02
"Nobody uses that app anymore."
Expired registrations
  • An expired secret doesn't mean revoked permissions
  • Any owner can create a new secret
  • This exact path hit Microsoft itself
Myth 03
"Conditional Access will catch it."
Policy as the final control
  • Broker flows look like legitimate requests
  • App tokens don't care about device compliance
  • Policies are rarely tested against current bypasses

A finding from this year shows that even Microsoft has to keep patching in this area: a vulnerability in the "Agent ID Administrator" role allowed full takeover of arbitrary service principals by letting the attacker assume ownership and add their own credentials. Microsoft has since restricted the role to agent-related objects.

The pattern stays the same. Whoever owns the objects owns the identities.

Case // Golden SAML
When the hybrid setup betrays the cloud
Attackers moved laterally to an AD FS server, exported the on-prem token-signing certificate, and used it to forge SAML tokens, letting them sign in to Microsoft 365 and Entra ID without a password and without MFA. Access persisted even after full password resets, until the certificate was replaced.
Source: Netwrix - Golden SAML attacks

That's why, in hybrid environments, the federation infrastructure belongs in the same test scope as the domain controllers. CISA has published the SCuBA Hybrid Identity Solutions Guidance for exactly this interface.

What you should check in your tenant

The good news: almost all of this is inventory and process work, not a product purchase.

The bad news: nobody feels responsible, because app registrations fall between IT operations, development, and the business units.

  • Consent and owner inventory: List all OAuth permissions and all owners of service principals. Standard users who own objects with directory permissions are a particular red flag.
  • Lifecycle for app registrations: Mandatory owners, expiry monitoring for secrets, automatic revocation when unused. Otherwise, unmanaged registrations remain as persistent access paths.
  • Admin consent workflow: Disable end-user consent for permissions on directory data and route requests through an approval process, so that an illicit consent grant doesn't come down to a single click.
  • Test Conditional Access instead of assuming it works: Check whether your policies hold up against known bypasses such as Nested App Authentication.
  • MFA and Security Defaults: Enforce them for every privileged role. Microsoft puts the impact at more than 99.2% of identity-based attacks blocked.
  • Federation as Tier 0: Treat AD FS servers like domain controllers and rotate token-signing certificates.

A single well-maintained report on owners and consents would have broken the entire chain in the test described at the start. Give it a fixed slot in your calendar: every quarter.

Questions CISOs ask about Entra ID pentests

Can Conditional Access in Entra ID be bypassed?

Yes, it's documented and doesn't require an exploit in the classic sense. Nested App Authentication allows a token exchange using the brk_client_id and brk_redirect_uri parameters that looks like a normal request from a trusted host app. Conditional Access is therefore a layer of protection, but not the last line of defense.

What is an illicit consent grant?

An attack in which a user is tricked into allowing a malicious OAuth application to access their data. The app then gains account-wide access without needing an organizational account password. MFA doesn't help, because the user signs in normally and grants consent deliberately.

Is MFA enough to secure Entra ID?

MFA is the single most effective measure and, according to Microsoft, blocks more than 99.2% of identity-based attacks. However, it does nothing against compromised service principals, granted consents, or forged tokens, since none of these paths involve an interactive user sign-in. Both need to be controlled in parallel.

Object ownership is the new password

The pentest from the introduction ended with a report that didn't contain a single cracked hash. For IT leadership, that was the most uncomfortable takeaway. Three years of work on Active Directory had been the right call and still didn't block the path to Global Admin, because that path ran through a tenant that, formally, nobody felt responsible for.

The major incidents follow the same pattern. With Midnight Blizzard, it was a test application with Graph permissions that were never revoked; with Storm-0558, it was a signing key that ended up in a crash dump. In both cases, it started with an overlooked object, not a password.

  • Expand the scope: If you only test on-prem, you get a clean report on the wrong half of your organization's identities.
  • Ownership is privilege: Every ownership of a service principal belongs in the same risk class as an admin role.
  • Set a date: Review consents and apps quarterly, not just when something happens.

Do you know who owns your service principals?

When passwords are no longer the weak spot, identities, over-privileged service principals, and dormant permissions in Entra ID move into focus. We uncover your hidden attack paths before someone else does.

Request an initial consultation →