Aller au contenu

Requêtes

Mémo de requêtes AQL (Ariel Query Language) pour IBM QRadar : filtres de base, jointures, recherches dans les flow records et events, syntaxe pour le threat hunting et la création de règles.

🎯 Filtres de base

Rechercher des événements sur une période spécifique

SELECT * FROM events 
WHERE startTime > '2024-02-01 00:00:00' 
AND startTime < '2024-02-07 23:59:59'

Affiche tous les événements entre le 1er et le 7 février 2024.

Filtrer par adresse IP source

SELECT * FROM events WHERE sourceip = '192.168.1.10'

Affiche tous les événements générés par l'IP source 192.168.1.10.

Filtrer par type d’événement spécifique

SELECT * FROM events WHERE eventCategory = 'Authentication Failure'

Affiche tous les échecs d’authentification.

Filtrer par niveau de gravité

SELECT * FROM events WHERE magnitude > 6

Affiche uniquement les événements avec une gravité supérieure à 6.


🔥 Filtres avancés

Rechercher des connexions suspectes

SELECT * FROM events WHERE sourceIP != destinationIP
AND destinationPort IN (3389, 22, 445)
AND magnitude > 5

Détecte les connexions anormales sur des ports sensibles comme RDP (3389), SSH (22) et SMB (445).

Détecter des balayages de ports

SELECT sourceIP, COUNT(DISTINCT destinationPort) AS scanned_ports 
FROM events 
WHERE destinationPort IS NOT NULL 
GROUP BY sourceIP 
HAVING COUNT(DISTINCT destinationPort) > 10

Identifie les adresses IP ayant scanné plus de 10 ports différents.

Lister les tentatives de connexion échouées par utilisateur

SELECT username, COUNT(*) AS failed_attempts 
FROM events 
WHERE eventName = 'Failed Login' 
GROUP BY username 
ORDER BY failed_attempts DESC

Affiche la liste des utilisateurs avec le plus grand nombre d’échecs de connexion.

Identifier des connexions à des pays suspects

SELECT * FROM events 
WHERE destinationGeographicLocation IN ('Russia', 'China', 'North Korea')

Liste les connexions vers des pays sensibles.


📜 Requêtes spécifiques aux logs réseau

Identifier des transferts de fichiers volumineux

SELECT sourceIP, destinationIP, bytes 
FROM flows 
WHERE bytes > 100000000 
ORDER BY bytes DESC

Affiche les transferts de plus de 100 Mo.

Identifier les connexions entre un poste et plusieurs destinations

SELECT sourceIP, COUNT(DISTINCT destinationIP) AS connections
FROM flows 
GROUP BY sourceIP
HAVING COUNT(DISTINCT destinationIP) > 5

Identifie les postes établissant des connexions vers plus de 5 destinations différentes (potentiel beaconing).


🛠 Autres requêtes utiles

Rechercher un processus spécifique dans les logs

SELECT * FROM events WHERE eventName LIKE '%powershell%'

Filtre les événements contenant le mot powershell, souvent utilisé dans des attaques.

Rechercher des exécutions de Mimikatz

SELECT * FROM events 
WHERE eventName LIKE '%mimikatz%' 
OR eventDescription LIKE '%sekurlsa%'

Détecte les exécutions suspectes de l’outil Mimikatz.

Détecter des connexions anormales d’un compte privilégié

SELECT username, sourceIP, destinationIP, eventName 
FROM events 
WHERE username IN ('admin', 'administrator', 'root')
AND eventName = 'Successful Login'
AND sourceIP NOT IN ('192.168.1.0/24')

Détecte les connexions réussies sur un compte admin depuis une IP hors du réseau interne.

Trouver les événements les plus fréquents

SELECT eventName, COUNT(*) AS occurrences 
FROM events 
GROUP BY eventName 
ORDER BY occurrences DESC