Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
gonc — Netcat con NAT traversal automatizzato, P2P sicuro e funzionalità avanzate per accesso alla shell, trasferimento file e proxy di rete. | Kitploit
Strumenti/GitHubGitHub/threatexpert/gonc
Utilità GenericheStrumenti di Crittografia/DecrittografiaProxy Web e IntercettazioneEsfiltrazione DatiSicurezza di RetePenetration TestingCommand and ControlRed TeamingStrumento di Accesso Remoto
GitHubthreatexpert/gonc

gonc

Netcat con NAT traversal automatizzato, P2P sicuro e funzionalità avanzate per accesso alla shell, trasferimento file e proxy di rete.

6956021 mese faRevisionato da Kitploit
Vedi RepositorySito web

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Introduzione a gonc

README in 中文 、 English

gonc è uno strumento netcat basato su Golang progettato per facilitare la comunicazione peer-to-peer. Le sue caratteristiche principali includono:

  • 🔁 NAT Traversal automatizzato: Configurazione zero. Entrambe le parti devono solo concordare una passphrase. Utilizzando il parametro -p2p, i peer possono scoprire automaticamente gli indirizzi di rete reciproci e stabilire una connessione punto-punto attraverso il NAT traversal, sfruttando servizi pubblici STUN e MQTT per lo scambio degli indirizzi.

  • 🔒 Crittografia end-to-end con autenticazione reciproca: Supporta TLS per TCP e DTLS per UDP per la trasmissione cifrata, con autenticazione reciproca dell'identità basata su passphrase.

  • 🧩 Configurazione flessibile del servizio: Con il parametro -e, puoi configurare in modo flessibile l'applicazione per servire ogni connessione. Ad esempio, -e /bin/sh può fornire una shell cmd remota. Puoi anche utilizzare comandi virtuali integrati per un comodo servizio SOCKS5, servizio file HTTP e inoltro del traffico.


Download dell'ultima versione

docs


Progetti correlati

  • gonc-gui — un'applicazione desktop (Windows) e Android basata su : comoda connessione diretta P2P tra dispositivi e reti diverse e trasferimento sicuro di file. Basta condividere una passphrase (o scansionare un codice QR); nessuna riga di comando necessaria.
gonc

Esempi di utilizzo

Utilizzo di base

  • Usalo come nc:

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

    può stabilire solo connessioni punto-punto basate su IP e porta.

  • Ora puoi anche stabilire connessioni punto-punto basate su una passphrase condivisa, con NAT traversal automatizzato.

    Il diagramma seguente mostra il processo con cui gonc stabilisce una connessione P2P tra una rete a banda larga domestica (hard NAT) e un peer su una rete mobile (symmetric NAT). Poiché entrambe le parti hanno IPv6, l'opzione -4 viene utilizzata su entrambe le estremità per forzare IPv4 al fine di dimostrare il NAT traversal.

    hole-punching

Tunnel P2P e server file HTTP

  • Entrambe le parti concordano la stessa passphrase. Sul lato mittente, avvia un server file HTTP per esporre i file o le directory da condividere. L'opzione -httpserver accetta più percorsi, ognuno dei quali può essere un singolo file o una directory:

    root@kitploit:~
    gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
    
  • Sul lato ricevente, ci sono due opzioni:

  1. Scaricare automaticamente l'intera directory

    Dopo aver eseguito il seguente comando, tutti i file verranno scaricati ricorsivamente sulla macchina locale. Se il processo viene interrotto, rieseguire il comando riprenderà automaticamente da dove era stato interrotto:

    root@kitploit:~
    gonc -p2p <passphrase> -download c:/SavePath
    
  2. Sfogliare e scaricare selettivamente tramite browser

    Questa opzione non avvia automaticamente il download. Devi invece aprire manualmente un browser e visitare http://127.0.0.1:9999 per visualizzare l'elenco dei file del peer e scaricare i file secondo necessità:

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

    Se devi scaricare una sottodirectory specifica, il browser diventa scomodo, ma puoi fare così:

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

