Détection et tolérance d'intrusions

Introduction

Les systèmes d'information sont aujourd'hui de plus en plus ouverts sur Internet. Il en découle un nombre croissant d'attaques. Une politique de sécurité autour de ces systèmes est donc primordiale. Outre la mise en place de pare-feu, de systèmes d'authentification, il est nécessaire pour compléter cette politique de sécurité, d'avoir des outils de surveillance pour auditer le système d'information et détecter d'éventuelles intrusions. Ce que nous appelons intrusion signifie pénétration des systèmes d'information mais aussi tentatives des utilisateurs locaux d'accéder à de plus hauts privilèges ou tentatives des administrateurs d'abuser de leurs privilèges.

Les détecteurs d'intrusions

Le domaine de la détection d'intrusion est encore jeune mais en plein développement. Nous dénombrons à l'heure actuelle environ une centaine de systèmes de détections d'intrusions (ou IDS pour Intrusion Détection System), que ce soit des produits commerciaux ou du domaine public. Il est donc devenu très utile d'utiliser des critères pour classifier ces IDS. C'est ce que nous allons présenter dans la suite de cet article.

Les principes d'analyse.

La méthode d'analyse est le principal critère pour sélectionner un IDS. Deux méthodes existent aujourd'hui : l'approche comportementale et l'approche par scénarios.

L'approche comportementale consiste à analyser si un utilisateur a eu un comportement anormal par rapport à son habitude. Par exemple, la secrétaire qui se connecte la nuit à certaines heures, en plus de la journée serait pour l'IDS un comportement inhabituel. Il se base pour cela sur un modèle statistique : des variables seront définies (ici la plage horaire des connections de la secrétaire par jour), et représenteront le profil type (comportement normal) d'un utilisateur. Des recherches sont faites aujourd'hui pour appliquer cette approche sur les réseaux de neurones. La technique est de leur apprendre le comportement normal de l'utilisateur.

Contrairement à l'approche comportementale qui est une analyse plutot aléatoire, l'approche par scénarios nécessite une base de données d'attaques, plus exactement des signatures d'attaques, pour effectuer l'analyse. Une comparaison de ces signatures avec les paquets que l'IDS capture concluera s'il y a eu oui ou non intrusion. C'est ce qui s'appelle le 'pattern matching'.

Chacune de ces approches a ses avantages et ses inconvénients. L'approche comportementale permet de détecter des attaques inconnues (meme s'il est difficile d'établir des profils). Elle ne nécessite pas non plus de construction de base d'attaques, et donc d'un suivi de cette base, mais peut-etre victime de faux positifs : l'IDS détecte des attaques qui n'en sont pas (le cote aléatoire de la méthode). Nous verrons plus loin comment se servir de ce défaut pour passer au travers d'un IDS. Pour l'approche par scénarios, c'est l'inverse. L'IDS se base sur des attaques connues pour effectuer son analyse, mais il est difficile de maintenir cette base de signatures.

Les autres critères

D'autres critères permettent de classer les IDS. Nous n'allons que brièvement en parler meme s'ils ont leur importance:

Lequel choisir finalement ?

L'idéal serait évidemment un système de détection d'intrusions qui remplisse tous ces critères. Nous avons pu voir dans la présentation des différentes techniques d'analyse qu'elles étaient complémentaires. Aucune approche n'est dominante et c'est justement une erreur que de développer une seule méthode d'analyse dans un IDS.

Outre-passer les ids

Les systèmes de détection d'intrusions présentent des limites quant a leur utilité. Nous avons vu précédemment que l'IDS pouvait etre victime de faux positifs, avoir une base de données d'attaques obsolète... A cause de ces limites, des techniques pour attaquer ou passer au travers des IDS et plus particulièrement des NIDS se sont développées. Elles sont nombreuses et je ne pourrai pas les aborder de façon détaillée dans ce document. Je les listerai donc en donnant une explication assez succincte de celles-ci, sachant qu'elles peuvent s'appliquer à certains IDS et non à d'autres.

Les attaques réseaux

Le but principal est de réduire les possibilités du NIDS à détecter les attaques :

Les techniques de RFP

Rain Forest Puppy ou RFP a développé plusieurs techniques anti-IDS au niveau du protocole HTTP qu'il a implémenté dans son scanner cgi Whisker (http://www.wiretrip.net/rfp).

