← Volver al inicio
Snort IDS IPS Blue Team Traffic Analysis PCAP
Intermedio

Monitorización de Red (Snort IDS)

01/12/2024

Un Sistema de Detección de Intrusos (IDS) es como una cámara de seguridad para tu red. Escucha silenciosamente todo el tráfico que pasa por el cable y lo compara en tiempo real contra una base de datos de firmas maliciosas. Snort, creado originalmente por Martin Roesch y ahora mantenido por Cisco, es el motor IDS/IPS más desplegado a nivel mundial.

1. Modos de Operación de Snort

Snort es muy versátil y puede funcionar en tres modos distintos:

2. Configuración Básica (snort.conf)

El corazón de Snort es su archivo de configuración. Aquí definimos cuáles son las IPs que consideramos "nuestras" y cuáles son "externas".

# /etc/snort/snort.conf

# 1. Definir la red local (HOME_NET)
# Es vital configurarlo bien para evitar falsos positivos
ipvar HOME_NET 192.168.1.0/24

# 2. Definir la red externa (EXTERNAL_NET)
# Normalmente es cualquier cosa que no sea HOME_NET
ipvar EXTERNAL_NET !$HOME_NET

# 3. Definir rutas de reglas
var RULE_PATH /etc/snort/rules

# 4. Incluir archivos de reglas (firmas)
include $RULE_PATH/local.rules
include $RULE_PATH/sql-injection.rules

3. Anatomía de una Regla de Snort

Escribir reglas es la habilidad técnica más valiosa de un analista de red. Una regla de Snort se divide en dos partes principales: la Cabecera (Header) y las Opciones (Options).

Cabecera de la Regla

Define quién, dónde y qué protocolo está involucrado.

[Acción] [Protocolo] [IP Origen] [Puerto Origen] -> [IP Destino] [Puerto Destino]

Opciones de la Regla

Define qué estamos buscando dentro del paquete y qué mensaje mostrar.

🔴 Motor de Reglas IDS

Inteligencia nos alerta de un ataque inminente por fuerza bruta hacia el servidor FTP interno utilizando el usuario "root". Escribe la regla de Snort exacta para interceptar y alertar sobre este patrón malicioso en la red.

>_ INICIAR RETO CTF 14

4. Ejemplos Prácticos de Reglas

Veamos cómo detectar diferentes vectores de ataque analizando el tráfico crudo:

Detectar Inyección SQL Clásica (Web)

Los atacantes a menudo inyectan la cadena ' OR 1=1 --. Como la web viaja por HTTP (TCP puerto 80/443), podemos atraparlo:

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"SQL Injection Attempt Detected"; content:"' OR 1=1"; nocase; sid:1000002; rev:1;)

Detectar Escaneo Nmap XMAS

Un escaneo XMAS enciende las flags FIN, PSH y URG del protocolo TCP. Es un comportamiento totalmente anómalo en una red sana.

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Nmap XMAS Tree Scan Detected"; flags:F,P,U; sid:1000003; rev:1;)

Detectar Ejecución de Comandos (Shell Shock / RCE)

Buscamos comandos nativos de Linux viajando dentro de peticiones HTTP, como /etc/passwd o ejecuciones de bash.

alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"RCE Attempt - /etc/passwd Access"; content:"/etc/passwd"; http_uri; sid:1000004; rev:1;)

Uso de Bytes Hexadecimales

A veces los atacantes intentan ofuscar los datos o esconder malware. Podemos buscar bytes hexadecimales crudos rodeándolos con pipes (|).

# Buscar una firma hexadecimal específica de un troyano en cualquier puerto:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Malware XYZ C2 Beacon"; content:"|00 00 00 01 4A 5B|"; sid:1000005;)

5. Ejecución y Monitorización (CLI)

Una vez escrita la regla en /etc/snort/rules/local.rules, debemos iniciar Snort apuntando a la interfaz de red correcta (por ejemplo, eth0).

# Probar si la configuración y las reglas tienen errores (Modo Test):
snort -T -c /etc/snort/snort.conf -i eth0

# Iniciar Snort imprimiendo alertas directamente en la consola (útil para debuggear):
snort -A console -q -c /etc/snort/snort.conf -i eth0

# Iniciar Snort en modo demonio (segundo plano) para producción:
snort -D -c /etc/snort/snort.conf -i eth0

# Leer los logs generados:
cat /var/log/snort/alert

6. Evolución: Suricata y Zeek

Aunque Snort es el padre de los IDS, las infraestructuras modernas de 10Gbps+ suelen utilizar motores paralelos más nuevos. Suricata es un IDS/IPS multihilo que es 100% compatible con las reglas de Snort (puedes copiar y pegar tu local.rules y funcionará). Por otro lado, Zeek (antes Bro) no usa firmas, sino que se centra en el análisis de comportamiento a nivel de aplicación (creando logs hiperdetallados de DNS, HTTP, SSL).