Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
gonc — Netcat avec traversée NAT automatisée, P2P sécurisé et fonctionnalités avancées pour l'accès au shell, le transfert de fichiers et le proxy réseau. | Kitploit
Outils/GitHubGitHub/threatexpert/gonc
Utilitaires GénérauxOutils de Chiffrement/DéchiffrementProxies Web et InterceptionExfiltration de DonnéesSécurité RéseauTests d'IntrusionCommandement et ContrôleRed TeamingOutil d'Accès à Distance
GitHubthreatexpert/gonc

gonc

Netcat avec traversée NAT automatisée, P2P sécurisé et fonctionnalités avancées pour l'accès au shell, le transfert de fichiers et le proxy réseau.

695602il y a 1 moisVérifié par Kitploit
Voir le dépôtSite web

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

Introduction à gonc

README en 中文 、 English

gonc est un outil netcat basé sur Golang, conçu pour faciliter la communication pair-à-pair. Ses principales fonctionnalités incluent :

  • 🔁 Traversée de NAT automatisée : Zéro configuration. Les deux côtés doivent simplement s'accorder sur une phrase secrète. En utilisant le paramètre -p2p, les pairs peuvent découvrir automatiquement les adresses réseau de l'autre et établir une connexion point-à-point via la traversée de NAT, en s'appuyant sur des services publics STUN et MQTT pour l'échange d'adresses.

  • 🔒 Chiffrement de bout en bout avec authentification mutuelle : Prend en charge TLS pour TCP et DTLS pour UDP en transmission chiffrée, avec authentification mutuelle d'identité basée sur une phrase secrète.

  • 🧩 Configuration de service flexible : Avec le paramètre -e, vous pouvez configurer flexiblement l'application pour servir chaque connexion. Par exemple, -e /bin/sh peut fournir un shell cmd distant. Vous pouvez également utiliser des commandes virtuelles intégrées pour un service SOCKS5 pratique, un service de fichiers HTTP et la redirection de trafic.


Téléchargement de la dernière version

docs


Projets associés

  • gonc-gui — une application de bureau (Windows) et Android construite sur gonc : connexion directe P2P pratique entre appareils et réseaux, et transfert de fichiers sécurisé. Partagez simplement une phrase secrète (ou scannez un QR code) ; aucune ligne de commande requise.

Exemples d'utilisation

Utilisation de base

  • Utilisez-le comme nc :

    root@kitploit:~
    gonc www.baidu.com 80
    gonc -tls www.baidu.com 443
    

    ne peut établir que des connexions point-à-point basées sur IP et port.

  • Désormais, vous pouvez également établir des connexions point-à-point basées sur une phrase secrète partagée, avec traversée de NAT automatisée.

    Le diagramme suivant montre le processus par lequel gonc établit une connexion P2P entre un réseau haut débit domestique (NAT difficile) et un pair sur un réseau mobile (NAT symétrique). Comme les deux côtés disposent d'IPv6, l'option -4 est utilisée aux deux extrémités pour forcer IPv4 afin de démontrer la traversée de NAT.

    hole-punching

Tunnel P2P et serveur de fichiers HTTP

  • Les deux côtés s'accordent sur la même phrase secrète. Du côté de l'expéditeur, démarrez un serveur de fichiers HTTP pour exposer les fichiers ou répertoires à partager. L'option -httpserver accepte plusieurs chemins, chacun pouvant être un fichier unique ou un répertoire :

    root@kitploit:~
    gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
    
  • Du côté du récepteur, deux options s'offrent à vous :

  1. Télécharger automatiquement l'intégralité du répertoire

    Après avoir exécuté la commande suivante, tous les fichiers seront téléchargés récursivement sur la machine locale. Si le processus est interrompu, relancer la commande reprendra automatiquement là où il s'était arrêté :

    root@kitploit:~
    gonc -p2p <passphrase> -download c:/SavePath
    
  2. Parcourir et télécharger sélectivement via le navigateur

    Cette option ne démarre pas automatiquement le téléchargement. Vous devez ouvrir manuellement un navigateur et visiter http://127.0.0.1:9999 pour consulter la liste des fichiers du pair et télécharger les fichiers selon vos besoins :

    root@kitploit:~
    gonc -p2p <passphrase> -httplocal-port 9999
    

    Si vous devez télécharger un sous-répertoire spécifique, le navigateur devient peu pratique, mais vous pouvez procéder ainsi :

    root@kitploit:~
    gonc -http-download c:/SavePath http://127.0.0.1:9999/subdir
    

