🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónUnir dos tablas — join para correlacionar
4 tareas · 35 min · Principiante
En la primera sala del módulo correlacionaste a ojo dos eventos de fuentes distintas. Con dos eventos se puede; con miles, no. join hace esa correlación dentro de la consulta: junta las filas de dos tablas que comparten un valor. Aquí unes los inicios de sesión de Delta Cargo con la auditoría de los buzones de correo para responder la pregunta que sigue a toda sesión sospechosa —qué hizo quien entró— y aprendes las dos trampas de join que más se repiten.
Objetivo de la sala
En la primera sala del módulo correlacionaste a ojo dos eventos de fuentes distintas. Con dos eventos se puede; con miles, no. join hace esa correlación dentro de la consulta: junta las filas de dos tablas que comparten un valor. Aquí unes los inicios de sesión de Delta Cargo con la auditoría de los buzones de correo para responder la pregunta que sigue a toda sesión sospechosa —qué hizo quien entró— y aprendes las dos trampas de join que más se repiten.Cada fuente del SIEM responde una parte de la pregunta. El proveedor de identidad sabe desde dónde entró una cuenta, pero no qué hizo después. La auditoría de buzones sabe qué cambió en un buzón, pero muchas veces no guarda desde qué dirección. join junta las dos: para cada fila de la tabla de la izquierda busca las filas de la derecha que tienen el mismo valor en la columna que indicas detrás de on, y devuelve las parejas.
inicios
| where resultado == "correcto" and ip_origen == "198.51.100.23"
| join kind=inner (buzones) on cuenta
Dos costumbres hacen que un join sea legible y rápido. Se filtra antes de unir, para que la tabla de la izquierda llegue pequeña: unir la noche entera de inicios con todos los buzones produce miles de parejas que nadie va a leer. Y la tabla de la derecha va entre paréntesis, porque puede ser una consulta entera con sus propios filtros.
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.
Responde para continuar
Tienes una sesión sospechosa en el registro de identidad y quieres saber qué cambió esa cuenta en su buzón. ¿Qué hace el join por ti?
Ver pista de ayuda
La columna de detrás de on es la que tiene que coincidir en las dos tablas.
kind decide qué filas sobreviven. inner deja solo las que encuentran pareja en los dos lados: sesiones que tienen eventos de buzón. leftouter deja todas las de la izquierda, tengan pareja o no, y rellena con vacíos lo que falta: sirve cuando también te interesa la sesión que no hizo nada. leftanti deja las de la izquierda que no tienen pareja: «cuentas que iniciaron sesión desde otro país y no están en la lista de personas de viaje», «equipos del inventario que no mandaron ningún evento hoy».
Si no escribes kind, KQL no usa inner: usa una variante que se queda con una sola fila por cada valor de la izquierda antes de unir. Con una sesión por cuenta no se nota; con varias sesiones de la misma cuenta, algunas desaparecen del resultado sin ningún aviso. Por eso en una consulta de investigación el tipo se escribe siempre, aunque sea el que querías.
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.
Responde para continuar
Necesitas las cuentas que iniciaron sesión desde fuera y que no tienen ningún evento en la auditoría de buzones. ¿Qué tipo de unión usas?
Ver pista de ayuda
Buscas lo que está a la izquierda y falta a la derecha.
Unir por la cuenta trae todo lo que esa cuenta hizo en la tabla de la derecha, también lo de ayer y lo de la semana pasada. Si la sesión sospechosa es de las 03:41 y la cuenta mandó un correo normal la tarde anterior, el join devuelve los dos eventos de buzón pegados a la misma sesión, y un vistazo rápido los mezcla en la misma historia. La condición que falta es de tiempo: después del join, where hora1 > hora deja solo lo que pasó después de entrar.
Ese hora1 no es un error. Cuando las dos tablas tienen una columna con el mismo nombre, el resultado conserva las dos y a la de la derecha le añade un 1 al final: hora es la del inicio de sesión y hora1 la del evento de buzón; cuenta y cuenta1, lo mismo. Al terminar, un project con las columnas que cuentan la historia deja el resultado listo para el reporte.
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.
Responde para continuar
El join de una sesión de madrugada con los buzones devuelve también un evento de la tarde anterior. ¿Cómo lo corriges?
Ver pista de ayuda
La unión empareja por la cuenta; el orden en el tiempo lo tienes que pedir tú.
La sesión correcta desde la dirección del rociado abrió el correo web de una cuenta de Delta Cargo de madrugada. Une esa sesión con la auditoría de buzones, quédate con lo que pasó después de entrar y lee la regla que se creó.
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.
Responde para continuar
Escribe la dirección de correo externa a la que reenvía la regla creada después de la sesión de madrugada.
Ver pista de ayuda
Ejecuta `inicios | where resultado == "correcto" and ip_origen == "198.51.100.23" | join kind=inner (buzones) on cuenta | where hora1 > hora | project hora, hora1, cuenta, operacion, detalle` y lee la columna «detalle» de la regla.
Conectando con la base…
Tablas
inicios
- hora
- cuenta
- aplicacion
- ip_origen
- resultado
- motivo
buzones
- hora
- cuenta
- operacion
- detalle
- cliente
El resultado aparece aquí.
fila(s)
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.