Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
gonc — Netcat mit automatisierter NAT-Traversierung, sicherem P2P und erweiterten Funktionen für Shell-Zugriff, Dateiübertragung und Netzwerk-Proxying. | Kitploit
Tools/GitHubGitHub/threatexpert/gonc
Allgemeine DienstprogrammeVerschlüsselungs-/EntschlüsselungstoolsWeb-Proxys & AbfangenDatenexfiltrationNetzwerksicherheitPenetrationstestsCommand and ControlRed TeamingRemote-Access-Tool
GitHubthreatexpert/gonc

gonc

Netcat mit automatisierter NAT-Traversierung, sicherem P2P und erweiterten Funktionen für Shell-Zugriff, Dateiübertragung und Netzwerk-Proxying.

695602vor 1 MonatVon Kitploit geprüft
Repository anzeigenWebseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Einführung in gonc

README auf 中文 、 English

gonc ist ein auf Golang basierendes netcat-Tool, das die Peer-to-Peer-Kommunikation erleichtern soll. Seine Hauptmerkmale sind:

  • 🔁 Automatisiertes NAT-Traversal: Keine Konfiguration erforderlich. Beide Seiten müssen sich nur auf eine Passphrase einigen. Durch die Verwendung des Parameters -p2p können Peers automatisch die Netzwerkadressen des jeweils anderen entdecken und eine Punkt-zu-Punkt-Verbindung durch NAT-Traversal aufbauen, wobei öffentliche STUN- und MQTT-Dienste für den Adressaustausch genutzt werden.

  • 🔒 Ende-zu-Ende-Verschlüsselung mit gegenseitiger Authentifizierung: Unterstützt TLS für TCP und DTLS für UDP-verschlüsselte Übertragung, mit passphrasenbasierter gegenseitiger Identitätsauthentifizierung.

  • 🧩 Flexible Dienstkonfiguration: Mit dem Parameter -e können Sie die Anwendung flexibel so konfigurieren, dass sie jede Verbindung bedient. Zum Beispiel kann -e /bin/sh eine entfernte cmd-Shell bereitstellen. Sie können auch integrierte virtuelle Befehle für einen praktischen SOCKS5-Dienst, HTTP-Dateidienst und Traffic-Weiterleitung verwenden.


Download der neuesten Version

docs


Verwandte Projekte

  • gonc-gui — eine Desktop- (Windows) und Android-App, die auf gonc aufbaut: bequeme geräteübergreifende, netzwerkübergreifende P2P-Direktverbindung und sichere Dateiübertragung. Teilen Sie einfach eine Passphrase (oder scannen Sie einen QR-Code); keine Kommandozeile erforderlich.

Verwendungsbeispiele

Grundlegende Verwendung

  • Verwenden Sie es wie nc:

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

    kann nur Punkt-zu-Punkt-Verbindungen basierend auf IP und Port herstellen.

  • Jetzt können Sie auch Punkt-zu-Punkt-Verbindungen basierend auf einer gemeinsamen Passphrase mit automatisiertem NAT-Traversal herstellen.

    Das folgende Diagramm zeigt den Prozess, wie gonc eine P2P-Verbindung zwischen einem Heimbreitbandnetzwerk (Hard NAT) und einem Peer in einem Mobilfunknetzwerk (Symmetric NAT) herstellt. Da beide Seiten IPv6 haben, wird auf beiden Seiten die Option -4 verwendet, um IPv4 zu erzwingen und so das NAT-Traversal zu demonstrieren.

    hole-punching

P2P-Tunnel und HTTP-Dateiserver

  • Beide Seiten einigen sich auf dieselbe Passphrase. Auf der Senderseite starten Sie einen HTTP-Dateiserver, um die freizugebenden Dateien oder Verzeichnisse bereitzustellen. Die Option -httpserver akzeptiert mehrere Pfade, wobei jeder entweder eine einzelne Datei oder ein Verzeichnis sein kann:

    root@kitploit:~
    gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
    
  • Auf der Empfängerseite gibt es zwei Optionen:

  1. Das gesamte Verzeichnis automatisch herunterladen

    Nach Ausführung des folgenden Befehls werden alle Dateien rekursiv auf den lokalen Rechner heruntergeladen. Wenn der Vorgang unterbrochen wird, wird er beim erneuten Ausführen des Befehls automatisch an der Stelle fortgesetzt, an der er aufgehört hat:

    root@kitploit:~
    gonc -p2p <passphrase> -download c:/SavePath
    
  2. Über den Browser durchsuchen und selektiv herunterladen

    Diese Option startet den Download nicht automatisch. Stattdessen müssen Sie manuell einen Browser öffnen und http://127.0.0.1:9999 aufrufen, um die Dateiliste des Peers anzuzeigen und Dateien nach Bedarf herunterzuladen:

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

    Wenn Sie ein bestimmtes Unterverzeichnis herunterladen müssen, wird der Browser unpraktisch, aber Sie können es so machen:

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

Sichere verschlüsselte P2P-Kommunikation

  • Stellen Sie eine sichere verschlüsselte P2P-Kommunikation zwischen zwei verschiedenen Netzwerken her, indem Sie sich auf eine Passphrase einigen (verwenden Sie gonc -psk ., um eine Passphrase mit hoher Entropie zu generieren, die passphrase ersetzt). Diese Passphrase wird für die gegenseitige Entdeckung und Zertifikatsableitung verwendet und gewährleistet die Kommunikationssicherheit mit TLS 1.3.

    root@kitploit:~
    gonc -p2p passphrase
    

    Verwenden Sie auf der anderen Seite dieselben Parameter (das Programm versucht automatisch eine TCP- oder UDP-Kommunikation (TCP bevorzugt), handelt Rollen aus (TLS-Client/Server) und schließt das TLS-Protokoll ab):

    root@kitploit:~
    gonc -p2p passphrase
    

    Beachten Sie, dass das andere Ende, wenn es mit dem Ausführen zögert, beendet wird, wenn es innerhalb von etwa einer halben Minute kein anderes Ende zum Informationsaustausch finden kann. Daher wird auch ein Wartemechanismus basierend auf MQTT-Nachrichtenabonnement unterstützt, wobei -mqtt-wait und -mqtt-hello verwendet werden, um den Zeitpunkt des P2P-Starts beider Parteien zu synchronisieren. Zum Beispiel wartet das Folgende kontinuierlich mit -mqtt-wait,

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

    Auf der anderen Seite,

    root@kitploit:~
    gonc -p2p passphrase -mqtt-hello
    
  • Überprüfen Sie Ihren NAT-Typ

    root@kitploit:~
    gonc -nat-checker
    

    Dies überprüft Ihre IPv6- und IPv4-TCP- und UDP-NAT-Adressen und analysiert Portänderungen nach NAT. Wenn keine TCP6- oder UDP6-Adressen aufgeführt sind, bedeutet dies, dass Sie kein IPv6 haben. Jede Protokolladresse endet mit "(easy)", was die höchste Erfolgsrate für Hole Punching anzeigt; "(hard)" zeigt eine höhere Erfolgsrate an; und "(symm)" ist am schwierigsten. Symm erfordert, dass das andere Ende entweder "easy" oder "hard" ist, damit P2P funktioniert.

Reverse Shell (Pseudo-Terminal-Unterstützung für UNIX-ähnliche Systeme)

  • Listener (verwendet nicht -keep-open, akzeptiert nur eine Verbindung; keine Authentifizierung mit -psk):
    root@kitploit:~
    gonc -tls -exec ":sh /bin/bash" -l 1234
    
  • Verbinden, um eine Shell zu erhalten (unterstützt TAB, Ctrl+C usw.):
    root@kitploit:~
    gonc -tls -pty x.x.x.x 1234
    
  • Verwenden Sie P2P für eine Reverse Shell (passphrase wird zur Authentifizierung verwendet und gewährleistet sichere Kommunikation mit TLS 1.3):
    root@kitploit:~
    gonc -exec ":sh /bin/bash" -p2p passphrase
    
    Auf der anderen Seite:
    root@kitploit:~
    gonc -pty -p2p passphrase
    

Übertragungsgeschwindigkeitstest

  • Daten senden und Übertragungsgeschwindigkeit messen (integrierte /dev/zero und /dev/urandom):
    root@kitploit:~
    gonc.exe -send /dev/zero -P x.x.x.x 1234
    
    Beispielausgabe:
    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
    
    Auf der Empfängerseite:
    root@kitploit:~
    gonc -P -l 1234 > NUL
    

