Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
gopacket — Um port completo em Go do Impacket - 63 ferramentas CLI e 24 bibliotecas para ataques a protocolos Windows e Active Directory, compilado em um único binário sem dependências. | Kitploit
Ferramentas/GitHubGitHub/mandiant/gopacket
Frameworks de Testes de PenetraçãoEscalada de PrivilégiosFrameworks de ExploraçãoAtaques de SenhaMovimento LateralPós-ExploraçãoSegurança de RedeComando e ControleRed TeamingFerramenta de Acesso Remoto
GitHub
7076180há 1 mêsRevisado pelo Kitploit
mandiant/gopacket

gopacket

Um port completo em Go do Impacket - 63 ferramentas CLI e 24 bibliotecas para ataques a protocolos Windows e Active Directory, compilado em um único binário sem dependências.

Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

gopacket

Por Jacob Paullus (@psycep_)

Uma implementação completa em Go do Impacket - 63 ferramentas e 24 pacotes de biblioteca para interação com protocolos de rede Windows, enumeração de Active Directory e execução de ataques. Construído como um framework nativo em Go para que você possa compilar uma vez e executar em qualquer lugar sem dependências de Python.

Versão Beta - Altamente Experimental. O gopacket está em desenvolvimento ativo. As ferramentas principais foram testadas em ambientes de laboratório de Active Directory, mas casos extremos e peculiaridades de protocolo são esperados. Se algo não estiver funcionando, teste a mesma operação com o Impacket lado a lado e inclua ambas as saídas no seu relatório de bug. Isso nos ajuda a identificar rapidamente se é um problema específico do gopacket ou uma limitação de protocolo compartilhada.

Instalação

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

A compilação padrão (--target native) requer Go 1.24.13+, GCC e cabeçalhos de desenvolvimento do libpcap (apt install build-essential libpcap-dev no Debian/Ubuntu/Kali, yum install gcc libpcap-devel no RHEL/CentOS, ou brew install libpcap no macOS). Os alvos portable e windows precisam apenas do toolchain Go; sniff e split tornam-se stubs nessas compilações porque requerem libpcap. Consulte Suporte de Plataforma para a matriz completa.

Suporte de Plataforma

O gopacket compila em Linux, macOS e Windows. O conjunto de ferramentas funcionais e os caminhos de proxy disponíveis dependem das flags de compilação:

BuildFerramentas disponíveisProxy
Linux / macOS com cgo (padrão)Todas as 63proxychains (LD_PRELOAD) e/ou -proxy SOCKS5
Linux com CGO_ENABLED=061 (sniff, split tornam-se stubs)Apenas -proxy (proxychains precisa do hook libc)
Windows (GOOS=windows CGO_ENABLED=0)60 (stubs de sniff, split, sniffer)Apenas -proxy (sem LD_PRELOAD no Windows)

sniff e split dependem do libpcap via cgo; sniffer depende de sockets raw do Unix. Quando uma ferramenta não pode ser compilada para o alvo, o gopacket substitui por um stub que imprime uma mensagem clara e sai com código 1, então go build ./... sempre funciona e o layout de instalação é consistente entre plataformas.

Para desinstalar:

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

Suporte a Proxy

O gopacket suporta dois caminhos de proxy independentes. Eles também podem ser encadeados.

proxychains (LD_PRELOAD)

Todas as ferramentas do gopacket funcionam através do proxychains. Binários Go normalmente ignoram o proxychains porque o runtime do Go lida com DNS e rede internamente, pulando os hooks LD_PRELOAD dos quais o proxychains depende. O gopacket contorna isso vinculando-se à biblioteca C do sistema para operações de rede, permitindo que o proxychains intercepte conexões normalmente.

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

Proxy SOCKS5 interno (-proxy)

Todas as ferramentas aceitam -proxy para rotear TCP de saída através de um servidor SOCKS5 sem depender de LD_PRELOAD. Esquemas aceitos: socks5 e socks5h. Quando -proxy não está definido, as variáveis de ambiente ALL_PROXY / all_proxy são consultadas como fallback.

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'

Recursos dependentes de UDP são desabilitados sob -proxy em vez de vazar pacotes silenciosamente (SOCKS5 UDP ASSOCIATE raramente é suportado por proxies, e contornar o proxy para UDP revelaria o IP de origem real do operador). Recursos afetados e suas soluções alternativas estão documentados em KNOWN_ISSUES.md.

