
Ajustement et refactorisation de Google Chronicle Curated Detections pour éliminer la fatigue des alertes et corriger les lacunes logiques/bugs.
Ce dépôt documente les défauts de conception architecturale, les incohérences logiques et les stratégies d'optimisation des Curated Detections natives de Google SecOps (Chronicle).
Bien que Google Threat Intelligence (GTIG) offre une couverture conceptuelle exceptionnelle des menaces (comme le suivi des campagnes APT29/BRICKSTORM), les implémentations YARA-L brutes des règles curatées souffrent parfois d'oublis d'implémentation, tels que des contradictions dans la logique de regroupement et des variables de seuil codées en dur. Dans les environnements d'entreprise réels, cela conduit fréquemment à une fatigue massive liée aux alertes.
Ce projet analyse pourquoi les règles natives se cassent ou inondent le SOC, et partage des règles personnalisées optimisées ainsi que des correctifs pour résoudre ces problèmes.
Google a publié une suite de règles visant à détecter l'exfiltration massive d'e-mails depuis Microsoft 365 Exchange Online par des Service Principals compromis (techniques massivement utilisées par APT29/Midnight Blizzard).
Les règles curatées concernées sont :
O365 Mailbox Access by Service Principal with Multiple User AgentsO365 Multiple Mailboxes Accessed by Service PrincipalO365 Mailbox Access by Service Principal from Multiple ASNsO365 Multiple Mailboxes Accessed via Microsoft Graph APICette suite de règles contient des incohérences logiques systémiques entre l'objectif énoncé et l'implémentation YARA-L, probablement dues à une réutilisation de code au sein du pack de règles. Les règles ne parviennent pas à distinguer correctement les Service Principals automatisés de l'activité humaine standard, ce qui entraîne des alertes déclenchées sur le comportement normal des employés.
Bien que la description de la règle indique explicitement : « Detects a Service Principal with a single O365 session ID... », la section match YARA-L de la règle « Multiple User Agents » regroupe par $application_id au lieu de l'ID de session ($session_id). Cela contredit totalement l'objectif énoncé de la règle.
Les règles suivent les modèles comportementaux anormaux (changements d'IP, d'ASN ou de User-Agents) liés à un ClientAppId spécifique. Bien que Google inclue une regex d'exclusion pour plusieurs applications Microsoft natives, ils ont inexplicablement omis le client mobile humain le plus omniprésent : l'application Microsoft Outlook Mobile (27922004-5251-4030-b22d-91ecd9a37ea4).
Multiple ASNs. Différents employés utilisant iOS et Android pour consulter la même boîte aux lettres départementale déclenchent l'alerte Multiple User Agents.Pour identifier les comptes de service backend, la logique de Google repose sur cette condition :
$e.principal.user.userid != $e.target.user.userid
[email protected]). Ce défaut de conception génère un bruit massif sur le trafic humain opérationnel standard.Pour corriger ces défauts de conception, vous avez deux options selon vos besoins opérationnels :
Option 1 : Exclusions natives du SIEM (correctif rapide)
Vous n'êtes pas nécessairement obligé de désactiver les règles ou d'écrire du code personnalisé. Vous pouvez simplement créer une Exclusion directement dans l'interface du SIEM Google SecOps. Ajoutez simplement une exclusion ciblant le ClientAppId d'Outlook Mobile (27922004-5251-4030-b22d-91ecd9a37ea4) et vos applications de sauvegarde autorisées (par exemple, Keepit). Cela arrête immédiatement le flot de faux positifs tout en gardant les règles curatées de Google actives.
Option 2 : Déployer des règles personnalisées (correctif architectural)
Si vous souhaitez corriger complètement les défauts sous-jacents de la logique de regroupement (comme l'incohérence de $application_id), vous devez désactiver les Curated Detections et déployer des règles personnalisées. Les correctifs impliquent :
27922004-...) à la liste blanche.match pour agréger correctement par session.rule custom_ttp_o365_mailbox_access_by_service_principal_with_multiple_uas {
meta:
rule_name = "[CUSTOM] O365 Mailbox Access by Service Principal with Multiple User Agents"
description = "Detects a Service Principal with a single O365 session ID accessing O365 mailboxes with multiple user agents. Tuned to fix grouping logic and exclude Outlook Mobile (Public Client) human traffic."
severity = "Low"
tactic = "TA0009"
technique = "T1114.002"
events:
$e.metadata.log_type = "OFFICE_365"
$e.metadata.product_event_type = "MailItemsAccessed" nocase
$e.target.application = "Exchange"
$e.security_result.detection_fields["RecordType"] = /^(2|50)$/