🔍 Contexte

Publié le 04/05/2026 sur GitHub (gist de Diana Damenova), cet article présente IRQL (Incident Response Query Language), une bibliothèque de fonctions KQL (Kusto Query Language) conçue pour unifier et simplifier l’analyse des logs de sécurité dans des environnements Microsoft (Azure, Sentinel, Defender XDR).

🛠️ Description de l’outil

IRQL a été créé par Saar Ron, John Lambert et Diana Damenova. Il s’agit d’un ensemble de fonctions KQL organisées en cinq familles :

  • Selectors (Get_*) : retournent une vue projetée et renommée d’une table source selon un schéma unifié (ex: Get_Event_Authentication, Get_Email, Get_Event_Process)
  • Extractors (Extract_*) : dérivent une nouvelle colonne à partir d’une colonne existante (ex: Extract_Email_Sender_Domain, Extract_Employee_Firstname)
  • Enrichers (Enrich_*) : effectuent des left-joins pour ajouter du contexte (ex: Enrich_Ip_Employee, Enrich_Sha256_VirusTotal)
  • Graph-lifted variants : variantes opérant sur des tables graphes produites par Lift_To_Graph
  • Enrichissement externe : Enrich_Sha256_VirusTotal et Get_CISA_KEV / Enrich_CISA_KEV

🎯 Problèmes adressés

IRQL répond à plusieurs problèmes concrets de l’analyse KQL à grande échelle :

  • Dérive de schéma : un même concept (IP, timestamp) apparaît sous des dizaines de noms différents selon les tables
  • Dispersion des clusters et bases de données : connaissance tribale non scalable
  • Logique de jointure répétée et fragile : copy-paste silencieusement cassé lors de changements de schéma
  • Charge cognitive élevée pour les humains et les LLMs

📊 Exemple concret

L’article illustre la valeur d’IRQL avec un cas de détection de vol de token / abus OAuth / proxy AiTM : identification des applications AAD recevant soudainement des connexions depuis une catégorie de user-agent jamais vue auparavant. La version brute KQL nécessite ~50 lignes avec un classifieur UA à 30 branches, 3 jointures explicites et une union manuelle. La version IRQL réduit cela à ~10 lignes lisibles.

📌 Type d’article

Il s’agit d’une publication de présentation d’outil open source destinée aux analystes SOC et threat hunters, avec pour objectif de démontrer la valeur d’une abstraction KQL standardisée pour accélérer l’onboarding, la chasse aux menaces et la composition de requêtes assistée par IA.

🧠 TTPs et IOCs détectés

TTP

  • T1528 — Steal Application Access Token (Credential Access)
  • T1557 — Adversary-in-the-Middle (Credential Access)

🔴 Indice de vérification factuelle : 23/100 (basse)

  • ⬜ gist.github.com — source non référencée (0pts)
  • ✅ 15000 chars — texte complet (fulltext extrait) (15pts)
  • ⬜ aucun IOC extrait (0pts)
  • ⬜ pas d’IOC à vérifier (0pts)
  • ✅ 2 TTP(s) MITRE (8pts)
  • ⬜ date RSS ou approximée (0pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://gist.github.com/ddamenova/a24f3f012012affd017d6bf712f2dd02