Navigare anonimi, sicuro per davvero?

di | 2 Agosto 2009

Utente anonimoEsistono decine di servizi online, alcuni gratuiti, altri a pagamento, che offrono navigazione “anonima”.

La domanda nasce spontanea: si è anonimi per davvero usando questi siti?
La risposta è per certi versi scontata: su Internet vi possono essere vari gradi di anonimato, ma mai l’anonimato in senso assoluto.

Su siti che gestisco mi è capitato molto spesso di ricevere visite da Anonymouse.org.

In particolare in un caso si trattava di un utente di un forum che voleva inviare insulti  senza essere rintracciabile.
Ma ha solo avuto il merito di stimolare la mia fantasia informatica…

Il metodo che illustro di seguito, ideato da me, ma non escludo possa essere stato usato anche da altri, mi servì a bloccare e  ad individuare quel malintenzionato che giocava a nascondino.

L’esempio sarà sviluppato a grandi linee proprio considerando Anonymouse.org, ma il metodo può essere riadattato, ampliato e impiegato anche per altri servizi.

Analisi del servizio:

Sul sito http://anonymouse.org/ è presente un campo in cui è possibile digitare un qualsiasi indirizzo web da visualizzare in forma anonima.

La pagina web viene dunque richiamata dal server di Anonymouse, che si comporta come un proxy.
Tutti i link all’interno della pagina (link testuali, richiami di css e javascript e immagini) vengono sostituiti con altri filtrati, per evitare che  si perda l’anonimato. Cioè, ad esempio, se si visita una pagina di www.matarrelli.com, i link alla home page contenuti nel codice html diventano tutti di questo tipo:

http://anonymouse.org/cgi-bin/anon-www.cgi/http//www.matarrelli.com/

Così anche cliccando si rimane schermati. Altrettanto vale per tutti i link ad altre pagine e per i richiami javascript e le immagini che diventano del tipo:

http://anonymouse.org/cgi-bin/anon-www.cgi/http//www.matarrelli.com/script.js

http://anonymouse.org/cgi-bin/anon-www.cgi/http//www.matarrelli.com/immagine.jpg

In questo modo navigando si rimane sempre anonimi, anche gli script e le immagini non sono richiamati col proprio ip e con il proprio user agent, ma con quello di Anonymouse..
In parole povere non si lascia mai traccia perché nessuna richiesta è effettuata direttamente dal browser dell’utente al server di destinazione.

Allora come fare a riconoscere l’utente?

Agiamo in maniera ibrida, coniugando operazioni lato server con javascript, che agisce notoriamente lato client.

Le richieste al server fatte da Anonymouse hanno due caratteristiche:

  1. Ip, che però potrebbe cambiare nel tempo. Non ho effettuato verifiche in tal senso;
  2. User Agent, che è sempre lo stesso ed è http://Anonymouse.org/ (Unix);

Soffermiamo la nostra attenzione sullo user agent, che è costante nel tempo.
Possiamo istruire il server affinché lo riconosca e compia delle operazioni “speciali”.
Possiamo, se siamo su piattaforma Apache, impostare l’htaccess affinché ogni qual volta lo user agent contine la parola Anonymouse anzichè mostrare la pagine richiesta, mostri una pagina ad hoc denominata anonimo.php

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Anonymouse
RewriteRule (.*) anonimo.php

Con questo passaggio abbiamo già inibito l’accesso al sito, in quanto l’utente non vede la pagina richiesta, ma sempre la pagina anonimo.php

Però noi vogliamo fare di più, vogliamo scovare l’ip reale dell’utente. Qui entra in gioco il codice javascript che verrà inserire nel file anonimo.php.

Come anticipato, qualsiasi richiamo javascript viene sostituito nella versione schermata, dunque il codice originale:

<script type=”text/javascript” language=”javascript” src=”http//www.matarrelli.com/script.js” ></script>

viene sostituito:

<script type=”text/javascript” language=”javascript” src=”http://anonymouse.org/cgi-bin/anon-www.cgi/http//www.matarrelli.com/script.js” ></script>

Dobbiamo necessariamente ingannare il bot che effettua le sostituzioni.
Un metodo per farlo, molto semplice ed efficace, consiste nel non scrivere un indirizzo completo di richiamo, ma nel far effettuare il richiamo a javascript stesso, spezzettandolo opportunamente. Ecco cosa intendo:

<script type=”text/javascript” language=”javascript”>
document.write(‘<script type=”text/javascript”‘+’ language=”javascript” s’+’rc=”‘);
document.write(‘ht’+’tp’+’://’+’ww’+’w.’);
document.write(‘matarrelli’+’.com’);
document.write(‘/script.j’+’s” >’);
</script>

In questo caso javascript stesso richiama un altro script, ricostruendone l’indirizzo originale da più pezzetti di stringa. Anonymouse non riuscirà ad individuare l’operazione, che non verrà perciò schermata.

Il richiamo al file script.js viene effettuato direttamente dal browser dell’utente al server che contiene la pagina web. Anonymouse è del tutto bypassato.

Nel file script.js possiamo inserire varie cose, la cosa più semplice è inserire il redirect ad un file che proceda a memorizzare l’ip e lo user agent originale dell’utente:

document.location.href=”http://www.matarrelli.com/log.php”;

Il file log.php può essere costruito molto semplicemente:

<?php

$filename = “anonimi.php”;

//pesca i dati dell’utente
$ua = $_SERVER[“HTTP_USER_AGENT”]; // user agent
$ip= getenv(‘REMOTE_ADDR’); // indirizzo ip

// individua l’esatta ora e data
$giorno= date(“D”);
$data = date(“d”);
$ora = date(“H”);
$minuti = date(“i”);
$mese = date(“F”);
$anno = date(“Y”);

//memorizza i dati nel file di nome $filename
if(!($fp = fopen($filename,”a”))) die (“non riesco ad aprire o creare il file”);
$html = “<p style=\”font-size:9px;\”>”.” “.$data.” “.$mese.” “.$anno.” – “.$ora.”:”.$minuti.” \n”.”  User Agent: “.$ua.” \n”.”  IP: “.$ip.” \n”.” </p>”;
fwrite ($fp, $html);
fclose($fp);

?>

Nel file anonimi.php viene memorizzata la data e l’ora della visita, insieme a ip e user agent originali.

Missione compiuta,  l’anonimo è smascherato.

P.S. grazie all’individuazione dell’ip (non sapete che soddisfazione :-)) l’utente fu bannato dal mio forum sia con il nickname anonimo che aveva creato sia con quello che usava abitualmente per scrivere.

2 pensieri su “Navigare anonimi, sicuro per davvero?

  1. Andrea

    E riguardo alla funzione di e-mail quale sicurezza di anonimato offre il sito anonymouse? visto che si scrive direttamente da web loro dovrebbero avere solo i’IP di chi si collega e se poi se cancellano i log nessuno potrebbe risalire al vero mittente? Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.