Conoce Atico34 - Solicita presupuesto
Ciberseguridad

Así es Snort, el sistema de detección de intrusos más popular

La detección de intrusiones puede ser un problema confuso para los administradores del sistema. Hay varios paquetes disponibles para automatizar y simplificar el proceso de detección de intrusos, y Snort es uno de los mejores. Aunque Snort ha sido descrito como un sistema de detección de intrusos “liviano”, esta descripción se refiere más a la facilidad con la que Snort puede implementarse en una red de tamaño pequeño a mediano que a las capacidades de esta utilidad altamente flexible. En este artículo explicamos qué es Snort, sus características, funciones y cómo instalarlo.

¿Qué es Snort?

SNORT es un sistema de detección de intrusos basado en red que está escrito en lenguaje de programación C. Fue desarrollado en 1998 por Martin Roesch. Ahora está desarrollado por Cisco.

Snort logo

Es un software gratuito de código abierto. También se puede utilizar como rastreador de paquetes para monitorizar el sistema en tiempo real. El administrador de la red puede usarlo para observar todos los paquetes entrantes y encontrar los que son peligrosos para el sistema.

Se basa en la herramienta de captura de paquetes de la biblioteca. Las reglas son bastante fáciles de crear e implementar y se pueden implementar en cualquier tipo de sistema operativo y cualquier tipo de entorno de red. La principal razón de la popularidad de este IDS sobre otros es que es un software de uso gratuito y también de código abierto, por lo que cualquier usuario puede usarlo de la manera que desee.

Snort se basa en libpcap (para la captura de paquetes de la biblioteca), una herramienta que se utiliza ampliamente en analizadores y rastreadores de tráfico TCP / IP. A través del análisis de protocolos y la búsqueda y comparación de contenido, Snort detecta métodos de ataque, incluida la denegación de servicio, el desbordamiento del búfer, los ataques CGI, los escaneos de puertos sigilosos y las sondas SMB. Cuando se detecta un comportamiento sospechoso, Snort envía una alerta en tiempo real a syslog, un archivo de ‘alertas’ separado o a una ventana emergente.

¿Para qué sirve y cómo funciona?

Snort es un sistema de detección de intrusiones en la red, pero viene con tres modos de operación, todos los cuales son parte del NIDS en sí mismo. El primer modo, Sniffer Mode, muestra los paquetes que transitan por la red. Puede configurarse para mostrar varios tipos de paquetes (TCP, UDP, ICMP), así como qué mostrar de los paquetes en sí, ya sea los encabezados o los datos del paquete.

El segundo modo de operación otorgado por snort es el Packet Logger Mode. Permite al usuario guardar los paquetes detectados en el modo Sniffer para guardarlos en el disco duro. A través de este modo, el usuario puede especificar reglas que indiquen qué paquetes guardar, por ejemplo, para guardar solo los paquetes relativos a una dirección específica.

Finalmente, el último modo es el modo NIDS. Este modo es muy similar al registrador de paquetes, pero permite que se apliquen reglas más específicas a los paquetes, refinando los paquetes que de hecho se registran (o alertan). Las reglas aplicadas se especifican o se incluyen en el archivo de configuración que se pasa como parámetro al iniciar snort.

Cabe señalar que cada uno de estos modos tiene varias opciones que se pueden configurar a través de parámetros de línea de comando o incluso archivos de configuración.

Por ejemplo, con las alertas activadas en modo NIDS, puedes configurar el contenido de las alertas, dónde se almacenan las alertas, o incluso si solo deseas enviarlas a la consola, o a través de un socket UNIX a otro programa. Si bien la entrada para el NIDS se realiza normalmente con el modo Sniffer, esto se puede reemplazar con un archivo .pcap (captura de paquetes) si el rastreo no es una opción.

Características principales

Estas son las principales características de Snort:

  • Monitor de tráfico en tiempo real
  • Registro de paquetes
  • Análisis de protocolo
  • Coincidencia de contenido
  • Huellas digitales del SO
  • Puede instalarse en cualquier entorno de red.
  • Crea registros
  • Fuente abierta
  • Las reglas son fáciles de implementar

Snort funciona en Windows y en Linux.

Componentes de Snort

Snort se compone de cuatro componentes principales, que encadenados permiten que cumpla con sus diversos modos.

El primer componente es el decodificador, que se encarga de formar paquetes para ser utilizados por los demás componentes. Tiene la función de determinar qué protocolos subyacentes se utilizan en el paquete, así como de determinar la ubicación y el tamaño de los datos del paquete que luego se utilizan en componentes posteriores. Cabe señalar que el decodificador también busca anomalías en los encabezados, lo que puede hacer que genere alertas.

