Snort. Formato, tipos e interpretación de las alertas. Actualización.

Ya hemos visto aquí distintos aspectos de la configuración, uso, preprocesadores, reglas, bases de datos, y distintas posibilidades de trabajo con Snort. También los distintos programas que nos ayudan con sensores, políticas, análisis de alertas, etc.

alerta snort modo paquete capturado interpretacion

Casi lo tenemos todo, pero, ahora que lo tenemos funcionando, ¿ entendemos las alertas ?. En esta ocasión una reseña para la comprensión de los formatos de alertas de Snort.

Esta es una versión actualizada y aumentada del artículo ya publicado al respecto: Snort. Formato, tipos e interpretación de las alertas. Veremos más formastos de alertas basados en plugins de salida, consideraciones sobre base de datos, base de datos de alertas basados en el Sid (database signatures), archivos de text con información de alertas desde snortrules-snapshot, etc.

Actualizado hoy 23/09/10 a las 17:36.: archivos de texto con información de alertas desde snortrules-snapshot

Tipos de formatos de alertas y modos de alerta.

Tipos de alertas.

Snort genera varios tipos de alertas basados en plugins o módulos de salida. Los vemos. Se refiere a la forma y modos en que se envían y muestran las alertas. Se configuran o invocan mendiante línea de comandos o mediante el archivo de configuración de Snort.

Los más importantes y usuales son:

Fast: El modo Alerta Rápida nos devolverá información sobre: tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen y destino. Formato ASCII.

snort -A fast -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf

09/19-19:06:37.421286 [**] [1:620:2] SCAN Proxy (8080) attempt [**]
[Classification: Attempted Information Leak] [Priority: 2] …
… {TCP} 192.168.4.3:1382 -> 192.168.4.15:8080

También se puede configurar mediante la directiva output alert_fast de archivo de configuración snort.conf.

Full: El modo de Alerta Completa nos devolverá información sobre: tiempo, mensaje de la alerta, clasificación, prioridad de la alerta, IP y puerto de origen/destino e información completa de las cabeceras de los paquetes registrados. Formato ASCII.

snort -A full -dev -l ./log -h 192.168.4.0/24 -c ../etc/snort.conf

[**] [1:620:2] SCAN Proxy (8080) attempt [**]
[Classification: Attempted Information Leak] [Priority: 2]
09/19-14:53:38.481065 192.168.4.3:3159 -> 192.168.4.15:8080
TCP TTL:128 TOS:0x0 ID:39918 IpLen:20 DgmLen:48 DF
******S* Seq: 0xE87CBBAD Ack: 0x0 Win: 0x4000 TcpLen: 28
TCP Options (4) => MSS: 1456 NOP NOP SackOK

Información de la cabecera del paquete:

TCP TTL:128 TOS:0x0 ID:39918 IpLen:20 DgmLen:48 DF
******S* Seq: 0xE87CBBAD Ack: 0x0 Win: 0x4000 TcpLen: 28
TCP Options (4) => MSS: 1456 NOP NOP SackOK

También se puede configurar mediante la directiva output alert_full de archivo de configuración snort.conf.

TCPdump: nos devuelve información de las alertas en formato binario. De esta forma Snort se ejecuta más rápido. Además, con el formato binario tcpdump, podemosrealizar un análisis más pausado y profundo con herramientas como Wireshark. Este tipo de alerta lo activaremos de la forma output log_tcpdump: tcpdump.log.

Podemos indicar también un ficher de salida y límites para este.

Unified: Los logs se registran en modo binario. Snort de ejecuta de forma más rápida. Se usa generalmente para la exportación de los datos y que sean usados por otros programas. Este tipo de alerta lo activaremos de la forma:

  • output log_unified: filename snort.log, limit 128.

Unified2: Reemplaza a unified en nuevas versiones.

  • output alert_unified2

Otras formas y formatos son:

CSV: Las alertas se registrarán de forma que puedan ser importadas a una base de datos. Es un formato universal usada para bases de datos que no son soportadas por Snort.

  • output alert_csv: c:\snort\log\alert.csv default

None: Se invoca mediante -A none. Desactiva las alertas.

Consola: Enviamos las alertas a consola mediante -A console.

Syslog: Envía las alertas al syslog. Lo vemos con más detalle más abajo.

Alert Prelude: Un formato para la salida e importación de Prelude IDS.

  • output alert_prelude

Log Null. Solo Para cierto tipo de tráfico no generaremos alertas. Para ello tendremos que indicar el ruleset o archivo de reglas que no generarán las alertas.

  • output log_null esto hará que no se genere ningún tip ode alerta.

Si lo indicamos dentro de una construcción de creación de regla:

  • ruletype scan {
    type alert
    output alert_fast: scan.alert
    output log_null
    }

solo será para las reglas contenidas en rules/scan

Modos de alerta.

Vimos también los modos de alerta.

Snort tiene 3 modos de alerta. Por defecto en formato pcap, ascii y none o no logging. Tanto el formato ascii como pcap son enviados y guardados por Snort en el logdir o carpeta de logs ubicada normalmte en snort/log que establecemos con el comando -l

Formato pcap:

logging_1.jpg

El formato pcap puede ser interpretado por analizadores tales como Windump/Tcpdump o Wireshark para su mejor comprensión y análisis.

Desde Wireshark tan solo tendremos que ir a File > Open y abrir el archivo pcap del volcado de la alerta.

Desde Tshark con la opción -r.

Desde Windump/Tcpdump y con la opción -r leemos el archivo de formato pcap:

logging_2.jpg

El formato ascii es el formato antiguo de logging y bastante interesante ya que diferencia el volcado de las alertas atendiendo a las direcciones IP causantes de dichas alertas. Se establece entonces una estructura de directorios o carpetas en /log con las direcciones IP:

