Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
fixing-google-secops-detections — Ajustement et refactorisation de Google Chronicle Curated Detections pour éliminer la fatigue des alertes et corriger les lacunes logiques/bugs. | Kitploit
Outils/GitHubGitHub/all3xj/fixing-google-secops-detections
Outils DéfensifsSécurité CloudRenseignement sur les MenacesDétection d'IntrusionApprentissage et ÉducationRéponse aux IncidentsSécurité des EmailsDétection d'AnomaliesAnalyse de Journaux

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHuball3xj/fixing-google-secops-detections

fixing-google-secops-detections

Ajustement et refactorisation de Google Chronicle Curated Detections pour éliminer la fatigue des alertes et corriger les lacunes logiques/bugs.

Voir le dépôt
31il y a 8 joursPas encore vérifié

Détections organisées Google SecOps (Chronicle) : analyse des défauts et réglage

Ce référentiel documente les défauts de conception architecturale, les incohérences logiques et les stratégies de réglage des détections organisées Google SecOps (Chronicle) natives.

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 organisé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 d'alerte massive.

Ce projet analyse pourquoi les règles natives cassent ou submergent le SOC, et partage des règles personnalisées optimisées et des correctifs pour résoudre ces problèmes.


📑 Table des matières

  1. Échec d'alerte de la suite O365 pour BRICKSTORM / APT29
    • Défaut 1 : Contradiction de la logique de regroupement
    • Défaut 2 : Oubli du client public Outlook Mobile
    • Défaut 3 : Collision de boîte aux lettres partagée
    • Solutions YARA-L ajustées pour les règles O365
  2. UEBA : Total des tentatives d'authentification anormales
    • Défaut de codage en dur et fatigue d'alerte
    • Recommandations de réglage UEBA

1. Échec d'alerte de la suite O365 pour BRICKSTORM / APT29

Google a publié une suite de règles pour détecter l'exfiltration massive d'e-mails depuis Microsoft 365 Exchange Online par des principaux de service compromis (des techniques largement utilisées par APT29/Midnight Blizzard).

Les règles organisées concernées sont :

  • O365 Mailbox Access by Service Principal with Multiple User Agents
  • O365 Multiple Mailboxes Accessed by Service Principal
  • O365 Mailbox Access by Service Principal from Multiple ASNs
  • O365 Multiple Mailboxes Accessed via Microsoft Graph API

❌ Défauts fondamentaux de la logique de Google

Cette suite de règles contient des incohérences logiques systémiques entre l'objectif déclaré et l'implémentation YARA-L, probablement dues à la réutilisation de code au sein du pack de règles. Les règles ne parviennent pas à distinguer correctement les principaux de service automatisés de l'activité humaine standard, ce qui génère des alertes déclenchées par le comportement normal des employés.

Défaut 1 : Contradiction de la logique de regroupement

Bien que la description de la règle indique explicitement : « Détecte un principal de service avec un identifiant de session O365 unique... », la section match du YARA-L de la règle « Multiple User Agents » regroupe par $application_id au lieu de l'identifiant de session ($session_id). Cela contredit totalement l'objectif déclaré de la règle, en agrégeant des connexions humaines sans rapport sur une fenêtre de 3 heures uniquement parce qu'elles utilisent la même application.

Défaut 2 : Oubli du client public Outlook Mobile

Les règles suivent les modèles de comportement anormaux (changements d'adresses 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 mobile Microsoft Outlook (27922004-5251-4030-b22d-91ecd9a37ea4).

  • Impact : Sans filtrer ce client public, les employés légitimes qui consultent des boîtes aux lettres partagées depuis leur smartphone et qui changent de réseau (par exemple, en passant du Wi-Fi à la 4G) déclenchent intrinsèquement les alertes Multiple ASNs et Multiple IPs. Des employés différents utilisant iOS et Android pour consulter la même boîte aux lettres départementale déclenchent l'alerte Multiple User Agents.

Défaut 3 : Collision de boîte aux lettres partagée

Pour identifier les comptes de service backend, la logique de Google repose sur cette condition : $e.principal.user.userid != $e.target.user.userid

  • Impact : Cette condition vérifie simplement si l'identifiant de l'acteur est différent du propriétaire de la boîte aux lettres cible. Bien que cela soit vrai pour les principaux de service automatisés, c'est également un comportement standard pour les employés humains accédant à des boîtes aux lettres partagées ou départementales (par exemple, un opérateur ouvrant [email protected]). Ce défaut de conception génère un bruit massif sur le trafic humain opérationnel standard.

✅ Solutions YARA-L ajustées pour les règles O365

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'avez pas nécessairement besoin de désactiver les règles ou d'écrire du code personnalisé. Vous pouvez simplement créer une exclusion directement dans l'interface SIEM de 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 maintenant actives les règles organisées de Google.

Option 2 : Déployer des règles personnalisées (correctif architectural) Si vous voulez 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 détections organisées et déployer des règles personnalisées. Les correctifs consistent à :

  1. Ajouter explicitement Outlook Mobile (27922004-...) à la liste blanche.
  2. Ajouter à la liste blanche les applications de sauvegarde d'entreprise autorisées connues (par exemple, Keepit).
  3. Corriger les sections match pour agréger correctement par session.
Règle ajustée 1 : Multiple User Agents
root@kitploit:~
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)$/
    
    // Extract actual Session ID and App ID
    $session_id = $e.network.session_id
    $application_id = $e.additional.fields["ClientAppId"]
    
    $e.principal.user.userid !=$e.target.user.userid
    
    ( 
      $e.network.http.user_agent = /AppId/ nocase or $e.additional.fields["ClientAppId"] = /./
    )
    
    // EXCLUSIONS: Added Outlook Mobile + Standard Google Exclusions
    $e.additional.fields["ClientAppId"] != /^(27922004-5251-4030-b22d-91ecd9a37ea4|bea75f7a-2505-46e8-9bf6-d3f7da9c9da7|b52893c8-bc2e-47fc-918b-77022b299bbc|...)$/ nocase

  match:
    // Group by both App AND Session to isolate the specific token lifecycle
    $application_id,$session_id over 3h

  outcome:
    $vendor_name = "Microsoft"
    $product_name = "Office 365"
    $source_ua_dc = count_distinct($e.network.http.user_agent)
    $client_app_id = array_distinct($e.additional.fields["ClientAppId"])

  condition:
    // Triggers if the SAME session rotates 2+ User Agents
    $e and $source_ua_dc >= 2
}

