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:
root@kitploit:~
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:
Verifica privilegi — conferma che il processo sia in esecuzione con privilegi elevati (amministratore). In caso contrario, si interrompe con un messaggio chiaro.
Mostra il detentore corrente — identifica il PID/processo attualmente associato alla porta 445 (normalmente System, PID 4, tramite il driver kernel srvnet).
Disabilita SMB e libera la porta — arresta LanmanServer e i driver srv2 / srvnet (arrestando ricorsivamente eventuali servizi dipendenti), stampando ogni passo per visibilità.
Verifica e bind — conferma che la porta 445 sia libera, quindi effettua il bind e inoltra come al solito.
Esempio di output:
root@kitploit:~
[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:
root@kitploit:~
[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:
root@kitploit:~
[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:
Stabilisce la connessione all'host remoto
Imposta le opzioni del socket (timeout, keepalive, TCP_NODELAY)
Usa select() per l'inoltro bidirezionale
Traccia i byte trasferiti in ciascuna direzione
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:
Whitelist IP: Usa il parametro [allowed_ip] in produzione per limitare l'accesso
Nessuna Crittografia: Questo forwarder non crittografa il traffico. Usalo con tunnel SSH o VPN per dati sensibili
Autenticazione: Nessuna autenticazione integrata. Assicurati che il servizio remoto abbia una sicurezza adeguata
Firewall: Configura Windows Firewall per limitare l'accesso alla porta in ascolto
Logging: Disabilita la modalità verbose in produzione per evitare il gonfiaggio dei file di log
Limiti di Risorsa: Il limite di 100 connessioni previene l'esaurimento delle risorse
Risoluzione dei Problemi
Porta già in Uso
root@kitploit:~
[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
root@kitploit:~
[ERROR] connect() to remote failed: 10061
Soluzione: Verifica che l'host remoto sia raggiungibile e che il servizio sia in esecuzione sulla porta specificata.
Permesso Negato
root@kitploit:~
[ERROR] bind() failed: 10013
Soluzione: Le porte inferiori a 1024 potrebbero richiedere privilegi di amministratore. Esegui come Amministratore o usa un numero di porta più alto.
Connessione Rifiutata
root@kitploit:~
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
Soluzione: Abilita la modalità verbose (-v) per vedere gli IP rifiutati, o rimuovi il filtro IP.
Arresto del Forwarder
Premi Ctrl+C per arrestare correttamente il forwarder. Esso:
Smetti di accettare nuove connessioni
Attendi il completamento delle connessioni attive (fino a 5 secondi)
Chiudi tutti i socket
Pulisci le risorse
Mostra la conferma di pulizia
Limitazioni
Solo Windows: Usa l'API Winsock2 (non portabile su Linux/macOS)
Solo IPv4: Attualmente supporta solo indirizzi IPv4
Filtro IP Singolo: Può essere specificato un solo indirizzo IP consentito
Nessun Bilanciamento del Carico: Il traffico viene inoltrato a un singolo endpoint remoto
Nessuna Ispezione del Traffico: Inoltro TCP grezzo senza analisi del contenuto
Nessun Limite di Larghezza di Banda: Nessuna limitazione integrata o QoS
Miglioramenti Futuri
Funzionalità potenziali per versioni future:
Supporto IPv6
Whitelist/blacklist multipli IP
Wrapper di crittografia SSL/TLS
Dashboard statistiche traffico
Supporto file di configurazione
Limitazione larghezza di banda
Bilanciamento del carico round-robin
Limitazione velocità connessioni
Supporto multipiattaforma (Linux/macOS)
Licenza
Questo software è fornito così com'è per scopi educativi e di amministrazione di rete legittimi. Usalo responsabilmente e in conformità con le leggi e i regolamenti applicabili.
Contributi
I contributi sono benvenuti! Assicurati che:
Il codice segua lo stile esistente
Le modifiche siano ben testate su Windows
I commenti spieghino la logica complessa
Il README sia aggiornato per le nuove funzionalità
Supporto
Per problemi, domande o richieste di funzionalità, apri un issue nel repository del progetto.