Communication P2P chiffrée sécurisée

  • Établissez une communication P2P chiffrée sécurisée entre deux réseaux différents en convenant d'une phrase secrète (utilisez gonc -psk . pour générer une phrase secrète à haute entropie afin de remplacer passphrase). Cette phrase secrète est utilisée pour la découverte mutuelle et la dérivation de certificats, garantissant la sécurité des communications avec TLS 1.3.

    root@kitploit:~
    gonc -p2p passphrase
    

    De l'autre côté, utilisez les mêmes paramètres (le programme tentera automatiquement une communication TCP ou UDP (TCP en priorité), négociera les rôles (client/serveur TLS) et complétera le protocole TLS) :

    root@kitploit:~
    gonc -p2p passphrase
    

    Notez que si l'autre extrémité retarde son exécution, elle quittera si elle ne trouve pas l'autre extrémité avec qui interagir dans environ une demi-minute. Par conséquent, il prend également en charge un mécanisme d'attente basé sur l'abonnement aux messages MQTT, en utilisant -mqtt-wait et -mqtt-hello pour synchroniser le moment où les deux parties démarrent le P2P. Par exemple, ce qui suit utilise -mqtt-wait pour attendre en continu,

    root@kitploit:~
    gonc -p2p passphrase -mqtt-wait
    

    De l'autre côté,

    root@kitploit:~
    gonc -p2p passphrase -mqtt-hello
    
  • Vérifiez votre type de NAT

    root@kitploit:~
    gonc -nat-checker
    

    Cela vérifiera vos adresses NAT IPv6 et IPv4 TCP et UDP et analysera les changements de port après le NAT. Si aucune adresse TCP6 ou UDP6 n'est listée, cela signifie que vous n'avez pas d'IPv6. Chaque adresse de protocole se termine par "(easy)", indiquant le taux de réussite le plus élevé pour le hole punching ; "(hard)" indique un taux de réussite plus élevé ; et "(symm)" est le plus difficile. Symm nécessite que l'autre extrémité soit soit "easy" soit "hard" pour que le P2P fonctionne.

