Overview
Encrypted local administrator passwords, scoped Group Policy, delegated readers, and positive and negative access tests.
Classification: Validated lab work.
Operational scenario & objectives
Protect local administrator credentials with encrypted AD backup while proving that authorized readers can retrieve metadata and unauthorized users cannot.
Environment & technologies
Personal AD lab: DC01 and the WS01 endpoint in a dedicated LAPS-Test OU; an enabled LocalAdmin account and a delegated reader group.
Architecture
Personal AD lab: DC01 and the WS01 endpoint in a dedicated LAPS-Test OU; an enabled LocalAdmin account and a delegated reader group.
Implementation & administration
Project 01 · COMPLETE
Windows LAPS & Advanced Group Policy
Enterprise-style local administrator password management with encrypted AD backup, delegated readers, policy validation, and documented troubleshooting.
Scope
Windows LAPS on a controlled AD test scope
Modern Windows LAPS was implemented against WS01 in a dedicated protected OU under the existing AD domain. The project intentionally reused working identity infrastructure and avoided unnecessary rebuilds.
Design
Least privilege and encrypted AD backup
The design uses modern Windows LAPS, encrypted Active Directory password storage, a dedicated reader group, OU-scoped permissions, and a managed local LocalAdmin account instead of enabling the built-in Administrator.
Implementation
Schema, OU permissions, GPO, managed account
The AD schema was extended for modern LAPS. WS01 was moved into the LAPS-Test OU. Computer self-permission and reader delegation were applied. A GPO configured AD backup, password complexity, 14-character passwords, 30-day age, encryption, authorized decryptors, and the managed account name.
Validation
Positive and negative access tests
Validation included gpresult, RSOP, LAPS operational events, safe metadata retrieval, forced password rotation, encrypted AD attribute presence, delegated reader success, and an unauthorized-user test that returned no LAPS record.
Troubleshooting
RPC/WMI and client-side RDP issues
RSOP initially failed because WS01 WMI firewall rules were disabled. Enabling only the required Domain-profile WMI rules restored remote WMI and Group Policy Results. A separate mstsc client hang was isolated to the administrative laptop, not DC01.
Evidence
Sanitized validation
- Evidence indexRecruiter-friendly Windows LAPS validation
- Schema attributesModern msLAPS attributes present
- Effective policyEvent 10021 sanitized policy state
- Final retrievalEncrypted source and successful delegated decryption
- Forced rotationEvents 10014, 10020, 10018, 10004
- Negative access testUnauthorized user returned no LAPS record
- AD attribute presenceEncrypted password attribute confirmed without exposing content
Windows LAPS & Advanced Group Policy / README.md
Windows LAPS & Advanced Group Policy
Status
COMPLETE
This project demonstrates a validated deployment of modern Windows LAPS in the ad.jeremyfontenot.online Active Directory lab using a dedicated test OU, Group Policy, encrypted password storage, least-privilege delegation, event-log validation, and forced password rotation.
Environment
| Component | Configuration |
|---|---|
| AD domain | ad.jeremyfontenot.online |
| NetBIOS | JFAD |
| Domain controller | DC01 - Windows Server 2022 |
| Test endpoint | WS01 - Windows 10 Pro 10.0.19045 |
| Test OU | OU=LAPS-Test,OU=Workstations,OU=JFAD,DC=ad,DC=jeremyfontenot,DC=online |
| LAPS GPO | GPO - Workstations - Windows LAPS |
| Managed account | LocalAdmin |
| Reader group | JFAD\GG-LAPS-Password-Readers |
Validated controls
- Modern Windows LAPS module present on DC01 and WS01
- AD schema inspected before modification
Update-LapsADSchemacompleted and sixmsLAPS-*attributes validated- Dedicated
LAPS-TestOU created and WS01 moved into scope - Computer self-permission delegated with
Set-LapsADComputerSelfPermission - Dedicated password-reader group created and delegated with
Set-LapsADReadPasswordPermission - GPO configured for AD backup, 30-day age, 14-character complex passwords, encrypted storage, and an authorized decryptor group
gpupdate,gpresult, and GUI Group Policy Results/RSOP validated- Windows LAPS Event IDs 10021, 10020, 10018, 10014, and 10004 validated
- Delegated non-admin retrieval succeeded
- Unauthorized standard-user retrieval returned no LAPS record
- Forced password rotation changed the password update and expiration timestamps
Security design
The built-in RID-500 Administrator account remains disabled. Windows LAPS manages the existing enabled WS01\LocalAdmin account instead. Passwords are stored using encrypted Windows LAPS attributes in Active Directory. The actual password is intentionally excluded from all portfolio evidence.
Documentation
Architecture / architecture.md
Architecture
Objective
Deploy modern Windows LAPS in a controlled Active Directory test scope using Group Policy, encrypted password storage, and delegated least-privilege access.
Logical path
Administrative laptop -> DC01 -> LAPS-Test OU -> WS01 -> LocalAdmin
The administrative laptop is not domain joined, so domain-integrated administration was performed through DC01 by PowerShell remoting and RDP.
AD and endpoint design
- Domain:
ad.jeremyfontenot.online - Domain controller / Schema Master:
DC01 - Domain functional level: Windows Server 2016
- Endpoint:
WS01 - Endpoint OS: Windows 10 Pro build 19045
- OU:
OU=LAPS-Test,OU=Workstations,OU=JFAD,DC=ad,DC=jeremyfontenot,DC=online
LAPS schema
The schema was first queried for msLAPS-* attributes. None were present. Update-LapsADSchema was then run with temporary Schema Admin membership, after which the membership was removed.
Validated attributes:
msLAPS-PasswordmsLAPS-PasswordExpirationTimemsLAPS-EncryptedPasswordmsLAPS-EncryptedPasswordHistorymsLAPS-EncryptedDSRMPasswordmsLAPS-EncryptedDSRMPasswordHistory
Group Policy
GPO: GPO - Workstations - Windows LAPS
Settings:
- Backup directory: Active Directory
- Managed account:
LocalAdmin - Password age: 30 days
- Password length: 14
- Complexity: uppercase + lowercase + numbers + special characters
- Password expiration protection: enabled
- Password encryption: enabled
- Authorized decryptor:
JFAD\GG-LAPS-Password-Readers
Delegation
Set-LapsADComputerSelfPermission grants managed computers permission to update their own LAPS attributes. Set-LapsADReadPasswordPermission delegates password-read rights to JFAD\GG-LAPS-Password-Readers.
The final test reader account laps.reader01 belongs only to Domain Users and GG-LAPS-Password-Readers, demonstrating delegated access independent of Domain Admin privileges.
Sanitized Evidence Index / README.md
Sanitized Evidence Index
This folder contains portfolio-safe evidence reconstructed from the validated command output captured during the lab. Managed passwords and authentication secrets are intentionally excluded.
Core evidence
Security handling
Never publish:
- Windows LAPS managed passwords
- domain passwords
- recovery secrets
- private keys
- tokens
- VPN credentials
The repository intentionally records only non-secret metadata such as account name, timestamps, encryption source, decryption status, authorized decryptor, event IDs, and GPO configuration.
Troubleshooting Evidence / troubleshooting-evidence.md
Troubleshooting Evidence
RDP
- TCP 3389 to DC01: reachable
- Local client failure:
mstsc.exeAppHangB1 / Event ID 1002 - Working launch:
mstsc /public /admin /v:dc01.ad.jeremyfontenot.online
WMI / RSOP
Initial WMI result:
The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
WMI firewall rule source:
PolicyStoreSourceType : Local
PolicyStoreSource : PersistentStore
Enabled : False
Profile : Domain
After enabling the Domain-profile PersistentStore WMI rules:
CSName : WS01
Caption : Microsoft Windows 10 Pro
Version : 10.0.19045
The Group Policy Results wizard then completed successfully.
Windows LAPS Validated Results / validated-results.md
Windows LAPS Validated Results
Schema extension
Post-extension query returned all required modern attributes:
msLAPS-EncryptedDSRMPassword
msLAPS-EncryptedDSRMPasswordHistory
msLAPS-EncryptedPassword
msLAPS-EncryptedPasswordHistory
msLAPS-Password
msLAPS-PasswordExpirationTime
OU and delegation
WS01 final OU:
OU=LAPS-Test,OU=Workstations,OU=JFAD,DC=ad,DC=jeremyfontenot,DC=online
Extended-right holders:
NT AUTHORITY\SYSTEM
JFAD\Domain Admins
JFAD\GG-LAPS-Password-Readers
Final reader group membership:
Name : LAPS Reader Test
SamAccountName : laps.reader01
ObjectClass : user
laps.reader01 group memberships:
Domain Users
GG-LAPS-Password-Readers
GPO application
gpresult /r /scope computer included:
GPO - Workstations - Windows LAPS
Effective policy - Event 10021
Policy source: GPO
Backup directory: Active Directory
Local administrator account name: LocalAdmin
Password age in days: 30
Password complexity: 4
Password length: 14
Password expiration protection enabled: 1
Password encryption enabled: 1
Password encryption target principal: JFAD\GG-LAPS-Password-Readers
Final encrypted retrieval
ComputerName : WS01
Account : LocalAdmin
PasswordUpdateTime : 9/11/2026 7:06:17 PM
ExpirationTimestamp : 10/11/2026 7:06:17 PM
Source : EncryptedPassword
DecryptionStatus : Success
AuthorizedDecryptor : JFAD\GG-LAPS-Password-Readers
AD attribute presence
Name : WS01
msLAPS-PasswordExpirationTime : 134362343115244738
EncryptedPasswordPresent : True
Final rotation events
10014 - Administrator-initiated password update
10020 - LocalAdmin password successfully updated
10018 - Active Directory successfully updated
10004 - LAPS policy processing succeeded
Negative access test
ACCESS TEST RESULT: No LAPS record returned for unauthorized user.
No managed password value is present in this evidence.
Implementation / implementation.md
Implementation
- Validated the modern
LAPSPowerShell module on DC01 and WS01. - Queried the AD schema for
msLAPS-*attributes before making changes. - Temporarily added
jeremy.fontenottoSchema Admins, refreshed the logon token, and ranUpdate-LapsADSchema -Verbose. - Verified all six modern Windows LAPS schema attributes and removed the temporary Schema Admin membership.
- Created
OU=LAPS-TestunderOU=Workstationswith accidental-deletion protection. - Moved WS01 from the existing Windows 10 OU into
LAPS-Test. - Delegated computer self-permission with
Set-LapsADComputerSelfPermission. - Created
GG-LAPS-Password-Readersand delegated read permission withSet-LapsADReadPasswordPermission. - Created and linked
GPO - Workstations - Windows LAPSto the LAPS-Test OU. - Configured AD backup, 30-day age, 14-character complex passwords, encryption, and
GG-LAPS-Password-Readersas the authorized decryptor. - Initially allowed LAPS to target the built-in Administrator account. Event ID 10067 showed that the account was disabled.
- Reviewed WS01 local Administrators and found the existing enabled
LocalAdminaccount. - Updated the GPO to manage
LocalAdminrather than enabling the built-in Administrator account. - Forced Group Policy processing and validated the effective policy through Event ID 10021.
- Created non-admin reader account
laps.reader01, added it to the reader group, and validated encrypted retrieval. - Created a temporary unauthorized standard user and confirmed it could not retrieve the LAPS record; the account was then deleted.
- Forced a final
Reset-LapsPasswordand validated the new timestamps and Event IDs 10014, 10020, 10018, and 10004.
Lessons Learned / lessons-learned.md
Lessons Learned
- Verify
msLAPS-*schema state before runningUpdate-LapsADSchema. - Use temporary privilege for schema changes and remove it immediately afterward.
- Scope testing to a dedicated OU rather than broad workstation containers.
- Separate LAPS password-read rights from Domain Admin privileges.
- Prefer encrypted password storage and an explicit decryptor group.
- Select the managed account intentionally; LAPS can rotate a disabled account, but that does not make the account usable for recovery.
- Event IDs 10021, 10020, 10018, 10014, and 10004 provide strong operational evidence.
gpresultand GUI RSOP validate complementary layers of Group Policy application.- Troubleshoot the failing layer from evidence: transport, WMI/RPC, firewall policy source, policy application, and finally LAPS processing.
- Portfolio evidence should show timestamps, source, account, decryption status, and authorization metadata while excluding the password itself.
Troubleshooting / troubleshooting.md
Troubleshooting
RDP client hang
TCP 3389 to DC01 was reachable, but the local Remote Desktop Connection client hung or closed. Windows Error Reporting showed mstsc.exe AppHangB1 / Application Hang Event ID 1002.
Resolution:
mstsc /public /admin /v:dc01.ad.jeremyfontenot.online
The administrative RDP session then opened successfully.
RSOP / WMI RPC failure
The Group Policy Results wizard initially failed to query WS01. A direct WMI test returned 0x800706BA - The RPC server is unavailable.
Inspection showed all Windows Management Instrumentation (WMI) firewall rules were disabled and originated from the local PersistentStore.
The Domain-profile WMI rules were enabled in PersistentStore. A subsequent Get-WmiObject Win32_OperatingSystem -ComputerName WS01 succeeded and the GUI Group Policy Results report generated correctly.
Disabled built-in Administrator
LAPS Event ID 10067 reported that the built-in Administrator account was disabled. WS01 already had an enabled custom LocalAdmin account in the local Administrators group.
The LAPS GPO was updated to manage LocalAdmin. Event IDs 10021 and 10020 then confirmed the intended account and successful password update.
Reader account could not WinRM to DC01
laps.reader01 intentionally lacked administrative/WinRM rights on DC01. Rather than granting unnecessary remote-administration permission, Get-LapsADPassword -Credential and -DecryptionCredential were used inside the existing administrative remoting session to validate the delegated reader credentials.
Validation / validation.md
Validation
Group Policy
gpupdate /force completed successfully on WS01. gpresult /r /scope computer listed GPO - Workstations - Windows LAPS under Applied Group Policy Objects. The Group Policy Results wizard was also generated after WMI/RPC remediation.
Effective policy
Event ID 10021 reported:
Policy source: GPO
Backup directory: Active Directory
Local administrator account name: LocalAdmin
Password age in days: 30
Password complexity: 4
Password length: 14
Password expiration protection enabled: 1
Password encryption enabled: 1
Password encryption target principal: JFAD\GG-LAPS-Password-Readers
AD backup and retrieval
Sanitized final retrieval:
ComputerName : WS01
Account : LocalAdmin
PasswordUpdateTime : 9/11/2026 7:06:17 PM
ExpirationTimestamp : 10/11/2026 7:06:17 PM
Source : EncryptedPassword
DecryptionStatus : Success
AuthorizedDecryptor : JFAD\GG-LAPS-Password-Readers
The Password property was deliberately excluded.
Forced rotation
Event sequence:
- 10014 - administrator-initiated password update
- 10020 -
LocalAdminpassword updated - 10018 - Active Directory updated with the new password
- 10004 - LAPS policy processing succeeded
Least privilege
laps.reader01 was validated with only Domain Users and GG-LAPS-Password-Readers memberships and successfully decrypted the encrypted LAPS record.
A standard user outside the reader group produced:
ACCESS TEST RESULT: No LAPS record returned for unauthorized user.
AD attribute presence
Name : WS01
msLAPS-PasswordExpirationTime : 134362343115244738
EncryptedPasswordPresent : True
Troubleshooting
RSOP failed with RPC error 0x800706BA because WS01 WMI firewall rules were disabled. Enabling the required Domain-profile rules restored WMI and Group Policy Results. Event 10067 also led to targeting the existing LocalAdmin account instead of the disabled built-in Administrator.
Validation & results
Encrypted attribute presence, delegated retrieval, unauthorized-access denial, effective policy, and forced-rotation events support the completed Windows LAPS scope.
Evidence
STRONG — implementation, validation, troubleshooting, sanitized evidence, and a reusable validation script are documented.
Skills demonstrated
View the complete capability map →Limitations & claim boundaries
Next milestones
Maintenance-only unless the lab changes; revalidate after material AD/GPO/LAPS changes.