Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

KQL — la consulta por tuberías

4 tareas · 30 min · Principiante

Las dos salas anteriores preguntaban en SQL. Muchos SIEM de nube preguntan de otra forma: empiezas por una tabla y le vas encadenando pasos, cada uno detrás de una barra vertical. El lenguaje que más aparece en las vacantes de analista con esa forma es KQL, y aquí lo practicas sobre los inicios de sesión del proveedor de identidad de Delta Cargo la noche del 7 al 8 de octubre: filtrar con where, quedarte con las columnas que importan con project y mirar la forma de los datos con take.

0 de 4 · 0%

Objetivo de la sala

Las dos salas anteriores preguntaban en SQL. Muchos SIEM de nube preguntan de otra forma: empiezas por una tabla y le vas encadenando pasos, cada uno detrás de una barra vertical. El lenguaje que más aparece en las vacantes de analista con esa forma es KQL, y aquí lo practicas sobre los inicios de sesión del proveedor de identidad de Delta Cargo la noche del 7 al 8 de octubre: filtrar con where, quedarte con las columnas que importan con project y mirar la forma de los datos con take.

En SQL la consulta se escribe en un orden y el motor la ejecuta en otro: dices qué columnas quieres antes de decir de dónde salen. KQL lo plantea al revés y en el orden en que piensas cuando investigas. La primera palabra es la tabla; después, cada paso va detrás de una barra vertical | y trabaja sobre lo que dejó el paso anterior, como el agua que pasa de un tramo de tubería al siguiente. Como referencia de mercado: KQL es el lenguaje del SIEM de nube de Microsoft (Sentinel), y por eso las vacantes que piden ese SIEM piden KQL.

inicios
| where resultado == "fallido"
| project hora, cuenta, ip_origen

Esa consulta se lee de arriba abajo: toma todos los inicios de sesión, quédate con los fallidos y, de esos, enseña solo tres columnas. Se puede escribir en una línea o en varias; el salto de línea no cambia nada. Lo que sí cambia el resultado es el orden de los pasos, porque cada uno solo ve lo que le llega.

Esta tarea se hace en el laboratorio

Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.

Conectando con la base…

Responde para continuar

¿Qué hace la consulta del ejemplo, leída en el orden en que se ejecuta?

Ver pista de ayuda

Cada paso trabaja sobre lo que le deja el anterior, de arriba abajo.

where deja pasar solo las filas que cumplen una condición, y la condición se escribe con operadores. Los que vas a usar en el turno son pocos. == compara un valor exacto y distingue mayúsculas; =~ compara sin distinguirlas; != es «distinto de». Para texto hay tres más: has busca una palabra entera dentro del valor y es rápido, porque el SIEM indexa las palabras; contains busca cualquier trozo de texto, aunque esté en medio de una palabra, y es más lento; startswith mira solo el comienzo. Las condiciones se juntan con and y or, y in compara contra una lista: cuenta in ("lgomez", "mvega").

El tiempo tiene su propia forma de escribirse. ago(1h) es «hace una hora», así que where hora > ago(1h) deja la última hora; y between acota un tramo entre dos instantes. En un SIEM con millones de filas, la condición de tiempo va en el primer where: es la que más recorta.

Esta tarea se hace en el laboratorio

Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.

Conectando con la base…

Responde para continuar

Quieres los fallos cuyo motivo incluye la palabra «caducada», sin importar el resto del texto. ¿Qué operador eliges?

Ver pista de ayuda

El motivo completo dice más cosas que esa palabra; necesitas encontrarla dentro.

project elige las columnas que salen, en el orden en que las escribes, y también permite renombrarlas: project hora, quien = cuenta. No filtra filas; recorta el ancho. Parece cosmético y no lo es: con seis columnas de las que te sobran tres, el dato que buscas se pierde entre las demás, y el siguiente analista que abra tu consulta tarda el doble en leerla.

take 10 devuelve diez filas cualesquiera. No son las más recientes ni las más graves, ni salen en ningún orden concreto: son las primeras que el motor encuentra. Por eso take es la herramienta para ver qué columnas tiene una tabla y qué pinta tienen sus valores antes de escribir el filtro. Sacar una conclusión de lo que devuelve un take es sacarla de una muestra que nadie eligió.

Esta tarea se hace en el laboratorio

Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.

Conectando con la base…

Responde para continuar

Un compañero ejecuta `inicios | take 10`, ve que ninguna fila viene de fuera de la empresa y concluye que esa noche no hubo accesos externos. ¿Qué le dices?

Ver pista de ayuda

Piensa en quién elige las diez filas que devuelve take.

La salida a internet de la oficina de Delta Cargo es 192.0.2.10 y su red interna es la 10.4.0.0/16. Filtra los inicios de sesión correctos de la noche, quédate con la hora, la cuenta y la dirección de origen, y busca la única sesión que no viene de ninguno de esos dos sitios.

Esta tarea se hace en el laboratorio

Una consola para consultar la base de datos, aquí en la página. No instalas nada y no puedes romper nada.

Conectando con la base…

Responde para continuar

Escribe la cuenta que inició sesión correctamente desde una dirección que no es ni la oficina ni la red interna.

Ver pista de ayuda

Ejecuta `inicios | where resultado == "correcto" | project hora, cuenta, ip_origen` y compara cada origen con la oficina y con la red 10.4.

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

Conectando con la base…

SIEM · Delta Cargo — inicios de sesión del proveedor de identidad
KQL · consultas previstas

Tablas

inicios

  • hora
  • cuenta
  • aplicacion
  • ip_origen
  • resultado
  • motivo
Ctrl + Enter
Consola de consultas v1.0 · build e42b80

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