Reverse Shell (prise en charge du pseudo-terminal pour les systèmes de type UNIX)

  • Écouteur (n'utilise pas -keep-open, accepte une seule connexion ; pas d'authentification avec -psk) :
    root@kitploit:~
    gonc -tls -exec ":sh /bin/bash" -l 1234
    
  • Connectez-vous pour obtenir un shell (prend en charge TAB, Ctrl+C, etc.) :
    root@kitploit:~
    gonc -tls -pty x.x.x.x 1234
    
  • Utilisez P2P pour le reverse shell (passphrase est utilisé pour l'authentification, garantissant une communication sécurisée avec TLS 1.3) :
    root@kitploit:~
    gonc -exec ":sh /bin/bash" -p2p passphrase
    
    De l'autre côté :
    root@kitploit:~
    gonc -pty -p2p passphrase
    

Test de vitesse de transmission

  • Envoyez des données et mesurez la vitesse de transmission (/dev/zero et /dev/urandom intégrés) :
    root@kitploit:~
    gonc.exe -send /dev/zero -P x.x.x.x 1234
    
    Exemple de sortie :
    root@kitploit:~
    IN: 76.8 MiB (80543744 bytes), 3.3 MiB/s | OUT: 0.0 B (0 bytes), 0.0 B/s | 00:00:23
    
    Du côté du récepteur :
    root@kitploit:~
    gonc -P -l 1234 > NUL
    

Tunnel P2P et proxy SOCKS5 / HTTP

  • Attendez que le tunnel soit établi :

    root@kitploit:~
    gonc -p2p passphrase -linkagent
    
  • De l'autre côté, démarrez un service proxy SOCKS5 / HTTP local sur le port 3080 pour accéder au réseau distant :

    root@kitploit:~
    # The link option controls how the local and remote proxy endpoints are created.
    # Use none to indicate that no listening port is opened on that side:
    gonc -p2p passphrase -link "3080;none"
    

    Ensuite, par exemple, si vous souhaitez vous connecter à 10.0.0.1:3389 dans le réseau distant, vous pouvez simplement saisir l'adresse suivante dans votre client Bureau à distance local :

    root@kitploit:~
    10.0.0.1-3389.gonc.cc:3080
    

    Ce domaine sera résolu en une IP sous la forme 127.b.c.d. Par conséquent, le client Bureau à distance se connectera au proxy SOCKS5 local sur le port 3080, puis gonc analysera en sens inverse l'adresse 127.b.c.d pour extraire l'information 10.0.0.1-3389 du nom de domaine.

  • Format de configuration de link

    root@kitploit:~
    # Based on the established tunnel, both local and remote sides listen on port 1080.
    # The proxy supports both HTTP and SOCKS5 protocols, with transparent proxy capability enabled.
    gonc -p2p <passphrase> -link "1080;1080"
    
    # Below is the configuration method for the URL format. The parameter value of -link must be enclosed in quotes; otherwise, parsing problems may occur.
    # The left side x://0.0.0.0:1080?tproxy=1 is equivalent to simply writing 1080.
    # The right side enables port 1080 on the remote host, without transparent proxy support.
    gonc -p2p <passphrase> -link "x://0.0.0.0:1080?tproxy=1;x://127.0.0.1:1080"
    
    # The left side f://127.0.0.1:1080?to=1.2.3.4:80
    # means listening locally on port 1080 and forwarding traffic to 1.2.3.4:80 on the remote side.
    # The right side 'none' indicates that no port is opened remotely.
    gonc -p2p <passphrase> -link "f://127.0.0.1:1080?to=1.2.3.4:80;none"
    
    # The right side f://0.0.0.0:80?to=127.0.0.1:80
    # means listening on port 80 on the remote side and forwarding traffic back to 127.0.0.1:80 locally.
    gonc -p2p <passphrase> -link "none;f://0.0.0.0:80?to=127.0.0.1:80"
    
    # The left side x+tls means the proxy protocol with TLS encryption and allows for certificate configuration. The right side specifies the outbound IP address via `outbound_bind` (suitable for multi-IP environments).
    gonc -p2p <口令> -link "x+tls://user:[email protected]:1080?cert=ca.pem&key=key.pem;none?outbound_bind=10.0.0.5"
    

Configuration de service flexible

  • Utilisez -exec pour configurer flexiblement l'application afin de fournir des services pour chaque connexion. Par exemple, au lieu de spécifier /bin/bash pour les commandes shell, il peut également être utilisé pour la redirection de port. Cependant, l'exemple suivant démarre un nouveau processus gonc pour chaque connexion :
    root@kitploit:~
    gonc -keep-open -exec "gonc -tls www.baidu.com 443" -l 8000
    
  • Pour éviter de générer plusieurs processus enfants, utilisez le module nc intégré :
    root@kitploit:~
    gonc -keep-open -exec ":nc -tls www.baidu.com 443" -l 8000
    

Service proxy Socks5

  • Configurez le mode client :

    root@kitploit:~
    gonc -x s.s.s.s:port x.x.x.x 1234
    
  • Serveur Socks5 intégré : Utilisez -e :s5s pour fournir un service Socks5 standard. Prend en charge -auth pour définir un nom d'utilisateur et un mot de passe pour Socks5. Utilisez -keep-open pour accepter en continu les connexions clientes au serveur Socks5. Grâce aux goroutines de Golang, il atteint de bonnes performances de concurrence multi-clients :

    root@kitploit:~
    gonc -e ":s5s -auth user:passwd" -keep-open -l 1080
    
  • Socks5 sécurisé sur TLS : Étant donné que Socks5 standard n'est pas chiffré, utilisez -e :s5s avec -tls et -psk pour personnaliser une communication Socks5 sécurisée sur TLS. Utilisez -P pour surveiller les informations de transmission de connexion, et -acl pour mettre en œuvre le contrôle d'accès pour les connexions entrantes et les destinations proxy. Pour le format du fichier acl.txt, voir acl-example.txt.

    gonc.exe -tls -psk passphrase -e :s5s -keep-open -acl acl.txt -P -l 1080

    De l'autre côté, utilisez :s5c (commande s5c intégrée) pour convertir Socks5 sur TLS en Socks5 standard, fournissant un accès client local sur 127.0.0.1:3080 :

    gonc.exe -e ":s5c -tls -psk passphrase x.x.x.x 1080" -keep-open -l -local 127.0.0.1:3080

Établissement d'un tunnel pour d'autres applications

  • Aider WireGuard à traverser le NAT pour former un VPN

    Du côté passif (écoute), PC-S, exécutez la commande suivante (en utilisant la clé publique du pair WireGuard comme phrase secrète, et en supposant que WireGuard écoute sur le port 51820) :

    gonc -p2p <PublicKey-of-PS-S> -mqtt-wait -u -k -e ":nc -u 127.0.0.1 51820"

    Du côté actif (initiateur), PC-C, définissez l'Endpoint du pair WireGuard (PS-S) sur 127.0.0.1:51821, avec sa propre interface WireGuard écoutant sur 51820. Exécutez ensuite la commande suivante. Le flag -k permet à gonc de se reconnecter automatiquement si le réseau tombe :

    gonc -p2p <PublicKey-of-PS-S> -mqtt-hello -u -k -e ":nc -u -local 127.0.0.1:51821 127.0.0.1 51820"

Capacités de traversée de NAT P2P

Comment gonc établit-il une connexion P2P ?

  • Utilise simultanément plusieurs serveurs STUN publics pour détecter les mappages NAT TCP/UDP locaux et déterminer intelligemment le type de NAT
  • Échange les informations d'adresse de manière sécurisée via des serveurs MQTT publics, en utilisant un hash dérivé du SessionKey comme sujet partagé
  • Tente une connexion directe dans l'ordre de priorité suivant : IPv6 TCP > IPv4 TCP > IPv4 UDP, visant une véritable communication pair-à-pair
  • Aucun serveur relais n'est utilisé, et aucun mécanisme de repli n'est fourni — soit la connexion échoue, soit c'est un véritable succès P2P

Comment déployer un serveur relais pour les cas où le P2P n'est pas réalisable

  • Un serveur SOCKS5 avec prise en charge d'UDP ASSOCIATE fonctionnant sur une IP publique suffit comme relais. Vous pouvez également exécuter le proxy SOCKS5 intégré de gonc sur votre propre VPS pour servir de serveur relais.

    La commande suivante démarre un proxy SOCKS5 qui ne prend en charge que la redirection UDP. Les options -psk et -tls activent le chiffrement et l'authentification basée sur PSK. Remarque : N'ouvrez pas simplement le port 1080 dans votre pare-feu — la redirection UDP utilise des ports aléatoires pour chaque session.

    gonc -e ":s5s -u -c=0" -psk <password> -tls -k -l 1080

  • Lorsque le P2P échoue, vous n'avez besoin que d'un côté de gonc pour réessayer le processus P2P en utilisant l'option -x afin de passer par le relais SOCKS5 :

    gonc -p2p <passphrase> -x "-psk <password> -tls <socks5server-ip>:1080"

    Alternativement, vous pouvez utiliser un serveur proxy SOCKS5 standard qui prend en charge la redirection UDP :

    gonc -p2p <passphrase> -x "<socks5server-ip>:1080" -auth "user:password"

Par exemple, si les deux pairs sont derrière des NAT symétriques et que le P2P échoue, le fait qu'un seul côté utilise un relais UDP SOCKS5 modifie effectivement son comportement NAT en "easy", ce qui facilite grandement l'établissement d'une connexion. Les données restent chiffrées de bout en bout.

Serveurs publics utilisés(STUN & MQTT):

root@kitploit:~
"tcp://turn.cloudflare.com:80",
"udp://turn.cloudflare.com:53",
"udp://stun.l.google.com:19302",
"stun.gonc.cc:3478",
"global.turn.twilio.com:3478",
"stun.nextcloud.com:443",

"tcp://broker.hivemq.com:1883",
"tcp://broker.emqx.io:1883",
"tcp://test.mosquitto.org:1883",
"tcp://mqtt.gonc.cc:1883"

Quelle est l'efficacité de gonc pour la traversée de NAT ?

Sauf dans les scénarios de NAT symétrique aux deux extrémités, gonc atteint un taux de réussite très élevé

gonc classe les types de NAT en trois catégories :

  1. Easy : Un seul port interne est mappé sur le même port externe à travers plusieurs serveurs STUN

  2. Hard : Un seul port interne est mappé sur un port externe cohérent mais différent à travers les serveurs STUN — plus difficile que le type 1

  3. Symmetric : Un seul port interne est mappé sur différents ports externes selon la destination — le type le plus difficile

Pour gérer ces types de NAT, gonc emploie plusieurs stratégies de traversée :

  • Utilise plusieurs serveurs STUN pour détecter le comportement NAT et identifier les scénarios multi-sortie IP

  • Préfère les connexions IPv6 lorsque les deux côtés le prennent en charge (par exemple, TCP6-vers-TCP6 en appel direct)

  • Les deux pairs écoutent sur TCP tout en s'appelant mutuellement pour augmenter le succès du hole punching TCP

  • Le pair avec le NAT le plus facile retarde son paquet UDP initial pour éviter de déclencher des changements de port du côté le plus difficile

  • Le pair avec le NAT le plus difficile envoie des paquets UDP avec un TTL faible pour réduire les interférences du pare-feu distant

  • En dernier recours, utilise une stratégie de "paradoxe des anniversaires" : le côté le plus difficile utilise 600 ports source aléatoires, et l'autre côté essaie 600 ports de destination aléatoires, augmentant la chance d'une collision de port UDP réussie

Télécharger l’outil