Los siguientes componentes principales son los preprocesadores. Estos componentes funcionan como complementos y pueden organizar o modificar paquetes de datos. Esto permite que los servicios (como HTTP o FTP) tengan un preprocesador correspondiente para verificar anomalías específicas de ese servicio. Su trabajo es, en última instancia, intentar hacer más difícil engañar al motor de detección. Ejemplos de cómo puede hacer esto son decodificando URI’s, desfragmentando paquetes, detectando escaneo de puertos, así como también detectando anomalías en paquetes ARP, como la suplantación de ARP.

El componente principal, el motor de detección, tiene la responsabilidad de detectar si existe alguna actividad de intrusión en un paquete. Para ello, encadena conjuntos de reglas, especificadas en archivos de configuración que incluyen estas reglas, y las aplica a cada paquete. Si el paquete coincide con una regla, se toma la acción especificada de esa regla o se descarta el paquete.

Si un paquete coincide con una regla, el sistema de alerta y registro generará la alerta. Por supuesto, el mensaje y los contenidos generados por este componente se pueden configurar a través del archivo de configuración. Si un paquete activa varias reglas, el nivel de alerta más alto es lo que realmente generará este componente.

Finalmente, después de que se genera una alerta o registro, pasa por el componente Módulos de salida. Este componente tiene la tarea de controlar el tipo de salida generada, utiliza un sistema de complementos que le da flexibilidad al usuario y también es altamente configurable. Esto puede incluir simplemente el registro en una base de datos, el envío de trampas SNMP, la generación de informes XML o incluso el envío de alertas a través de sockets UNIX, lo que permite la modificación dinámica de las configuraciones de red (firewalls o enrutadores).

Reglas Snort

Como se mencionó anteriormente, las reglas se utilizan en todos los componentes para detectar anomalías en los paquetes. Las reglas se pueden aplicar a los encabezados de la capa de red y transporte (IP, TCP, UDP, ICMP) o incluso a los encabezados de la capa de aplicación (FTP, HTTP, etc.), pero por supuesto, las reglas también se pueden aplicar a los paquetes de datos.

Las reglas se componen de dos partes, un encabezado de regla, que especifica qué acción se debe tomar en caso de una coincidencia, el tipo de paquete (TCP, UDP, etc.), así como las direcciones IP de origen y destino y los números de puerto. La última parte son las Opciones de regla, que especifica el contenido que marca los paquetes como una coincidencia, la regla general tomará la siguiente forma:

action protocol source port -> destination port (options)

Cabe señalar que, si bien la mayoría de las opciones son opcionales, el sid (Snort ID) es obligatorio y no debe entrar en conflicto con el SID de otra regla. Es el identificador único que se le da a cada regla. Snort reserva SID de 0 a 1.000.000.

En las opciones de reglas, entre una larga lista de posibles indicadores que pueden usarse para detectar varios bits de datos en paquetes, los usuarios pueden incluir Expresiones regulares compatibles con Pearl a través de la opción pcre. Esto permite la detección de datos en el paquete mediante el uso de expresiones regulares, dando a las reglas más control y flexibilidad. PCRE toma el formato estándar, aunque deben escaparse las comillas dobles, el punto y coma y las barras diagonales./expression/flags

Ejemplos de reglas

Seguridad

Alerta si el paquete contiene la palabra SEGURIDAD.

Regla: alert ip any any -> any any (sid:1000001;msg:”Word SECURITY found”;content:”SECURITY”;)

En este ejemplo, podemos notar algunas cosas:

  • alert: esto nos permite activar una alerta si la regla coincide
  • ip: esto permite comparar las reglas con cualquier protocolo (TCP, UDP o ICMP)
  • any any -> any any: cualquier host de origen y puerto a cualquier host y puerto de destino
  • sid:1000001;msg:”Word SECURITY found”: el ID de la regla y el mensaje que se enviará con la alerta.

Servidor de correo

Alerta si un paquete de cualquier computadora a un servidor de correo contiene una sola palabra de texto entre comillas dobles, que comienza con una letra mayúscula y tiene entre cuatro y siete letras.

Regla: alert ip any any -> any smtp (sid:1000002;msg”Double quoted text sent to mail server found”;pcre:”/\”[A-Z][a-zA-Z]{3,6}\”/”;)

Aquí usamos el puerto de destino para especificar los paquetes que van a los servidores de correo (smtp se puede reemplazar por 25). Se requieren barras invertidas en la opción PCRE para escapar de las comillas. El PCRE utilizado busca cualquier cadena que comience con una comilla doble, seguida de una mayúscula, con un total de 4-7 letras de longitud, por lo tanto, la capital más 3 a 6 letras ( [a-zA-Z]{3,6}), seguida de una comilla doble.

Novedades de la versión Snort 3

Snort 3.0 es una gran evolución de la actual versión de Snort 2.X, la nueva versión es más eficiente, proporciona un mayor rendimiento, escalabilidad, usabilidad y permite una gran extensibilidad.