Le principe meme de ces techniques est de lancer les attaques sous une forme différente de celles référencées dans la base de signatures des IDS. Les requetes HTTP ne seront alors pas "matchées" (au sens pattern matching que nous avons vu précédemment). Il rend complexe ces attaques afin que les IDS ne puissent pas les détectent. Il est important aussi de savoir que les techniques suivantes peuvent etre combinées ensemble, selon le système attaqué.

Les tactiques au niveau des buffers overflows

Parmi les attaques que l'IDS peut détecter, il y a les attaques de type buffer overflow. Il analyse pour cela le trafic à la recherche de chaines de caractères telles que "/bin/sh","0x90" (NOP) ... Je ne décrirais pas ici comment fonctionne un buffer overflow, ca n'est pas le but et d'autres articles sont déja parus a ce sujet.

D'autres techniques anti-ids

Je n'ai pu aborder toutes les techniques mais sachez qu'il en existe de nombreuses. Le fait par exemple de changer le port sur lequel agit un cheval de troie. Je n'ai pas abordé non plus les notions d'IP Spoofing mais elles font parties des techniques anti-ids.

La tolérance d'intrusion

Comme vous avez pu le voir, les systèmes de détection d'intrusions ne sont pas infaillibles. Vous etes alors en train de vous demander quel système peut nous assurer un maximum de sécurité. Il existe une alternative à ces systèmes qui sont les systèmes distribues à tolérance d'intrusions.

Définition

Voici une définition issue de la documentation "Intrusion Tolérance in Distributed Computing Systems" que vous trouverez dans les références :

"An intrusion-tolerant distributed system is a system which is designed so that any intrusion into a part of the system will not endanger confidentiality, integrity and availability".

"Un système distribué à tolérance d'intrusions est un système dont le but est de ne pas mettre en danger la confidentialité , l'intégrité et la disponibilité en cas d'intrusion dans une partie du système".

Pour etre plus clair, le concept de tolérance d'intrusion peut etre utilisé sur des systèmes distribués de par leur nature à distribuer, répartir de l'information à plusieurs endroits géographiques. Donc, si nous considérons que notre information sensible est répartie sur plusieurs sites, un pirate meme s'il a réussi à s'introduire sur une partie de notre système ne pourra récupérer qu'une partie de l'information sans aucune signification pour lui.

Mais de quelle manière est implémenté ce concept de tolérance d'intrusion ?

La technique de 'fragmentation-redundancy-scattering'

Cette technique consiste à éclater en plusieurs fragments l'information sensible. Les fragments seront ensuite enregistrés sur plusieurs sites géographiques sans qu'ils aient une relation entre eux. C'est le 'scattering'. Donc si un pirate veut récupérer la totalité de l'information, il doit prendre la main sur l'ensemble des sites. Ce que nous appelons information sensible regroupe les données, les programmes et les droits d'accès. Avec la technique de fragmentation-scattering, nous tolérons donc un certain nombre d'intrusions tout en gardant une confidentialité et une integrité de l'information.

A cette tolérance d'intrusions, nous ajoutons la tolérance de destruction des informations grace à une redondance des fragments. Plusieurs copies de chaque fragment sont archivées sur plusieurs sites différents. Une disponibilité de l'information est donc assurée.

Figure 1. Fragmentation-redundancy-scattering sur un fichier

Cette technique fournit donc tous les services nécessaires à la sécurité de l'information, et semble etre une bonne alternative aux systèmes de détection d'intrusion.

Si vous voulez avoir plus de renseignements, notamment les caractéristiques des différents sites d'un système distribué à tolérance d'intrusions, je vous conseille de lire les deux documents en référence de Yves Deswarte, Laurent Blain, et Jean-Charles Fabre.

Conclusion

Le domaine des systèmes de détection d'intrusions est un sujet très vaste. J'aurais pu parler des honey pots, cette nouvelle méthode de détection d'intrusions et du projet Honeynet (http://project.honeynet.org), de la facon de placer un IDS dans un système d'information en complément du firewall. Toutefois, nous pouvons conclure que les IDS sont loin d'etre infaillibles meme s'ils apportent un complément à la sécurité du système d'information.

Références



Samuel Dralet - samuel.dralet@mastersecurity.fr