Tor es un cojunto de herramientas que pretende conseguir el anonimato online. Usa una red de máquinas o nodos a través de los cuales enruta el tráfico de red, tal y como se muestra en el esquema siguiente:
Como se ve en el dibujo una conexión a través de la red Tor usa tres nodos intermediarios entre el origen y el destino. De esta manera la máquina destino que recibe la conexión solo tendrá acceso a la IP del último nodo.
Tor ofrece una interfaz SOCKS a las aplicaciones, por lo que cualquier aplicación preparada para usar SOCKS podrá utilizar la red Tor sin problemas.
Sin embargo, no es necesario que una aplicación disponga de soporte para SOCKS, dado que Tor distribuye un script llamado "torify" que permite que cualquier aplicación use la red tor.
Este script emplea la herramienta tsocks para permitir que una aplicación use SOCKS de forma transparente.
Para que un usuario pueda conectarse a la red Tor necesita obtener un listado de nodos de la red. Este proceso, como indica el dibujo, se realiza sin cifrar.
A continuación se empieza a crear el circuito por el que viajaran los datos en la red Tor. Cada servidor conoce únicamente al servidor que le proporciona los datos y al servidor al que se los envía. por lo que ninguna máquina conoce el recorrido completo. Además, en cada tramo, los servidores afectados negocian claves diferentes, impidiendo que las conexiones sean rastreadas.
Una vez el circuito ha sido establecido se utilizará durante unos diez minutos. Posteriormente se creará un circuito nuevo.
La forma de instalar Tor depende en gran medida del sistema operativo utilizado, por lo que para instalarlo lo mejor es partir de la documentación oficial.
Una vez instalado su uso es sencillo. Por ejemplo, podríamos torificar la aplicación netcat con el comando siguiente:
Observemos el funcionamiento de Tor. Si no usamos el comando "torify" vemos que estamos realizando una conexión directa a google.
Sin embargo, torificando netcat los resultados son diferentes.
Queda claro que no saltamos directamente al servidor de google sino que entramos en la red Tor. Veamos ahora con que dirección IP llegamos a nuestro destino. Necesitaremos una web que nos diga la dirección IP (http://www.vermiip.es/) y otra que nos diga la localización geográfica (http://www.ip2location.com/free.asp),
Esto nos permitirá obtener la IP con el comando:
Y su localización geográfica:
De esta manera podemos construir un sencillo script que nos de el listado de nodos de salida de Tor.
Del que extraemos el siguiente listado, que nos permite ver los nodos que nos dan acceso a Internet en último lugar.
Respecto al script anterior, realiza un sleep de cinco minutos antes de reintentar, lo que hace el procese extremadamente lento. Si se reinicia Tor antes de cada petición el circuito se crea de nuevo y se obtiene un nodo diferente. De esta manera puede suprimirse el sleep del script.
En el momento de escribir este artículo la red Tor es relativamente pequeña, lo que disminuye notablemente el grado de anonimato. Aunque, sin duda, tiene un futuro prometedor.
Referencias:
- Tor Project: http://www.torproject.org
Tor ofrece una interfaz SOCKS a las aplicaciones, por lo que cualquier aplicación preparada para usar SOCKS podrá utilizar la red Tor sin problemas.
Sin embargo, no es necesario que una aplicación disponga de soporte para SOCKS, dado que Tor distribuye un script llamado "torify" que permite que cualquier aplicación use la red tor.
Este script emplea la herramienta tsocks para permitir que una aplicación use SOCKS de forma transparente.
Para que un usuario pueda conectarse a la red Tor necesita obtener un listado de nodos de la red. Este proceso, como indica el dibujo, se realiza sin cifrar.
A continuación se empieza a crear el circuito por el que viajaran los datos en la red Tor. Cada servidor conoce únicamente al servidor que le proporciona los datos y al servidor al que se los envía. por lo que ninguna máquina conoce el recorrido completo. Además, en cada tramo, los servidores afectados negocian claves diferentes, impidiendo que las conexiones sean rastreadas.
Una vez el circuito ha sido establecido se utilizará durante unos diez minutos. Posteriormente se creará un circuito nuevo.
La forma de instalar Tor depende en gran medida del sistema operativo utilizado, por lo que para instalarlo lo mejor es partir de la documentación oficial.
Una vez instalado su uso es sencillo. Por ejemplo, podríamos torificar la aplicación netcat con el comando siguiente:
$ torify nc www.google.com 80
Observemos el funcionamiento de Tor. Si no usamos el comando "torify" vemos que estamos realizando una conexión directa a google.
$ nc www.google.com 80 # En otro terminal $ netstat | grep ESTABLISHED tcp 0 0 192.168.1.69:34362 nf-in-f99.google.com:http ESTABLISHED
Sin embargo, torificando netcat los resultados son diferentes.
$ torify nc www.google.com 80 # En otro terminal $ netstat | grep ESTABLISHED tcp 0 0 192.168.1.69:34352 tor.outra.net:9090 ESTABLISHED tcp 0 0 192.168.1.69:34351 cyberphunk.eu:9001 ESTABLISHED
Queda claro que no saltamos directamente al servidor de google sino que entramos en la red Tor. Veamos ahora con que dirección IP llegamos a nuestro destino. Necesitaremos una web que nos diga la dirección IP (http://www.vermiip.es/) y otra que nos diga la localización geográfica (http://www.ip2location.com/free.asp),
Esto nos permitirá obtener la IP con el comando:
$ torify lynx --dump http://www.vermiip.com 2>/dev/null | grep "Tu ip" | cut -c 18-30 85.214.63.25
Y su localización geográfica:
$ torify lynx --dump http://www.ip2location.com/free.asp?ipaddresses=85.214.63.25 \ 2>/dev/null | grep "85.214.63.25\|mapit" | sed -e 's/\[.*\]//' 85.214.63.25 DE GERMANY BERLIN BERLIN STRATO RECHENZENTRUM BERLIN
De esta manera podemos construir un sencillo script que nos de el listado de nodos de salida de Tor.
$ cat print_tor_nodes.sh #!/bin/bash while true; do IP=`torify lynx --dump http://www.vermiip.com 2>/dev/null | grep "Tu ip" | cut -c 18-30`; DATA=`torify lynx --dump http://www.ip2location.com/free.asp?ipaddresses="$IP" \ 2>/dev/null | grep "$IP\|mapit" | sed -e 's/\[.*\]//'` echo $DATA sleep 300 done
Del que extraemos el siguiente listado, que nos permite ver los nodos que nos dan acceso a Internet en último lugar.
208.64.29.34 US UNITED STATES NEW YORK NEW YORK R & D TECHNOLOGIES LLC 217.20.117.1 DE GERMANY BERLIN BERLIN NETDIREKT E. K 128.197.11.3 US UNITED STATES MASSACHUSETTS BOSTON BOSTON UNIVERSITY 88.191.29.92 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 88.191.25.27 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 89.149.207.1 DE GERMANY BERLIN BERLIN NETDIREKT E.K 87.234.124.1 DE GERMANY BERLIN BERLIN QSC AG DYNAMIC IP ADDRESSES 88.191.29.92 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 87.234.124.1 DE GERMANY BERLIN BERLIN QSC AG DYNAMIC IP ADDRESSES 88.191.29.92 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 128.197.11.3 US UNITED STATES MASSACHUSETTS BOSTON BOSTON UNIVERSITY 75.72.79.46 US UNITED STATES 203.26.16.68 AU AUSTRALIA NEW SOUTH WALES WEST WYALONG TPG INTERNET PTY LTD 88.191.11.18 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 88.198.50.14 DE GERMANY - - HETZNER-RZ-NBG-NET 83.243.80.77 DE GERMANY BERLIN BERLIN SERVERCREW LTD. PI 88.191.29.92 FR FRANCE ILE-DE-FRANCE PARIS DEDIBOX SAS 209.160.32.1 US UNITED STATES DISTRICT OF COLUMBIA WASHINGTON HOPONE INTERNET CORPORATION 60.167.39.24 CN CHINA BEIJING BEIJING CHINANET ANHUI PROVINCE NETWORK 83.217.66.50 BE BELGIUM OOST-VLAANDEREN DENDERMONDE NMV-CUST-DIGITALROOT 128.2.141.33 US UNITED STATES PENNSYLVANIA PITTSBURGH CARNEGIE MELLON UNIVERSITY83.171.182.9 DE GERMANY BAYERN NüRNBERG MNET TELEKOMMUNIKATION GMBH 85.214.63.25 DE GERMANY BERLIN BERLIN STRATO RECHENZENTRUM BERLIN 74.208.46.15 US UNITED STATES NEW YORK NEW YORK 1&1 INTERNET INC 122.145.8.19 JP JAPAN - - FREEBIT CO. LTD 71.226.252.2 US UNITED STATES PENNSYLVANIA WEST CHESTER COMCAST CABLE COMMUNICATIONS INC 83.233.181.9 SE SWEDEN - - PROVIDER LOCAL REGISTRY 166.70.207.2 US UNITED STATES UTAH SALT LAKE CITY XMISSION 195.71.90.10 DE GERMANY - - PROVIDER LOCAL REGISTRY ...
Respecto al script anterior, realiza un sleep de cinco minutos antes de reintentar, lo que hace el procese extremadamente lento. Si se reinicia Tor antes de cada petición el circuito se crea de nuevo y se obtiene un nodo diferente. De esta manera puede suprimirse el sleep del script.
En el momento de escribir este artículo la red Tor es relativamente pequeña, lo que disminuye notablemente el grado de anonimato. Aunque, sin duda, tiene un futuro prometedor.
Referencias:
- Tor Project: http://www.torproject.org