KB N°23 : Règles de détection Olfeo avec le Siem Sekoia

Contexte

Cet article traite de l’intégration des journaux (logs) Olfeo SaaS au sein de la plateforme Sekoia afin d’enrichir la visibilité sur les menaces liées à la navigation web et à l’usage des services en ligne. Il présente quelques exemples d’alertes pouvant être implémentées pour identifier des comportements anormaux ou malveillants : accès à des sites catégorisés à risque, tentatives de contournement de politiques de filtrage, tentatives de phishing, exfiltration de données ou tentatives de communications vers des infrastructures de commande et contrôle.

 

Prérequis

  • Bien entendu, il faut avoir configuré le Log Connector Olfeo. Pour ce faire, voici la documentation d’exploitation Olfeo et la documentation d’exploitation Sekoia.
  • Cette fonctionnalité requiert une licence Olfeo particulière. Pour plus d’informations, merci de contacter l’équipe commerciale Olfeo.

 

Données d’entrées Olfeo

Les journaux bruts d’Olfeo sont transformés par le parser Sekoia en champs facilement exploitables pour générer des Alertes, Queries ou Dashboard. Voici une liste non exhaustive des champs pouvant être exploités :

Nom Description
category_label Catégories de la ressource Web requêtée
theme_label Thèmes de la ressource Web requêtée
url URL de la requête
domain Domaine (FQDN) de la requête
action Décision de filtrage Olfeo : Deny, Allow ou Deny with overtight
timestamp Horodatage de l’évènement
dest_ip IP de destination
threat Nom de la menace détectée par l’antivirus de flux Olfeo (vide sinon)
display_name Nom complet de l’utilisateur, tel que synchronisé par votre annuaire
user_id Identifiant unique de l’utilisateur
directory_name Nom de l’annuaire (tel qu’il apparaît dans votre interface d’administration
http_method La méthode HTTP (GET, POST, PUT, etc…)
http_version La version du protocole HTTP utilisée pour cette connexion (1.0, 1.1, 2.0 …)
src_port Port utilisé sur le poste ayant effectué la requête
user_sent_bytes Taille de la requête (body and headers)
user_received_bytes Taille de la réponse retournée à l’utilisateur (body and headers)
user_status_code Code HTTP du statut de la réponse renvoyé par Olfeo SaaS à l’utilisateur

 

 

Catalogue de règles Sekoia

Le SIEM Sekoia propose un catalogue de règles de détection (built-in), maintenues et vérifiées par leurs équipes. Actuellement au nombre d’un millier, ces règles couvrent divers scénarios de détection d’intrusions, comportements menaçants et anomalies.

Le format d’entrée Olfeo est compatible avec une cinquantaine de ces règles que nous vous recommandons donc d’activer.

 

Règles personnalisées

Dans cette partie, nous allons vous présenter quelques exemples d’alertes tirant parti des spécificités du produit Olfeo SaaS.

Dans ces exemples, nous utilisons principalement 3 variables qui sont à ajuster en fonction de la taille de votre organisation, des habitudes de navigation de vos utilisateurs et de votre environnement technique. L’objectif est de lever les alertes les plus pertinentes possibles et d’éviter les faux positifs.

  • X => Nombre de requêtes
  • Y => Nombre d’utilisateurs
  • T => Période en min
  •  

1 – Alertes de sécurité et menaces techniques

Alertes associées à une campagne malveillante via des domaines identifiés comme dans la catégorie « Virus, Spywares, Phishing, Codes Malicieux » :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers la catégorie Virus, Spywares, Phishing, Codes Malicieux regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T. Exemple de configuration de cette règle via l’interface Sekoia :

  • Editer une nouvelle règle : + New rule
  • Name : Menace ciblée : Virus, Spywares, Phishing, Codes Malicieux
  • Description : Multiples (X) tentatives d’accès. Ciblé pour un utilisateur vers des domaines catégorisés comme : Virus, Spywares, Phishing, Codes Malicieux. Interval de detection : T min
  • Effort : Elementary (champ indiquant l’effort d’ajustement de la règle avant passage en production)
  • Detected Treat(s) : Ici vous pouvez choisir des techniques de la matrice MITRE ATT&CK’s, dans notre cas : Supply Chain Compromise et Phishing.
  • Specify your Detection patternes : Cette partie permet d’étier la stratégie de détection et de corrélation par l’intermédiaire de règles SIGMA. Pour cette règle le pattern est le suivant :
name: Menacecible
detection:
selection:
olfeo.request.category: 'Virus, Spywares, Phishing, Codes Malicieux'
condition: selection
---
action: correlation
type: event_count
rule: Menacecible
timespan: T
group-by: source.user.name
condition:
gte: X
  • Categoriy : Malicious Traffic (avec type à blacklist)
  • Severity : 50%

 

Alerte 2 (focalisée sur une ressource web) : Corrélation des tentatives d’accès sur la catégorie Virus, Spywares, Phishing, Codes Malicieux regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T. Exemple de configuration de cette règle vie l’interface Sekoia :

  • Editer une nouvelle règle : + New rule
  • Name : Menace globale : Virus, Spywares, Phishing, Codes Malicieux
  • Description : Multiples tentatives d’accès vers des domaines catégorisés comme Virus, Spywares, Phishing ou Codes Malicieux. Tentative concernant Y utilisateurs. Intervalle de détection : T min
  • Effort : Elementary (champ indiquant l’effort d’ajustement de la règle avant passage en production)
  • Detected Treat(s) : Ici vous pouvez choisir des techniques de la matrice MITRE ATT&CK’s, dans notre cas : Supply Chain Compromise et Phishing.
  • Specify your Detection patternes : Cette partie permet d’étier la stratégie de détection et de corrélation  par l’intermédiaire de règles SIGMA. Pour cette règle le pattern est le suivant :
name: Menaceglobale
detection:
selection:
olfeo.request.category: 'Virus, Spywares, Phishing, Codes Malicieux'
condition: selection
---
action: correlation
type: value_count
rule: Menaceglobale
group-by: url.domain
timespan: T
field: source.user.name
condition:
gte: Y 
  • Categoriy : Malicious Traffic (avec type à blacklist)
  • Severity : 50%


Alertes associées à une campagne malveillante via URL ou IP inconnues :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers les catégories IP inconnues ou URL inconnues regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T.

Alerte 2 (focalisée sur plusieurs utilisateurs) : Corrélation des tentatives d’accès sur les catégories IP inconnues ou URL inconnues regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T.

Nota : les catégories IP inconnues ou URL inconnues sont par définition non vérifiées par l’équipe de classification Olfeo et peuvent donc être la source de nombreuses menaces (phishing, C2, code malveillant, etc…). Bloquer ces 2 catégories permet une approche Zero Trust.

Alertes associées à du malvertising ou à des serveurs C2 :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers les catégories Domaines parkés ou Caches regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T.

Alerte 2 (focalisée sur plusieurs utilisateurs) : Corrélation des tentatives d’accès sur les catégories Domaines parkés ou Caches regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T.

Alertes associées à des tentatives de contournement du filtrage/exfiltration de données via utilisation de proxy, Redirecteurs et VPN non autorisés :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers la catégorie Proxies, Redirecteurs regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T.

Alerte 2 (focalisée sur plusieurs utilisateurs) : Corrélation des tentatives d’accès sur la catégorie Proxies, Redirecteurs regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T.

 

2 – Alertes concernant les risques de fuite de données

Alertes associées à des upload de fichiers trop fréquents vers des IA générative :

Alerte 1 (focalisée sur un utilisateur) : Détecter X upload de fichier vers la catégorie IA générative pour un utilisateur sur T min. L’exemple ci-dessous de configuration de cette alerte est fonctionnel pour les IA Générative ChatGPT, Mistral et Perplexity. En effet, lors de l’upload, une requête avec une URL contenant « upload » ou « uploadFilre » est systématiquement envoyée pour les IA ChatGPT, Mistral et Perplexity (règle non vérifiée pour d’autres IA). Exemple de configuration de cette règle via l’interface Sekoia :

  • Editer une nouvelle règle : + New rule
  • Name : Exfiltration fichiers via IA Generative (Perplexity, Mistral, ChatGPT)
  • Description : Exfiltration de fichiers via IA Generative. Ciblé sur un utilisateur. Pour 2 fichiers uploadé. Sur une période de T min.
  • Effort : Intermediate (champ indiquant l’effort d’ajustement de la règle avant passage en production)
  • Detected Treat(s) : Ici vous pouvez choisir des techniques de la matrice MITRE ATT&CK’s, dans notre cas : Exfiltration Over Web Service: Exfiltration to Cloud Storage.
  • Specify your Detection patternes : Cette partie permet d’étier la stratégie de détection et de corrélation par l’intermédiaire de règles SIGMA. Pour cette règle le pattern est le suivant :
name: Exfiltration
detection:
  selection1:
    olfeo.request.category: 'IA Générative'
  selection2 :
    url.original|contains: 
      - upload
      - uploadFile
  condition: selection1 and selection2
---
action: correlation
type: event_count
rule: Exfiltration
timespan: 5m
group-by: source.user.name
condition: 
  gte: 2

 

Alerte associée au recours important (trop) à des outils de stockage en ligne :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers la catégorie stockage de données en ligne regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T.

Alerte 2 (focalisée sur plusieurs utilisateurs) : Corrélation des tentatives d’accès vers la catégorie stockage de données en ligne regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T.

 

3 – Alertes concernant des comportements anormaux ou abusifs

Alerte associée à des comportements abusifs sur les heures de bureau :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers le thème Divertissements et Société regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T et sur les heures de bureaux. Exemple de configuration de cette règle via l’interface Sekoia :

  • Créer un règle sur le même principe que les exemples précédents
  • Puis, modifier cette règle pour qu’elle soit effective uniquement sur les heures de bureau : + Alert filter
  • Name : Filtre HO
  • Description : Activation règle sur les heures de bureau
  • Sigma pattern : Cette partie permet d’éditer la fenêtre temporelle de détection de la règle. Par exemple, de 8h à 9h du lundi au mercredi :
detection:
  working_hours_utc:
    timestamp|timerange: 08:00-19:00
  working_days:
    timestamp|day_of_week:
      - monday
      - tuesday
      - wednesday
  condition: working_hours_utc and working_days

 

4 – Alertes de conformité légale et risque pénaux

Alerte associée à des tentatives d’accès trop importante à des ressources représentant un risque pénal :

Alerte 1 (focalisée sur un utilisateur) : Corrélation des tentatives d’accès vers le thème Risque juridique regroupées par utilisateur, et on génère une alerte si X tentatives d’accès dans une fenêtre temporelle T.

Alerte 2 (focalisée sur plusieurs utilisateurs) : Corrélation des tentatives d’accès vers le thème Risque juridique regroupées par IP/URL, et on génère une alerte si Y utilisateurs tentent d’y accéder dans une fenêtre temporelle T.