Monday, 4 July 2016

Tu propio servicio VPN en casa sobre Raspberry Pi con OpenVPN, Latch y Virus Total. ¡Yeah!

Hace unas pocas semanas se publicó aquí, en Un informático en el lado del mal, un artículo donde se explicaba cómo montar tu propio servidor VPN sobre una Raspberry Pi utilizando OpenVPN y añadiendo Latch para proteger tanto los accesos SSH a Rapberry Pi como las conexiones VPN. Pero aún se podían añadir nuevas medidas de seguridad para dotar al sistema de alguna capa de protección extra.

Figura 1: Tu propio servicio VPN en casa sobre Raspberry Pi con OpenVPN, Latch y Virus Total.

Tras su publicación, Chema Alonso me propuso que le diera una nueva vuelta de tuerca a la idea añadiendo una capa extra de seguridad similar a la que ofrece el servicio de Clean Pipes que Telefónica proporciona para dotar de seguridad a sus clientes desde la red, ahora tenemos disponible una herramienta para monitorizar el tráfico HTTP que pasa por nuestra conexión VPN para detectar malware o ataques que puedan llegar por la red.


Al final la PoC se llama SniffVPN, y es una herramienta escrita en Python que captura las peticiones GET HTTP que son enviadas a VirusTotal para su análisis de seguridad. SniffVPN también deja un registro de log con la fecha de la petición, la dirección IP real desde la que se accede a la conexión VPN, la dirección IP que asigna el servidor OpenVPN, y la información del servidor al que se conecta, es decir, la dirección IP destino, el puerto origen y destino, y la dirección URL completa de la petición.

Figura 3: Visualización de los logs de las peticiones HTTP  realizadas vía OpenVPN
El funcionamiento de esta herramienta es muy sencillo. Basta con descargar los archivos desde el GitHub oficial de SniffVPN y ejecutarlo dentro del servidor Raspberry Pi con Linux en el que hemos configurado el servicio OpenVPN protegido con Latch.

Figura 4: SniffVPN en GitHub
# cd SniffVPN-master
# python SniffVPN.py
Para que la ejecución funcione es necesario tener instalado Scapy y TCPdump, además, de por supuesto, OpenVPN instalado y funcionando, para que se pueda comenzar a capturar el tráfico que pasa por la conexión.
# apt-get install python-scapy tcpdump
Figura 5: SniffVPN capturando tráfico

Cuando la herramienta está en ejecución se puede acceder a un panel web para visualizar de forma sencilla la información de los logs, así como los informes que se reciben de VirusTotal y saber si alguna URL está infectada. Si se ha visitado una URL infectada se podría dar el caso de que la caché esté infectada y se podría identificar el equipo en el que ha pasado, así como el acceso directo al análisis que se ha realizado en VirusTotal para comprobar los resultados.

Figura 6: Reporte de los análisis. Nota: El archivo de El lado del mal no está infectado.

Figura 7: Visualización de los logs en el panel web.

En la vista principal del panel web se pueden ver a modo resumen las últimas URLs visitadas, así como las últimas URLs maliciosas detectadas.

Figura 8: Vista principal del dashboard

El proyecto actualmente se encuentra en fase alpha, es decir una versión poco estable y en fase de pruebas pero en continuo desarrollo, por lo que puede que aparezcan bugs. Se trata de un proyecto Open Source por lo que es posible ayudar en su desarrollo y sus mejoras. Entre las cosas que se pretender mejorar e implementar están:
- Bug fixes, bug fixes, bug fixes…
- Reporte de las URLs al propio antivirus del sistema
- Poder usar filtros en las tablas del panel web
- Compatibilizarlo con otros sistemas como Raspbian o Kali para ARM
- Capturar las peticiones HTTPs con proceso de Bridging HTTPs
Autor: Álvaro Nuñez

No comments:

Post a Comment