Volver

Suricata, la herramienta para detectar tráfico malicioso en tu red

Imagen del slider

20 de mayo de 2024

Descubre cómo Suricata puede ayudarte a detectar amenazas en tu tráfico de red.

En la actualidad, la ciberseguridad se ha convertido en una de las principales áreas que deben mejorarse en las organizaciones. A diario se publican numerosos artículos que hacen referencia a los ciberataques sufridos por las empresas, y es por ello que la inversión en este ámbito registró un crecimiento del 7,7 % durante el año pasado, según datos del IDC (Informe de Datos de Cotización).

Las empresas buscan diferentes soluciones para proteger y salvaguardar los datos, que constituyen el activo más importante de cualquier negocio, y, al mismo tiempo, buscan soluciones que mitiguen los ataques.

¿Conoces Suricata?

Entre las soluciones que buscan las organizaciones, cobra importancia la implantación de IDS (detectores de intrusiones) como Suricata. Suricata es un motor de detección de amenazas de alta velocidad y bajo consumo de recursos que analiza el tráfico de la red en busca de patrones y comportamientos maliciosos, pudiendo generar bloqueos del tráfico no deseado, protegiendo así la red y los sistemas de la organización contra posibles amenazas. Además, cuenta con una interfaz gráfica que ayuda y facilita la configuración de una forma sencilla y intuitiva para el administrador.

En este artículo se aborda la generación de reglas, explicando su estructura y los diferentes parámetros para definirlas.

Estructura de reglas en Suricata

Las reglas de Suricata son el conjunto de directivas que se utilizan para especificar qué tipos de tráfico de red deben supervisarse y qué acciones deben tomarse cuando se detecta tráfico sospechoso. Las reglas de Suricata se componen de tres partes principales: la acción (action), el encabezado (header) y las opciones (options). La estructura general de las reglas en Suricata, denominadas «Signature», cuenta con una serie de campos que describen las características de la propia regla.

Estas reglas pueden aplicarse a cada una de las interfaces disponibles en función de las necesidades de la organización.

El formato de las reglas de Suricata se define como:

  • Acción: Determina la acción que se lleva a cabo cuando se produce una coincidencia con la firma (signatura)
  • Encabezado: Se definen el protocolo, las direcciones IP y los puertos de origen y destino de la regla
  • Opciones: Ofrece una serie de opciones adicionales que se pueden utilizar para ajustar la regla según cómo se desee que actúe. Por ejemplo, si se desea realizar una búsqueda que no distinga entre mayúsculas y minúsculas, se puede utilizar el parámetro «nocase» (no distingue entre mayúsculas y minúsculas).

 A continuación, se detallan cada uno de los parámetros aplicables a las reglas de Suricata, describiendo y mostrando algunos de ellos:

Acción:

  • alerta: se genera una alerta en el registro de eventos y se permite el tráfico.
  • drop: se descarta el tráfico que cumple la regla.
  • reject: el tráfico que cumple la regla se rechaza con un mensaje de error ICMP.
  • pass: se permite el tráfico que cumple la regla sin generar una alerta en el registro de eventos.
  • sdrop: se descarta el tráfico que cumple la regla sin generar una alerta en el registro de eventos.
  • ignorar: se ignora el tráfico que cumple la regla sin generar una alerta en el registro de eventos.
  • replace: se sustituye el contenido que cumple la regla antes de aceptarlo o descartarlo.
  • log: el tráfico que cumple la regla se registra en el registro de eventos sin generar una alerta ni bloquear el tráfico.
  • user: se utiliza para aplicar una acción personalizada definida por el usuario en la configuración.

 Encabezado:

  • Protocolo: especifica el protocolo concreto de la capa de transporte que se va a analizar. A continuación se enumeran algunos de los principales protocolos: TCP, UDP, ICMP, ICMPv6, IP, ARP
  • IP de origen o destino: Especifica la dirección IP de origen y destino del tráfico
  • Puerto de origen o destino: Indica el puerto de origen y destino del tráfico
  • Contenido: se refiere al contenido que se debe buscar en el tráfico, como cadenas de texto o un patrón de bytes.
    • Contenido: permite buscar una cadena de texto en el paquete.
    • Contenido: «!» permite buscar paquetes que NO contengan una cadena de texto.
    • Contenido:| hex |: permite buscar un valor hexadecimal específico en el paquete.
    • Contenido:!"| hex |": permite buscar paquetes que NO contengan un valor hexadecimal específico.
    • Content:«pattern1»; content:«pattern2»: permite buscar varios patrones en el mismo paquete.
    • Content:«pattern1»; within:X; content:«pattern2»: permite buscar patrones separados por X bytes.

Opciones:

  • distance: se utiliza junto con within para especificar una distancia a partir de la última coincidencia de contenido. Por ejemplo, si tuvieras content:«ABC»; distance:10; content:«DEF»;, estarías buscando un «DEF» que aparezca 10 bytes después del final del «ABC» anterior.
  • offset: se utiliza para saltar una cantidad específica de bytes en un paquete antes de intentar hacer coincidir el contenido.
  • depth: se utiliza para limitar la profundidad de búsqueda de una coincidencia en un paquete.
  • http_method, http_uri, http_header, etc.: estos son modificadores específicos de HTTP que te permiten buscar en partes concretas de una solicitud o respuesta HTTP.

 

Regla para la detección de escaneo de puertos

Así sería una regla sencilla para detectar el escaneo de puertos basado en el envío de paquetes SYN:

ACCIÓN |ENCABEZADO |OPCIONES

alertatcp cualquier origen -> cualquier destino(mensaje: «SYN SCAN Detectado»; flujo: sin estado; indicadores: S; referencia: arachnids,198; tipo de clase: intento de reconocimiento; sid: 2100624; prioridad: 5; rev: 8; umbral: tipo ambos, seguimiento por origen, recuento 9, segundos 1;)

  • alert: Indica que se generará una alerta si se cumple la condición establecida.
  • tcp: Indica que se buscará en los paquetes TCP.
  • any any -> any any: Define las direcciones IP y los puertos de origen y destino de los paquetes que se buscarán. En este caso, se buscarán en cualquier dirección IP y en cualquier puerto de origen y destino.
  • msg:«SYN Scan detectado»: Define el mensaje de alerta que se mostrará cuando se cumpla la condición establecida. En este caso, el mensaje es «SYN Scan detectado».
  • flow:stateless: Indica que la regla se aplica a flujos sin estado, es decir, en los que no se espera un seguimiento de la conexión TCP.
  • flags:S: Indica que se buscarán paquetes que tengan el bit SYN (S) activo.
  • referencia:arachnids,198: Hace referencia al identificador de la regla en la base de datos de Arachnids.
  • classtype:attempted-recon: Indica la clasificación de la alerta. En este caso, «attempted-recon» significa que se ha detectado un intento de reconocimiento.
  • sid:2100624: Identificador único de la regla.
  • prioridad:5: Prioridad asignada a la regla, en una escala del 1 al 5.
  • rev:8: Número de revisión de la norma.
  • threshold:type both, track by_src, count 9, seconds 1: Establece un umbral para evitar falsas alertas. En este caso, se generará una alerta cuando se detecten más de 9 intentos de escaneo de puertos por segundo procedentes de la misma dirección IP de origen.

Conclusión

En conclusión, las reglas de Suricata se utilizan para detectar amenazas como intentos de escaneo de puertos, ataques de denegación de servicio, malware o intrusiones en la red, entre otras. La creación y gestión de reglas dentro de Suricata permite a las organizaciones adaptar su sistema de seguridad a sus necesidades específicas y al panorama de amenazas en constante cambio. Desde SCASSI, estamos preparados para ayudar a las organizaciones a mejorar sus capacidades de detección. Este es el primer paso para establecer flujos de trabajo eficientes para la gestión de amenazas y alertas. La ciberseguridad es un viaje, no un destino. En SCASSI, nos comprometemos a apoyar a nuestros clientes en cada paso de este viaje, ayudándoles a mantenerse seguros y resilientes en un ciberespacio cada vez más amenazado.