Comunicazione P2P cifrata sicura

  • Stabilisci una comunicazione P2P cifrata sicura tra due reti diverse concordando una passphrase (usa gonc -psk . per generare una passphrase ad alta entropia da sostituire a passphrase). Questa passphrase viene utilizzata per la scoperta reciproca e la derivazione dei certificati, garantendo la sicurezza delle comunicazioni con TLS 1.3.

    root@kitploit:~
    gonc -p2p passphrase
    

    Sull'altro lato, usa gli stessi parametri (il programma tenterà automaticamente la comunicazione TCP o UDP (preferendo TCP), negozierà i ruoli (client/server TLS) e completerà il protocollo TLS):

    root@kitploit:~
    gonc -p2p passphrase
    

    Nota che se l'altra estremità ritarda l'esecuzione, uscirà se non riesce a trovare l'altra estremità con cui interagire entro circa mezzo minuto. Pertanto, supporta anche un meccanismo di attesa basato sulla sottoscrizione di messaggi MQTT, utilizzando -mqtt-wait e -mqtt-hello per sincronizzare il momento in cui le due parti avviano il P2P. Ad esempio, il seguente utilizza -mqtt-wait per attendere continuamente,

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

    Sull'altro lato,

    root@kitploit:~
    gonc -p2p passphrase -mqtt-hello
    
  • Controlla il tuo tipo di NAT

    root@kitploit:~
    gonc -nat-checker
    

    Questo controllerà i tuoi indirizzi NAT IPv6 e IPv4 TCP e UDP e analizzerà i cambiamenti di porta dopo il NAT. Se non vengono elencati indirizzi TCP6 o UDP6, significa che non hai IPv6. Ogni indirizzo di protocollo termina con "(easy)", che indica la massima percentuale di successo per l'hole punching; "(hard)" indica una percentuale di successo più alta; e "(symm)" è il più difficile. Symm richiede che l'altra estremità sia "easy" o "hard" affinché il P2P funzioni.

