Hace algunas semanas en este blog se registro una entrada sobre el uso básico de Tor, en el que solamente se indicaba el procedimiento de instalación más sencillo y como otras herramientas como ProxyChains, TorTunnel y Vidalia. En esta ocasión se intentará ir “un poco más allá” e intentar explicar algunas características avanzadas de TOR para garantizar el anonimato de las peticiones realizadas sobre redes tipo TCP y las medidas que se deben tener presentes para no permitir “fugas” de paquetes de forma directa contra el destino sin pasar por la red TOR.

Como ya se ha indicado anteriormente en este blog, TOR es un servicio orientado al establecimiento de comunicaciones anónimas utilizando una serie de nodos conectados de forma segura que son también conocidos como “circuito virtual” tales nodos se encargan de cifrar los paquetes que viajan por medio de ellos, de esta forma se enmascara el origen de la petición cuando es entregada a su destino, sin embargo, todas las peticiones son soportadas únicamente bajo el protocolo TCP, por este motivo cuando se utilizan peticiones con un protocolo diferente como UDP o ICMP, dichas peticiones no pasan por medio del circuito virtual y en lugar de ello se establece una conexión directa entre el cliente y su destino, dejando de esta forma una potencial “fuga” de la identidad del cliente, esta es una de las consideraciones que se debe tener en cuenta a la hora de utilizar TOR, sin embargo no es la única, a lo largo de esta serie de entradas se intentará ir profundizando poco a poco sobre estos temas.

A continuación se indican los tópicos más relevantes en el uso TOR y herramientas relacionadas.

Instalación de Herramientas para garantizar el anonimato.

TOR

En la entrada anterior relacionada con TOR, se ha indicado el proceso de instalación de TOR partiendo de un repositorio especifico y utilizando el comando apt-get de Debian, sin embargo es conveniente tener las ultimas versiones estables de TOR en lugar de las versiones contenidas en la mayoría de repositorios de fuentes relacionados, para esto es necesario descargar el código fuente desde aquí: https://www.torproject.org/download/download.html.en (TOR se encuentra escrito en lenguaje C, lo que permite utilizar herramientas de compilación y construcción tales como gcc)

Posteriormente es necesario tener instaladas las librerías dependientes de TOR que en concreto son: libevent-dev y libssl-dev finalmente ejecutar los comandos de construcción de programas escritos en C:

>./configure

>make

>make install

>tor

Aug 26 23:33:00.915 [notice] We now have enough directory information to build circuits.

Aug 26 23:33:00.915 [notice] Bootstrapped 80%: Connecting to the Tor network.

Aug 26 23:33:01.201 [notice] Bootstrapped 85%: Finishing handshake with first hop.

Aug 26 23:33:01.754 [notice] Bootstrapped 90%: Establishing a Tor circuit.

Aug 26 23:33:02.823 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.

Aug 26 23:33:02.823 [notice] Bootstrapped 100%: Done.

Con lo anterior se tiene TOR “up and running”, ahora se pueden utilizar herramientas y técnicas que permitan preservar el anonimato y extender su uso, como por ejemplo, utilizando TOR junto con otras aplicaciones, lo que es conocido como “Torify” de software. A parte de esto, el comando TOR tiene una serie de opciones que le permiten al usuario personalizar su comportamiento y distintos mecanismos de conexión. El listado de opciones y su significado se encuentran en: https://www.torproject.org/docs/tor-manual.html.en

Vidalia

Del mismo modo que se ha instalado TOR, es posible instalar Vidalia, es decir, a partir del código fuente y personalizar su funcionamiento, para ello es necesario descargar el software desde: https://www.torproject.org/projects/vidalia.html.en una vez descargado es necesario cumplir con una serie de dependencias y tener algunas herramientas instaladas como por ejemplo “cmake”

>apt-get install qt-sdk

>apt-get install cmake

Luego ejecutar algo como

>mkdir build && cd build

>cmake ..

Con el comando anterior se puede ejecutar el comando “make install” para crear los ejecutables y sus correspondientes enlaces simbólicos.

Proxychains

Proxychains es un programa que permite enrutar todas las peticiones TCP realizadas por un cliente por medio de un proxy soportando SOCKS4, SOCKS5, HTTP CONNECT, es útil en entornos donde la salida a internet es por medio de un proxy o para utilizar dos o mas proxies en cadena, además de lo anterior, otra característica importante, es que brinda la capacidad de ejecutar comandos que no tienen soporte para establecer un proxy para la conexión. Como se ha dicho en una entrada anterior, se puede instalar simplemente utilizando el comando apt-get, sin embargo, como las herramientas anteriores, resulta mucho mejor hacerlo desde el código fuente, se puede obtener desde aquí: http://proxychains.sourceforge.net/ Para instalarlo se sigue con el mismo procedimiento de los programas anteriores, es decir, compilar, construir e instalar.

>./configure

>make

>make install

Finalmente, para que este programa funcione correctamente es necesario ubicar el fichero de configuración proxychains.conf en la ruta adecuada, una vez se ejecuta proxychains, este buscará el fichero en las siguientes rutas en este mismo orden:

1. ./proxychains.conf

2. $(HOME)/.proxychains/proxychains.conf

3. /etc/proxychains.conf

Se puede ubicar en cualquiera de las anteriores ubicaciones, asegurándose que este mismo fichero no se encuentre en ninguna de las rutas anteriores para que no existan conflictos. Este fichero es importante ya que es allí donde se definirá el proxy o la cadena de proxies que utilizará proxychains para establecer una conexión con un host remoto. Se indicará con mayor detalle en la siguiente sección cuando se indique la instalación de privoxy

Privoxy

