El Proyecto

Qué es

luIDS es un conjunto de herramientas de código abierto cuya finalidad es controlar las conexiones cifradas que entran y salen de una red, advirtiendo de posibles conexiones de malware, fraudes y filtraciones de datos. Para llevar esta tarea a cabo, se divide el problema en pequeños servicios que se interconectan entre sí y que pueden ser desplegados en tus redes locales o en la nube. La mayor parte está desarrollado en Go y usa GRPC como protocolo para la comunicación entre componentes.

Los principales casos de uso que pueden realizarse mediante estas herramientas son:

Los servicios que conforman luIDS son los siguientes.

Listas negras

Se ha desarrollado el que posiblemente sea el servicio de agregación de listas negras más potente en el mundo open source. Permite integrar múltiples fuentes de diferentes tipos de recursos: ips, hosts, hashes de fingerprints, certificados...
Además de poder descargar automáticamente listas disponibles online, puede utilizar información de geolocalización, utilizar la API Safebrowsing de Google o usar servidores DNS con zonas DNSxL.
Junto al software se ha recopilado una base de datos de más de 200 fuentes de listas gratuitas en Internet.

Servicio DNS

Se ha desarrollado un servidor DNS (basado en el popular CoreDNS) que, haciendo uso del sistema de listas negras, evita que los equipos de nuestra red realicen conexiones con sitios de phising, malware, etc.
Además de esto, dota de información a otros componentes del sistema luIDS.

Control de las resoluciones

Se ha desarrollado un novedoso servicio de caché de resoluciones que se integra con el servicio DNS y está especialmente optimizado para conocer si un determinado equipo de nuestra red ha resuelto una dirección IP y un nombre. Esta caché permite descubrir tráfico de Botnets o exfiltraciones que traten de evadir posibles mecanismos de control que se realicen a nivel DNS.

Análisis de tráfico distribuido

Se ha desarrollado un servicio de análisis de tráfico multiprotocolo (actualmente sólo implementado TLS) en el que se ha desacoplado la captura de tráfico del análisis. Esto permite tanto que el análisis de tráfico pueda realizarse a partir de múltiples fuentes como que las fuentes puedan distribuir el tráfico a través de múltiples analizadores.
Para esta tarea, además de la posibilidad de enviar el tráfico "en bruto", se ha desarrollado un protocolo específico para el análisis de tráfico TLS. Este protocolo permite ahorrar mucho ancho de banda al no enviar la parte cifrada de las comunicaciones.

Notario TLS

Con la llegada de la nueva versión del protocolo TLS 1.3 se oculta la parte de la negociación del cifrado en la que se intercambian los certificados. Esto proporciona mayor privacidad a la comunicación pero evita que las herramientas de análisis puedan verificar los certificados contra un conjunto de autoridades de certificación válidas.
Por ello se ha desarrollado un novedoso servicio de notaría TLS que realiza conexiones "nulas" de forma paralela a las comunicaciones para verificar la legitimidad de los servicios utilizados.

Integración con sistemas cortafuegos

Se ha desarrollado un servicio de integración con colas Netfilter mediante el cual es posible realizar integraciones de sistemas cortafuegos Netfilter con algunos de los servicios del IDS como las listas negras, caché de resoluciones, etc.

Machine Learning

Se ha desarrollado un servicio de broker de Machine Learning. Este servicio ofrece una interfaz estable para la clasificación de las conexiones cifradas que entran y salen de nuestra red, pudiendo de este modo utilizar diferentes modelos de clasificación, tecnologías (OpenCPU, Tensorflow, etc) e incluso múltiples sistemas de clasificación al mismo tiempo.

Gestión de eventos

Se ha desarrollado un servicio de gestión de eventos con el que poder tratar los eventos generados por los deferentes sistemas del IDS.

Archivado

Se ha desarrollado un servicio de archivado con el que podremos almacenar el histórico de eventos, conexiones realizadas por los dispositivos de nuestra red, etc. El servicio proporciona interfaces de archivado para el resto de servicios del IDS y permite utilizar diferentes backends para el almacenamiento de los datos (MongoDB, ElasticSearch...).

Contenedores e instrumentación

La mayor parte del software desarrollado se encuentra disponible en forma de contenedor para poder ser fácilmente desplegado por sistemas de orquestación como Kubernetes. Además, todos los servicios incluyen una interfaz para la instrumentación mediante Prometheus.

Breve historia

luIDS es un proyecto personal que surge a partir de un proyecto de fin de máster en ciberseguridad, en el que se trataba de explorar las posibilidades del uso de Machine Learning en el ámbito de la detección de malware sobre conexiones TLS. Tras su finalización, quedé impresionado con las posibilidades del ecosistema de tecnologías empleadas y las arquitecturas de microservicios e imaginé el primer sistema de detección de intrusos de código libre "Made in Teruel", completamente distribuido mediante protocolos libres, que combinase el uso de técnicas clásicas y el análisis de datos, que pudiese ser desplegado en cualquier dispositivo y que permitiese la combinación de servicios locales y en la nube.

Sí, aquello no era más que una paja mental inabarcable para una sola persona, así que decidí centrarme en un problema específico y que, al fin y al cabo, era una continuación del proyecto realizado: controlar las conexiones cifradas que entran y salen de una red sin romper el cifrado. Con esto en mente, presenté un pequeño prototipo basado en lo que ya tenía al I Concurso de Ideas y Aplicaciones Tecnológicas de Teruel y resulté ser uno de los ganadores. Aquel premio, junto a las ganas que tenía por lanzar algo propio, me dieron el impulso para continuar el proyecto.

Premio Concurso Idea - Luis Guillén Civera