Reverse Shell (supporto pseudo-terminale per sistemi UNIX-like)

  • Listener (non utilizza -keep-open, accetta solo una connessione; nessuna autenticazione con -psk):
    root@kitploit:~
    gonc -tls -exec ":sh /bin/bash" -l 1234
    
  • Connettiti per ottenere una shell (supporta TAB, Ctrl+C, ecc.):
    root@kitploit:~
    gonc -tls -pty x.x.x.x 1234
    
  • Usa P2P per la reverse shell (passphrase viene utilizzata per l'autenticazione, garantendo comunicazioni sicure con TLS 1.3):
    root@kitploit:~
    gonc -exec ":sh /bin/bash" -p2p passphrase
    
    Sull'altro lato:
    root@kitploit:~
    gonc -pty -p2p passphrase
    

Test della velocità di trasmissione

  • Invia dati e misura la velocità di trasmissione (/dev/zero e /dev/urandom integrati):
    root@kitploit:~
    gonc.exe -send /dev/zero -P x.x.x.x 1234
    
    Output di esempio:
    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
    
    Sul lato ricevente:
    root@kitploit:~
    gonc -P -l 1234 > NUL
    

Tunnel P2P e proxy SOCKS5 / HTTP

  • Attendi che il tunnel venga stabilito:

    root@kitploit:~
    gonc -p2p passphrase -linkagent
    
  • Sull'altro lato, avvia un servizio proxy locale SOCKS5 / HTTP sulla porta 3080 per accedere alla rete remota:

    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"
    

    Successivamente, ad esempio, se vuoi connetterti a 10.0.0.1:3389 nella rete remota, puoi semplicemente inserire il seguente indirizzo nel tuo client Desktop Remoto locale:

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

    Questo dominio verrà risolto in un IP nella forma 127.b.c.d. Di conseguenza, il client Desktop Remoto si connetterà al proxy SOCKS5 locale sulla porta 3080, e poi gonc ri-analizzerà l'indirizzo 127.b.c.d per estrarre l'informazione 10.0.0.1-3389 dal nome di dominio.

  • Formato di configurazione di 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"
    

Configurazione flessibile del servizio

  • Usa -exec per configurare in modo flessibile l'applicazione per fornire servizi per ogni connessione. Ad esempio, invece di specificare /bin/bash per i comandi shell, può anche essere utilizzato per il port forwarding. Tuttavia, il seguente esempio avvia un nuovo processo gonc per ogni connessione:
    root@kitploit:~
    gonc -keep-open -exec "gonc -tls www.baidu.com 443" -l 8000
    
  • Per evitare di generare più processi figli, usa il modulo nc integrato:
    root@kitploit:~
    gonc -keep-open -exec ":nc -tls www.baidu.com 443" -l 8000
    

Servizio proxy Socks5

  • Configura la modalità client:

    root@kitploit:~
    gonc -x s.s.s.s:port x.x.x.x 1234
    
  • Server Socks5 integrato: Usa -e :s5s per fornire il servizio Socks5 standard. Supporta -auth per impostare un nome utente e una password per Socks5. Usa -keep-open per accettare continuamente le connessioni client al server Socks5. Grazie alle goroutine di Golang, raggiunge buone prestazioni di concorrenza multi-client:

    root@kitploit:~
    gonc -e ":s5s -auth user:passwd" -keep-open -l 1080
    
  • Socks5 sicuro su TLS: Poiché Socks5 standard non è cifrato, usa -e :s5s con -tls e -psk per personalizzare la comunicazione Socks5 sicura su TLS. Usa -P per monitorare le informazioni di trasmissione della connessione, e -acl per implementare il controllo degli accessi per le connessioni in entrata e le destinazioni proxy. Per il formato del file acl.txt, vedi acl-example.txt.

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

    Sull'altro lato, usa :s5c (comando s5c integrato) per convertire Socks5 su TLS in Socks5 standard, fornendo l'accesso client locale su 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

Stabilire un tunnel per altre applicazioni

  • Assistere WireGuard nel NAT Traversal per formare una VPN

    Sul lato passivo (in ascolto), PC-S, esegui il seguente comando (usando la chiave pubblica del peer WireGuard come passphrase, e assumendo che WireGuard sia in ascolto sulla porta 51820):

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

    Sul lato attivo (che inizia), PC-C, imposta l'Endpoint del peer WireGuard (PS-S) su 127.0.0.1:51821, con la propria interfaccia WireGuard in ascolto su 51820. Poi esegui il seguente comando. Il flag -k permette a gonc di riconnettersi automaticamente se la rete cade:

    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à di NAT Traversal P2P

Come fa gonc a stabilire una connessione P2P?

  • Utilizza contemporaneamente più server STUN pubblici per rilevare le mappature NAT TCP/UDP locali e determinare intelligentemente il tipo di NAT
  • Scambia informazioni sugli indirizzi in modo sicuro tramite server MQTT pubblici, usando un hash derivato dalla SessionKey come topic condiviso
  • Tenta la connessione diretta nel seguente ordine di priorità: IPv6 TCP > IPv4 TCP > IPv4 UDP, puntando a una vera comunicazione peer-to-peer
  • Non vengono utilizzati server relay e non vengono forniti meccanismi di fallback — o la connessione fallisce, o è un vero successo P2P

Come distribuire un server relay per i casi in cui il P2P non è fattibile

  • Un server SOCKS5 con supporto UDP ASSOCIATE in esecuzione su un IP pubblico è sufficiente come relay. Puoi anche eseguire il proxy SOCKS5 integrato di gonc sul tuo VPS per agire come server relay.

    Il seguente comando avvia un proxy SOCKS5 che supporta solo l'inoltro UDP. Le opzioni -psk e -tls abilitano la crittografia e l'autenticazione basata su PSK. Nota: non aprire semplicemente la porta 1080 nel firewall — l'inoltro UDP utilizza porte casuali per ogni sessione.

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

  • Quando il P2P fallisce, è sufficiente che un solo lato di gonc ritenti il processo P2P usando l'opzione -x per instradare attraverso il relay SOCKS5:

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

    In alternativa, puoi usare un server proxy SOCKS5 standard che supporta l'inoltro UDP:

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

Ad esempio, se entrambi i peer sono dietro NAT simmetrici e il P2P fallisce, far usare a un solo lato un relay UDP SOCKS5 cambia efficacemente il suo comportamento NAT in "easy", rendendo molto più facile stabilire una connessione. I dati rimangono cifrati end-to-end.

Server pubblici utilizzati(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"

Quanto è efficace gonc nel NAT traversal?

Tranne che in scenari di NAT simmetrico su entrambe le estremità, gonc raggiunge una percentuale di successo molto alta

gonc classifica i tipi di NAT in tre categorie:

  1. Easy: Una singola porta interna viene mappata sulla stessa porta esterna attraverso più server STUN

  2. Hard: Una singola porta interna viene mappata su una porta esterna coerente ma diversa attraverso i server STUN — più difficile del tipo 1

  3. Symmetric: Una singola porta interna viene mappata su porte esterne diverse a seconda della destinazione — il tipo più difficile

Per gestire questi tipi di NAT, gonc impiega diverse strategie di traversal:

  • Usa più server STUN per rilevare il comportamento NAT e identificare scenari con IP multi-uscita

  • Preferisce le connessioni IPv6 quando entrambe le parti lo supportano (ad esempio, dial diretto TCP6-to-TCP6)

  • Entrambi i peer ascoltano su TCP mentre si contattano simultaneamente a vicenda per aumentare il successo dell'hole punching TCP

  • Il peer con il NAT più facile ritarda il suo pacchetto UDP iniziale per evitare di innescare cambiamenti di porta sul lato più difficile

  • Il peer con il NAT più difficile invia pacchetti UDP con un TTL basso per ridurre le interferenze dal firewall remoto

  • Come ultima risorsa, usa una strategia del "paradosso del compleanno": il lato più difficile usa 600 porte sorgente casuali, e l'altro lato prova 600 porte di destinazione casuali, aumentando la probabilità di una collisione di porta UDP riuscita

Scarica lo strumento