Mi primer Suricata

Después de 5 meses en Francia, viviendo una pandemia y muchas restricciones… Opté por abandonar el sueño professional y volver a casa.

Semanas complicadas a nivel personal, han hecho difiícil sacar tiempo para dar vida a las tardes de SIEM, “nuevo” trabajo, terminar  entregas del máster y conseguir tiempo para poder entrenar un poco.

Hoy no vamos hablar de SIEM (lo sé , este blog se llama tardes de SIEM y de momento no hemos hablado de SIEM) ni tampoco hablaremos de IoT. Hoy hablaremos de mi primer Suricata, mi primer IDS.

Suricata, mi nuevo IDS

Este blog empezó siendo una guía/ayuda para entender la domótica de una casa. Después de realizar diferentes posts, tener muchas charlas de café derivadas y ver lo que pudimos ver en un post anterior (Mi smarthome de Xiaomi), en que los gateways de Xiaomi realizan muchas conexiones hacia IPs de China. He decidido pausar provisionalmente la “domotización” para “securizar” mi red doméstica.

Existen muchas maneras de “securizar” una red… En internet podréis encontrar infinitud de páginas y tutoriales para hacerlo. Particularmente y en mi caso, he decidido ser un poco “autodidacta” e instalar desde cero diferentes elementos que me ayudaran en un futuro  entender los comportamientos y patrones que puedan existir en mi red doméstica.

El primer elemento que he decidido desplegar en mi red es el IDS (Intrusion Detection System). El IDS es un sistema de detección de accesos no autorizados en una red. Este sistema analiza el tráfico en busca de anomalías, basando las anomalías en firmas definidas o patrones.

La solución implementada en mi caso es Suricata (open source) corriendo encima de una Raspberry.

Existen muchas maneras de instalar un IDS en una red. Suricata tiene la capacidad de trabajar como IPS (Intrusion Prevention System) si se instala “in-line”. En mi caso, Suricata solamente actuará como IDS. 

Para que el Suricata pueda “leer” todo el trafico de mi red, he realizado port mirroring en el router de todo el tráfico  de mi red hacia Suricata

Nota: En el último apartado de esta entrada podemos ver cómo instalar y configurar nuestro Suricata.

Empezar la casa por el tejado

No hemos visto cómo instalar Suricata, tampoco hemos visto como funciona, pero es el momento de empezar la casa por el tejado.

Uno de los retos que tenía al empezar mi proyecto de securización era el de poder evaluar qué está pasando en mi casa. Después de tener unos días el Suricata funcionando puedo ver que necesita un buen fine-tunning.

Tal y como he comentado anteriormente, pudimos ver las conexiones de nuestros dispositivos Xiaomi hacía China…

¿Qué dirá Suricata de esto?

  • 07/06/2021-14:11:09.998654 [**] [1:2018918:4] ET POLICY possible Xiaomi phone data leakage DNS [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {UDP} 83.46.74.0:61698 -> 80.58.61.254:53

¡Sorpresa! ¡Suricata se queja! En la línea anterior podemos ver que el IDS ha reportado el salto de la política con ID 2018918 informando de un posible data leak… De este modo procederemos a revisar su firma.

  • alert dns any any -> any any (msg:”ET POLICY possible Xiaomi phone data leakage DNS”; dns.query; content:”api.account.xiaomi.com”; nocase; endswith; reference:url,thehackernews.com/2014/08/xiaomi-phones-secretly-sending-users.html; classtype:policy-violation; sid:2018918; rev:4; metadata:created_at 2014_08_11, updated_at 2020_09_15;)

Podemos ver referencias de la firma en el siguiente enlace:

Ahora es el momento de que cada uno saque sus conclusiones o que cada uno empiece a realizar sus propios análisis.

¿Qué más dice Suricata?

Revisando eventos al azar, puedo identificar un router también de Xiaomi provocando el salto de la política de Traversal Utilities for NAT (2016149), haciendo conexiones reiteradas a la IP 111.206.174.3 (CHINA).

 

En este caso, haber empezado la casa por el tejado, me acaba de enseñar que mi Suricata me ayudará a detectar cosas interesantes, eso si, tocará empezarla por los cimientos.

Instalación y configuración

En esta última parte veremos los comandos ejecutados y las configuraciones realizadas en la Raspberry para tener el Suricata funcionando.

Para la instalación de Suricata me he basado en la guía publicada por “el-brujo” en el blog del hacker.

 

A continuación veremos los pasos básicos usados para la correcta instalación de Suricata.  En mi caso he utilizado una Raspberry con raspbian. Para proceder con la instalación es necesario instalar las siguientes dependencias.

  • sudo apt install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev make libmagic-dev libjansson-dev rustc cargo python-yaml python3-yaml liblua5.1-dev

Debemos descargar Suricata.

  • wget https://www.openinfosecfoundation.org/download/suricata-6.0.1.tar.gz

Descomprimir el fichero.

  • tar -xvf suricata-6.0.1.tar.gz

Entrar en la carpeta de Suricata.

  • cd $HOME/suricata-6.0.1/

Configurar, compilar e instalar suricata (puede tardar unos minutos).

  • ./configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –enable-nfqueue –enable-lua
  • make
  • sudo make install
  • cd $HOME/suricata-6.0.1/suricata-update/
  • sudo python setup.py build
  • sudo python setup.py install
  • cd $HOME/suricata-6.0.1/
  • sudo make install-full
  • sudo suricata-update

Configurar el fichero de configuración de Suricata. En este caso debemos modificar la HOME_NET y añadir nuestra red local.

  • sudo vi /etc/suricata/suricata.yaml
  • HOME_NET: “[192.168.1.0/24]”

Finalmente podremos inicializar Suricada (debemos inicializarlo con el interfaz de red de nuestra raspi, en mi caso el eth0).

  • sudo suricata -c /etc/suricata/suricata.yaml -i eth0 -S /var/lib/suricata/rules/suricata.rules

Si queremos ver las políticas que saltan en nuestra red debemos examinar el siguiente fichero.

  • sudo tail -f /var/log/suricata/fast.log

Siguientes pasos...

Tenemos Suricata funcionando, por lo tanto, es el momento de proceder a tunear nuestro IDS en función de las características de nuestra red.

En la siguiente o en una de las próximas entradas veremos cómo actualizar las firmas de nuestro Suricata y empezar a sacarle partido… Quién sabe si enviar su información a un SIEM…

Espero que os haya gustado.

Jordi

06/07/2021