Active Directory Hardening
AD Without Eternal Admin Rights
In network security, structure beats improvisation: clear paths, fewer privileges, and explicit trust boundaries.
With Active Directory Hardening, privilege cleanup and trust hygiene deliver the greatest reduction in impact.
This way, you not only reduce the likelihood of incidents, but especially the scope and duration when something does go wrong.
Immediate actions (15 minutes)
Why this matters
The core of Active Directory Hardening is risk reduction in practice. Technical context supports the choice of measures, but implementation and assurance are central.
AD Defense: Core Measures
ACL Auditing
| Measure | Implementation |
|---|---|
| ACL monitoring | Event ID 5136 (Directory Service Changes) in SIEM |
| Privileged group monitoring | Event ID 4728, 4732, 4756 (group membership) |
| AdminSDHolder | Automatic ACL reset on protected groups |
| Tiered administration | Separate admin accounts per tier |
DCSync Prevention
| Measure | Implementation |
|---|---|
| Restrict replication rights | DC computer accounts only |
| Monitor replication | Event ID 4662 with Replicating GUIDs |
| Network segmentation | DCs in separate VLAN, only necessary traffic |
| Credential Guard | Prevents credential theft on endpoints |
Trust Hardening
| Measure | Implementation |
|---|---|
| SID Filtering | Enable on all trusts |
| Selective Authentication | Restrict cross-forest access to specific accounts |
| Trust audit | Regularly review all trusts for necessity |
| Quarantine policy | New forests in quarantine by default |
SQL Server Hardening
| Measure | Implementation |
|---|---|
| Least privilege service accounts | gMSAs instead of domain accounts |
| Disable xp_cmdshell | And monitor for re-enabling |
| Minimize linked servers | Remove unnecessary links |
| Require SMB signing | Prevents NTLM relay |
| SQL Server audit | Enable C2 audit logging |
Group Policy Preferences (GPP) Hardening
In 2014, Microsoft published MS14-025, a patch for a vulnerability
that had been known for years but that nobody took seriously:
Group Policy Preferences stored passwords in SYSVOL, encrypted with an
AES key that Microsoft had published themselves in their
documentation. Any domain user could read the XML files and decrypt the
passwords with tools like Get-GPPPassword.
| Measure | Implementation |
|---|---|
| Remove GPP passwords | Find and remove all cpassword attributes in SYSVOL
XML files |
| Implement LAPS | Local Administrator Password Solution replaces GPP for local admin passwords |
| SYSVOL permissions | Restrict read permissions on SYSVOL to what is strictly necessary |
| Verify MS14-025 | Verify that the KB2962486 patch is installed on all DCs |
| Monitoring | Monitor Event ID 4663 (object access) on Groups.xml,
Services.xml, ScheduledTasks.xml in
SYSVOL |
# Search for GPP passwords in SYSVOL
Get-ChildItem -Path "\\$env:USERDNSDOMAIN\SYSVOL" -Recurse -Include "Groups.xml","Services.xml","ScheduledTasks.xml","DataSources.xml","Drives.xml","Printers.xml" |
Select-String -Pattern "cpassword" |
ForEach-Object { Write-Warning "GPP password found: $($_.Path)" }
# LAPS installation verification
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd |
Where-Object { $_.'ms-Mcs-AdmPwd' -eq $null } |
Select-Object Name | Format-Table -AutoSize
# Computers without a LAPS password are vulnerableThe Cynical Final Word
"You know what the real problem with Active Directory is? It is not that it is insecure. It is that it is exactly as secure as the people who manage it. And those are the same people who set their wifi password to 'Welcome01!' and then are surprised that the neighbor is using their Netflix.
Active Directory is a Ferrari. A beautiful machine, full of power, with a thousand buttons and levers. And we hand the key to someone who just got their driver's license and say: 'Here, manage this for ten thousand users.' And then we are surprised when they crash into something.
My favorite part is the trust relationships. 'We trust this other domain.' Why? 'Because they asked.' Wonderful. Let us apply that principle to real life as well. 'Mr. banker, I trust this person, could you give him access to my vault?' 'But sir, who is this person?' 'No idea, but he is wearing a tie, so it must be fine.'
And you know what the worst part is? When you do a pentest and find all of these things, and you write it up in a report, the client says: 'Yes, but we already knew about that, we just did not have time to fix it yet.' NO TIME. As if security is something you do when you have a quiet weekend. 'Honey, shall we do the garden this weekend, or shall we prevent our entire IT infrastructure from being taken over by a random person with a PowerShell script?' Hmm, tough choice."
AD Defense Tree
This tree shows how Active Directory attacks branch out from a regular domain user. The left side focuses on ACL abuse and DCSync -- the classic path. The right side shows the SQL Server route that is often overlooked but can be equally effective.
In practice, the paths are not that separate. A UNC Path Injection gives you a hash that you can crack or relay. A Kerberoast hash leads to a service account that may have GenericAll on another object. Graph-based analysis makes dependencies and risk paths visible.
Historical Context: How We Got Here
The history of Active Directory is a story of good intentions and unforeseen consequences -- and it is fascinating.
In the nineties, each Windows server managed its own user database (SAM). If you had ten servers, you had ten separate user lists. It was chaos. Microsoft's solution was Windows NT 4.0 with domain controllers -- a central database for all users. But NT domains were flat: no hierarchy, no delegation, no fine-grained permissions.
In 2000, Active Directory came along, based on LDAP and Kerberos. It was revolutionary. Suddenly you could set up a hierarchy of domains, delegate permissions to specific OUs, and enforce policy via Group Policy. It was as if you went from a village square with a megaphone to an entire government apparatus with ministries, departments, and civil servants.
The problem? That same complexity became an attack surface. Every feature -- trusts, delegation, ACLs, GPOs, replication -- was a potential attack vector. And the default settings were aimed at functionality, not security.
Twenty-five years later, we are living with the consequences. Most Active Directory environments have grown organically, managed by rotating teams, and never fundamentally cleaned up. It is as if you have a city that has been expanded over the centuries without ever making a city plan. The roads are winding, the signage is inconsistent, and there are buildings that nobody uses anymore but that nobody dares to demolish.
George would say: "Active Directory is twenty-five years old. In human years, that is a quarter of a century. In IT years, that is a geological era. And yet we entrust the security of our entire infrastructure to it. That is like still having a lock on your front door from 2000 in 2026. A lock that everyone knows, for which YouTube tutorials exist, and for which the master key is for sale on Amazon for 9.95 euros including shipping."
Next chapter: Kerberos Attacks -- where we dissect the authentication protocol named after a three-headed hellhound, and discover that even mythological guardians are no match for creative attackers with a PowerShell prompt.
Further reading in the knowledge base
These articles in the portal give you more background and practical context:
- Firewalls -- the bouncer that does not stop everything
- Network segmentation -- why you should not connect everything to everything
- DNS -- the phone book that holds the internet together
- Logging and monitoring -- the security cameras of your IT environment
- Zero Trust -- trust no one, not even yourself
You need an account to access the knowledge base. Log in or register.
Related security measures
These articles provide additional context and depth: