Centrar las alertas de carga

CiberseguridadBeginner
Practicar Ahora

Introducción

El detector del equipo marca todo POST a collector.example.test/collect. Algunos son demostraciones públicas permitidas. Debes centrar las alertas en documentos internos y conservar esos intercambios permitidos.

Este entorno independiente incluye broad.rules, el detector de ruta anterior, y capturas sintéticas TCP/HTTP completas. Usa la pestaña Analyst para comandos y selecciona la pestaña Traffic Reference para ver las solicitudes grabadas; la página se abre directamente. Los mismos ejemplos están en traffic/requests.txt. No necesitas archivos de la VM anterior. La inspección del cuerpo se aplica a esta captura HTTP sin cifrar, no a HTTPS cifrado.

Encontrar el contexto del documento sensible

Selecciona la pestaña Analyst en la interfaz del laboratorio para comenzar este paso.

En este paso, observa por qué una pista del cuerpo es útil, pero insuficiente por sí sola. classification=internal es un campo empresarial sintético que describe la categoría de tratamiento del documento, no un marcador de finalización.

Cambia a la pestaña Traffic Reference para comparar los cuerpos de las solicitudes y vuelve a la pestaña Analyst. Lee la referencia y reproduce el detector preparado. Las opciones son las anteriores: reglas exclusivas con -S, PCAP de entrada con -r y directorio de salida con -l.

Traffic Reference distingue documentos internos de demostraciones públicas

Cambia a la pestaña Analyst antes de ejecutar el siguiente comando.

cat traffic/requests.txt
mkdir -p broad-output
suricata --runmode single -c suricata.yaml -S broad.rules -r traffic/core.pcap -l broad-output --init-errors-fatal
python3 /opt/c09/read-alerts.py broad-output/eve.json

Espera cuatro alertas, incluidas dos de documentos públicos. classification=public significa que su contenido es apto para demostración pública en esta ruta. La política combina método, destino, ruta y clasificación interna.

Prueba un detector solo del cuerpo para aprender el búfer nuevo. http.request_body hace que el siguiente content inspeccione el cuerpo reconstruido, aunque sus bytes crucen paquetes TCP. El motor realiza ese reensamblado; buscar texto paquete a paquete no es equivalente. No añadimos límites de búfer completo porque la clasificación es un campo dentro de un cuerpo más largo.

Usa entrada literal multilínea como antes: > reemplaza el archivo y el RULE de cierre debe ocupar su propia línea.

cat > body.rules <<'RULE'
alert http any any -> any any (msg:"Review document upload"; flow:established,to_server; http.request_body; content:"classification=internal"; sid:1000001; rev:1;)
RULE
mkdir -p body-output
suricata --runmode single -c suricata.yaml -S body.rules -r traffic/core.pcap -l body-output --init-errors-fatal
python3 /opt/c09/read-alerts.py body-output/eve.json

Espera Alerts: 9. También alertan los documentos internos enviados a destinos aprobados, las solicitudes PUT y otras rutas del colector. Esto demuestra que buscar una palabra sensible en cualquier lugar es demasiado amplio. Conserva el resultado como experimento, no como detector final de política.

python3 /opt/c09/check.py body.rules body

Ambos corpus deben coincidir en nueve intercambios que contienen ese cuerpo. Puedes corregir un error de sintaxis reescribiendo el bloque y reintentando con un directorio nuevo para que los eventos añadidos no confundan la cantidad.

Combinar condiciones y probar el equilibrio

Selecciona la pestaña Analyst en la interfaz del laboratorio para comenzar este paso.

En este paso, combina los cuatro campos HTTP aprendidos en un detector útil. Conserva POST, el host exacto del colector y la ruta exacta; añade la clasificación interna.

Crea local.rules, tu entrega final. Las condiciones de distintos búferes se combinan con AND: todas deben cumplirse en la transacción. sid:1000001 sigue siendo un identificador local único; basta una regla activa.

Cambia a la pestaña Analyst antes de ejecutar el siguiente comando.

cat > local.rules <<'RULE'
alert http any any -> any any (msg:"Review document upload"; flow:established,to_server; http.method; content:"POST"; startswith; endswith; http.host; content:"collector.example.test"; startswith; endswith; http.uri; content:"/collect"; startswith; endswith; http.request_body; content:"classification=internal"; sid:1000001; rev:1;)
RULE

Antes de reproducir, comprueba sintaxis con -T. El directorio y -l proporcionan también una salida escribible para esta prueba. Se cargan configuración y reglas sin leer paquetes. Una sintaxis válida no demuestra calidad de detección.

mkdir -p syntax-output
suricata -T -c suricata.yaml -S local.rules -l syntax-output --init-errors-fatal
mkdir -p final-output
suricata --runmode single -c suricata.yaml -S local.rules -r traffic/core.pcap -l final-output --init-errors-fatal
python3 /opt/c09/read-alerts.py final-output/eve.json

Espera Alerts: 2, para 41002 y 41007. En ambos, un documento interno va por POST a la ruta no aprobada. Demostraciones públicas, cargas aprobadas, comprobaciones de salud, otros métodos y rutas quedan silenciosos. Las alertas aún muestran action: allowed: la detección sin conexión observa tráfico, no impide la carga.

Ejecuta ahora el comprobador de regresión equilibrado. Una prueba de regresión repite coincidencias requeridas y prohibidas después de un cambio. Reproduce desde cero el corpus mostrado y otro con nombres y puertos distintos. Comprueba la regla, no el número antiguo de eventos.

python3 /opt/c09/check.py local.rules final

Ambas líneas deben indicar dos intercambios previstos y comparaciones silenciosas. Repítelo: el resultado y la captura deben permanecer iguales. Las omisiones sugieren una condición demasiado específica o un búfer incorrecto; alertas inesperadas sugieren condiciones ausentes o amplias. Reescribe local.rules y reintenta. No desactives el motor ni elimines tráfico legítimo de comparación.

Esto demuestra un detector de política acotado, no detección universal de pérdida de datos. Cuerpos mayores, cifrado, codificaciones y otros protocolos requieren diseño y pruebas aparte. El desafío cambia los hechos de política y utiliza los mismos cuatro búferes.

Resumen

Comparaste un detector solo de ruta con un experimento solo de cuerpo y después combinaste los cuatro campos HTTP. Probaste la regla con corpus equilibrados en directorios limpios y dejaste explícitos los límites de visibilidad.