Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gopacket — Un portage complet en Go d'Impacket - 63 outils CLI et 24 bibliothèques pour les attaques de protocoles Windows et Active Directory, compilés en un seul binaire sans dépendances. | Kitploit
Outils/GitHubGitHub/mandiant/gopacket
Frameworks de Tests d'IntrusionEscalade de PrivilègesFrameworks d'ExploitationAttaques de Mots de PasseMouvement LatéralPost-ExploitationSécurité RéseauCommandement et ContrôleRed TeamingOutil d'Accès à Distance
GitHub
7076180il y a 1 moisVérifié par Kitploit
mandiant/gopacket

gopacket

Un portage complet en Go d'Impacket - 63 outils CLI et 24 bibliothèques pour les attaques de protocoles Windows et Active Directory, compilés en un seul binaire sans dépendances.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

gopacket

Par Jacob Paullus (@psycep_)

Une implémentation complète en Go de Impacket - 63 outils et 24 packages de bibliothèque pour l'interaction avec les protocoles réseau Windows, l'énumération Active Directory et l'exécution d'attaques. Conçu comme un framework Go natif afin que vous puissiez compiler une fois et exécuter partout sans dépendances Python.

Version bêta - Hautement expérimentale. gopacket est en développement actif. Les outils principaux ont été testés contre des environnements de laboratoire Active Directory, mais des cas limites et des particularités de protocole sont à prévoir. Si quelque chose ne fonctionne pas, veuillez tester la même opération avec Impacket en parallèle et inclure les deux sorties dans votre rapport de bug. Cela nous aide à identifier rapidement s'il s'agit d'un problème spécifique à gopacket ou d'une limitation de protocole partagée.

Installation

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 compilation par défaut (--target native) nécessite Go 1.24.13+, GCC et les en-têtes de développement libpcap (apt install build-essential libpcap-dev sur Debian/Ubuntu/Kali, yum install gcc libpcap-devel sur RHEL/CentOS, ou brew install libpcap sur macOS). Les cibles portable et windows ne nécessitent que la chaîne d'outils Go ; sniff et split deviennent des stubs dans ces compilations car ils dépendent de libpcap. Voir Platform Support pour la matrice complète.

Platform Support

gopacket se compile sur Linux, macOS et Windows. L'ensemble des outils fonctionnels et des chemins de proxy disponibles dépend des options de compilation :

BuildTools availableProxying
Linux / macOS with cgo (default)All 63proxychains (LD_PRELOAD) and/or -proxy SOCKS5
Linux with CGO_ENABLED=061 (sniff, split become stubs)-proxy only (proxychains needs the libc hook)
Windows (GOOS=windows CGO_ENABLED=0)60 (sniff, split, sniffer stubs)-proxy only (no LD_PRELOAD on Windows)

sniff et split dépendent de libpcap via cgo ; sniffer dépend des sockets bruts Unix. Lorsqu'un outil ne peut pas être compilé pour la cible, gopacket substitue un stub qui affiche un message clair et se termine avec le code 1, de sorte que go build ./... réussit toujours et que la disposition d'installation est cohérente entre les plateformes.

Pour désinstaller :

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

Proxy Support

gopacket prend en charge deux chemins de proxy indépendants. Ils peuvent également être chaînés.

proxychains (LD_PRELOAD)

Tous les outils gopacket fonctionnent via proxychains. Les binaires Go contournent normalement proxychains car le runtime Go gère le DNS et la mise en réseau en interne, ignorant les hooks LD_PRELOAD sur lesquels proxychains s'appuie. gopacket contourne cela en se liant à la bibliothèque C du système pour les opérations réseau, permettant à proxychains d'intercepter les connexions normalement.

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

Internal SOCKS5 proxy (-proxy)

Chaque outil accepte -proxy pour router le TCP sortant via un serveur SOCKS5 sans dépendre de LD_PRELOAD. Schémas acceptés : socks5 et socks5h. Lorsque -proxy n'est pas défini, les variables d'environnement ALL_PROXY / all_proxy sont consultées comme solution de repli.

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'

Les fonctionnalités dépendant d'UDP sont désactivées sous -proxy plutôt que de laisser fuiter silencieusement des paquets (SOCKS5 UDP ASSOCIATE est rarement pris en charge par les proxys, et contourner le proxy pour UDP révélerait l'IP source réelle de l'opérateur). Les fonctionnalités affectées et leurs solutions de contournement sont documentées dans KNOWN_ISSUES.md.

Chaînage : -proxy est compatible avec proxychains. La connexion TCP vers le proxy SOCKS5 lui-même passe toujours par connect() de la libc, donc proxychains → gopacket → -proxy → target fonctionne pour les scénarios de routage imbriqué.

