🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un patrón, literales, clases y anclas
4 tareas · 35 min · Principiante
Martes 6 de abril. En Curtiembres del Atrato el servidor de archivos escribe su registro de autenticación como líneas de texto, sin campos, y el SIEM las guarda tal cual. Para encontrar algo en ellas no hay columnas que filtrar: hay que describir la forma de lo que buscas. Eso es una expresión regular, un patrón que se compara con el texto. En esta sala aprendes a leerlas antes de escribirlas: los caracteres que valen por sí mismos, las clases que admiten varios, los números de dígitos y las anclas al principio y al final de la línea. Todo es lectura de líneas ya escritas.
Objetivo de la sala
Martes 6 de abril. En Curtiembres del Atrato el servidor de archivos escribe su registro de autenticación como líneas de texto, sin campos, y el SIEM las guarda tal cual. Para encontrar algo en ellas no hay columnas que filtrar: hay que describir la forma de lo que buscas. Eso es una expresión regular, un patrón que se compara con el texto. En esta sala aprendes a leerlas antes de escribirlas: los caracteres que valen por sí mismos, las clases que admiten varios, los números de dígitos y las anclas al principio y al final de la línea. Todo es lectura de líneas ya escritas.Un patrón es una cadena que describe texto. La mayoría de los caracteres valen por sí mismos: el patrón error 404 busca exactamente esas ocho letras, espacios y cifras, en ese orden, en cualquier punto de la línea. Unos pocos caracteres son especiales y significan otra cosa.
| Pieza | Qué casa |
|---|---|
. |
un carácter cualquiera, el que sea |
[abc] |
uno solo de los que están entre corchetes |
[a-z], [0-9] |
uno solo del rango |
\d |
un dígito, igual que [0-9] |
\w |
una letra, un dígito o un guion bajo |
\s |
un espacio, un tabulador o un salto |
+ |
lo anterior, una o más veces |
\. |
un punto de verdad: la barra invertida quita el valor especial |
El punto es el error más frecuente de quien empieza. Para escribir una dirección IP hay que escribir 10\.67\.20\.15, con una barra antes de cada punto. Sin ella, cada punto vale «cualquier carácter».
Responde para continuar
Un compañero busca la red interna con el patrón `10.67.20.` sin ninguna barra invertida. ¿Qué problema tiene?
Ver pista de ayuda
¿Qué valor tiene el punto en un patrón, y qué hace falta para que valga solo un punto?
El SIEM de esta sala busca en el índice auth, el registro de autenticación del servidor cat-srv-arch01. El comando regex deja solo las líneas cuyo texto casa con el patrón, y regex campo!="…" deja las que no casan. Empieza por lo fácil: un literal.
index=auth | regex _raw="Failed password"
Salen las líneas de contraseña fallida. Si alargas el literal con for invalid user, quedan solo las de cuentas que no existen en el servidor, y puedes leer de dónde vienen.
Responde para continuar
Escribe la dirección de origen de los intentos fallidos con un usuario que no existe en el servidor.
Ver pista de ayuda
Ejecuta `index=auth | regex _raw="Failed password for invalid user"` y lee la dirección que aparece después de from.
Para pedir «una palabra» sin saber cuál, se usa una clase y un +: [a-z]+ casa una o más letras minúsculas seguidas. Y para pedir una dirección de una red concreta, se escapan los puntos y se deja un \d+ para el último número.
index=auth | regex _raw="password for [a-z]+ from 203\.0\.113\.\d+"
Date cuenta de que el patrón no distingue entre un fallo y un acierto: la palabra password aparece en las dos. Lo que sigue la historia es la dirección, y la cuenta aparece en cada línea. Lee las líneas que salen como lo haría un analista, en orden.
Responde para continuar
Entre las líneas de esa dirección de fuera, escribe la cuenta que falló dos veces y a la tercera fue aceptada.
Ver pista de ayuda
Ejecuta `index=auth | regex _raw="password for [a-z]+ from 203\.0\.113\.\d+"` y lee las tres líneas de la cuenta, de la más vieja a la más nueva.
Sin ancla, un patrón se busca en cualquier parte de la línea. Dos símbolos lo atan a un extremo: ^ es el comienzo de la línea y $ es el final. ^Apr 06 0[2-8]: pide que la línea empiece por esa fecha y una hora entre las 02 y las 08; ssh2$ pide que termine en ssh2.
Un error clásico: esperar que ^ diga «lo primero que importa» en vez de «lo primero que hay en la línea». Las líneas de este registro empiezan por la fecha y el nombre del equipo, y el programa que escribe viene después.
Responde para continuar
Buscas las líneas de sudo con `index=auth | regex _raw="^sudo"` y el resultado llega vacío, aunque la línea existe. ¿Por qué?
Ver pista de ayuda
Ejecuta `index=auth | regex _raw="^sudo"` y después `index=auth | regex _raw="sudo:"` y compara dónde aparece la palabra en la línea.
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.