Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PortForwarder — Utility di inoltro porte TCP in C | Kitploit
Strumenti/GitHubGitHub/lsecqt/portforwarder
Utilità GenericheMappatura della ReteEvasione IDS/IPSMovimento LateralePenetration TestingUtilità e FrameworkRed Teaming
GitHublsecqt/portforwarder

PortForwarder

Utility di inoltro porte TCP in C

Vedi Repository
4111223 mesi faRevisionato da Kitploit

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

Port Forwarder TCP per Windows

Un port forwarder TCP ad alte prestazioni per Windows con whitelist IP opzionale e funzionalità di logging verbose.

Caratteristiche

  • ✅ Inoltra traffico TCP da una porta locale a qualsiasi host:porta remota
  • ✅ Whitelist IP opzionale per maggiore sicurezza
  • ✅ Modalità takeover porta 445 / SMB (disabilita SMB e libera la porta 445 per il relaying)
  • ✅ Supporta fino a 100 connessioni concorrenti
  • ✅ Inoltro dati bidirezionale con statistiche in tempo reale
  • ✅ Modalità verbose per il debug delle connessioni rifiutate
  • ✅ Impostazioni aggressive di TCP keepalive per il rilevamento di connessioni morte
  • ✅ Inoltro a bassa latenza (algoritmo di Nagle disabilitato)
  • ✅ Gestione graceful shutdown (Ctrl+C)
  • ✅ Gestione delle connessioni thread-safe

Requisiti

  • Sistema operativo Windows
  • Visual Studio (per la compilazione) o MinGW-w64
  • Libreria Winsock2 (inclusa con Windows SDK)

Compilazione

Utilizzo del prompt dei comandi di Visual Studio Developer:

cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib

Utilizzo di MinGW-w64:

gcc PortForwarder.c -o PortForwarder.exe -lws2_32

Utilizzo

PortForwarder.exe <local_port> <remote_host> <remote_port> [allowed_ip] [-v]

Parametri

  • <local_port> - Porta locale su cui ascoltare (1-65535)
  • <remote_host> - Nome host o indirizzo IP remoto a cui inoltrare il traffico
  • <remote_port> - Porta remota a cui inoltrare il traffico (1-65535)
  • [allowed_ip] - Opzionale - Accetta solo connessioni da questo indirizzo IP
  • [-v] - Opzionale - Abilita la modalità verbose (mostra connessioni rifiutate)

Esempi

Inoltro porta base (nessun filtro IP)

Inoltra la porta locale 8080 al server remoto 192.168.1.100 porta 80:

PortForwarder.exe 8080 192.168.1.100 80

Inoltro porta con whitelist IP

Accetta solo connessioni da 192.168.1.50:

PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50

Inoltro porta con whitelist IP e logging verbose

Mostra i tentativi di connessione rifiutati:

PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v

Inoltro a nome host remoto

PortForwarder.exe 3306 database.example.com 3306

Inoltro porta SSH con restrizione IP

PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100

Takeover porta 445 / SMB (solo per impegni autorizzati)

Ascolta sulla porta SMB 445 e inoltra a un endpoint SMB remoto. Quando 445 è la porta locale, lo strumento prima libera la porta dal server SMB integrato di Windows:

PortForwarder.exe 445 10.0.0.50 445 192.168.1.100

Quando la porta locale è 445, prima di fare il bind lo strumento automaticamente:

  1. Verifica privilegi — conferma che il processo sia in esecuzione con privilegi elevati (amministratore). In caso contrario, si interrompe con un messaggio chiaro.
  2. Mostra il detentore corrente — identifica il PID/processo attualmente associato alla porta 445 (normalmente System, PID 4, tramite il driver kernel srvnet).
  3. Disabilita SMB e libera la porta — arresta LanmanServer e i driver srv2 / srvnet (arrestando ricorsivamente eventuali servizi dipendenti), stampando ogni passo per visibilità.
  4. Verifica e bind — conferma che la porta 445 sia libera, quindi effettua il bind e inoltra come al solito.

Esempio di output:

[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445]   service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445]   service 'srv2' stopped
[445] Stopping 'srvnet'...
[445]   service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)

