Una “reverse connection” è di solito utilizzata per “bypassare” le limitazioni imposte dai firewall. Un firewall hardware generalmente blocca il traffico in arrivo su tutte le porte non imponendo invece alcun tipo di restrizione sul traffico in uscita. Un sistema client solitamente si connette alla porta aperta sul server così da fruire di un particolare servizio. Se ad essere in esecuzione è un server web, in grado di rispondere alle richieste dei sistemi client collegati con l’invio di pagine statiche o dinamiche, i client si collegheranno generalmente – com’è noto – sulla porta TCP 80 (HTTP).
Questo documento PDF riassume le porte utilizzate dai principali servizi e dalle applicazioni più importanti. In violetto sono evidenziati i programmi di chat e messaggistica istantanea, in blu le comunicazioni che avvengono in forma cifrata, in giallo i software per lo streaming audio e video, in arancio i client peer-to-peer mentre in rosso le porte sfruttate da parte di alcuni malware ben noti.
Oltre ad applicazioni assolutamente legittime, infatti, qualunque sistema – aggredito da uno o più malware – può diventare un server, controllabile da remoto da parte di malintenzionati. E’ sufficiente infatti che il malware installi sul sistema un componente server che si ponga in ascolto su una specifica porta.
Va tuttavia sottolineato come, in questa configurazione, nel caso in cui si utilizzi un firewall hardware od un semplice router, tutto il traffico in arrivo dalla rete Internet verso una specifica porta debba essere inoltrato (“forwarding”) sul sistema ove è in esecuzione il componente server.
I sistemi remoti (client) normalmente possono raggiungere il solo router che, utilizzando le impostazioni predefinite, non opera alcun forwarding dei dati in arrivo. Supponendo che su uno dei sistemi che fanno parte della rete locale sia in esecuzione un server HTTP, la configurazione del router dovrà essere opportunamente modificata in modo tale che le richieste di connessione pervenute sulla porta 80 siano automaticamente reindirizzate verso il sistema locale sul quale è in esecuzione in servizio.
Se uno schema del genere è ben noto a tutti “gli addetti ai lavori”, non sono molti – se non i più esperti – a conoscere il significato del termine “reverse connection”. Se, tradizionalmente, è il client a connettersi alla macchina server attraverso una specifica porta aperta su quest’ultima, nel caso di una “reverse connection”, è il client ad aprire una porta locale per la connessione del server remoto.
Dal momento che questo approccio consente di evitare in toto le restrizioni imposte da firewall e router, le “reverse connection” stanno divenendo sempre più sfruttate da parte degli sviluppatori di malware.
Illustriamo una situazione in cui l’impiego di una connessione “reverse” può rivelarsi particolarmente utile.
Supponiamo di aver la necessità di controllare un sistema remoto con lo scopo di fornire supporto tecnico a distanza. Il proprietario del sistema remoto non dispone delle competenze informatiche necessarie per rilevare l’IP assegnato alla propria macchina, riconfigurare il router ed aprire una porta effettuando il forwarding dei dati in arrivo.
A titolo esemplificativo proviamo ad utilizzare TightVNC, un software opensource clone del celeberrimo VNC.
Iniziamo quindi con il configurare la macchina client effettuando le operazioni che solitamente si opererebbero sul server. Apriamo cioé, dapprima, la porta TCP 5500 sul proprio router attivando il forwarding dei dati verso l’IP assegnato alla propria macchina.
Una volta compiuto questo passo, si potrà scaricare il componente “viewer” di TightVNC ossia il programma che permetterà di amministrare da remoto la macchina server. Il software “viewer” può essere scaricato da questa pagina (indicazione “viewer executable, does not require installation”).
Dopo aver estratto il contenuto dell’archivio Zip in una cartella di propria scelta, si dovrà accedere al prompt dei comandi, portarsi all’interno della cartella di TightVNC e digitare il comando seguente:
E’ lo switch -listen
ad incaricarsi di avviare una connessione “reverse”.
Dopo aver digitato il comando, si noterà la presenza – nell’area della traybar di Windows – dell’icona di TightVNC. Cliccando con il tasto destro del mouse su di essa quindi sulla voce Default connection options… infine sulla scheda Globals, si potrà verificare come il programma, per default, accetti le “reverse connection” sulla porta TCP 5500.
Lato server (sulla macchina da amministrare) si dovrà solitamente richiede l’avvio del componente server di TightVNC.
Per semplificare le cose al proprietario del sistema da amministrare da remoto, si potrà inviargli (ad esempio per e-mail) i soli file WinVNC.exe
e VNCHooks.dll
, entrambi contenuti nell’archivio Zip “Complete set of executables, no installer”, prelevabile sempre da questa pagina.
Il proprietario del sistema server dovrà salvare i due file in locale, all’interno di una cartella di propria scelta, quindi fare doppio clic sul file WinVNC.exe
.
Alla comparsa della schermata TightVNC Server: current user properties, egli dovrà definire una password (che non verrà comunque richiesta nel caso della connessione “reverse”) quindi premere il pulsante OK.
Come ultimo passo il proprietario del sistema da amministrare dovrà fare clic con il tasto destro del mouse sull’icona di TightVNC, posta nella traybar in basso a destra, quindi scegliere la voce Add new client.
Nella casella Host name deve essere introdotto l’indirizzo IP della vostra macchina client (ove è già in esecuzione il componente “viewer” di TightVNC).
Dopo la pressione del pulsante OK, dovreste vedere il desktop remoto. Una volta terminata l’operazione di supporto a distanza, potrete chiudere il componente server in esecuzione e richiedere eventualmente l’eliminazione dei due file WinVNC.exe
e VNCHooks.dll
.