Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gopacket — Un port completo en Go de Impacket: 63 herramientas CLI y 24 bibliotecas para ataques a protocolos de Windows y Active Directory, compilado en un único binario sin dependencias. | Kitploit
Herramientas/GitHubGitHub/mandiant/gopacket
Frameworks de Pruebas de PenetraciónEscalada de PrivilegiosFrameworks de ExploitsAtaques de ContraseñasMovimiento LateralPost-ExplotaciónSeguridad de RedesComando y ControlRed TeamingHerramienta de Acceso Remoto
GitHub
7076142hace 1 mesRevisado por Kitploit
mandiant/gopacket

gopacket

Un port completo en Go de Impacket: 63 herramientas CLI y 24 bibliotecas para ataques a protocolos de Windows y Active Directory, compilado en un único binario sin dependencias.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

gopacket

Por Jacob Paullus (@psycep_)

Una implementación completa en Go de Impacket - 63 herramientas y 24 paquetes de biblioteca para la interacción con protocolos de red de Windows, enumeración de Active Directory y ejecución de ataques. Construido como un framework nativo de Go para que puedas compilar una vez y ejecutar en cualquier lugar sin dependencias de Python.

Versión Beta - Altamente Experimental. gopacket está en desarrollo activo. Las herramientas principales han sido probadas contra entornos de laboratorio de Active Directory, pero se esperan casos límite y peculiaridades de protocolo. Si algo no funciona, por favor prueba la misma operación con Impacket en paralelo e incluye ambas salidas en tu informe de error. Esto nos ayuda a identificar rápidamente si es un problema específico de gopacket o una limitación de protocolo compartida.

Instalación

root@kitploit:~
git clone https://github.com/mandiant/gopacket
cd gopacket

# Default: Linux/macOS build + install to /usr/local/bin
./install.sh

# Run with no flags and it prompts you through the choices interactively.
# Or pick a target directly:
./install.sh --target portable   # static Linux binaries in ./dist/portable/
./install.sh --target windows    # Windows .exe cross-compiles in ./dist/windows/
./install.sh --target all        # build every target in one run

# Build without installing (native only)
./install.sh --build-only

# Or build with make
make build

La compilación predeterminada (--target native) requiere Go 1.24.13+, GCC y los encabezados de desarrollo de libpcap (apt install build-essential libpcap-dev en Debian/Ubuntu/Kali, yum install gcc libpcap-devel en RHEL/CentOS, o brew install libpcap en macOS). Los objetivos portable y windows solo necesitan el toolchain de Go; sniff y split se convierten en stubs en esas compilaciones porque requieren libpcap. Consulta Soporte de Plataformas para la matriz completa.

Soporte de Plataformas

gopacket compila en Linux, macOS y Windows. El conjunto de herramientas funcionales y las rutas de proxy disponibles dependen de los flags de compilación:

CompilaciónHerramientas disponiblesProxy
Linux / macOS con cgo (predeterminado)Las 63proxychains (LD_PRELOAD) y/o -proxy SOCKS5
Linux con CGO_ENABLED=061 (sniff, split se convierten en stubs)solo -proxy (proxychains necesita el hook de libc)
Windows (GOOS=windows CGO_ENABLED=0)60 (stubs de sniff, split, sniffer)solo -proxy (no hay LD_PRELOAD en Windows)

sniff y split dependen de libpcap a través de cgo; sniffer depende de sockets raw de Unix. Cuando una herramienta no se puede compilar para el objetivo, gopacket sustituye un stub que imprime un mensaje claro y sale con código 1, de modo que go build ./... siempre tiene éxito y el diseño de instalación es consistente entre plataformas.

Para desinstalar:

root@kitploit:~
./install.sh --uninstall

Soporte de Proxy

gopacket soporta dos rutas de proxy independientes. También se pueden encadenar.

proxychains (LD_PRELOAD)

Todas las herramientas de gopacket funcionan a través de proxychains. Los binarios de Go normalmente omiten proxychains porque el runtime de Go maneja DNS y redes internamente, saltándose los hooks de LD_PRELOAD en los que se basa proxychains. gopacket soluciona esto enlazando contra la biblioteca C del sistema para operaciones de red, permitiendo que proxychains intercepte las conexiones normalmente.

