ES|QL
ES|QL en el mundo real
ES|QL en condiciones reales: del log en bruto a la decisión. Aquí no encontrarás un catálogo de funciones, sino las consultas que un ingeniero tiene siempre a mano: detección SOC (beaconing, exfiltración DNS, impossible travel), observabilidad estadística (MAD, z-score, SLO) y capacity planning predictivo. El resultado que se muestra ES el insight, con funciones recientes como INLINESTATS, CATEGORIZE y ST_DISTANCE, casi imposibles de encontrar en español.
21 snippets destacados
- Latencia media ponderada por el volumen de peticionesWEIGHTED_AVG pondera cada medición por su peso real (número de llamadas), a diferencia de una media simple que sobrerrepresenta las instancias poco solicitadas.
- Parsear un access log de Apache en bruto con GROKExtracción al vuelo de los campos de un combined log (IP, método, ruta, estado, bytes) con tipado :int directamente en el patrón GROK.
- Password spraying: muchas cuentas, pocos intentosLa firma inversa del brute force: una IP prueba numerosas cuentas con 1-3 intentos cada una para mantenerse por debajo de los umbrales de bloqueo.
- Exfiltración por DNS: subdominios numerosos y largosDos marcadores del tunneling DNS combinados: alta cardinalidad de subdominios únicos bajo un mismo dominio y una longitud media anómala de las consultas.
- Cuenta creada y promovida a admin en menos de una horaMIN(CASE(...)) captura ambos hitos (creación, elevación) por cuenta objetivo, y luego DATE_DIFF mide el intervalo — un intervalo corto es un marcador de persistencia del atacante.
- Umbral de anomalía robusto: mediana + 5×MADMEDIAN_ABSOLUTE_DEVIATION resiste a los outliers, a diferencia de la desviación estándar — el umbral mediana + 5×MAD produce límites de alerta fiables por servicio.
- Disponibilidad a 30 días y error budget de SLO restanteDisponibilidad medida sobre las respuestas no-5xx y luego situada frente a un SLO del 99,9 % — el presupuesto restante en porcentaje guía la congelación de despliegues.
- LOOKUP JOIN: cruzar el tráfico con IOCs de threat intelUnión del tráfico de red saliente con un índice de indicadores de compromiso — solo los destinos coincidentes conservan los campos threat.*.
- Probar funciones sin índice con ROWROW fabrica una fila en memoria: ideal para validar un patrón DISSECT, una conversión o un CIDR_MATCH antes de aplicarlo a millones de documentos.
- INLINESTATS: desviación de cada petición respecto a la media de su servicioINLINESTATS añade el agregado como columna sin reducir las filas — cada transacción se compara con la media de su propio servicio dentro de la misma consulta.
- Hosts fuera de lo normal mediante z-score (STD_DEV)STD_DEV mide la dispersión de la carga de CPU por host; el z-score del pico ((max − media) / desviación estándar) distingue un pico realmente anómalo de una carga habitualmente volátil.
- Agrupar errores por patrón con CATEGORIZECATEGORIZE agrupa automáticamente los mensajes similares en patrones — miles de líneas de errores se resumen en un puñado de familias, sin escribir ningún regex.
- Conexiones lejanas a la sede con ST_DISTANCEST_DISTANCE calcula la distancia en metros entre la geolocalización de la conexión y un punto de referencia — aquí la sede de París — para hacer aflorar los accesos geográficamente improbables.
- Top 3 de puntuaciones CVSS por host con MV_SORT y MV_SLICEMV_SORT ordena el campo multivalor de mayor a menor, MV_SLICE conserva sus tres primeros valores y MV_FIRST extrae el peor — todo sin desglosar las filas.
- Estimación de los días restantes antes de saturar el discoDos agregaciones filtradas en el tiempo (hace 14 días vs. hoy) dan el crecimiento diario, que luego se extrapola al número de días hasta el 100 % de ocupación.
- Inicio de sesión exitoso tras una ráfaga de fallosAgregaciones filtradas por outcome: si el primer éxito del par IP/cuenta ocurre después del último fallo de una ráfaga, el brute force probablemente prosperó.
- Timeline de triaje de un host comprometidoReconstrucción cronológica multicategoría (auth, proceso, red, ficheros) sobre una ventana de incidente, con un campo detail unificado mediante COALESCE para leer el ataque de principio a fin.
- Beaconing C2: conexiones regulares de volumen constanteUn implante que «late» hacia su servidor de mando produce muchas conexiones al mismo destino con tamaños casi idénticos: STD_DEV de los bytes cercano a cero durante un largo periodo.
- Kerberoasting: ráfaga de tickets TGS en RC4La combinación de event 4769 + cifrado 0x17 (RC4) solicitado en masa hacia numerosos SPN distintos en pocos minutos es la firma clásica de un kerberoasting.
- Web shell: POST recurrentes hacia URIs poco frecuentesUn web shell se delata por POST repetidos hacia un script concreto, desde muy pocas IPs, casi siempre con 200 — justo lo contrario de un formulario público.
- Descomponer un Distinguished Name LDAP en unidades organizativasSPLIT por la coma y luego MV_SLICE extrae la OU principal de un DN, agregando las cuentas por rama organizativa sin un campo dedicado en el directorio.