🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónEn el SIEM y en la línea de comandos
5 tareas · 40 min · Principiante
Las expresiones regulares no son una sola cosa. SPL, KQL y la herramienta de búsqueda de una terminal comparten la idea y difieren en detalles, y un patrón copiado de un sitio a otro a veces funciona y a veces casi funciona. Además cuestan: dos patrones que devuelven lo mismo pueden tardar tiempos muy distintos sobre un mes de registros, y uno mal escrito puede no terminar nunca. En esta sala ves qué cambia entre un motor y otro, cómo se usa un patrón en una línea de comandos para sacar y contar valores, y lees la auditoría de búsquedas de Curtiembres del Atrato para ver qué patrón fue el caro. Todo es lectura; no se ejecuta nada.
Objetivo de la sala
Las expresiones regulares no son una sola cosa. SPL, KQL y la herramienta de búsqueda de una terminal comparten la idea y difieren en detalles, y un patrón copiado de un sitio a otro a veces funciona y a veces casi funciona. Además cuestan: dos patrones que devuelven lo mismo pueden tardar tiempos muy distintos sobre un mes de registros, y uno mal escrito puede no terminar nunca. En esta sala ves qué cambia entre un motor y otro, cómo se usa un patrón en una línea de comandos para sacar y contar valores, y lees la auditoría de búsquedas de Curtiembres del Atrato para ver qué patrón fue el caro. Todo es lectura; no se ejecuta nada.Tres lugares donde un analista escribe patrones, tres sintaxis parecidas:
| Dónde | Cómo se escribe | Qué recordar |
|---|---|---|
| SPL | rex "…" y regex _raw="…" |
los grupos con nombre son (?<campo>…); las comillas dobles dentro se escapan |
| KQL | matches regex @"…" y extract(@"…", n, texto) |
la @ evita duplicar las barras; la lista de sintaxis admitida está en la documentación de KQL |
| Terminal | grep -E 'patrón', grep -P 'patrón' |
-E usa la sintaxis extendida de POSIX; -P la de Perl; el patrón va entre comillas simples |
grep -E no reconoce \d: la documentación de GNU grep dice que no forma parte de la sintaxis extendida, y para un dígito hay que escribir [0-9] o [[:digit:]]. Con grep -P sí funciona. Es el tipo de diferencia que hace que un patrón copiado del SIEM a la terminal no encuentre nada y no avise.
Responde para continuar
Un patrón con \d{1,3} funciona en el SIEM y lo pegas en `grep -E` y no encuentra nada. ¿Qué haces?
Ver pista de ayuda
Piensa en qué sintaxis usa cada opción de grep, y en cómo se escribe un dígito sin \d.
En una terminal, la tubería convierte un patrón en un informe. grep -o imprime solo el trozo que casó, no la línea entera; sort ordena; uniq -c cuenta repeticiones consecutivas; y un segundo sort -rn pone arriba el mayor.
La tubería completa es grep -oE 'from [0-9]{1,3}(\.[0-9]{1,3}){3}' auth.log | sort | uniq -c | sort -rn. Esa línea saca cada dirección que sigue a from, las ordena para que las repetidas queden juntas, las cuenta y las lista de la que más aparece a la que menos. Es una pregunta del tipo «¿qué origen intentó más?» sin una herramienta de análisis. Y recuerda: el patrón de IP describe la forma; no comprueba que el valor sea una dirección.
Responde para continuar
Quieres la lista de direcciones origen de un registro, con cuántas veces aparece cada una, de más a menos. ¿Qué tubería usas?
Ver pista de ayuda
-c cuenta líneas, -v las invierte y -o imprime solo el trozo que casó. ¿Cuál de las tres saca valores?
Un patrón mal escrito puede ser caro y, en el peor caso, no terminar. Si un grupo se repite y dentro del grupo hay otro cuantificador, como en (\w+\s?)+, el motor puede probar un número de combinaciones que crece de forma explosiva con el largo de la línea. Se llama retroceso catastrófico, y es una de las maneras en que una búsqueda con patrón deja ocupado un SIEM hasta que el sistema la corta.
La auditoría de búsquedas de este escenario anota, para cinco patrones sobre el mismo mes de autenticación, cuánto leyeron, cuánto tardaron y cómo terminaron. Los tiempos son los de este laboratorio, no una medida general.
busquedas_siem
| where estado != "completada"
Responde para continuar
Escribe el identificador de la búsqueda que el SIEM tuvo que cancelar por tiempo límite.
Ver pista de ayuda
Ejecuta `busquedas_siem | where estado != "completada"` y lee la columna id.
Tres de las búsquedas devuelven exactamente las mismas 120514 líneas. Una empieza con el literal de lo que busca; otra lo rodea de .* por los dos lados, que obliga al motor a probar el patrón en cada posición de cada línea; la tercera usa una clase negada. Las tres son equivalentes en el resultado y no en el costo. Cuando un literal conocido está disponible, ponerlo al principio le permite al motor descartar rápido las líneas que no lo contienen.
busquedas_siem
| where coincidencias == 120514
| sort by segundos asc
Responde para continuar
Escribe cuántos segundos más tardó la versión con .* a los dos lados que la del literal solo.
Ver pista de ayuda
Ejecuta la consulta de arriba y resta el tiempo de BUS-301, el patrón con el literal solo, al de BUS-302.
El patrón que no terminó no se arregla subiendo el tiempo límite ni cortando datos: se reescribe. Las reglas que más se repiten son las mismas que se vieron en las salas anteriores: empezar por un literal, anclar cuando se sepa dónde está lo buscado, usar clases negadas en vez de .*, y no meter un cuantificador dentro de un grupo que ya se repite. Y antes de dejarlo como regla permanente, se prueba contra el mes de datos con el tiempo anotado.
Responde para continuar
Un patrón con un grupo repetido y un cuantificador dentro fue cancelado por tiempo límite. ¿Qué haces con él?
Ver pista de ayuda
Un tiempo límite mayor oculta el problema; lo que lo causa es la forma del patrón.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.