Privoxy es un proxy web con capacidades de filtrado y mejora de la privacidad del usuario, permite controlar el acceso a información personal y filtrar muchos ads de internet que pueden representar una amenaza o simplemente basura. El procedimiento de instalación, nuevamente es igual al que se ha indicado anteriormente (desde código fuente) sin embargo, desde la instalación es posible especificar parámetros que le permitirán ejecutarse de un modo más seguro.
En primer lugar, se recomienda NO ejecutar este comando como root, de hecho, no se recomienda en lo absoluto ejecutar ninguno de los comandos anteriores como usuario root, se recomienda la creación de un usuario y un grupo para este fin.

Una vez hecha esta aclaración, para instalar privoxy de forma segura se siguen los siguientes pasos:

>autoheader && autoconf

>./configure ––disable-toggle ––disable-editor ––disable-force

>make

>make -n install

Con los comandos anteriores quedará instalado Privoxy y ahora se puede utilizar con TOR, Proxychains y vidalia. Privoxy puede ser configurado por medio de las opciones incluidas en el fichero de configuración de Privoxy ubicado en /etc/privoxy/config desde allí se indican todas las opciones de configuración del proxy, incluyendo el puerto utilizado para recibir peticiones, si se ha instalado como servicio, es necesario ejecutar /etc/init.d/privoxy start (de este modo leerá el fichero de configuración en el directorio /etc/privoxy) si se ejecuta desde cualquier otro directorio es necesario tener el fichero de configuración ubicado en dicho directorio.

Uniendo Servicios

Privoxy, TOR y vidalia se pueden desde una única interfaz por medio del uso de las propiedades de Vidalia. Por defecto, Vidalia siempre intentará iniciar el servicio de TOR realizando todas las operaciones de conexión y establecimiento del circuito para conectarse con la red TOR, sin embargo, permite también iniciar un proxy local una vez se ha iniciado el servicio de TOR, es aquí donde se puede especificar que se debe iniciar privoxy para realizar las peticiones a sitios remotos, para hacer esto, desde Vidalia ir a “Preferencias → General” y en la opción “Aplicación Proxy” seleccionar “Iniciar una aplicación proxy cuando Tor se inicie” incluyendo como comando “/etc/init.d/privoxy” y como parámetro del comando “start”.

Finalmente, para utilizar proxychains junto con Privoxy y Tor es necesario establecer las propiedades de configuración correspondientes, en primer lugar, es necesario indicar a Privoxy que las peticiones entrantes deben de ser enviadas directamente al servicio de TOR (que por defecto se inicia en el puerto 9050) para esto se edita el fichero “/etc/privoxy/config” incluyendo la linea:

forward-socks5 / 127.0.0.1:9050 .

con esto, las peticiones que se envían al puerto 8118 (puerto por defecto de Privoxy son redireccionadas al puerto 9050 en la maquina local, donde se encuentra en ejecución el servicio de TOR. Finalmente es necesario configurar Proxychains para que todos los comandos ingresados desde consola utilizando este comando sean enviados directamente a Privoxy, el cual a su vez, enviará la petición a TOR. Para esto es necesario editar el fichero de configuración de proxychains que como ya se ha indicado anteriormente, se puede ubicar en /etc/proxychains.conf se debe incluir la siguiente linea:

socks5 127.0.0.1 8118

TorButton

TorButton es una extensión de Firefox y esta diseñada específicamente para navegar de forma anónima utilizando TOR, ademas de servir como puente entre TOR y el navegador, también realiza una serie de verificaciones sobre los sitios visitados para evitar fugas de identidad causadas por ads hostiles o cualquier plugin que intente acceder a información privada contenida en el navegador, por este motivo, plugins como Java, Flash entre otros, son desactivados por esta extensión por razones de seguridad, ademas de esto cambia el “user-agent” del navegador y también maneja de forma segura las cookies existentes y las nuevas después de haber iniciado TorButton. La instalación es muy sencilla, solamente es necesario descargar la extensión de Firefox y ejecutarla desde el navegador, dicha extensión puede ser automáticamente instalada desde aquí: https://www.torproject.org/torbutton/index.html.en

Una vez se reinicia el navegador web, la extensión queda correctamente instalada en el navegador y puede ser personalizada (debe ser personalizada) con el fin de garantizar el anonimato con esto en mente, es necesario establecer algunas opciones de configuración:

Establecer el proxy (privoxy instalado anteriormente) presionando click derecho sobre el icono de TorButton y en preferencias, seleccionar “Configuración del Proxy → Usar una configuración de proxy personalizada” y desde allí ingresar el servidor SOCKS5 en el puerto 8118 (donde se encuentra privoxy ejecutándose) también es necesario indicar el proxy HTTP y el proxy SSL indicando los mismos valores, es decir, host: 127.0.0.1 y el puerto 8118. Finalmente indicar que no hay proxies para: “localhost; 127.0.0.1; <local>”.

Para comprobar que todo ha ido bien, ir hacia el sitio de comprobación de TOR: https://check.torproject.org/ en dicha pagina se indicará si el navegador esta utilizando adecuadamente TOR para realizar las peticiones, por otro lado también es posible consultar la dirección IP desde un servicio como: http://www.cualesmiip.com/ se podrá apreciar que se enseñará una dirección IP completamente distinta a la que frecuentemente utiliza el ISP para realizar las peticiones en internet.

Con todos los pasos anteriores se tiene una plataforma base para navegar y realizar operaciones de forma anónima, ahora el usuario esta seguro que su identidad no se registrará en un sistema remoto, pero, realmente cuenta con dicha seguridad? Realmente su identidad es anónima en los sitios que visita? Lo mas probable es que la respuesta sea NO, ya que es necesario tener consideraciones adicionales para evitar determinadas fugas de información. En las próximas entradas se indicarán las medidas y las opciones de configuración que se deben tener en cuenta para evitar fugas de información privada.