Essendo in questo periodo particolarmente “intrippato” con l’hacking in ogni sua forma ed espressione, ho gironzolato un po’ in giro per la rete cercando potenziali falle di sicurezza e sono giunto ad una interessante scoperta. Riprendendomi al discorso sulle reti wireless in cui la privacy è messa ad alto rischio del precedente post, voglio mostrarvi con un esempio pratico come sia altrettanto a rischio nel maggior sito di social networking del mondo (Facebook) e in un suo compagno (Netlog). Procediamo con l’esempio.

Innanzitutto una nota introduttiva: il tipo di attacco che utilizziamo ricade nella categoria della manipolazione dei parametri, più precisamente è chiamato Parameter Tampering. In maniera estremamente facile ed immediata, infatti, andremo semplicemente a cambiare il nome del file o della cartella a cui vogliamo accedere, sfruttando una debolezza ordinata probabilmente per ragioni di comodità. Sia ben chiaro fin dall’inizio: ciò che faremo non è nulla di straordinario o chissà quanto ardito, ripeto che si tratta di una semplice dimostrazione.

Il trucco che eseguiremo è semplicissimo: partendo dalle immagini profilo di ogni utente in ciascuno dei due siti (ridimensionata o opportunamente tagliata dall’utente o dal sito) risaliremo alla foto completa in pochissimi passi. Le ragioni per cui essa può essere considerata una violazione della privacy a tutti gli effetti è piuttosto semplice: se io non voglio lasciarvi accesso al mio profilo, dubito che vorrò lasciarvi accesso alle mie foto, fosse anche solo unicamente quella di presentazione. E i motivi per cui ho deciso di tagliarla in un certo modo possono essere ad esempio perchè non voglio che si veda la mia faccia, o chissà cos’altro.

Ebbene, in pochissimi passi è possibile aggirare questa minima “protezione”. Cominciamo da Netlog: io ho la mia bella immaginetta profilo vicino al mio nome:

profilo_netlog

comincio aprendo l’immagine in un’altra scheda (o finestra o quel che sia) e visualizzandone l’URL: http://it.netlogstatic.com/p/tt/062/452/62452596.jpg . Dato che nella pagina del mio profilo ho la stessa immagine ingrandita, posso supporre che troverò anche l’indirizzo di quella, dopodichè procederò all’analisi dei due URL, per vedere se ci trovo correlazioni che posso poi applicare tra quelle due ed estendere ad ogni altra.
Una rapida occhiata al codice sorgente della pagina (se non lo sapete fare siete dei niubbi e dovete andare a studiare, se lo sapete fare siete a meta dell’opera di ogni attacco di questo genere, ma andate a studiare lo stesso che non si finisce mai di imparare, niubbi!) e scorrete fino a trovare qualche riferimento che vi può aiutare. Oltre a trovare un sacco di cosine interessanti, dentro il sorgente troverete i primi riferimenti all’immagine che stiamo abbiamo trovato per prima (la miniatura) e continuiamo a scendere. Tenete sott’occhio insieme al codice  anche la pagina vera e propria, i vari riferimenti di testi già visti vi aiuteranno a localizzare la vostra posizione. Scendendo ancora troveremo ciò che cerchiamo, ma supponiamo di avere un codice molto più vasto e complicato (o che non abbiamo voglia di spulciare tutto il sorgente, cosa che consiglio sempre caldamente di fare), come agire? Un buon suggerimento per cominciare è quello di supporre che il nome dell’immagine o parte di esso non sia cambiato: effettiamo dunque una ricerca nel sorgente per “62452596.jpg” o per parti di esso. Et voilà, trovato un riferimento preciso preciso, che punta ad un’altra immagine: http://it.netlogstatic.com/p/oo/062/452/62452596.jpg . La apriamo ed è l’immagine a grandezza reale! Ottimo! Ora analizziamo i due indirizzi alla ricerca di correlazioni:

http://it.netlogstatic.com/p/tt/062/452/62452596.jpg

http://it.netlogstatic.com/p/oo/062/452/62452596.jpg

