|
Dopo un titolo
del genere credo vi aspettiate qualcosa di _bello_ ;)
L'HTTP Tunneling e' una tecnica che si utilizza in ambienti LAN blindati
dove il firewall ci concede una sola porta (o due, tre...) per fuggire su
Internet, tipicamente la 80 e la 443 (HTTP e HTTPS).
Grazie a questa tecnica possiamo sfruttare un server proxy per connetterci
su server esterni e su qualunque porta si desideri. Questo avviene grazie
al protocollo HTTP 1.x e il "comando" CONNECT.
CONNECT e' il comando che viene dato ad un server proxy quando ci si vuole
connettere ad un server HTTPS. Per intenderci. Se vogliamo leggerci la posta
di autistici via web, utilizzando un proxy, il browser passera' al proxy
una stringa che + o - risultera' essere:
CONNECT squirrel.autistici.org:443
HTTP/1.x
per comprenderne il significato non bisogna certo conoscere a memoria l'rfc
2616. Come vedete, dopo la CONNECT si specifica il nome dell'host e la porta
su cui vogliamo connetterci separati da ":" infine il protocollo che vogliamo
utilizzare (HTTP 1.0 o 1.1).
In poche parole cosa avviene ? Secondo quanto stabilito dalla rfc 2616,
dal momento in cui un proxy riceve una richiesta di tipo CONNECT esso deve
scambiare i dati fra client e server senza intervenire in alcun modo.
Ma allora chi ci impedisce di fare una richiesta di tipo:
CONNECT www.micro$oft.com:23 HTTP/1.1
??
...in teoria nessuno ! In pratica il nostro caro proxy si connettera' alla
porta 23 di www.micro$oft.com e si comportera' da vero e proprio gateway.
E' ovviamente possibile sfruttare qualunque porta e protocollo.
Nei miei molteplici esperimenti, pero', ho scoperto che esistono proxy che
non ci permettono il tunneling verso porte differenti dalla 443, proprio
per prevenire questo tipo di giochetti. Poco o male, con zio gugl e' possibile
trovare decine di proxy pubblici, se uno non va, se ne trova un altro (o
lo si buca e lo si mette a posto, ghghghgh ;)
Un'ultima considerazione. Se il vostro server proxy aziendale supporta il
tunneling su qualunque porta e non avete problemi di autenticarvi, siete a
posto. Altrimenti nessuno vi vieta di utilizzare proxy esterni, ammesso che
il firewall lasci passare il vostro traffico attraverso la stessa porta su
cui vi dovete connettere. Solitamente i proxy ascoltano su 80, 8080 e 3128,
quindi avete bisogno che almeno una di queste porte sia aperta e accessibile
a voi.
Con la tecnica dell'HTTP tunneling potete utilizzare IRC, ICQ, ssh (!), telnet,
X, e tutto quello che vi passa per la testa. Certo non aspettatevi pero'
grandi prestazioni in termini di velocita'.
Se non si capisce una sega di quello che ho scritto (lo temo) fatemelo sapere...
by(ez)
darko
Dic - 04: dopo qualche annetto dalla stesura di questa pagina, mi trovo a dover scrivere qualche inevitabile annotazione.
Innanzi tutto, dopo varie e-mail che mi sono giunte, ho capito che e' il caso fare delle precisazioni. Il metodo che descrivo sopra non e' una guida o un tutorial! . Mi spiego. Cio' che ho descritto e', semmai, una spegazione di quello che si puo' fare con la direttiva CONNECT del protocollo HTTP, per cui puo' essere utile per chiunque voglia sviluppare un proprio data-pipe, in stile netcat, che faccia il tunnelling attraverso un proxy. Per coloro che non sapessero programmare possono sempre utilizzare software gia' esistenti, come ad esempio HTTPort (l'unico che conosco). Per cui, vi chiederei di non scrivermi chiedendomi come dovete fare per navigare nella vostra rete o come usare un software p2p. Lo dico perche' non ho proprio il tempo necessario per rispondervi in tempi utili, e siccome non voglio che pensiate che io snobbi le vostre e-mail, vi suggerisco di provare prima HTTPort o altro.
Mentre vi incoraggio sempre a farmi sapere le vostre impressioni o critiche o tutto quello che vi passa per la testa! Purche', appunto, non mi chiediate: "non riesco a scaricare con emule, che devo fare?", perche' davvero, tra il lavoro (sigh!) ed i miei autismi personali, non mi rimane molto tempo... scusate :-|
Altra precisazione doverosa, e' questa.
L'"articolo" che ho scritto, come dicevo, non e' affatto recente, e tre anni, nella storia dell'informatica, sono quasi un'epoca.
Per cui molte cose sono cambiate da allora. Tra cui i proxy. Ho infatti constatato che oramai la maggior parte dei proxy, per default, non permettono l'utilizzo della direttiva CONNECT su porte diverse dalla 443, e questo incrista molto tutto il discorso... :-\ Per cui non e' detto che nella vostra azienda, il proxy, permetta il giochetto descritto. Bisogna comunque dire che, se magari non riuscite col tunnel,nonostante i tempi cambino, i sysadmin rimangono gli stessi ^_^ deheheh!!
Per cui, prima di gettare ogni speranza (o voi che volete uscire :-) tentate quest'altra strada.
Mettiamo che la porta del vostro prozy aziendale sia la 8080 (e' solo un esempio, il discorso non cambia se la porta fosse la 3128, 3129 o che altro). Cio' che dovete fare e' semplicemente cercare su internet qualche proxy pubblico che utilizzi una porta differente dalla 8080. Se il sysadmin e' scemo, e molto probabilmente lo e' (ihihihi!!! ma no scherzo, alcuni sono anche molto bravi...) potreste avere il culo che abbia lasciato sguarnite molte porte, tra cui quelle utilizzate dai proxy che avete trovato in rete. Quindi non dovete fare altro che cambiare le impostazioni del vostro browser e settare il proxy che avete trovato.
Magari vi chiedete: "ma se gia' ho il proxy aziendale, che mme frega di usarne un altro??". Be', la risposta e' piu' che ovvia. Innanzi tutto non avrete problemi di content-filtering, cioe'. Se il proxy aziendale filtra e nega pagine contenti vocaboli vietati (o addirittura i siti per vedere la propria mail!! Alcuni lo fanno, sti maiali!) voi raggirate l'ostacolo. Ed in piu', se per accedere al proxy aziendale dovete inserire user e password, la history delle vostre navigazioni e' loggata (e fanculo alla privacy...), invece se utilizzate un proxy esterno, magari anche anonimo, la vostra navigazione non sara' piu' "visibile" al sysadmin (beh, sempre che non si metta a sniffare il traffico di rete, ma e' un ipotesi mooooolto improbabile).
Ultima cosa (in modo da rispondere un po' a tutte le domande che mi son state poste). A parte utilizzare un proxy esterno, non esiste un modo per "cancellare" le tracce di una vostra connessione all'esterno! L'unico modo e'... non generare traffico! Cioe', la sera prima vi fate un backup di Internet sul vostro disco e il giorno dopo, a lavoro, staccate il cavo di rete e navigate sul vostro disco. 8^) E' uno scherzo ovviamente!! Quindi non provateci nemmeno, se vi connettete su un qualunque proxy, interno od esterno, o se anche navigate senza proxy, i pacchettini tcp/ip non li potete cancellare (senno' non navigate nemmeno!). Capito? L'unica cosa e' che come dicevo prima, e' improbabile che in azienda esista qualcuno che stia li' a guardare tutto il giorno i pacchetti che passano in LAN! A meno che non lavoriate dentro l'FBI o la NSA....
Spero d'aver dissolto i vostri dubbi, in qualche modo.
darko
|