⚠️ L'arresto di questi servizi disabilita la condivisione di file/stampanti sull'host per la durata dell'impegno. Ripristinala in seguito con net start LanmanServer (i driver si riavviano su richiesta o al prossimo avvio). Da utilizzare solo su sistemi che sei autorizzato a testare.

Casi d'Uso

Sviluppo Locale

  • Accedi a servizi in esecuzione in contenitori o VM
  • Inoltra porte da WSL2 all'host Windows
  • Testa endpoint webhook localmente

Bridging di Rete

  • Collega diversi segmenti di rete
  • Aggira restrizioni firewall (solo uso autorizzato)
  • Accedi a servizi interni dalla DMZ

Accesso al Database

  • Proteggi connessioni database con whitelist IP
  • Tunnel del traffico database attraverso host intermedi
  • Esponi database locali per sviluppo remoto

Test di Sicurezza

  • Monitora e analizza pattern di traffico TCP
  • Testa controlli di accesso basati su IP
  • Verifica tentativi di connessione con modalità verbose

Informazioni di Output

Il forwarder fornisce un logging dettagliato:

[INFO] Configuration:
  Local port:  8080
  Remote host: 192.168.1.100
  Remote port: 80
  Allowed IP:  192.168.1.50 (filtered mode)
  Verbose:     OFF

[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop

[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)

Output in Modalità Verbose

Quando il flag -v è abilitato, vengono registrate anche le connessioni rifiutate:

[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)

Dettagli Tecnici

Ottimizzazioni delle Performance

  • Dimensione Buffer: buffer da 8KB per un trasferimento dati efficiente
  • TCP_NODELAY: Algoritmo di Nagle disabilitato per minore latenza
  • Keepalive: Impostazioni aggressive (10s iniziali, intervallo 1s) per rilevare connessioni morte
  • Thread Pool: Fino a 100 connessioni concorrenti con thread di inoltro dedicati
  • Accept non bloccante: select() basata su timeout per uno shutdown reattivo

Gestione delle Connessioni

Ogni connessione genera un thread di inoltro dedicato che:

  1. Stabilisce la connessione all'host remoto
  2. Imposta le opzioni del socket (timeout, keepalive, TCP_NODELAY)
  3. Usa select() per l'inoltro bidirezionale
  4. Traccia i byte trasferiti in ciascuna direzione
  5. Chiude correttamente entrambi i socket alla terminazione

Gestione degli Errori

Il forwarder gestisce correttamente gli errori di rete comuni:

  • WSAECONNRESET - Connessione resettata dal peer
  • WSAECONNABORTED - Connessione interrotta
  • WSAENETRESET - La rete ha causato la disconnessione
  • WSAETIMEDOUT - Connessione scaduta

Thread Safety

  • Le sezioni critiche proteggono l'array di connessioni
  • Flag running volatile per uno shutdown pulito
  • Sincronizzazione dei thread durante la pulizia

Considerazioni sulla Sicurezza

⚠️ Note Importanti sulla Sicurezza:

  1. Whitelist IP: Usa il parametro [allowed_ip] in produzione per limitare l'accesso
  2. Nessuna Crittografia: Questo forwarder non crittografa il traffico. Usalo con tunnel SSH o VPN per dati sensibili
  3. Autenticazione: Nessuna autenticazione integrata. Assicurati che il servizio remoto abbia una sicurezza adeguata
  4. Firewall: Configura Windows Firewall per limitare l'accesso alla porta in ascolto
  5. Logging: Disabilita la modalità verbose in produzione per evitare il gonfiaggio dei file di log
  6. Limiti di Risorsa: Il limite di 100 connessioni previene l'esaurimento delle risorse

Risoluzione dei Problemi

Porta già in Uso

[ERROR] bind() failed: 10048

Soluzione: Un'altra applicazione sta usando la porta. Scegli una porta locale diversa o arresta il servizio conflittuale.

Impossibile Connettere al Remoto

[ERROR] connect() to remote failed: 10061

Soluzione: Verifica che l'host remoto sia raggiungibile e che il servizio sia in esecuzione sulla porta specificata.

Scarica lo strumento