En lisant un article sur la détection des intrusions réseau aujourd'hui je suis tombé sur quelque chose qui a faillit me faire prendre une crise cardiaque.
Après avoir un peu gémi puis un peu grogné, je me suis dit qu'il serait bon d'écrire sur l'organisation d'un système de détection d'intrusions vis-à-vis des différentes couches du modèle OSI.
Regardons de plus près l'image choquante. Elle est rayée en rouge volontairement pour ne pas que vous puissiez la retenir facilement en mémoire et qu'à cause de cet article, finalement vous soyez plus confus qu'avant de l'avoir lu :

Qu'est-ce que l'on voit exactement ?
Que la détection d'intrusion réseau n'agit qu'à partir du niveau réseau jusqu'au niveau applicatif. Ce qui est terrible là dedans, c'est que l'on oublie que la plupart des outils de détection d'intrusion de France et de
Chatuzange-le-Goubet utilisent la libpcap comme base pour la capture des données lui permettant ensuite de faire la relation avec les signatures pour en déduire des alertes. De
Snort a
Bro en passant par
Sancp et bien d'autres encore...
L'image est donc incorrecte, et sa version juste et modifiée est :

C'est bien, maintenant vous avez la vérité, mais le sujet de ce billet est de présenter l'interaction des IDS avec les différentes couches et enfoncer le clou parce qu'un peu de rafraichissement de mémoire ne fait jamais de mal.
Liaison de données
Comme expliqué précédemment, c'est au niveau de cette couche que la
libpcap fonctionne. Pour preuve, il vous arrive toujours de voir les paquets arriver lorsque vous mettez un place des règles de firewall. Les trames Ethernet arrivent, sont généralement d'une taille fixée à un maximum de 1500 octets et contiennent l'adresse MAC des cartes physiques qui délivrent les données.
La libpcap copie les données (ce qui peut être un problème de performance, mais la
un certain patch peut vous aider; ainsi qu'un problème d'évasion d'IDS, mais là on dépasse du cadre de ce billet, je reviendrai un jour là dessus), applique ensuite son filtre
BPF pour le délivrer à l'application qui utilise
les fonctions magiques.
Réseau
On peut très bien récupérer les informations concernant les paquets réseau par un autre biais que via la libpcap ou mmap() en utilisant ce que le noyau (je prend Linux comme référence) peut proposer à ce niveau.
Je pense en particulier à
Netfilter, qui a l'avantage de permettre à des modules d'utiliser ses hooks mis à différents points de la couche réseau, et qui en plus offre deux fonctionnalités plaisantes :
- LOG/ULOG : Afin d'envoyer les paquets mis dans cette cible dans un journal système (LOG) ou en vue d'une application utilisateur (ULOG)
- NFQUEUE : Qui renvoie les paquets en espace utilisateur pour les applications qui sont connectées sur la socket nflink en vue de définir un verdict
La seconde technique est ultime. C'est ce qu'utilise d'ailleurs
Snort Inline pour offrir à Snort un mode de fonctionnement en IPS (Intrusion Prevention System). C'est aussi une technique utilisée par
Nufw, un firewall authentifiant. Cela permet au NIDS de prendre directement au niveau du firewall de la décision à appliquer sur un paquet en fonction de si il correspond à un motif d'intrusion ou non.
Transport
Ici rien de vraiment sexy, en géneral la capture se fait au niveau au (des?) dessous.
Session, Présentation
Une fois la capture effectuée, c'est à ce niveau que l'on voit apparaitre ce que certains appellent des dissecteurs, d'autres des préprocesseurs... Il s'agit en fait de décoder des protocoles comme RPC, et
se choper au passages des problèmes intéressants. L'avantage est de pouvoir décoder les protocoles en profondeur pour en faire une analyse plus poussée qu'une simple recherche de motifs sur la charge utile.
Application
À ce niveau, on parle des logs générés par les différentes applications qui sont ensuite analysés par les programmes comme
Prelude LML ou encore
Ossec. On récupère ces informations en utilisant des technologies comme FAM, Gamin ou en faisant soi-même la vérification sur la modification des fichiers.
En espérant avoir apporté un peu de clarté dans tout ceci, n'hésitez pas à me soumettre vos documents choquants en vue d'une analyse