root@kitploit:~
proxychains gopacket-secretsdump 'domain/user:password@target'
proxychains gopacket-smbclient -k -no-pass 'domain/[email protected]'

Proxy SOCKS5 interno (-proxy)

Todas las herramientas aceptan -proxy para enrutar el TCP saliente a través de un servidor SOCKS5 sin depender de LD_PRELOAD. Esquemas aceptados: socks5 y socks5h. Cuando -proxy no está establecido, se consultan las variables de entorno ALL_PROXY / all_proxy como respaldo.

root@kitploit:~
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'domain/user:password@target'
ALL_PROXY=socks5h://127.0.0.1:1080 gopacket-smbclient 'domain/user:password@target'

Las funciones dependientes de UDP están deshabilitadas bajo -proxy en lugar de filtrar paquetes silenciosamente (SOCKS5 UDP ASSOCIATE rara vez es soportado por los proxies, y omitir el proxy para UDP revelaría la IP de origen real del operador). Las funciones afectadas y sus soluciones alternativas están documentadas en KNOWN_ISSUES.md.

Encadenamiento: -proxy es compatible con proxychains. La conexión TCP al propio proxy SOCKS5 todavía pasa por connect() de libc, por lo que proxychains → gopacket → -proxy → target funciona para escenarios de enrutamiento anidado.

Documentación

Consulta la Guía para Desarrolladores de la Biblioteca para documentación completa de la API, ejemplos de código y descripción general de la arquitectura para construir herramientas personalizadas sobre los 24 paquetes de protocolo de gopacket.

Herramientas (63)

Ejecución Remota

HerramientaDescripción
psexecEjecución remota de comandos mediante creación de servicio SMB
smbexecEjecución remota de comandos vía SMB (más sigiloso que psexec)
wmiexecEjecución remota de comandos vía WMI
dcomexecEjecución remota de comandos vía DCOM
atexecEjecución remota de comandos vía Task Scheduler

Volcado de Credenciales y DPAPI

HerramientaDescripción
secretsdumpExtracción de SAM/LSA/NTDS.dit y DCSync (remoto + offline)
dpapiExtracción de clave de respaldo DPAPI
esentutlParser offline de base de datos ESE (NTDS.dit)
registry-readParser offline de hive del registro de Windows

Kerberos

HerramientaDescripción
getTGTSolicitar un TGT con contraseña, hash o clave AES
getSTSolicitar un ticket de servicio con S4U2Self/S4U2Proxy
GetUserSPNsKerberoasting - encontrar y solicitar SPNs
GetNPUsersAS-REP roasting - encontrar cuentas sin pre-autenticación
ticketerFalsificación de tickets golden/silver
ticketConverterConvertir entre formatos ccache y kirbi
describeTicketParsear y descifrar tickets Kerberos
getPacSolicitar y parsear información del PAC
keylistattackAtaque KERB-KEY-LIST-REQ (RODC)
raiseChildEscalada de dominio hijo a padre mediante golden ticket

Enumeración de Active Directory

HerramientaDescripción
GetADUsersEnumerar usuarios del dominio vía LDAP
GetADComputersEnumerar equipos del dominio vía LDAP
GetLAPSPasswordLeer contraseñas LAPS vía LDAP
findDelegationEncontrar configuraciones de delegación
lookupsidFuerza bruta de SID vía LSARPC
samrdumpEnumerar usuarios vía SAMR
rpcdumpVolcar endpoints RPC vía epmapper
rpcmapEscanear interfaces RPC accesibles
netEnumeración de net user/group/computer vía SAMR/LSARPC
netviewEnumerar sesiones, recursos compartidos y usuarios conectados
CheckLDAPStatusVerificar requisitos de firma LDAP y channel binding
DumpNTLMInfoVolcar información de autenticación NTLM desde la negociación SMB
getArchDetectar arquitectura del SO remoto vía RPC
machine_roleDetectar rol de la máquina (DC, servidor, estación de trabajo)

Ataques a Active Directory