Dentro de las mejoras incorporadas en esta nueva versión están:

  • Soporte para múltiples subprocesos de procesamiento de paquetes, esto permite que Snort consuma menos recursos, sobre todo en cuanto a RAM se refiere.
  • Acceso a más de 200 plugins
  • Soporte para Hyperscan, lo que conduce a patrones más rápidos, literales de contenido y PCRE compatible durante la evaluación de las diferentes firmas que hayamos dado de alta en Snort.
  • El manejo del protocolo de la capa de transporte TCP se ha reescrito por completo, con el objetivo de tener el mejor rendimiento posible.
  • Se ha añadido un nuevo analizador de reglas y nueva sintaxis en las mismas. Además, los comentarios en las reglas también son nuevos.
  • Se ha incorporado reglas mejoradas de objetos compartidos, además, se pueden añadir reglas para vulnerabilidades 0day.
  • Nuevo monitor de rendimiento, perfiles de tiempo y espacio.
  • Si tu CPU tiene múltiples núcleos, la capacidad de escalar es mucho más simple para aprovechar el hardware lo mejor posible.
  • Permite procesar una carga útil sin procesar, y unir dos sockets para realizar la inspección.

Pasos para instalar Snort en tu equipo

Aquí tienes un tutorial para instalar Snort en tu equipo:

  • Descarga Snort: Descarga la última versión gratuita de snort del sitio web de snort. Extrae el código fuente de snort en el directorio / usr / src
  • Antes de instalar snort, asegúrate de tener paquetes de desarrollo de libpcap y libpcre.
  • Sigue estos pasos para instalar snort.# cd snort-2.8.6.1# ./configure# hacer# hacer instalar
  • Verifica la instalación de Snort
  • Crea los archivos y el directorio necesarios. Debes crear el archivo de configuración, el archivo de reglas y el directorio de registro. Crea los siguientes directorios:# mkdir / etc / snort# mkdir / etc / snort / rules# mkdir / var / log / snort

Cree los siguientes archivos snort.conf e icmp.rules:

# cat /etc/snort/snort.conf
include /etc/snort/rules/icmp.rules

# cat /etc/snort/rules/icmp.rules
alert icmp any any -> any any (msg: “Paquete ICMP”; sid : 477; rev: 3;)

  • Ejecuta snort desde la línea de comando.

Snort vs Suricata: ¿cuál es mejor?

Una solución IDS es tan buena como las reglas disponibles que puede aplicar al tráfico monitorizado. Snort siempre ha tenido mucho apoyo de la comunidad, y esto ha llevado a un conjunto de reglas sustancial, actualizado de forma regular. La sintaxis de las reglas es bastante simple y la estructura del programa permite que cualquiera pueda implementar reglas personalizadas en su IDS o compartirlas con la comunidad.

Algunas partes comerciales también desarrollan reglas SNORT, que se pueden comprar por una tarifa mensual o anual.

Suricata puede utilizar las mismas reglas que SNORT. Muchas, pero no todas, las reglas de VRT todavía funcionan. Suricata tiene su propio conjunto de reglas, inicialmente disponible para suscriptores de pago, pero disponible gratuitamente después de 30 a 60 días. Estas reglas de Suricata hacen un mayor uso de las características adicionales que Suricata tiene para ofrecer, como la detección de protocolo independiente del puerto y la detección automática de archivos y la extracción de archivos.

Desde los primeros días de la existencia de Snort, se ha dicho que Snort no es “consciente de las aplicaciones”. Sin embargo, los requisitos comerciales han cambiado con el tiempo y para adaptarse al mercado, Snort lanzó OpenAppID en su versión 2.9.7 en 2014. OpenAppID permite la detección de aplicaciones a través de los llamados Detectores de Capa 7.

Suricata funciona de manera ligeramente diferente en este espacio. Es compatible con las reglas de detección de la capa de aplicación y puede, por ejemplo, identificar el tráfico HTTP o SSH en puertos no estándar basados ​​en protocolos. También aplicará la configuración de registro específica del protocolo a estas detecciones.

Uno de los principales beneficios de Suricata es que se desarrolló mucho más recientemente que Snort. Esto significa que tiene muchas más funciones a bordo que son prácticamente imperdibles en estos días. Una de esas características es la compatibilidad con subprocesos múltiples.

Suricata admite la extracción de archivos. Esta es una característica increíblemente útil que permite la extracción automática de archivos seleccionados una vez que se activa una regla que contiene la opción “almacén de archivos”.

Realmente no hay un producto mejor o peor en este espacio, realmente depende de lo que esté buscando la empresa y de qué sistema llena mejor los vacíos en la detección. Debido a que ambos son de código abierto, configurar un entorno de prueba es relativamente rápido y económico.

La selección de los mejores productos debe basarse en qué otros productos de seguridad potencialmente superpuestos ya existen, qué tipo de tráfico atraviesa la red, la cantidad de tráfico y el conjunto de habilidades del personal de TI disponible.