Règle ajustée 2 : Multiple Mailboxes Accessed

(Même logique, mais dans les exclusions, assurez-vous de placer sur liste blanche vos solutions de sauvegarde autorisées comme Keepit (a7cd46df...) en plus d'Outlook Mobile).

Règle ajustée 3 : Multiple ASNs

(Contrairement à la règle User Agents, Google a en fait réussi à regrouper correctement par $session_id dans celle-ci. Cependant, il lui manque toujours l'exclusion d'Outlook Mobile. Suivez la même logique d'exclusion que ci-dessus, en conservant la condition sur $source_asn_dc >= 2).

Règle ajustée 4 : Multiple Mailboxes Accessed via Microsoft Graph API

(Même logique. Assurez-vous d'ajouter les applications de sauvegarde autorisées comme Keepit (a7cd46df...) à la regex d'exclusion à la fin du bloc events).


2. UEBA : Total des tentatives d'authentification anormales

Règle : Anomalous Auth Attempts Total by Principal Hostname and Target User ID

(Remarque : UEBA signifie « User and Entity Behavior Analytics ». Ces règles n'utilisent pas de signatures statiques, mais s'appuient plutôt sur des algorithmes mathématiques pour établir une référence du comportement « normal » et alerter en cas d'écarts statistiques).

❌ Défaut de codage en dur et fatigue d'alerte

Cette règle UEBA tente de détecter les pics d'authentification anormaux en calculant la moyenne historique et les écarts types sur 30 jours.

  • Fatigue d'alerte : Dans notre environnement de production, cette règle organisée a généré un taux de vrais positifs incroyablement bas (~0,08 %, avec 2 tickets exploitables sur 2324 alertes). C'est essentiellement du pur bruit.
  • Défaut de code : Google déclare une variable $num_stddevs_away = max(2) au début du bloc outcome. Cependant, dans le calcul de $historical_threshold, le développeur de Google a codé en dur la valeur 2 au lieu d'utiliser la variable. Cette erreur de programmation empêche les analystes de modifier facilement la sensibilité via l'interface ou des variables héritées sans cloner et réécrire entièrement la logique YARA-L.

✅ Recommandations de réglage UEBA

Les tests en conditions réelles montrent qu'ajuster simplement les seuils statistiques (par exemple, augmenter $num_stddevs_away à 3 ou 4, abaisser $coefficient_of_variation_threshold de 0.1 à 0.05, ou augmenter $observation_threshold à 15) est insuffisant : cela réduit le nombre d'alertes hebdomadaires de 710 à 111, ce qui reste excessivement bruyant pour une équipe d'analystes.

  • Approche recommandée : Pour les locataires d'entreprise SecOps, désactivez les alertes du jeu de règles Broad pour « Failed Authentications by Device » et fiez-vous strictement au canal d'alertes Precise. Cette atténuation structurelle est la seule façon efficace d'arrêter le flot d'alertes.
  • Approche personnalisée alternative : Si vous devez la maintenir active, clonez la règle en une règle personnalisée, corrigez le 2 codé en dur dans $historical_threshold pour qu'il corresponde à votre variable personnalisée $num_stddevs_away, et imposez des coefficients de référence plus stricts.

Avertissement : Ces réglages reposent sur une expérience réelle de réponse aux incidents et d'ingénierie SIEM. Testez toujours les règles YARA-L dans votre environnement spécifique avant de les déployer en production.

Télécharger l’outil