IDMEF : Intrusion Detection Message Exchange Format
Utilisé dans le cadre de la sécurité informatique, IDMEF (Intrusion Detection Message Exchange Format / En français, Format d’Échange de Messages de Détection d'Intrusion) est un format de données servant à échanger des informations de sécurité collectées par les logiciels de détection d'intrusion et de prévention d'intrusion avec les systèmes de management qui communiquent avec eux. IDMEF permet également les interactions avec d'autres outils.
Les messages IDMEF sont conçus pour pouvoir être traités automatiquement. Les détails du format sont décrits dans la RFC 4765[1] de 2007. Cette RFC présente une implémentation du modèle de données en XML ainsi que la DTD associée. Les exigences pour ce format sont décrites dans la RFC 4766[2], et le protocole de transport recommandé (IDXP) est documenté dans la RFC 4767[3]
Format IDMEF
Le but du format IDMEF est de définir les formats de données et les procédures d’échange pour le partage des informations concernant la détection d’intrusion avec les systèmes de réponse et de gestion qui peuvent avoir besoin d’interagir avec eux. Les services de modernisation de l’État français recommandent les formats IDMEF et IODEF pour assurer l'interopérabilité des administrations françaises dans le RGI v2.0 (Référentiel Général d'Interopérabilité) entré en vigueur le .
IDMEF est un format orienté objet bien structuré qui se compose de 33 classes contenant 108 champs dont trois obligatoires:
- La classification
- L'identifiant unique
- La date de création de l'alerte.
Il y a actuellement deux types de messages IDMEF qui peuvent être créés: Heartbeat ou Alert
Heartbeat
Les Heartbeats (Battements de cœur) sont envoyés par les analyseurs afin d'indiquer leur état. Ces messages sont envoyés à intervalle régulier dont la période est définie dans le champ "heartbeatinterval". Si aucun de ces messages n'est reçu pendant plusieurs périodes de temps, il faut considérer que cet analyseur n'est plus en mesure de remonter des alertes.
Les battements de cœur permettent également d'indiquer des informations relatives à l'analyseur.
Alert
Les alertes permettent de décrire une attaque qui a eu lieu, les principaux champs qui constituent l'alerte sont :
- CreateTime : Date de création de l'alerte.
- DetectTime : Heure de détection de l'alerte par l'analyseur.
- AnalyzerTime : Heure à laquelle l'alerte a été envoyée par l'analyseur.
- Source : Détail sur l'origine de l'attaque, peut être un service, un utilisateur, un processus et/ou un nœud.
- Target : Détail sur la cible de l'attaque, peut être un service, un utilisateur, un processus et/ou un nœud ainsi qu'un fichier.
- Classification : Nom de l'attaque et références, comme des CVEs.
- Assessment : Évaluation de l'attaque (sévérité, potentiel impact, etc).
- AdditionalData : Informations supplémentaires relatives à cette attaque.
Il existe trois autres types d'alertes qui héritent de ce schéma :
- CorrelationAlert : Groupement d'alertes liées les unes aux autres.
- ToolAlert : Groupement d'alertes provenant du même outil.
- OverflowAlert : Alerte résultant d'attaque dite de dépassement de tampon.
Exemple
Un rapport IDMEF sur une attaque de type Ping de la mort a l'aspect suivant :
<?xml version="1.0" encoding="UTF-8"?>
<idmef:IDMEF-Message xmlns:idmef="http://iana.org/idmef" version="1.0">
<idmef:Alert messageid="abc123456789">
<idmef:Analyzer analyzerid="bc-sensor01">
<idmef:Node category="dns">
<idmef:name>sensor.example.com</idmef:name>
</idmef:Node>
</idmef:Analyzer>
<idmef:CreateTime ntpstamp="0xbc71f4f5.0xef449129">2000-03-09T10:01:25.93464Z</idmef:CreateTime>
<idmef:Source ident="a1a2" spoofed="yes">
<idmef:Node ident="a1a2-1">
<idmef:Address ident="a1a2-2" category="ipv4-addr">
<idmef:address>192.0.2.200</idmef:address>
</idmef:Address>
</idmef:Node>
</idmef:Source>
<idmef:Target ident="b3b4">
<idmef:Node>
<idmef:Address ident="b3b4-1" category="ipv4-addr">
<idmef:address>192.0.2.50</idmef:address>
</idmef:Address>
</idmef:Node>
</idmef:Target>
<idmef:Target ident="c5c6">
<idmef:Node ident="c5c6-1" category="nisplus">
<idmef:name>lollipop</idmef:name>
</idmef:Node>
</idmef:Target>
<idmef:Target ident="d7d8">
<idmef:Node ident="d7d8-1">
<idmef:location>Cabinet B10</idmef:location>
<idmef:name>Cisco.router.b10</idmef:name>
</idmef:Node>
</idmef:Target>
<idmef:Classification text="Ping-of-death detected">
<idmef:Reference origin="cve">
<idmef:name>CVE-1999-128</idmef:name>
<idmef:url>http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-128</idmef:url>
</idmef:Reference>
</idmef:Classification>
</idmef:Alert>
</idmef:IDMEF-Message>
Logiciels prenant en charge le protocole IDMEF
- Prelude SIEM
- NIDS Snort
- NIDS Suricata ()
- HIDS Ossec ()
- HIDS Samhain ()
- Sagan
- Barnyard 2
- Orchids
- LibPrelude : Partie du Projet Prelude OSS, libprelude permet de communiquer entre les composants du système en utilisant le format IDMEF. Libprelude est codée en C mais de multiples bindings sont disponibles (python, lua, perl, etc.). Elle peut être utilisée dans n'importe quel outil de détection d'intrusion open-source.
- LibIDMEF : LibIDMEF est une implementation de l'IETF (Internet Engineering Task Force), IDWG ( Intrusion Detection Exchange Format Charter Working Group), projet de norme de protocole IDMEF.
- IDMEF Framework Dotnet : Bibliothèque Dotnet pour créer des objets IDMEF et les exporter en XML.
- DILCA – Distributed IDMEF Logical Correlation Architecture : DILCA est une architecture de correlation et de reactions logiques distribuées incluant la collection et la correlation de journaux d'évenements formatés IDMEF (Intrusion Detection Message Exchange Format – RFC 4765[1]) à travers un système basé sur des signatures à plusieurs étapes .
- XML::IDMEF – Un module Perl pour construire/parser des messages IDMEF : IDMEF.pm est une interface pour créer et parser simplement des messages IDMEF. IDMEF est un protocole basé XML inventé principalement pour représenter les messages d'alertes de détection d'intrusions.
- Other module for creating/parsing IDMEF messages
- Snort IDMEF Plugin : Snort IDMEF est un plugin IDMEF XML pour Snort afin d'obtenir en sortie des évenements d'alertes sous la forme de messages IDMEF. Ce plugin est compatible avec Snort 2.x
- A Broccoli server to send IDMEF alerts via Prelude
- Converter for the IDMEF format
- IDMEF Parser
- An IDMEF alerting library for distributed IDPS
Références
Liens externes
- (en) RFC 4765[1], The Intrusion Detection Message Exchange Format (IDMEF)
- (en) RFC 4766[2], Intrusion Detection Message Exchange Requirements (IDMEF)
- (en) RFC 4767[3], The Intrusion Detection Exchange Protocol (IDXP)
- (fr) RGI V2, Référentiel Général d'Interopérabilité ()
- (en) Pravin Kothari, Intrusion Detection Interoperability and Standardization, SANS Institute InfoSec Reading Room,
- (en) SECEF, Project for the promotion of the IDMEF and IODEF formats
- Portail de la sécurité informatique
Tutoriels
- Formats, Introduction rapide sur les formats d'alerte
- Comparaison des formats d'alerte, (CEF, LEEF, SDEE, etc.)
- Format IDMEF, Description détaillée du format IDMEF
- Format SDEE, Schéma détaillé du format SDEE
- Comment utiliser IDMEF, Tutoriel sur le contenu du format IDMEF et comment l’utiliser
- Comment utiliser LibPrelude, Tutoriel détaillé sur comment utiliser Libprelude et coder un client IDMEF (Python, C, Ruby, etc.)
- How to build a sensor, Tutoriel détaillé sur la façon de créer un nouveau capteur qui peut communiquer en IDMEF par la bibliothèque Libprelude.
- LibPrelude IDMEF, Description détaillée de tous les champs IDMEF