HerramientaDescripción
addcomputerCrear/modificar/eliminar cuentas de máquina (SAMR + LDAP)
rbcdManipulación de Resource-Based Constrained Delegation
dacleditLeer/escribir DACLs en objetos de AD
ownereditLeer/modificar la propiedad de objetos
sameditSuplantación de nombre de cuenta SAM (CVE-2021-42278/42287)
badsuccessorEscalada BadSuccessor / backup operator
changepasswdCambiar/restablecer contraseñas vía SAMR y LDAP

Herramientas SMB

HerramientaDescripción
smbclientCliente SMB interactivo (shares, ls, get, put, etc.)
smbserverServidor SMB para compartir archivos
attribConsultar/modificar atributos de archivos vía SMB
filetimeConsultar/modificar marcas de tiempo de archivos vía SMB
servicesGestión remota de servicios vía SVCCTL
regOperaciones remotas de registro vía WINREG
Get-GPPPasswordExtraer contraseñas de Group Policy Preferences desde SYSVOL
karmaSMBServidor SMB falso para captura de hashes

NTLM Relay

HerramientaDescripción
ntlmrelayxFramework completo de relay NTLM con soporte multiprotocolo

ntlmrelayx soporta:

  • Servidores de captura: SMB, HTTP/HTTPS, WCF (ADWS), RAW, RPC, WinRM
  • Clientes de relay: SMB, LDAP/LDAPS, HTTP/HTTPS, MSSQL, WinRM, RPC
  • Ataques: secretsdump, smbexec, ldapdump, delegación RBCD, abuso de ACL, shadow credentials, ADCS ESC8, addcomputer, manipulación de DNS, y más
  • Infraestructura: proxy SOCKS5 con plugins conscientes del protocolo, consola interactiva, API REST, round-robin multiobjetivo, servicio WPAD

SQL Server

HerramientaDescripción
mssqlclientCliente MSSQL interactivo con autenticación SQL/Windows/Kerberos
mssqlinstanceDescubrimiento de instancias MSSQL vía SQL Browser

WMI

HerramientaDescripción
wmiqueryShell interactivo de consultas WMI
wmipersistPersistencia mediante suscripción a eventos WMI

Terminal Services

HerramientaDescripción
tstoolEnumeración de sesiones y procesos de Terminal Services

Otros Protocolos

HerramientaDescripción
rdp_checkVerificación de autenticación RDP
mqtt_checkVerificación de autenticación MQTT
exchangerCliente de Exchange Web Services

Utilidades

HerramientaDescripción
ntfs-readParser offline de sistema de archivos NTFS
ping / ping6Ping ICMP
sniff / snifferCaptura de paquetes de red
splitDividir archivos grandes

Autenticación

Todas las herramientas de red soportan tres métodos de autenticación:

root@kitploit:~
# Password
gopacket-secretsdump 'domain/user:password@target'

# NTLM hash (pass-the-hash)
gopacket-secretsdump -hashes ':nthash' 'domain/user@target'

# Kerberos (pass-the-ticket)
KRB5CCNAME=ticket.ccache gopacket-secretsdump -k -no-pass 'domain/user@target'

Flags Comunes

