Publicar sitio Web o archivos en la Deep Web con una Raspberry de manera anónima (Onionshare)
1. Introducción y objetivos
En este artículo vamos a mostrar cómo se puede llegar a publicar un sitio Web o un espacio de compartición de archivos en la Deep Web (red TOR), bajo una Raspberry Pi con todas las garantías de seguridad y anonimato.
A lo largo del proyecto nos encontraremos con inconvenientes que deberemos mitigar lo mejor posible, salvaguardando los principios de seguridad y anonimato.
El objetivo principal es mostrar al lector la facilidad que se tiene hoy en día para que una persona con conocimientos básicos de sistemas pueda montar su propia infraestructura anónima con la que poder compartir información.
De la misma manera, se mostrarán las medidas a tomar para poder detectar la existencia de posibles equipos informáticos «escondidos» bajo nuestra red legítima que puedan estar realizando actividades desconocidas sin nuestro permiso.
2. Escenario deseable y materiales necesarios
Para llevar a cabo la publicación de un sitio Web o de otros archivos en la Deep Web, es deseable cumplir los siguientes requisitos:
- Disponer de una red WiFi pública o comprometida a la que poder conectar la Raspberry. (Defensa: De ahí la importancia de tener nuestra red WiFi bien protegida con las últimas actualizaciones de seguridad).
- Encontrar un lugar que pase desapercibido para dejar la Raspberry cuando esté completamente configurada y tenga que conectarse a la red WiFi para publicar el sitio Web. Si se desea dejar conectada de manera permanente, se aconseja un lugar donde pueda estar enchufada a la corriente, sin depender de una Power Bank, para no tener que delatar nuestra posición como Red Teamers constantemente. (Defensa: De ahí la importancia de tener implantadas unas buenas políticas de seguridad física que garanticen el acceso seguro y regulado a los espacios cerrados y a la red eléctrica).
- Disponer de una Raspberry Pi que cuente con su propia tarjeta de red WiFi. Sino también se puede añadir una tarjeta de red vía USB, pero aumentaría las dimensiones del dispositivo final y no es conveniente.
- Manipular los componentes físicos con guantes para no dejar huellas, de tal manera que si cae en malas manos no puedan tener huellas por donde empezar a analizar la procedencia del dispositivo. (Defensa: De ahí la importancia del uso de dispositivos de seguridad física perimetrales como cámaras, para poder tener evidencias fuera del alcance de la mano de terceros).
Aclarar que lo más conveniente para llevar a cabo la publicación de un sitio Web en la red TOR de manera anónima es mediante el uso de TAILS, sin embargo TAILS no está disponible todavía para arquitecturas ARM, que es la que tiene Raspberry. Véase https://tails.boum.org/support/faq/index.es.html#arm.
3. Características a implementar en el sistema
Para llevar a cabo el montaje de la infraestructura donde alojar el sitio Web, necesitaremos que se cumplan con las siguientes funcionalidades:
- Autoeliminación de la memoria RAM cada 5 minutos.
- Enrutar todo el tráfico del sistema a través de la red TOR.
- Bloquear los pings para que sistemas que escaneen la red de área local (LAN) no descubran la Raspberry.
- Partición encriptada con AES256 donde se aloje el material a publicar. Preferiblemente usar un pendrive con TAILS que proporciona una partición encriptada y a la que se puede acceder desde cualquier sistema.
- Acceso por SSH con distinto puerto que el que viene por defecto.
- Apagar el sistema tras un intento de sesión fallido. Esto garantizará la eliminación de la memoria RAM y la encriptación de los discos.
- Conexión reversa a un servidor dedicado desde el que podamos administrar la Raspberry remotamente por SSH. (No es conveniente porque constituye una brecha de seguridad en el anonimato).
Habiendo definido las características que debemos implementar en la Raspberry, nos ponemos manos a la obra con el montaje.
4. Montaje del Sistema
Lo primero de todo se deberá instalar un sistema operativo en el que nos encontremos cómodos y nos de unas buenas garantías de seguridad. En nuestro caso hemos decidido instalar Kali Linux. No vamos a detallar el proceso de instalación ya que no es el objetivo de este artículo y hay mucha información en Internet sobre cómo hacerlo. Se aconseja proceder con el siguiente artículo:
Se recomienda realizar la instalación lo más sencilla y ligera posible.
Una vez tengamos acceso gráfico o por SSH a la Raspberry, procedemos a conectarla a una red WiFi (preferiblemente que no pueda comprometernos) bien mediante su propia antena, o bien mediante una antena externa vía USB.
Si la conectamos a una red WiFi propia para realizar las configuraciones iniciales, no hay que olvidar el eliminar dicha red del sistema una vez hayamos finalizado las operaciones, y antes de instalarla en la red bajo la que se publicará el sitio Web.
Antes de proseguir se recomienda cambiar el puerto de conexión por SSH para que no se encuentre fácilmente por posibles escaneos en la red de área local (LAN).
Para bloquear los «pings» con la finalidad de dificultar considerablemente que alguien puede descubrir la Raspberry conectada a la LAN, ejecutaremos el siguiente comando:
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
Para enrutar todo el tráfico de red del sistema, procedemos a instalar «Torghost». Podemos ver el siguiente artículo:
Para llevar a cabo la publicación del sitio Web en la red TOR, instalamos «onionshare«. Esta herramienta puede instalarse de distintas formas, pero para instalar la parte «CLI» de la herramienta para gestionarla íntegramente desde la línea de comandos sin necesidad de entorno gráfico, se recomienda instalarla mediante el comando:
Para llevar a cabo la monitorización de intentos fallidos de sesión y poder apagar el sistema para que se elimine la memoria RAM y se encripten las particiones de disco que contienen información confidencial, instalamos la herramienta File Integrity Monitor. Mediante esta herramienta se tiene por objetivo el comprobar si hay nuevos cambios en el archivo «/var/log/btmp», que se encarga de registrar los intentos
de inicio de sesión fallidos. Así pues, si algo o alguien intenta iniciar sesión en la Raspberry ese archivo lo registrará, y por tanto cambiará su hash de integridad. En el momento que cambie el hash de integridad, damos la orden de apagado.
En referencia al almacenamiento donde se encuentren los archivos del sitio Web a publicar (u otro tipo de material), se recomienda tenerlo bajo un Pendrive o disco duro encriptado con cifrado seguro, y que vaya conectado a la Raspberry por USB. Para ello se recomienda instalar TAILS en un Pendrive y hacer uso de su partición encriptada.
Para asegurar que se elimina la memoria RAM del sistema, y que se copia el archivo «/var/log/btmp» al directorio de «File Integrity-Monitor» para monitorizar inicios de sesión fallidos, debemos de programar en el Crontab la ejecución de un archivo «bash» con extensión «.sh» para que se ejecute cada 5 minutos. Este archivo lo vamos a llamar «commands.sh» y su contenido será el siguiente:
Las tres primeras líneas tienen por objetivo el borrado de la RAM y SWAP.
La cuarta línea se encarga de copiar el archivo «btmp» al directorio donde se encuentra monitorizando «File Integrity Monitor» los cambios de integridad de «btmp», que es el archivo donde se registran los inicios de sesión fallidos del sistema. En caso de que el archivo «btmp» cambie de hash de integridad, la herramienta «File Integrity Monitor» apagará la Raspberry, bloqueando así las unidades encriptadas y eliminando la memoria RAM del sistema.
Decir que hay que programar un mínimo de código para que la herramienta «File Integrity Monitor» ejecute el comando «poweroff» cuando detecte el cambio de integridad del archivo a monitorizar.
La quinta línea se encarga de regenerar la identidad en la red TOR, es decir, proporciona una nueva dirección IP al sistema en la red TOR.
Para que File Integrity Monitor haga bien el trabajo de apagar el sistema cuando detecte un cambio de hash de integridad en el archivo «btmp», deberemos hacer los siguientes cambios en el código fuente del archivo «driver.py»:
Para que el archivo «commands.sh» se ejecute cada cinco minutos en el sistema, deberemos darle permisos de ejecución mediante el comando «chmod +x», y posteriormente escribir en el Crontab las siguientes líneas, tras ejecutar «crontab -e». La segunda línea se encargará de ejecutar los comandos en cuestión tras el reinicio del sistema.
*/5 * * * * /opt/commands.sh
@reboot service tor start && torghost -s && iptables -A INPUT -p icmp –icmp-type 8 -j DROP
Para lanzar la web, que deberá encontrarse en un pendrive encriptado, nos posicionamos con el terminal en el directorio donde se encuentren los archivos del sitio Web que queramos publicar («/media/Tails/Persistence/Web/») y ejecutamos el siguiente comando:
- onionshare-cli –persistent /root/anon-web.session –website –public .
Tras la ejecución del comando anterior, veremos cómo se publicará el sitio Web mediante un enlace tipo «onion».
5. Encontrando dispositivos ocultos en nuestra Red y filtrando conexiones extrañas
Como bien hemos visto en los párrafos anteriores, se ha escondido el dispositivo conectado a la red mediante la técnica de «no responder a pings de escaneo». Pero, ¿Cómo podemos ver si existen este tipo de dispositivos en nuestra red?
Pues bien, si vamos a la configuración de nuestro Router podremos observar todos los dispositivos que hay conectados, ya que estos quedan identificados por su dirección física (MAC).
De esta manera podremos realizar escaneos pasivos a esa dirección IP con la seguridad de que ahí existe ese dispositivo, el cual está tratando de esconderse.
Para mitigar el riesgo de que un malhechor conecte dispositivos a nuestra red, es conveniente configurar en el Router una lista blanca para aquellos dispositivos identificados por su dirección física (MAC) que deban conectarse.
Se aconseja dar una lectura al siguiente artículo:
Decir que aunque la implementación de listas blancas por filtro de MAC es un paso muy importante para la seguridad de la Red, no es del todo infalible. Un criminal podría monitorizar aquellos dispositivos que están conectados a la red WiFi e interceptar sus direcciones MAC, como vemos a continuación.
Posteriormente, el criminal solo debería realizar un clonado de la MAC autorizada en la Red WiFi y ya podría conectarse suplantando la identidad del dispositivo autorizado. Es por ello que gana una gran importancia el tener la red WiFi debidamente protegida con una contraseña robusta y con las últimas actualizaciones de seguridad implementadas. También es conveniente el limitar el acceso físico al router.
6. Conclusiones
En este artículo hemos visto superficialmente cómo publicar un sitio Web en la Deep Web bajo una Raspberry Pi, con todas las garantías de seguridad y anonimato.
De esta manera hemos podido ver cómo una persona con conocimientos básicos en sistemas tiene la capacidad de montar su propio espacio en la Deep Web donde publicar información de manera segura y anónima bajo la red TOR.
Por todo lo anterior, es importante que los administradores de redes realicen de manera periódica comprobaciones para asegurarse que todos los dispositivos (routers, switches, etc.) estén debidamente actualizados con los últimos parches de seguridad, que las contraseñas de acceso a las redes mantengan unos mínimos de seguridad adecuados, y que todos los dispositivos conectados a ellas son legítimos y están debidamente identificados. Entre las medidas a implantar, se aconseja unas políticas de seguridad de filtrado de MAC siempre que sea posible según la operatividad del negocio, y unas políticas de seguridad para accesos físicos a los dispositivos de red.
De estar interesado en adquirir conocimientos de introducción al hacking ético puede optar por matricularse en nuestro curso básico de hacking ético, o si prefiere adquirir conocimientos más avanzados en ciberseguridad ofensiva puede adquirir nuestro curso avanzado.