Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Cuantificadores, grupos y alternancia

4 tareas · 40 min · Principiante

Mismo martes en Curtiembres del Atrato, ahora el cortafuegos perimetral. Sus líneas llevan direcciones, puertos y números de bytes: partes que se repiten con longitud variable y partes que a veces faltan. Un patrón que describe eso necesita decir cuántas veces se repite algo, agrupar trozos para tratarlos como una sola pieza y elegir entre dos alternativas. Aprendes los cuantificadores, los paréntesis y la barra, y los pruebas contra dieciséis líneas reales del cortafuegos, incluida la que no trae puertos. Todo es lectura de registros ya escritos.

0 de 4 · 0%

Objetivo de la sala

Mismo martes en Curtiembres del Atrato, ahora el cortafuegos perimetral. Sus líneas llevan direcciones, puertos y números de bytes: partes que se repiten con longitud variable y partes que a veces faltan. Un patrón que describe eso necesita decir cuántas veces se repite algo, agrupar trozos para tratarlos como una sola pieza y elegir entre dos alternativas. Aprendes los cuantificadores, los paréntesis y la barra, y los pruebas contra dieciséis líneas reales del cortafuegos, incluida la que no trae puertos. Todo es lectura de registros ya escritos.

Un cuantificador va detrás de una pieza y dice cuántas veces puede aparecer.

Cuantificador Significa
? cero o una vez: la pieza es opcional
* cero o más veces
+ una o más veces
{3} exactamente tres veces
{1,3} de una a tres veces

Con esto se describe un octeto de una dirección IPv4: \d{1,3}, de uno a tres dígitos. Una dirección completa es un octeto, seguido de tres veces «punto y octeto». Para repetir un trozo de varias piezas hay que agruparlo con paréntesis: (\.\d{1,3}){3} repite el conjunto «punto y de uno a tres dígitos» tres veces. Así, \d{1,3}(\.\d{1,3}){3} casa 10.67.5.9 y casa 198.51.100.7.

Cuidado: el patrón describe la forma, no el valor. 999.999.999.999 también la tiene.

Responde para continuar

¿Qué casa exactamente el trozo `(\.\d{1,3}){3}`?

Ver pista de ayuda

Los paréntesis agrupan; el {3} de fuera cuenta cuántas veces se repite el grupo entero.

La barra | es una alternancia: lo de la izquierda o lo de la derecha. Dentro de unos paréntesis queda acotada, y lo que está fuera se aplica a las dos opciones. (DROP|REJECT) TCP casa «DROP TCP» y también «REJECT TCP».

El índice fw guarda el cortafuegos del martes 6 de abril. Unos bloqueos hacia el acceso por escritorio remoto y por SSH llaman la atención; para verlos se acotan los puertos con una alternancia entre paréntesis.

index=fw | regex _raw="dport=(22|3389) "

El espacio del final del patrón es parte de él: obliga a que el número de puerto termine ahí.

Responde para continuar

Escribe la dirección de origen que aparece en todas las líneas hacia los puertos 22 y 3389.

Ver pista de ayuda

Ejecuta `index=fw | regex _raw="dport=(22|3389) "` y lee la columna src de las cuatro líneas.

Un patrón escrito para la línea típica falla en silencio con la rara. Este patrón exige todos los campos, con sus dos puertos:

index=fw | regex _raw="src=\S+ sport=\d+ dst=\S+ dport=\d+ bytes=\d+$"

\S+ es «una o más cosas que no son un espacio» y $ ancla el final. Casa quince líneas, y el cortafuegos escribió dieciséis. Para ver la que se queda fuera, cambia = por != en el comando regex: así deja justo las líneas que no casan. La cura está en el ? aplicado a un grupo: (sport=\d+ )? hace opcional el campo entero.

Responde para continuar

Escribe el protocolo de la línea que el patrón con todos los campos obligatorios deja fuera.

Ver pista de ayuda

Ejecuta `index=fw | regex _raw!="src=\S+ sport=\d+ dst=\S+ dport=\d+ bytes=\d+$"` y lee el protocolo de la única línea que sale.

Dónde se pone la barra importa. DROP|REJECT TCP src=10\.67\.20\.\d+ no dice «DROP o REJECT, y luego TCP y el origen». Dice «DROP», o bien «REJECT TCP src=10.67.20.NN»: la barra parte el patrón completo. Con paréntesis, (DROP|REJECT) TCP src=10\.67\.20\.\d+ limita la alternancia a la acción.

Ejecuta las dos en el SIEM y compara cuántas líneas devuelve cada una.

Responde para continuar

Quieres los paquetes TCP bloqueados o rechazados que vienen de la red de puestos 10.67.20. ¿Qué patrón escribes?

Ver pista de ayuda

Ejecuta `index=fw | regex _raw="DROP|REJECT TCP src=10\.67\.20\.\d+"` y `index=fw | regex _raw="(DROP|REJECT) TCP src=10\.67\.20\.\d+"` y compara las filas.

Inicia sesión para registrar tus puntos y progreso en el ranking.

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