Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

La misma pregunta en KQL y en SPL

4 tareas · 30 min · Principiante

El equipo de detección de Delta Cargo escribe sus consultas en KQL, para el SIEM de la casa matriz. El SIEM de Delta Aduanas pregunta en SPL. Cada vez que llega una consulta útil, alguien del turno tiene que traducirla, y una traducción que parece correcta puede devolver otra respuesta sin dar ningún error. Aquí traduces consultas reales de KQL a SPL sobre la misma noche de la pasarela VPN, y aprendes dónde están las tres trampas que más se repiten.

0 de 4 · 0%

Objetivo de la sala

El equipo de detección de Delta Cargo escribe sus consultas en KQL, para el SIEM de la casa matriz. El SIEM de Delta Aduanas pregunta en SPL. Cada vez que llega una consulta útil, alguien del turno tiene que traducirla, y una traducción que parece correcta puede devolver otra respuesta sin dar ningún error. Aquí traduces consultas reales de KQL a SPL sobre la misma noche de la pasarela VPN, y aprendes dónde están las tres trampas que más se repiten.

Los dos lenguajes piensan igual —una fuente y una cadena de pasos— y la mayoría de las piezas tienen pareja directa. Esta es la tabla que conviene tener a mano en el turno:

Qué quieres KQL SPL
Elegir la fuente vpn (la tabla) index=vpn
Filtrar where accion == "mfa" accion=mfa en la búsqueda, o where después
Elegir columnas project hora, usuario table _time usuario
Campo calculado extend x = ... eval x=...
Contar por grupo summarize n = count() by usuario stats count as n by usuario
Valores distintos dcount(usuario) dc(usuario)
Tramos de tiempo bin(hora, 1h) bin _time span=1h, o timechart span=1h
De mayor a menor sort by n desc sort - n

Dos detalles de forma que se olvidan: en SPL el nombre de una columna calculada va detrás con as, no delante con un igual; y la columna de tiempo no se llama como en la tabla de origen, sino _time. Como referencia de mercado: QRadar, otro SIEM frecuente en las vacantes, pregunta en AQL, un lenguaje con forma de SQL (SELECT … FROM events WHERE …); la lógica que traduces aquí es la misma que traducirías allí.

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é búsqueda SPL equivale a `vpn | where accion == "mfa" and resultado == "rechazado" | project hora, usuario, ip_origen`?

Ver pista de ayuda

En SPL el espacio entre dos condiciones de la búsqueda ya es un AND, y project no existe.

summarize y stats hacen lo mismo con otra ortografía. vpn | where accion == "login" and resultado == "ok" | summarize cuentas = dcount(usuario) by pais se escribe en SPL moviendo los filtros a la búsqueda, cambiando dcount por dc y pasando el nombre de la columna detrás de as. Si la traducción está bien, el número tiene que ser el mismo en los dos SIEM sobre los mismos datos; si no lo es, el fallo está en la traducción, no en los datos.

Una diferencia que no se ve en el texto: igual que en KQL, dc es una estimación rápida cuando los valores distintos son muchísimos. Con los números de un turno normal coincide con la cuenta exacta.

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

¿Cómo se traduce `summarize cuentas = dcount(usuario) by pais` al final de una búsqueda SPL?

Ver pista de ayuda

Contar filas y contar valores distintos son dos funciones distintas en los dos lenguajes.

Primera: el orden por defecto. sort by n en KQL ordena de mayor a menor; sort n en SPL, de menor a mayor. Quien traduce palabra por palabra obtiene el último de la lista en vez del primero, y la búsqueda no da ningún error.

Segunda: top. En KQL, top 5 by n ordena por la columna n y se queda con cinco filas. En SPL, top cuenta cuántas veces aparece cada valor de un campo; no ordena por una columna calculada. La traducción de un top de KQL es sort - n | head 5.

Tercera: take y head. take 10 de KQL devuelve diez filas cualesquiera. head 10 de SPL sobre eventos sin agrupar devuelve los diez más recientes. Las dos sirven para echar un vistazo; ninguna sirve para sacar conclusiones, y no muestran lo mismo.

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

¿Cómo se traduce `top 5 by intentos` de KQL al final de una búsqueda SPL?

Ver pista de ayuda

Piensa qué cuenta top en SPL y hacia dónde ordena sort sin signo.

El equipo de detección te manda esta consulta, que en su SIEM sirve para encontrar la cuenta que más túneles abre en una noche: vpn | where accion == "tunel" | summarize sesiones = count() by usuario | top 1 by sesiones. Tradúcela a SPL, ejecútala sobre la noche de la filial y comprueba que no caíste en la trampa del orden.

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 devuelve la traducción correcta de esa consulta.

Ver pista de ayuda

Ejecuta `index=vpn accion=tunel | stats count as sesiones by usuario | sort - sesiones | head 1`. Si te sale una cuenta con un solo túnel, te faltó el signo menos.

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

Conectando con la base…

SIEM de Delta Aduanas · pasarela VPN, noche del 21 al 22 de octubre
SPL · consultas previstas

Índices y lookups

index=vpn

  • _time
  • usuario
  • ip_origen
  • pais
  • accion
  • resultado
  • ip_tunel
Ctrl + Enter
Consola de consultas v1.0 · build b77233

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