Encadeamento: -proxy é compatível com proxychains. A conexão TCP com o próprio proxy SOCKS5 ainda passa pelo connect() da libc, então proxychains → gopacket → -proxy → target funciona para cenários de roteamento aninhado.

Documentação

Consulte o Guia do Desenvolvedor de Biblioteca para documentação completa da API, exemplos de código e visão geral da arquitetura para construir ferramentas personalizadas sobre os 24 pacotes de protocolo do gopacket.

Ferramentas (63)

Execução Remota

FerramentaDescrição
psexecExecução remota de comandos via criação de serviço SMB
smbexecExecução remota de comandos via SMB (mais furtivo que psexec)
wmiexecExecução remota de comandos via WMI
dcomexecExecução remota de comandos via DCOM
atexecExecução remota de comandos via Agendador de Tarefas

Extração de Credenciais e DPAPI

FerramentaDescrição
secretsdumpExtração de SAM/LSA/NTDS.dit e DCSync (remoto + offline)
dpapiExtração de chave de backup DPAPI
esentutlParser offline de banco de dados ESE (NTDS.dit)
registry-readParser offline de hive do registro do Windows

Kerberos

FerramentaDescrição
getTGTSolicitar um TGT com senha, hash ou chave AES
getSTSolicitar um ticket de serviço com S4U2Self/S4U2Proxy
GetUserSPNsKerberoasting - encontrar e solicitar SPNs
GetNPUsersAS-REP roasting - encontrar contas sem pré-autenticação
ticketerForja de tickets golden/silver
ticketConverterConverter entre formatos ccache e kirbi
describeTicketAnalisar e descriptografar tickets Kerberos
getPacSolicitar e analisar informações do PAC
keylistattackAtaque KERB-KEY-LIST-REQ (RODC)
raiseChildEscalação de domínio filho para pai via golden ticket

Enumeração de Active Directory

FerramentaDescrição
GetADUsersEnumerar usuários do domínio via LDAP
GetADComputersEnumerar computadores do domínio via LDAP
GetLAPSPasswordLer senhas LAPS via LDAP
findDelegationEncontrar configurações de delegação
lookupsidForça bruta de SID via LSARPC
samrdumpEnumerar usuários via SAMR
rpcdumpDespejar endpoints RPC via epmapper
rpcmapEscanear interfaces RPC acessíveis
netEnumeração de usuários/grupos/computadores via SAMR/LSARPC
netviewEnumerar sessões, compartilhamentos e usuários conectados
CheckLDAPStatusVerificar requisitos de assinatura LDAP e channel binding
DumpNTLMInfoDespejar informações de autenticação NTLM da negociação SMB
getArchDetectar arquitetura do SO remoto via RPC
machine_roleDetectar função da máquina (DC, servidor, estação de trabalho)

Ataques a Active Directory

FerramentaDescrição
addcomputerCriar/modificar/excluir contas de máquina (SAMR + LDAP)
rbcdManipulação de Resource-Based Constrained Delegation
dacleditLer/gravar DACLs em objetos AD
ownereditLer/modificar propriedade de objetos
sameditSpoofing de nome de conta SAM (CVE-2021-42278/42287)
badsuccessorBadSuccessor / escalação de operador de backup
changepasswdAlterar/redefinir senhas via SAMR e LDAP

Ferramentas SMB

FerramentaDescrição
smbclientCliente SMB interativo (compartilhamentos, ls, get, put, etc.)
smbserverServidor SMB para compartilhamento de arquivos
attribConsultar/modificar atributos de arquivo via SMB
filetimeConsultar/modificar timestamps de arquivo via SMB
servicesGerenciamento remoto de serviços via SVCCTL
regOperações remotas de registro via WINREG
Get-GPPPasswordExtrair senhas de Group Policy Preferences do SYSVOL
karmaSMBServidor SMB falso para captura de hash

NTLM Relay

FerramentaDescrição
ntlmrelayxFramework completo de relay NTLM com suporte a múltiplos protocolos

ntlmrelayx suporta:

  • 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, delegação RBCD, abuso de ACL, shadow credentials, ADCS ESC8, addcomputer, manipulação de DNS, e mais
  • Infraestrutura: proxy SOCKS5 com plugins cientes de protocolo, console interativo, API REST, round-robin multi-alvo, serviço WPAD

SQL Server

FerramentaDescrição
mssqlclientCliente MSSQL interativo com autenticação SQL/Windows/Kerberos
mssqlinstanceDescoberta de instância MSSQL via SQL Browser

WMI

