The Ghosts of Exchange: Hidden Permissions Lurking in Active Directory

Microsoft Exchange On-Premises is one of the most deeply integrated services ever built for Active Directory.
It works. It does what it’s supposed to do. But along the way, it quietly gains more power than it needs.

When you install Exchange, it doesn’t just spin up a mail server.
It extends your Active Directory schema, adds a ton of attributes, and creates highly privileged groups.

It also applies Access Control Entries (ACEs) that let Exchange — and anyone who compromises it — do things like:

– Modify users and group memberships

– Write to sensitive attributes like ServicePrincipalName, msDS-AllowedToActOnBehalfOfOtherIdentity, and SIDHistory

– Delegate permissions across entire OUs

– Manage ACLs on users, computers, and even groups like Domain Admins

And all of that is considered normal behavior. It won’t trigger alerts, it won’t look suspicious.
It’s just Exchange doing what it was built to do — but often with far more access than necessary.

In real environments, these permissions are rarely reviewed, even years after deployment.
They just sit there, waiting for the wrong hands.

If You Keep Exchange Installed, You’re Leaving a Side Door Open

Let’s say you still have Exchange running. Maybe for hybrid use, maybe because of some legacy requirement.
That’s fine. But understand this:  A compromised Exchange server is a bridge into Active Directory.

Not a metaphorical bridge — a literal one.

Whoever owns Exchange can:

– Modify group memberships, including admins

– Activate delegation using RBCD (Resource-Based Constrained Delegation)

– Plant SPNs for Kerberoasting or pass-the-ticket attacks

– Write to SIDHistory and create stealthy backdoor accounts. While Exchange itself doesn’t have native rights to write the sIDHistory attribute, its excessive permissions in poorly secured environments may allow attackers to escalate and grant themselves that ability through ACL abu

– Escalate to Domain Admin with zero exploits, just built-in permissions

Exchange services themselves don’t run under custom service accounts — they operate under built-in system accounts like LocalSystem or the computer’s machine account (e.g., EXCH01$).
That’s by design, and it’s secure on paper.

But here’s the catch:

In real-world environments, Exchange servers often accumulate PowerShell scripts, admin tools, scheduled tasks, and legacy automation — many of which do use privileged domain accounts.
They’re used to manage mailbox provisioning, user permissions, reporting, and hybrid syncs with cloud systems.

These scripts and tasks often fly under the radar, run with excessive privileges, and rarely get reviewed.

If an attacker compromises the Exchange server, they’re not just getting a foothold they’re getting access to: cached or hardcoded credentials in scripts, scheduled jobs that run with elevated rights, and the ability to execute PowerShell in a domain-joined, AD-integrated context.

So even though Exchange doesn’t use service accounts directly, it’s often surrounded by automation components that do — and those can become attack paths with minimal effort.

If You Removed Exchange, Your Job Isn’t Done

Now let’s flip it.
You uninstalled Exchange, cleaned up the servers, shut everything down. Good job, right?

Not so fast. Active Directory doesn’t forget.

Unless you manually clean up after Exchange, it will leave behind:

– Configuration objects in the CN=Configuration naming context

– Legacy admin groups like Exchange Trusted Subsystem, Exchange Windows Permissions, Organization Management

– killACLs and permissions those groups had on OUs, user objects, and even domain-level resources

– User attributes like homeMDB, legacyExchangeDN, and msExch* that are no longer used, but still exist

Worse: if those groups still exist and someone joins them — intentionally or not — they might inherit powerful write access without anyone realizing it.

Same goes for Autodiscover DNS records.
They might still be alive in your zone, allowing malicious actors on the same network to impersonate Exchange and collect user credentials.

The Real Threat: Invisible Access

Here’s the problem: None of this looks malicious. Nothing screams “attack.”
Exchange is simply using the permissions it was given — and often, way too many of them.

The attack surface is there, just not visible unless you know exactly where to look.

This isn’t about bugs or exploits.
It’s about design choices made during installation that never get revisited.

And that’s exactly what attackers love:
Privileged access that’s always been there, waiting, with no logs, no alerts, no scrutiny.

Final Thoughts

Exchange isn’t the problem.
Unmonitored privilege is.

The real threat isn’t some new exploit or CVE — it’s all the legitimate permissions Exchange was granted and never gave back. If you’re keeping Exchange, make sure it’s locked down and monitored.
If you’ve removed it, make sure it’s really gone from Active Directory.