Exemples de chaînes de recherche AQL
Utilisez le langage de requête Ariel (AQL) pour extraire des zones spécifiques des tables d'événements, de flux et de simarc dans la base de données Ariel .
Génération de rapports sur l'utilisation d'un compte
Les différentes communautés d'utilisateurs peuvent avoir des indicateurs de menace et d'utilisation différents.
Utilisez les données de référence pour générer des rapports sur plusieurs propriétés utilisateurs, par exemple le nom du département, l'emplacement ou le chef. Vous pouvez utiliser des données de référence externes.
La requête suivante renvoie des informations de métadonnées sur l'utilisateur à partir de ses événements de connexion.
SELECT
REFERENCETABLE('user_data','FullName',username) as 'Full Name',
REFERENCETABLE('user_data','Location',username) as 'Location',
REFERENCETABLE('user_data','Manager',username) as 'Manager',
DISTINCTCOUNT(username) as 'Userid Count',
DISTINCTCOUNT(sourceip) as 'Source IP Count',
COUNT(*) as 'Event Count'
FROM events
WHERE qidname(qid) ILIKE '%logon%'
GROUP BY 'Full Name', 'Location', 'Manager'
LAST 1 days
Connaissance de plusieurs identificateurs de comptes
Dans cet exemple, les utilisateurs individuels ont plusieurs comptes dans le réseau. L'organisation a besoin d'obtenir une vue unique des activités de l'utilisateur.
Utilisez les données de référence pour mapper les ID utilisateurs locaux à un ID global.
La requête suivante renvoie les comptes utilisateurs utilisés par un ID global sur des événements signalés comme suspects.
SELECT
REFERENCEMAP('GlobalID Mapping',username) as 'Global ID',
REFERENCETABLE('user_data','FullName', 'Global ID') as 'Full Name',
DISTINCTCOUNT(username),
COUNT(*) as 'Event count'
FROM events
WHERE RULENAME(creEventlist) ILIKE '%suspicious%'
GROUP BY 'Global ID'
LAST 1 days
La requête suivante montre les activités réalisées par un ID global.
SELECT
QIDNAME(qid) as 'Event name',
starttime as 'Time',
sourceip as 'Source IP', destinationip as 'Destination IP',
username as 'Event Username',
REFERENCEMAP('GlobalID_Mapping', username)as 'Global User'
FROM events
WHERE 'Global User' = 'John Doe'
LAST 1 daysIdentification d'un balisage de longue durée suspect
De nombreuses menaces utilisent des commandes et des contrôles pour communiquer de façon régulière, durant plusieurs jours, plusieurs semaines et plusieurs mois.
Les recherches avancées peuvent identifier les modèles de connexion au fil du temps. Par exemple, vous pouvez analyser les connexions cohérentes, courtes, de faible volume, le nombre de connexions par jour/mois/an entre les adresses IP ou une adresse IP et un emplacement géographique.
La requête suivante détecte les instances potentielles d'un balisage s'effectuant toutes les heures.
SELECT sourceip, destinationip,
DISTINCTCOUNT(DATEFORMAT(starttime,'HH')) as 'different hours',
COUNT(*) as 'total flows'
FROM flows
WHERE flowdirection = 'L2R'
GROUP BY sourceip, destinationip
HAVING "different hours" > 20
AND "total flows" < 25
LAST 24 hours
La requête suivante détecte des instances potentielles de balisage quotidien.
SELECT sourceip, destinationip,
DISTINCTCOUNT(DATEFORMAT(starttime,'dd'))as 'different days',
COUNT(*) as 'total flows'
FROM flows
WHERE flowdirection='L2R'
GROUP BY sourceip, destinationip
HAVING "different days" > 4
AND "total flows" < 14
LAST 7 days
La requête suivante détecte un balisage quotidien entre un IP de source et un IP de destination. Les horaires de balisage varient tous les jours. L'intervalle de temps séparant deux balisages est court.
SELECT
sourceip,
LONG(DATEFORMAT(starttime,'hh')) as hourofday,
(AVG( hourofday*hourofday) - (AVG(hourofday)^2))as variance,
COUNT(*) as 'total flows'
FROM flows
GROUP BY sourceip, destinationip
HAVING variance < 01 and "total flows" < 10
LAST 7 daysLa requête suivante détecte un balisage quotidien vers un domaine à l'aide d'événements de journaux de proxy. Les horaires de balisage varient tous les jours. L'intervalle de temps séparant deux balisages est court.
SELECT sourceip,
LONG(DATEFORMAT(starttime,'hh')) as hourofday,
(AVG(hourofday*hourofday) - (AVG(hourofday)^2)) as variance,
COUNT(*) as 'total events'
FROM events
WHERE LOGSOURCEGROUPNAME(devicegrouplist) ILIKE '%proxy%'
GROUP BY url_domain
HAVING variance < 0.1 and "total events" < 10
LAST 7 daysLa propriété url_domain est une propriété personnalisée des journaux de proxy.
Intelligence de menace externe
Les données d'utilisation et de sécurité en corrélation avec des données d'intelligence de menace externe peuvent fournir des indicateurs de menace importants.
Des recherches avancées peuvent croiser des indicateurs d'intelligence de menace externe avec d'autres événements de sécurité et données d'utilisation.
Cette requête montre comment vous pouvez analyser des données de menace externe durant plusieurs jours, plusieurs semaines ou plusieurs mois afin d'identifier le niveau de risque des actifs et des comptes et de définir des priorités.
Select
REFERENCETABLE('ip_threat_data','Category',destinationip) as 'Category',
REFERENCETABLE('ip_threat_data','Rating', destinationip) as 'Threat Rating',
DISTINCTCOUNT(sourceip) as 'Source IP Count',
DISTINCTCOUNT(destinationip) as 'Destination IP Count'
FROM events
GROUP BY 'Category', 'Threat Rating'
LAST 1 days
Intelligence des actifs et configuration
Les indicateurs de menace et d'utilisation varient en fonction du type d'accès, du système d'exploitation, de la posture de vulnérabilité, du type de serveur, de la classification et d'autres paramètres.
Dans cette requête, les recherches avancées et le modèle d'actif offrent une connaissance opérationnelle d'un emplacement.
La fonction Assetproperty extrait les valeurs de propriétés des actifs et vous permet d'inclure les données d'actif dans les résultats.
SELECT
ASSETPROPERTY('Location',sourceip) as location,
COUNT(*) as 'event count'
FROM events
GROUP BY location
LAST 1 days La requête suivante vous montre comment vous pouvez utiliser les recherches avancées et le suivi de l'identité des utilisateurs dans le modèle d'actif.
La fonction AssetUser extrait le nom d'utilisateur de la base de données des actifs.
SELECT
APPLICATIONNAME(applicationid) as App,
ASSETUSER(sourceip, now()) as srcAssetUser,
COUNT(*) as 'Total Flows'
FROM flows
WHERE srcAssetUser IS NOT NULL
GROUP BY App, srcAssetUser
ORDER BY "Total Flows" DESC
LAST 3 HOURSFonction de recherche réseau
Vous pouvez utiliser la fonction Network LOOKUP pour récupérer le nom de réseau associé à une adresse IP.
SELECT NETWORKNAME(sourceip) as srcnet,
NETWORKNAME(destinationip) as dstnet
FROM events Fonction de recherche de règle
Vous pouvez utiliser la fonction Rule LOOKUP pour récupérer le nom d'une règle par son ID.
SELECT RULENAME(123) FROM eventsLa requête suivante renvoie les événements ayant déclenché un nom de règle spécifique.
SELECT * FROM events
WHERE RULENAME(creEventList) ILIKE '%my rule name%'Recherche en texte intégral (Full TEXT SEARCH)
Vous pouvez utiliser l'opérateur TEXT SEARCH pour faire des recherches en texte intégral en utilisant l'option Recherche avancée.
Dans cet exemple, il existe un certain nombre d'événements qui contiennent le terme "firewall" dans le contenu. Vous pouvez rechercher ces événements en utilisant l'option Filtre rapide et l'option Recherche avancée de l'onglet Activité du journal.
- Pour utiliser l'option Filtre rapide, entrez le texte suivant dans la case Filtre rapide : 'firewall'
- Pour utiliser l'option Recherche avancée, entrez la requête suivante dans la case Recherche avancée :
SELECT QIDNAME(qid) AS EventName, * from events where TEXT SEARCH 'firewall'
Propriété personnalisée
Vous pouvez accéder aux propriétés personnalisées pour les événements et les flux lorsque vous utilisez l'option Recherche avancée.
SELECT "MyWebsiteUrl", * FROM events ORDER BY "MyWebsiteUrl"