Documentation

Voir le Library Developer Guide pour la documentation complète de l'API, des exemples de code et un aperçu de l'architecture pour construire des outils personnalisés au-dessus des 24 packages de protocole de gopacket.

Tools (63)

Remote Execution

ToolDescription
psexecExécution de commandes à distance via la création de service SMB
smbexecExécution de commandes à distance via SMB (plus discret que psexec)
wmiexecExécution de commandes à distance via WMI
dcomexecExécution de commandes à distance via DCOM
atexecExécution de commandes à distance via le Planificateur de tâches

Credential Dumping & DPAPI

ToolDescription
secretsdumpExtraction SAM/LSA/NTDS.dit et DCSync (à distance + hors ligne)
dpapiExtraction de la clé de sauvegarde DPAPI
esentutlAnalyseur de base de données ESE hors ligne (NTDS.dit)
registry-readAnalyseur de ruche de registre Windows hors ligne

Kerberos

ToolDescription
getTGTDemander un TGT avec mot de passe, hash ou clé AES
getSTDemander un ticket de service avec S4U2Self/S4U2Proxy
GetUserSPNsKerberoasting - trouver et demander des SPN
GetNPUsersAS-REP roasting - trouver des comptes sans pré-authentification
ticketerFalsification de tickets golden/silver
ticketConverterConvertir entre les formats ccache et kirbi
describeTicketAnalyser et déchiffrer les tickets Kerberos
getPacDemander et analyser les informations PAC
keylistattackAttaque KERB-KEY-LIST-REQ (RODC)
raiseChildÉlévation de privilèges du domaine enfant vers le parent via golden ticket

Active Directory Enumeration

ToolDescription
GetADUsersÉnumérer les utilisateurs du domaine via LDAP
GetADComputersÉnumérer les ordinateurs du domaine via LDAP
GetLAPSPasswordLire les mots de passe LAPS via LDAP
findDelegationTrouver les configurations de délégation
lookupsidForce brute de SID via LSARPC
samrdumpÉnumérer les utilisateurs via SAMR
rpcdumpVider les points de terminaison RPC via epmapper
rpcmapScanner les interfaces RPC accessibles
netÉnumération net user/group/computer via SAMR/LSARPC
netviewÉnumérer les sessions, partages et utilisateurs connectés
CheckLDAPStatusVérifier les exigences de signature LDAP et de liaison de canal
DumpNTLMInfoExtraire les informations d'authentification NTLM de la négociation SMB
getArchDétecter l'architecture de l'OS distant via RPC
machine_roleDétecter le rôle de la machine (DC, serveur, station de travail)

Active Directory Attacks

ToolDescription
addcomputerCréer/modifier/supprimer des comptes machine (SAMR + LDAP)
rbcdManipulation de la délégation contrainte basée sur les ressources
dacleditLire/écrire les DACL sur les objets AD
ownereditLire/modifier la propriété des objets
sameditUsurpation du nom de compte SAM (CVE-2021-42278/42287)
badsuccessorBadSuccessor / élévation via opérateur de sauvegarde
changepasswdChanger/réinitialiser les mots de passe via SAMR et LDAP

SMB Tools

ToolDescription
smbclientClient SMB interactif (partages, ls, get, put, etc.)
smbserverServeur SMB pour le partage de fichiers
attribInterroger/modifier les attributs de fichiers via SMB
filetimeInterroger/modifier les horodatages de fichiers via SMB
servicesGestion des services à distance via SVCCTL
regOpérations sur le registre à distance via WINREG
Get-GPPPasswordExtraire les mots de passe des préférences de stratégie de groupe depuis SYSVOL
karmaSMBServeur SMB malveillant pour la capture de hash

NTLM Relay

ToolDescription
ntlmrelayxFramework complet de relais NTLM avec prise en charge multi-protocoles

ntlmrelayx prend en charge :

  • Serveurs de capture : SMB, HTTP/HTTPS, WCF (ADWS), RAW, RPC, WinRM
  • Clients de relais : SMB, LDAP/LDAPS, HTTP/HTTPS, MSSQL, WinRM, RPC
  • Attaques : secretsdump, smbexec, ldapdump, délégation RBCD, abus d'ACL, shadow credentials, ADCS ESC8, addcomputer, manipulation DNS, et plus encore
  • Infrastructure : proxy SOCKS5 avec plugins sensibles au protocole, console interactive, API REST, round-robin multi-cibles, service WPAD

SQL Server

ToolDescription
mssqlclientClient MSSQL interactif avec authentification SQL/Windows/Kerberos
mssqlinstanceDécouverte d'instances MSSQL via SQL Browser

WMI