FerramentaDescrição
wmiqueryShell interativo de consulta WMI
wmipersistPersistência via assinatura de evento WMI

Terminal Services

FerramentaDescrição
tstoolEnumeração de sessões e processos do Terminal Services

Outros Protocolos

FerramentaDescrição
rdp_checkVerificação de autenticação RDP
mqtt_checkVerificação de autenticação MQTT
exchangerCliente Exchange Web Services

Utilitários

FerramentaDescrição
ntfs-readParser offline de sistema de arquivos NTFS
ping / ping6Ping ICMP
sniff / snifferCaptura de pacotes de rede
splitDividir arquivos grandes

Autenticação

Todas as ferramentas de rede suportam três métodos de autenticação:

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 Comuns

FlagDescrição
-hashes LMHASH:NTHASHAutenticação por hash NTLM (hash LM pode estar vazio)
-kUsar autenticação Kerberos
-no-passNão solicitar senha (usar com -k ou -hashes)
-dc-ip IPEndereço IP do controlador de domínio
-target-ip IPEndereço IP do alvo (ao usar hostname para Kerberos)
-port PORTPorta do alvo (padrões variam por ferramenta)
-proxy URLRotear TCP de saída através de um proxy SOCKS5 (ex.: socks5h://127.0.0.1:1080). Recursos UDP são desabilitados.
-debugHabilitar saída de depuração

Exemplos 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

O diretório pkg/ contém 24 pacotes de protocolo reutilizáveis que podem ser importados independentemente.

PacoteDescrição
smbCliente SMB2/3 com autenticação NTLM e Kerberos
ldapCliente LDAP com bind NTLM/Kerberos
dcerpcCliente DCE/RPC + 20 implementações de serviço (DRSUAPI, SAMR, SVCCTL, LSARPC, WINREG, NETLOGON, DCOM, TSCH, EPMAPPER, etc.)
kerberosCliente Kerberos, forja de tickets (golden/silver), S4U2Self/S4U2Proxy
ntlmProtocolo de autenticação NTLM
relayFramework de relay NTLM (servidores, clientes, ataques, SOCKS)
tdsProtocolo TDS do SQL Server
eseParser do Extensible Storage Engine
registryParser de hive do registro do Windows
ntfsParser de sistema de arquivos NTFS
securityDescritores de segurança, ACLs, SIDs
dpapiEstruturas DPAPI
mqttCliente de protocolo MQTT
sessionAnálise de alvo/credencial (domain/user:pass@host)
flagsFramework unificado de flags CLI

Recursos Ausentes (vs Impacket)

O gopacket visa paridade total com o Impacket. Os seguintes ainda não foram implementados:

Clientes de protocolo de relay:

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

Módulos de ataque de relay:

  • Ataques de políticas/DP do SCCM (requer infraestrutura SCCM)

Ferramentas autônomas:

  • ifmap.py (mapeamento de interface DCOM)
  • mimikatz.py (Mimikatz limitado via RPC)
  • goldenPac.py (MS14-068 - obsoleto em sistemas corrigidos)
  • smbrelayx.py (substituído por ntlmrelayx)
  • kintercept.py (interceptação Kerberos)

Essas lacunas são de baixa prioridade - a maioria requer infraestrutura de nicho para testar ou foi obsoletada por técnicas mais recentes.

Limitações Conhecidas

Estas são limitações em nível de protocolo compartilhadas com o Impacket, não bugs do gopacket:

  • Relay SMB para LDAPS falha em DCs corrigidos devido à validação NTLM MIC (pós-CVE-2019-1040). Use coerção HTTP em vez disso.
  • Relay WinRM bloqueado por EPA (Extended Protection for Authentication) em Server 2019+ corrigido.
  • Ataques de relay RPC (tschexec, enum-local-admins) requerem PKT_INTEGRITY que não está disponível em sessões de relay.
  • Relay LDAP para porta 389 falha em DCs que exigem assinatura LDAP. Sempre faça relay para LDAPS (porta 636).

Consulte KNOWN_ISSUES.md para informações detalhadas sobre cada problema e soluções alternativas.

Relatar Problemas e Contribuir

Esta é uma versão beta. Bugs são esperados, e contribuições são bem-vindas.

Por que pedimos que você teste com o Impacket primeiro

Como o gopacket implementa os mesmos protocolos de rede que o Impacket, uma grande fração dos "bugs" acaba sendo ambiental, não específica do gopacket - DCs corrigidos, requisitos de assinatura LDAP, EPA, PKT_INTEGRITY, assinatura SMB, validação NTLM MIC pós-CVE-2019-1040, SPNs ausentes, desvio de horário, peculiaridades de DNS, regras de firewall, e assim por diante. Executar a mesma operação com o Impacket lado a lado remove o ambiente da equação:

  • Se o Impacket falhar da mesma forma, o problema é quase sempre ambiental e provavelmente já está documentado em KNOWN_ISSUES.md. Nenhum relatório de bug necessário.
  • Se o Impacket tiver sucesso onde o gopacket falha, isso é um bug real do gopacket e exatamente o que queremos ouvir.

Esta única etapa de triagem economiza muitas idas e vindas, então por favor não a pule.

Registrando um relatório de bug

  1. Execute a mesma operação com o Impacket e observe se ela tem sucesso ou falha
  2. Execute novamente o gopacket com -debug e capture a saída completa
  3. Anonimize qualquer coisa sensível antes de postar. Issues do GitHub são públicas. Remova ou substitua hostnames reais, endereços IP, nomes de usuário, hashes de senha, tickets Kerberos, nomes de domínio, SIDs e qualquer linha de saída que possa ser rastreada até um engajamento real. Substituir corp.internal → example.local e dc01.corp.internal → dc01.example.local é aceitável - mantenha a estrutura dos dados, apenas não os valores identificadores. Em caso de dúvida, redija.
  4. Abra uma issue no GitHub e inclua:
    • Ambas as saídas (gopacket e Impacket), como texto e não capturas de tela, anonimizadas
    • A linha de comando exata que você executou (anonimizada)
    • SO do alvo, nível funcional do AD e qualquer hardening relevante (assinatura, EPA, channel binding, nível de patch)
    • Versão / hash de commit do gopacket

Solicitações de recursos

Abra uma issue no GitHub descrevendo o caso de uso e o equivalente no Impacket (se houver). Se o recurso estiver na lista de "Recursos Ausentes" acima, mencione qual - isso nos ajuda a priorizar.

Pull requests

PRs são bem-vindos. Antes de abrir um:

  • Execute go build ./..., go vet ./..., gofmt -l . e go test ./... e certifique-se de que todos passam sem erros
  • Siga o estilo de código existente no pacote que você está modificando
  • Mantenha as mudanças focadas - separe refatorações do trabalho de recursos
  • Para mudanças não triviais, abra uma issue primeiro para discutir a abordagem

Por Que Isso Importa para Defensores

Atores de ameaça estão se afastando do Python. Ferramentas compiladas em Go e Rust (Sliver, BRC4, Geacon e loaders personalizados) estão cada vez mais substituindo o Impacket em intrusões do mundo real. A maioria das ferramentas defensivas e da lógica de detecção foi construída em torno do comportamento de rede baseado em Python do Impacket, e essa cobertura está se erodindo à medida que o ecossistema de atacantes migra para linguagens compiladas.

O gopacket existe em parte para ajudar a comunidade de segurança a se antecipar a essa mudança. Ao fornecer uma implementação em Go de código aberto e legível dos mesmos protocolos e técnicas, defensores e engenheiros de detecção podem:

  • Estudar como ferramentas baseadas em Go se comportam na rede em vez de esperar encontrá-las durante um incidente
  • Entender as diferenças em nível de protocolo entre implementações em Go e Python que tornam as assinaturas existentes menos eficazes
  • Executar exercícios realistas de purple team usando as mesmas ferramentas compiladas de binário único que os atores de ameaça estão adotando, em vez de testar exclusivamente contra scripts Python que se comportam de forma diferente na camada de rede

A lacuna entre ferramentas de atacantes e visibilidade dos defensores é maior quando novas ferramentas permanecem privadas. Tornar o gopacket de código aberto reduz essa lacuna.

Notas

  • A autenticação Kerberos requer um arquivo ccache válido (TGT ou ticket de serviço)
  • Para Kerberos, use o hostname FQDN - não um endereço IP
  • Se KRB5CCNAME não estiver definido, as ferramentas procurarão por <username>.ccache no diretório atual
  • Todas as ferramentas suportam tanto proxychains quanto uma flag interna -proxy SOCKS5 (consulte Suporte a Proxy)
  • Este projeto é apenas para fins de teste de segurança autorizado e pesquisa

Licença

Lançado sob a Apache License 2.0.

gopacket é uma reimplementação limpa em Go do Impacket; consulte NOTICE para agradecimentos completos a terceiros.

Baixar ferramenta