logging_3.jpg

Dentro de cada carpeta tenemos los volcados de las alertas correspondientes en formato ascii con todo el contenido de los paquetes:

logging_4.jpg

Cualquiera de estos archivos se abre con el Bloq de notas, Notepad2 o similar.

Como establecemos los modos de alerta. 

Los tres modos de alertas los podemos establecer con -K 

  • -K pcap (por defecto)
  • -K ascii
  • K  none

Alertas a syslogs y bases de datos.

Las alertas también las podemos enviar a syslog o a bases de datos.

Lo hemos visto aquí:

Enviando alertas a un syslog remoto con snort.

PostgreSQL 8.4. Creando base de datos para Snort. Volcando alertas a través de ODBC.

Snort. Enviado log a base datos mysql.

Las alertas enviadas al syslog las podemos ver de esta forma:

kiwi syslog daemon en accion

Interesante saber que tenemos unsa serie de opciones para indicar en que formato se incluirán las alertas en la base de datos.

Con la directiva encoding que puede ser hex, base64 o ascii indicamos en que formato irán los datos binarios.

Con la directiva detail indicamos mediante full fast el nivel de detalle de las alertas.

Interpretando las alertas.

Si activamos la salida de las alertas en modo Fast y abrimos el archivo alerts.ids tenemos una serie de alertas. Tomamos una de ellas y la estudiamos:

alerta snort modo fast interpretacion

  • 03/02-11:04:35.256648 marca de tiempo
  • 1:382:7 numeración asociada a la descripción de la alerta
  • ICMP PING Windows nombre dela alerta
  • Classifications: Misc activity clasificación de la alerta contenida en el archivo classification.config.
  • Priority: 3 prioridad de la alerta
  • ICMP protocolo asociado a la generación de la alerta
  • 192.168.1.5 origen que genera la alerta
  • 192.168.1.239 destino de quien genera la alerta

Para la alertas en modo Full:

alerta snort modo full interpretacion

  • 1:382:7 numeración asociada a la descripción de la alerta
  • ICMP PING Windows nombre de la alerta
  • Classifications: Misc Activity clasificación de la alerta contenida en el archivo classification.config.
  • Priority: 3 prioridad de la alerta

Esta parte que viene a continuación correspondería con Frame Wireshark de que nos  muestra información completa de la trama capturada. Tamaño total, etc. y Ethernet.

  • 03/02-11:06:05.314380 marca de tiempo
  • 0:4:75:ED:89:DF -> 0:15:C5:89:85:5B direcciones físicas MAC de origen y destino
  • type:0x800 corresponde a Type IP
  • len:0x4A corresponde a Frame Length. Tamaño del frame o paquete  (74 bytes)

Esta parte corresponde a Internet Protocol (IP) e Internet Control Message Protocol (ICMP) con información de los campos de las cabeceras:

  • 192.168.1.5 -> 192.168.1.239 origen y destino
  • ICMP protocolo
  • TTL:128 tiempo de vida
  • TOS:0x0 tipo de servicio
  • ID:56307 Identificador de sesión
  • IpLen:20 corresponde con la cabecera IP Tamaño de la cabecera o Header Length (20 bytes).
  • DgmLen:60 corresponde con total Length (60)
  • Type:8  Code:0  ID:1280   Seq:12288  ECHO corresponde a ICMP, tipo código, identificador y se trata de un Ping Echo request
  • [Xref => http://www.whitehats.com/info/IDS169%5D referencia de la alerta IDS169/ping-windows2000 Esta referenca está obsoleta.

Parelelamente, e independientemete de modo de alerta, y si hemos activado la opción -K ascii, Snort creará una serie de carpetas con la siguiente información:

alerta snort modo paquete capturado interpretacion

El el paquete tal como lo capturaríamos con TCPdump, Windump, etc. con la salida hexadecimal de la cabecera ICMP.

Seguimos…

Para el modo tcpdump, tendremos en nuestra carpeta una serie de archivos del tipo tcpdump.log.1267531201. Si lo abrimos con Wireshark tendremos:

alerta snort modo tcpdump interpretacion wireshark

Qué significan realmente mis alertas.

La experiencia y el estudio de cada una de ellas nos llevará a saber qué significan. De cualquier forma, siempre es buna una ayuda,  existe una base de datos ( http://www.snortid.com/ ) en la que introduciendo el Snort ID ó Sid de una determianda alerta, se nos informará sobre ella. La información que se nos muestra es la siguiente, no hace alta mayor explicación puesto que se entiende perfectamente:

  • Sid
  • Summary
  • Impact
  • Detailed Information
  • Affected Systems
  • Attacks Scenarios
  • Ease of Attacks
  • False positive
  • False negative
  • Corrective Action
  • Contributors
  • Additional References

Como ejemplo y para una de las alertas que hemos explicado más arriba:

snort id database base de datos de alertas signature information

doc/signatures en snortrules-snapshot. Información de las alertas.

Cuando descargamos las reglas desde el sitio de snoert.org, obtenemos un archivo denominado snortrules-snapshot-xxx.tar.gz. Este archivo contiene una carpeta /doc/signatures que contiene una gran cantidad de archivos .txt con el nombrearchivo del Sid de la alerta Snoer con toda la inforamción de cada una de las alertas.

Por ejemplo. Sobre el SID 12506, tenemos:

doc/signatures en snortrules-snapshot. Información de las alertas.

——- 

Y hasta aquí por hoy. Hasta la próxima….

Esta entrada fue publicada en Actualizaciones de Artículos, Seguridad y redes, Snort, Windump. TCPDump, Wireshark . Tshark. Guarda el enlace permanente.

Deja un comentario