P2P-Tunnel und SOCKS5 / HTTP-Proxy

  • Warten Sie, bis der Tunnel aufgebaut ist:

    root@kitploit:~
    gonc -p2p passphrase -linkagent
    
  • Starten Sie auf der anderen Seite einen lokalen SOCKS5-/HTTP-Proxy-Dienst auf Port 3080, um auf das entfernte Netzwerk zuzugreifen:

    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"
    

    Wenn Sie als Nächstes beispielsweise eine Verbindung zu 10.0.0.1:3389 im entfernten Netzwerk herstellen möchten, geben Sie einfach die folgende Adresse in Ihren lokalen Remote-Desktop-Client ein:

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

    Diese Domain wird in eine IP in der Form 127.b.c.d aufgelöst. Infolgedessen verbindet sich der Remote-Desktop-Client mit dem lokalen SOCKS5-Proxy auf Port 3080, und dann parst gonc die 127.b.c.d-Adresse umgekehrt, um die Information 10.0.0.1-3389 aus dem Domainnamen zu extrahieren.

  • link-Konfigurationsformat

    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"
    

Flexible Dienstkonfiguration

  • Verwenden Sie -exec, um die Anwendung flexibel so zu konfigurieren, dass sie Dienste für jede Verbindung bereitstellt. Anstatt beispielsweise /bin/bash für Shell-Befehle anzugeben, kann es auch für Port-Weiterleitung verwendet werden. Das folgende Beispiel startet jedoch für jede Verbindung einen neuen gonc-Prozess:
    root@kitploit:~
    gonc -keep-open -exec "gonc -tls www.baidu.com 443" -l 8000
    
  • Um das Erzeugen mehrerer Kindprozesse zu vermeiden, verwenden Sie das integrierte nc-Modul:
    root@kitploit:~
    gonc -keep-open -exec ":nc -tls www.baidu.com 443" -l 8000
    

Socks5-Proxy-Dienst

  • Client-Modus konfigurieren:

    root@kitploit:~
    gonc -x s.s.s.s:port x.x.x.x 1234
    
  • Integrierter Socks5-Server: Verwenden Sie -e :s5s, um einen standardmäßigen Socks5-Dienst bereitzustellen. Unterstützt -auth, um einen Benutzernamen und ein Passwort für Socks5 festzulegen. Verwenden Sie -keep-open, um kontinuierlich Client-Verbindungen zum Socks5-Server anzunehmen. Dank der Goroutines von Golang wird eine gute Multi-Client-Parallelleistung erzielt:

    root@kitploit:~
    gonc -e ":s5s -auth user:passwd" -keep-open -l 1080
    
  • Sicheres Socks5 über TLS: Da standardmäßiges Socks5 unverschlüsselt ist, verwenden Sie -e :s5s mit -tls und -psk, um eine sichere Socks5-over-TLS-Kommunikation anzupassen. Verwenden Sie -P, um Verbindungsübertragungsinformationen zu überwachen, und -acl, um Zugriffskontrolle für eingehende Verbindungen und Proxy-Ziele zu implementieren. Das Format der acl.txt-Datei finden Sie in acl-example.txt.

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

    Verwenden Sie auf der anderen Seite :s5c (integrierter s5c-Befehl), um Socks5 über TLS in standardmäßiges Socks5 umzuwandeln und so lokalen Client-Zugriff auf 127.0.0.1:3080 bereitzustellen:

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

Einen Tunnel für andere Anwendungen einrichten

  • WireGuard beim NAT-Traversal unterstützen, um ein VPN zu bilden

    Führen Sie auf der passiven (lauschenden) Seite, PC-S, den folgenden Befehl aus (verwenden Sie den öffentlichen Schlüssel des WireGuard-Peers als Passphrase und nehmen Sie an, dass WireGuard auf Port 51820 lauscht):

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

    Setzen Sie auf der aktiven (initiierenden) Seite, PC-C, den Endpoint des WireGuard-Peers (PS-S) auf 127.0.0.1:51821, wobei die eigene WireGuard-Schnittstelle auf 51820 lauscht. Führen Sie dann den folgenden Befehl aus. Das -k-Flag ermöglicht es gonc, bei einem Netzwerkausfall automatisch erneut zu verbinden:

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

P2P-NAT-Traversal-Fähigkeiten

