pwnat: far comunicare due PC dietro NAT senza port forwarding

Si chiama pwnat ed è un’utility per Linux (ma non solo a giudicare dai makefile con cui viene distribuita) che sto tenendo d’occhio da un po’ per la possibilità che offre di far comunicare direttamente due o più PC, client e server, dietro altrettanti NAT. Non è necessario impostare alcun port fowarding nei router in quanto pwnat stabilisce un tunnel che sfrutta il protocollo UDP tra i computer interessati.

Per funzionare è necessario avviare un’istanza di pwnat come server e una come client. Ecco le opzioni:

./pwnat <-s | -c>

-c client mode
: [local ip] [proxy port (def:2222)]

-s server mode
: [local ip] [proxy port (def:2222)] [[allowed host]:[allowed port] ...]

Poniamo di voler far comunicare tramite SSH un server e un client dietro NAT senza port forwarding, per far questo dovremo avviare pwnat sul server SSH:

sudo pwnat -s indirizzo_ip_server

mentre sul client daremo:

sudo ./pwnat -c 127.0.0.1 3333 indirizzo_ip_server 2222 127.0.0.1 22

A questo punto basterà dal client collegarci al server stabilendo una connessione locale:

ssh -p 3333 user@127.0.0.1

Il login verrà fatto sul server remoto. Nelle prove che ho effettuato tutto ha funzionato senza problemi.

Nelle istruzioni di utilizzo di pwnat viene anche indicata la possibilità di realizzare un proxy per la navigazione:

Server side allowing anyone to proxy:

./pwnat -s

Client wanting to connect to google.com:80:

./pwnat -c 8000 google.com 80

Then, browse to http://localhost:8000 to visit the google

Personalmente non sono riuscito a testare questa funzionalità per un segmentation fault restituito da pwnat.

Per usare pwnat basta scaricare i sorgenti e dare soltanto un “make” per creare il binario del programma. Buon test!

4 commenti su “pwnat: far comunicare due PC dietro NAT senza port forwarding”

  1. @Lorenzo la tecnica che utilizza pwnat è abbastanza complessa, sintetizzando basta dire che utilizza prima degli ICMP Echo Request per identificare server e client e poi crea un tunnel su protocollo UDP come spiegato in dettaglio sulla pagina di pwnat:

    "Finally, both sides are fully communicating over UDP, allowing protocols that run over TCP to tunnel through"

  2. Bello, praticamente convince i router che il traffico che arriva dall'esterno dal client e' in risposta (legittima) ad un traffico generato dal server che manda pacchetti a caso verso internet.

    Geniale. Lo devo provare prima che qualche collega lo scopra e faccia del casino. 😀

  3. Mah credo che la versione per windows , pubblicata dall’autore, non vada … Ho provato a creare una chat server, utilizzando winsock, e un client entrambi usano TCP. Sul Computer A(Quello che ha la chat server) ho avviato il pwnat server , ma quando un Computer B, con il client chat, cerca di connettersi attraverso il client pwnat, il tutto crasha! Non riesco a spiegarmelo 🙁

I commenti sono chiusi.