ACTUALIZADO A DÍA 01/02/2021

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 realizan 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 el destino, dejando 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 TOR

Se puede llevar a cabo utilizando el comando apt install tor en sistemas basados en Debian, sin embargo es conveniente tener la última versión estable 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/tor/ (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:

Con lo anterior se tiene TOR contruido. El binario “tor” se encontrará en el directorio “<TOR_DIR>/src/app” y se puede ejecutar directamente desde la terminal. 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 “Torsocks”. A parte de esto, el comando TOR tiene una serie de opciones que le permiten 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

Instalación de TorBrowser

Una de las alternativas más populares a la hora de instalar y utilizar TOR, es precisamente por medio del navegador web TorBrowser, el cual se encuentra disponible en la página web oficial de TOR. La instalación es muy simple, una vez descargado el paquete se puede descomprimir y ejecutar el binario “start-tor-browser” desde una terminal y a continuación, se levantará una nueva instancia de TOR, se conectará a la red y se abrirá el navegador web.

La instancia de TOR que levanta TorBrowser es perfectamente funcional y configurable, es decir, que se puede editar el fichero de configuración “torrc” para incluir las directivas que se requiera en un momento dado. Concretamente, dicho fichero de configuración se encuentra ubicado en <TORBROWSER_DIR>/Browser/TorBrowser/Data/Tor/torrc

Proxychains

Proxychains es un programa que permite enrutar todas las peticiones TCP realizadas por un cliente utilizando un proxy SOCKS4, SOCKS5 o HTTP. 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 herramientas o comandos que no tienen soporte a servidores proxy SOCKS para establecer conexiones. Como se ha dicho en una entrada anterior, se puede instalar simplemente utilizando el comando apt-get, sin embargo resulta mucho mejor hacerlo desde el código fuente, se puede obtener desde aquí: http://proxychains.sourceforge.net/ Para instalarlo se sigue el mismo procedimiento que consiste en 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, éste buscará el fichero en las siguientes rutas en el siguiente orden:

1. ./proxychains.conf

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

3. /etc/proxychains.conf

Se puede ubicar en cualquiera de las anteriores rutas. 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.

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). 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 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 y Proxychains. 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.
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 introducidos desde consola utilizando el comando “proxychains” 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

Con todos los pasos anteriores se tiene una plataforma base para navegar y realizar operaciones de forma anónima, ahora el usuario puede estar un poco más seguro de 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 estos problemas.

Un saludo y Happy Hack!
Adastra.