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.