Notato nulla? L’unica differenza è solo nella cartella “di seconda generazione” che le contiene: “tt” per le miniature e “oo” per le immagini a dimensione reale. Provateci con qualsiasi altra immagine, funziona perfettamente.

Passiamo ora invece a Facebook: cercheremo di fare lo stesso trucco, questa volta però, escogitando qualcosa di diverso (possiamo anche tranquillamente procedere come descritto sopra, comunque) e addirittura più semplice: operare su profili di cui si ha già l’accesso (il proprio o quello degli amici, per esempio). Basta infatti confrontare gli indirizzi di foto a cui si ha già accesso in entrambe le versioni (miniatura e grandezza reale) per accorciare terribilmente il lavoro. Ma pensiamo di non avere accesso a Facebook (per esempio non essendo registrati): io ho tale Giovanni Dini di cui voglio visualizzare l’immagine personale senza essere registrato. Come fare? Per fortuna (sì, ho detto per fortuna) Facebook viene incontro alle esigenze di privacy dei suoi utenti rispetto a chi è esterno. Andando infatti all’indirizzo trovato con Google (http://www.facebook.com/people/Giovanni-Dini/1219831882) vediamo una immagine leggermente ingrandita e il cui indirizzo non ha niente a che fare con qualcosa di vagamente comprensibile (http://www.facebook.com/profile/pic.php?uid=AAAAAQAQrirsPbidJ14D6DCqQ9H-MQAAAAqgAPYL7YYQc0VpFGaNKSmJ). Per l’appunto: se qualcuno capisse il collegamento o il criterio con qui l’id viene assegnato, gli sarei grato se me lo facesse sapere. Dunque non possiamo operare su di lui direttamente da fuori (in realtà una possibilità c’è,  ma dovreste avere un culo pazzesco: in pratica accedendo al profilo da fuori vediamo una pagina in cui c’è la foto del profilo (ovviamente ridimensionata) e un po’ degli amici dell’utente. Provate a clickare su ognuno degli amici e vedere se nella loro pagina di profilo fra gli amici c’è la persona che ci interessa. In quel caso potrete aprire la miniatura della persona e visualizzarne l’indirizzo che, come vedremo tra poco, ci interessa veramente), dobbiamo piuttosto farlo dall’interno di Facebook. In questo caso stiamo vedendo la miniatura dell’immagine del profilo della persona che ci interessa, procediamo con il solito fare: apriamo l’immagine in un altro riquadro e visualizziamone l’indirizzo. Sopresa! L’immagine che ci si presenterà sarà la seguente http://static.ak.fbcdn.net/images/ui/UIRoundedImage.png?8:156558, vale a dire il riquadro bianco utilizzato per disegnarne il contorno ricurvo. Come procediamo ora? Semplice, dato che l’immagine del profilo è sotto il riquadro, basterà dare una spulciata al sorgente utilizzando come filtro di ricerca l’indirizzo appena trovato. Purtroppo, gli indirizzi che lo precederanno saranno numerosi e spesso fuorvianti (ricordiamo che il riquadro bianco è applicato ad ogni imagine profilo), tuttavia, basterà aprirli ad uno ad uno per trovare l’immagine giusta (non dovrebbero essere troppi, suvvia). Quando l’avremo trovata, avremo anche il suo indirizzo, nel mio caso: http://profile.ak.facebook.com/v223/327/70/q1219831882_6264.jpg . In questo caso, il giochino della pagina del profilo funziona ugualmente e l’indirizzo che ricaveremo sarà semplicemente http://profile.ak.facebook.com/v223/327/70/n1219831882_6264.jpg. L’unico problema è che a questo punto abbiamo l’immagine ingrandita sì, tuttavia non è a dimensione reale, in quanto si tratta purtroppo solo di una versione “fixed” (quella per l’appunto usata nella pagina profilo). Mentre per Netlog si trattava dell’immagine propria anche dell’album di foto, in Facebook le cose non funzionano così. Accontentiamoci per ora, e proseguiamo nello studio. ;)

Non risponderò a commenti lamer.