ToolDescription
wmiqueryShell interactif de requêtes WMI
wmipersistPersistance par abonnement aux événements WMI

Terminal Services

ToolDescription
tstoolÉnumération des sessions et processus Terminal Services

Other Protocols

ToolDescription
rdp_checkVérification de l'authentification RDP
mqtt_checkVérification de l'authentification MQTT
exchangerClient Exchange Web Services

Utilities

ToolDescription
ntfs-readAnalyseur de système de fichiers NTFS hors ligne
ping / ping6Ping ICMP
sniff / snifferCapture de paquets réseau
splitDécouper des fichiers volumineux

Authentication

Tous les outils réseau prennent en charge trois méthodes d'authentification :

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'

Common Flags

FlagDescription
-hashes LMHASH:NTHASHAuthentification par hash NTLM (le hash LM peut être vide)
-kUtiliser l'authentification Kerberos
-no-passNe pas demander de mot de passe (à utiliser avec -k ou -hashes)
-dc-ip IPAdresse IP du contrôleur de domaine
-target-ip IPAdresse IP de la cible (lors de l'utilisation d'un nom d'hôte pour Kerberos)
-port PORTPort cible (les valeurs par défaut varient selon l'outil)
-proxy URLRouter le TCP sortant via un proxy SOCKS5 (par ex. socks5h://127.0.0.1:1080). Les fonctionnalités UDP sont désactivées.
-debugActiver la sortie de débogage

Quick Examples

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]'

Library

Le répertoire pkg/ contient 24 packages de protocole réutilisables qui peuvent être importés indépendamment.

PackageDescription
smbClient SMB2/3 avec authentification NTLM et Kerberos
ldapClient LDAP avec bind NTLM/Kerberos
dcerpcClient DCE/RPC + 20 implémentations de services (DRSUAPI, SAMR, SVCCTL, LSARPC, WINREG, NETLOGON, DCOM, TSCH, EPMAPPER, etc.)
kerberosClient Kerberos, falsification de tickets (golden/silver), S4U2Self/S4U2Proxy
ntlmProtocole d'authentification NTLM
relayFramework de relais NTLM (serveurs, clients, attaques, SOCKS)
tdsProtocole TDS de SQL Server
eseAnalyseur Extensible Storage Engine
registryAnalyseur de ruche de registre Windows
ntfsAnalyseur de système de fichiers NTFS
securityDescripteurs de sécurité, ACL, SID
dpapiStructures DPAPI
mqttClient de protocole MQTT
sessionAnalyse cible/identifiants (domain/user:pass@host)
flagsFramework unifié de flags CLI

Missing Features (vs Impacket)

gopacket vise une parité complète avec Impacket. Les éléments suivants ne sont pas encore implémentés :

Clients de protocole de relais :

  • Client de relais IMAP + attaque (nécessite un serveur Exchange/IMAP)
  • Client de relais SMTP (nécessite un serveur SMTP)

Modules d'attaque de relais :

  • Attaques SCCM policies/DP (nécessite une infrastructure SCCM)

Outils autonomes :

  • ifmap.py (cartographie des interfaces DCOM)
  • mimikatz.py (Mimikatz limité via RPC)
  • goldenPac.py (MS14-068 - obsolète sur les systèmes corrigés)
  • smbrelayx.py (remplacé par ntlmrelayx)
  • kintercept.py (interception Kerberos)

Ces lacunes sont de faible priorité - la plupart nécessitent une infrastructure de niche pour être testées ou sont rendues obsolètes par des techniques plus récentes.

Known Limitations

Il s'agit de limitations au niveau du protocole partagées avec Impacket, et non de bugs de gopacket :

  • Le relais SMB vers LDAPS échoue sur les DC corrigés en raison de la validation NTLM MIC (post-CVE-2019-1040). Utilisez plutôt la coercition HTTP.
  • Le relais WinRM est bloqué par EPA (Extended Protection for Authentication) sur les Server 2019+ corrigés.
  • Les attaques de relais RPC (tschexec, enum-local-admins) nécessitent PKT_INTEGRITY qui n'est pas disponible dans les sessions de relais.
  • Le relais LDAP vers le port 389 échoue sur les DC exigeant la signature LDAP. Relayez toujours vers LDAPS (port 636).

Voir KNOWN_ISSUES.md pour des informations détaillées sur chaque problème et les solutions de contournement.

Reporting Issues & Contributing

Ceci est une version bêta. Des bugs sont à prévoir, et les contributions sont les bienvenues.

Pourquoi nous vous demandons de tester avec Impacket d'abord

Parce que gopacket implémente les mêmes protocoles réseau qu'Impacket, une grande fraction des « bugs » s'avèrent être environnementaux, et non spécifiques à gopacket - DC corrigés, exigences de signature LDAP, EPA, PKT_INTEGRITY, signature SMB, validation NTLM MIC post-CVE-2019-1040, SPN manquants, décalage horaire, particularités DNS, règles de pare-feu, etc. Exécuter la même opération avec Impacket en parallèle élimine l'environnement de l'équation :

  • Si Impacket échoue de la même manière, le problème est presque toujours environnemental et est probablement déjà documenté dans KNOWN_ISSUES.md. Aucun rapport de bug nécessaire.
  • Si Impacket réussit là où gopacket échoue, c'est un vrai bug de gopacket et exactement ce que nous voulons savoir.

Cette seule étape de tri permet d'économiser beaucoup d'allers-retours, alors ne la sautez pas.

Soumettre un rapport de bug

  1. Exécutez la même opération avec Impacket et notez si elle réussit ou échoue
  2. Relancez gopacket avec -debug et capturez la sortie complète
  3. Anonymisez tout élément sensible avant de publier. Les issues GitHub sont publiques. Supprimez ou remplacez les noms d'hôtes réels, adresses IP, noms d'utilisateur, hash de mots de passe, tickets Kerberos, noms de domaine, SID, et toute ligne de sortie pouvant être reliée à un engagement réel. Remplacer corp.internal → example.local et dc01.corp.internal → dc01.example.local est acceptable - conservez la structure des données, mais pas les valeurs identifiantes. En cas de doute, masquez.
  4. Ouvrez une issue GitHub et incluez :
    • Les deux sorties (gopacket et Impacket), sous forme de texte et non de captures d'écran, anonymisées
    • La ligne de commande exacte que vous avez exécutée (anonymisée)
    • L'OS cible, le niveau fonctionnel AD, et tout durcissement pertinent (signature, EPA, liaison de canal, niveau de correctif)
    • La version / le hash de commit de gopacket

Demandes de fonctionnalités

Ouvrez une issue GitHub décrivant le cas d'usage et l'équivalent Impacket (le cas échéant). Si la fonctionnalité figure dans la liste « Missing Features » ci-dessus, mentionnez laquelle - cela nous aide à prioriser.

Pull requests

Les PR sont les bienvenues. Avant d'en ouvrir une :

  • Exécutez go build ./..., go vet ./..., gofmt -l ., et go test ./... et assurez-vous qu'ils passent tous proprement
  • Respectez le style de code existant dans le package que vous modifiez
  • Gardez les changements ciblés - séparez les refactorisations du travail sur les fonctionnalités
  • Pour les changements non triviaux, ouvrez d'abord une issue pour discuter de l'approche

Why This Matters for Defenders

Les acteurs malveillants délaissent Python. Les outils compilés en Go et Rust (Sliver, BRC4, Geacon, et des loaders sur mesure) remplacent de plus en plus Impacket dans les intrusions réelles. La plupart des outils défensifs et de la logique de détection ont été construits autour du comportement réseau d'Impacket basé sur Python, et cette couverture s'érode à mesure que l'écosystème des attaquants évolue vers des langages compilés.

gopacket existe en partie pour aider la communauté de la sécurité à prendre de l'avance sur cette évolution. En fournissant une implémentation Go open source et lisible des mêmes protocoles et techniques, les défenseurs et les ingénieurs en détection peuvent :

  • Étudier le comportement des outils basés sur Go sur le réseau plutôt que d'attendre de le rencontrer lors d'un incident
  • Comprendre les différences au niveau du protocole entre les implémentations Go et Python qui rendent les signatures existantes moins efficaces
  • Mener des exercices purple team réalistes en utilisant les mêmes outils compilés en binaire unique que les acteurs malveillants adoptent, plutôt que de tester exclusivement contre des scripts Python qui se comportent différemment au niveau de la couche réseau

L'écart entre les outils des attaquants et la visibilité des défenseurs est le plus large lorsque les nouveaux outils restent privés. L'ouverture du code de gopacket réduit cet écart.

Notes

  • L'authentification Kerberos nécessite un fichier ccache valide (TGT ou ticket de service)
  • Pour Kerberos, utilisez le nom d'hôte FQDN - pas une adresse IP
  • Si KRB5CCNAME n'est pas défini, les outils chercheront <username>.ccache dans le répertoire courant
  • Tous les outils prennent en charge à la fois proxychains et un flag SOCKS5 interne -proxy (voir Proxy Support)
  • Ce projet est destiné uniquement à des fins de test de sécurité autorisé et de recherche

License

Publié sous la Apache License 2.0.

gopacket est une réimplémentation propre en Go de Impacket ; voir NOTICE pour les remerciements complets des tiers.

Télécharger l’outil