Wie stellt gonc eine P2P-Verbindung her?

  • Verwendet gleichzeitig mehrere öffentliche STUN-Server, um lokale TCP/UDP-NAT-Zuordnungen zu erkennen und den NAT-Typ intelligent zu bestimmen
  • Tauscht Adressinformationen sicher über öffentliche MQTT-Server aus, wobei ein aus dem SessionKey abgeleiteter Hash als gemeinsames Thema verwendet wird
  • Versucht eine Direktverbindung in der folgenden Prioritätsreihenfolge: IPv6 TCP > IPv4 TCP > IPv4 UDP, um eine echte Peer-to-Peer-Kommunikation anzustreben
  • Es werden keine Relay-Server verwendet und keine Fallback-Mechanismen bereitgestellt — entweder schlägt die Verbindung fehl oder es ist ein echtes P2P-Erfolg

Wie man einen Relay-Server für Fälle bereitstellt, in denen P2P nicht machbar ist

  • Ein SOCKS5-Server mit UDP-ASSOCIATE-Unterstützung, der auf einer öffentlichen IP läuft, reicht als Relay aus. Sie können auch den integrierten SOCKS5-Proxy von gonc auf Ihrem eigenen VPS ausführen, um als Relay-Server zu fungieren.

    Der folgende Befehl startet einen SOCKS5-Proxy, der nur UDP-Weiterleitung unterstützt. Die Optionen -psk und -tls aktivieren Verschlüsselung und PSK-basierte Authentifizierung. Hinweis: Öffnen Sie nicht einfach Port 1080 in Ihrer Firewall — die UDP-Weiterleitung verwendet für jede Sitzung zufällige Ports.

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

  • Wenn P2P fehlschlägt, muss nur eine Seite von gonc den P2P-Prozess mit der Option -x erneut versuchen, um über das SOCKS5-Relay zu routen:

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

    Alternativ können Sie einen standardmäßigen SOCKS5-Proxy-Server verwenden, der UDP-Weiterleitung unterstützt:

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

Wenn beispielsweise beide Peers hinter symmetrischen NATs liegen und P2P fehlschlägt, ändert die Verwendung eines SOCKS5-UDP-Relays durch nur eine Seite effektiv ihr NAT-Verhalten auf "easy", was den Verbindungsaufbau erheblich erleichtert. Die Daten bleiben Ende-zu-Ende-verschlüsselt.

Verwendete öffentliche Server(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"

Wie effektiv ist gonc beim NAT-Traversal?

Außer in Szenarien mit symmetrischem NAT an beiden Enden erzielt gonc eine sehr hohe Erfolgsrate

gonc klassifiziert NAT-Typen in drei Kategorien:

  1. Easy: Ein einzelner interner Port wird über mehrere STUN-Server hinweg auf denselben externen Port abgebildet

  2. Hard: Ein einzelner interner Port wird über STUN-Server hinweg auf einen konsistenten, aber unterschiedlichen externen Port abgebildet — schwieriger als Typ 1

  3. Symmetric: Ein einzelner interner Port wird je nach Ziel auf unterschiedliche externe Ports abgebildet — der schwierigste Typ

Um diese NAT-Typen zu handhaben, verwendet gonc mehrere Traversal-Strategien:

  • Verwendet mehrere STUN-Server, um das NAT-Verhalten zu erkennen und Multi-Exit-IP-Szenarien zu identifizieren

  • Bevorzugt IPv6-Verbindungen, wenn beide Seiten dies unterstützen (z. B. TCP6-zu-TCP6-Direktwahl)

  • Beide Peers lauschen auf TCP und wählen gleichzeitig sich gegenseitig an, um die Erfolgsrate beim TCP-Hole-Punching zu erhöhen

  • Der Peer mit dem einfacheren NAT verzögert sein erstes UDP-Paket, um Portänderungen auf der schwierigeren Seite zu vermeiden

  • Der Peer mit dem schwierigeren NAT sendet UDP-Pakete mit einer niedrigen TTL, um Störungen durch die entfernte Firewall zu reduzieren

  • Als letztes Mittel wird eine "Geburtstagsparadoxon"-Strategie verwendet: Die schwierigere Seite verwendet 600 zufällige Quellports, und die andere Seite versucht 600 zufällige Zielports, wodurch die Chance einer erfolgreichen UDP-Port-Kollision erhöht wird

Tool herunterladen