FlagDescripción
-hashes LMHASH:NTHASHAutenticación con hash NTLM (el hash LM puede estar vacío)
-kUsar autenticación Kerberos
-no-passNo solicitar contraseña (usar con -k o -hashes)
-dc-ip IPDirección IP del controlador de dominio
-target-ip IPDirección IP del objetivo (cuando se usa hostname para Kerberos)
-port PORTPuerto objetivo (los valores predeterminados varían según la herramienta)
-proxy URLEnrutar el TCP saliente a través de un proxy SOCKS5 (ej. socks5h://127.0.0.1:1080). Las funciones UDP están deshabilitadas.
-debugHabilitar salida de depuración

Ejemplos Rápidos

root@kitploit:~
# Dump domain hashes via DCSync
gopacket-secretsdump 'corp.local/admin:[email protected]'

# Interactive SMB shell
gopacket-smbclient -hashes ':aabbccdd...' 'corp.local/admin@fileserver'

# Kerberoast
gopacket-getuserspns 'corp.local/user:[email protected]'

# Golden ticket
gopacket-ticketer -nthash <krbtgt_hash> -domain-sid S-1-5-21-... -domain corp.local admin

# NTLM relay with SOCKS proxy
sudo gopacket-ntlmrelayx -t smb://target -socks

# LDAP relay for RBCD
sudo gopacket-ntlmrelayx -t ldaps://dc01.corp.local --delegate-access

# Route all outbound traffic through a SOCKS5 proxy
gopacket-secretsdump -proxy socks5h://127.0.0.1:1080 'corp.local/admin:[email protected]'

Biblioteca

El directorio pkg/ contiene 24 paquetes de protocolo reutilizables que se pueden importar de forma independiente.

PaqueteDescripción
smbCliente SMB2/3 con autenticación NTLM y Kerberos
ldapCliente LDAP con bind NTLM/Kerberos
dcerpcCliente DCE/RPC + 20 implementaciones de servicios (DRSUAPI, SAMR, SVCCTL, LSARPC, WINREG, NETLOGON, DCOM, TSCH, EPMAPPER, etc.)
kerberosCliente Kerberos, falsificación de tickets (golden/silver), S4U2Self/S4U2Proxy
ntlmProtocolo de autenticación NTLM
relayFramework de relay NTLM (servidores, clientes, ataques, SOCKS)
tdsProtocolo TDS de SQL Server
eseParser de Extensible Storage Engine
registryParser de hive del registro de Windows
ntfsParser de sistema de archivos NTFS
securityDescriptores de seguridad, ACLs, SIDs
dpapiEstructuras DPAPI
mqttCliente de protocolo MQTT
sessionParseo de objetivo/credenciales (domain/user:pass@host)
flagsFramework unificado de flags CLI

Funciones Faltantes (vs Impacket)

gopacket aspira a una paridad completa con Impacket. Lo siguiente aún no está implementado:

Clientes de protocolo de relay:

  • Cliente de relay IMAP + ataque (requiere servidor Exchange/IMAP)
  • Cliente de relay SMTP (requiere servidor SMTP)

Módulos de ataque de relay:

  • Ataques de políticas/DP de SCCM (requiere infraestructura SCCM)

Herramientas independientes:

  • ifmap.py (mapeo de interfaces DCOM)
  • mimikatz.py (Mimikatz limitado sobre RPC)
  • goldenPac.py (MS14-068 - obsoleto en sistemas parcheados)
  • smbrelayx.py (reemplazado por ntlmrelayx)
  • kintercept.py (interceptación Kerberos)

Estas brechas son de baja prioridad - la mayoría requieren infraestructura especializada para probar o están obsoletas por técnicas más recientes.

Limitaciones Conocidas

Estas son limitaciones a nivel de protocolo compartidas con Impacket, no errores de gopacket:

  • El relay de SMB a LDAPS falla en DCs parcheados debido a la validación NTLM MIC (post-CVE-2019-1040). Usa coerción HTTP en su lugar.
  • El relay WinRM está bloqueado por EPA (Extended Protection for Authentication) en Server 2019+ parcheado.
  • Los ataques de relay RPC (tschexec, enum-local-admins) requieren PKT_INTEGRITY, que no está disponible en sesiones de relay.
  • El relay LDAP al puerto 389 falla en DCs que requieren firma LDAP. Siempre haz relay a LDAPS (puerto 636).

Consulta KNOWN_ISSUES.md para información detallada sobre cada problema y soluciones alternativas.

Reportar Problemas y Contribuir

Esta es una versión beta. Se esperan errores, y las contribuciones son bienvenidas.

Por qué te pedimos que pruebes con Impacket primero

Debido a que gopacket implementa los mismos protocolos de red que Impacket, una gran fracción de los "errores" resultan ser ambientales, no específicos de gopacket - DCs parcheados, requisitos de firma LDAP, EPA, PKT_INTEGRITY, firma SMB, validación NTLM MIC post-CVE-2019-1040, SPNs faltantes, desfase horario, peculiaridades de DNS, reglas de firewall, etc. Ejecutar la misma operación con Impacket en paralelo elimina el entorno de la ecuación:

  • Si Impacket falla de la misma manera, el problema es casi siempre ambiental y probablemente ya está documentado en KNOWN_ISSUES.md. No se necesita informe de error.
  • Si Impacket tiene éxito donde gopacket falla, eso es un error real de gopacket y es exactamente lo que queremos saber.

Este único paso de triaje ahorra muchas idas y vueltas, así que por favor no lo omitas.

Presentar un informe de error

  1. Ejecuta la misma operación con Impacket y anota si tiene éxito o falla
  2. Vuelve a ejecutar gopacket con -debug y captura la salida completa
  3. Anonimiza cualquier cosa sensible antes de publicar. Los issues de GitHub son públicos. Elimina o reemplaza nombres de host reales, direcciones IP, nombres de usuario, hashes de contraseñas, tickets Kerberos, nombres de dominio, SIDs y cualquier línea de salida que pueda vincularse a un engagement real. Reemplazar corp.internal → example.local y dc01.corp.internal → dc01.example.local está bien - mantén la estructura de los datos, solo no los valores identificativos. En caso de duda, redáctalo.
  4. Abre un issue de GitHub e incluye:
    • Ambas salidas (gopacket e Impacket), como texto no capturas de pantalla, anonimizadas
    • La línea de comandos exacta que ejecutaste (anonimizada)
    • SO objetivo, nivel funcional de AD y cualquier hardening relevante (firma, EPA, channel binding, nivel de parche)
    • Versión / hash de commit de gopacket

Solicitudes de funciones

Abre un issue de GitHub describiendo el caso de uso y el equivalente en Impacket (si existe). Si la función está en la lista de "Funciones Faltantes" anterior, menciona cuál - nos ayuda a priorizar.

Pull requests

Los PRs son bienvenidos. Antes de abrir uno:

  • Ejecuta go build ./..., go vet ./..., gofmt -l . y go test ./... y asegúrate de que todos pasen limpiamente
  • Sigue el estilo de código existente en el paquete que estás modificando
  • Mantén los cambios enfocados - separa las refactorizaciones del trabajo de funciones
  • Para cambios no triviales, abre un issue primero para discutir el enfoque

Por Qué Esto Importa para los Defensores

Los actores de amenazas están abandonando Python. Las herramientas compiladas en Go y Rust (Sliver, BRC4, Geacon y loaders personalizados) están reemplazando cada vez más a Impacket en intrusiones del mundo real. La mayoría de las herramientas defensivas y la lógica de detección se construyeron en torno al comportamiento de red basado en Python de Impacket, y esa cobertura se está erosionando a medida que el ecosistema de atacantes cambia a lenguajes compilados.

gopacket existe en parte para ayudar a la comunidad de seguridad a adelantarse a este cambio. Al proporcionar una implementación en Go de código abierto y legible de los mismos protocolos y técnicas, los defensores e ingenieros de detección pueden:

  • Estudiar cómo se comportan las herramientas basadas en Go en la red en lugar de esperar a encontrarlas durante un incidente
  • Entender las diferencias a nivel de protocolo entre las implementaciones en Go y Python que hacen que las firmas existentes sean menos efectivas
  • Ejecutar ejercicios realistas de purple team usando las mismas herramientas compiladas de binario único que los actores de amenazas están adoptando, en lugar de probar exclusivamente contra scripts de Python que se comportan de manera diferente en la capa de red

La brecha entre las herramientas de los atacantes y la visibilidad de los defensores es más amplia cuando las nuevas herramientas permanecen privadas. Liberar gopacket como código abierto reduce esa brecha.

Notas

  • La autenticación Kerberos requiere un archivo ccache válido (TGT o ticket de servicio)
  • Para Kerberos, usa el hostname FQDN - no una dirección IP
  • Si KRB5CCNAME no está establecido, las herramientas buscarán <username>.ccache en el directorio actual
  • Todas las herramientas soportan tanto proxychains como un flag interno -proxy SOCKS5 (ver Soporte de Proxy)
  • Este proyecto es solo para pruebas de seguridad autorizadas y fines de investigación

Licencia

Publicado bajo la Apache License 2.0.

gopacket es una reimplementación limpia en Go de Impacket; consulta NOTICE para los reconocimientos completos de terceros.

Descargar herramienta