Aggirare i Controlli Modificando l’identità del Browser

Qualcuno avrà notato che nell’articolo precedente “3 Strumenti per Analizzare il Protocollo HTTP” la stessa interrogazione forniva 2 risultati diversi in base allo strumento utilizzato: o meglio in due casi restituiva il codice 200 (OK); in un caso invece, nel caso dell’interrogazione tramite netcat il risultato era 301 Moved Permanently.

Il perché di questi risultati discrepanti si trova negli header che il client invia al server. Nei primi due casi viene inviato anche l’header “Host:”; header mancante nel caso di netcat. Una discussione più approfondita sarà presenta nei prossimi articoli.

Qui mi interessa presentare e introdurre gli header HTTP lato client. In particolare un header, lo “User-Agent” può avere utilizzi sorprendenti.

Facciamo subito un esempio pratico. Utilizzo Firefox per collegarmi a www.libero.it. Il mio client (ovvero Firefox) è lo User Agent. Notate inoltre il campo Host: www.libero.it senza il quale, come dicevo prima, l’interrogazione non avrebbe esito positivo:

GET / HTTP/1.1
Host: www.libero.it
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16

Come abbiamo visto il server sa che utilizzo Firefox 2.0.0.16 su piattaforma Windows XP (Windows NT 5.1). Dati interessanti per le statistiche, ma anche utili per chi vuol sferrare attacchi mirati a questa piattaforma.

Lo User-Agent può essere contraffatto. E’ possibile travestire il browser facendolo passare per Internet Exploter o Opera (o qualsiasi altro User-Agent).
Con Firefox possiamo ottenere questo tramite l’estensione User Agent Switcher.
Una volta installata potremmo facilmente cambiare l’identità del nostro Firefox, selezionando dal menù Strumenti -> User Agent Switcher e quindi l’identità scelta.

Ecco una sessione con il mio Firefox travestito da Internet Explorer:

GET / HTTP/1.1
Host: www.libero.it
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)

Il server di Libero pensa di aver ricevuto la visita da un Explorer 7 su Vista (Windows NT 6.0).

Come utilizzare questa tecnica? Per esempio aggirando il controllo di accesso basato su User-Agent.
Qualche tempo fa apparve su Geekissimo un trucco che permetteva di leggere online delle riviste. Il sito era destinato ai soli utenti iPhone: il controllo era basato sulla verifica dello User-Agent.
Bastava travestire Firefox da iPhone, utilizzando User Agent Switcher con Mobile Safari 1.1.3 – iPhone come identità ed il sito. prima riservato ai soli utenti iPhone diventava accessibile a tutti!

Un altro modo di utilizzare il travestimento User-Agent è quello per aggirare i controlli Websense.
Websense è un software utilizzato nelle grandi realtà aziendali per filtrare il traffico HTTP e inibire l’accesso a siti come MySpace, a siti pronografici, di warez, e tutti i siti che in genere non hanno a che vedere con le attività lavorative di un’azienda.
La versione Enterprise 6.3.1 di Websense era affetto da un bug che permetteva di aggirare i filtri modificando lo User-Agent.

Utilizzando uno dei seguenti parametri:

User Agent : RealPlayer G2

User Agent : MSMSGS

User Agent : StoneHttpAgent

si poteva navigare sui siti censurati.

Questi sono solo due esempi, potrebbero essercene altri. Se li conoscete segnalatemeli.

Il mascheramento ha un antidoto. Esiste un progetto, il Broeserrecon Project che ha come finalità lo sviluppo un sistema di fingerprinting passivo dei browser. Questo significa che Browserrecon è in grado di riconoscere un browser (o tentare di riconoscerlo) tramite un’analisi che si spinga oltre l’analisi dello User-Agent. Un po’ quello che fa p0f con i sistemi operativi.

Facciamo un esperimento. Travesto il mio Firefox da Opera/Vista con User Agent Switcher e navigo sulle pagine di Browserrecon. Ecco il risultato:

your browser sent via http_user_agent
Opera/9.25 (Windows NT 6.0; U; en)

fingerprinting identification with browserrecon (21 hits possible)
Mozilla Firefox 2.0.0.14 (90.48% with 19 hits)

Sgamato (o quasi). In realtà uso la versione 2.0.0.16: forse non sono aggiornate le firme.

Come si travestono i browser si possono travestire i server. E come si possono individuare le vere identità degli uni, è possibile fare lo stesso con gli altri. Vedremo altre cose interessanti nel regno dello spoofing e del fingerprinting, attivo e passivo.

2 Trackbacks / Pingbacks

  1. PillolHacking.Net » Leggere gli header HTTP e le pagine Web con Netcat
  2. Navigare Anonimi e Aggirare la Censura con Proxify | PillolHacking.Net

I commenti sono bloccati.