IDS - Syst�me de D�tection d'Intrusion, Partie II
ArticleCategory: [Choose a category, translators: do not translate
this, see list below for available categories]
SystemAdministration
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in de Klaus
Müller
de to en Jürgen
Pohl
en to fr Jean-Etienne Poirrier
AboutTheAuthor:[A small biography about the author]
Pour le moment, Klaus Müller (aussi connu sous le nom de 'Socma') est
toujours �tudiant. Il s'occupe avec de la programmation sous Linux et les
sujets li�s � la s�curit�.
Abstract:[Here you write a little summary]
Dans la premi�re partie, nous
nous sommes concentr�s sur les attaques types sur les Syst�mes de
D�tection d'Intrusion (IDS, Intrusion Detection Systems). La seconde
partie introduit les m�thodes pour les d�couvrir et nos r�ponses :
l'application de signatures et de filtres sont parmi celles-ci.
Finalement, nous introduirons Snort et LIDS.
ArticleIllustration:[One image that will end up at the top of the
article]
ArticleBody:[The main part of the article]
Les possibilit�s d'analyse
Pr�c�demment, nous nous sommes �tendus sur les attaques pour prot�ger les
IDS et les diff�rents syst�mes pour les contrer. Nous avons ensuite couvert les
m�thodes d'analyse et la mani�re dont un IDS d�termine si c'�tait une attaque ou
pas; respectivement si l'attaque a �t� couronn�e de succ�s ou non.
� la base, nous faisons la diff�rence entre la D�tection d'Abus (Misuse
Detection) et la D�tection d'Anomalie (Anomaly Detection). La D�tection
d'Abus utilise des motifs d�finis sp�cifiques pour d�masquer une attaque.
Ces motifs sont appel�s des � signatures �, elles seront d�taill�es dans une
section d�di�e sp�cifique. Pour le moment, nous avons besoin de savoir que
nous pouvons d�finir des signatures qui cherchent une certaine cha�ne
(par exemple � /etc/passwd �) dans le trafic r�seau, refusent les demandes
d'acc�s � des fichiers sp�cifiques et envoient une alerte. L'avantage de
la D�tection d'Abus est la faible probabilit� de fausses alarmes puisque
les crit�res de signatures peuvent �tre d�finis de mani�re pr�cise. Les
d�savantages sont aussi �vidents : les nouvelles attaques passent fr�quemment
sans �tre d�tect�es faute de d�finition (voir la section ... sur les
signatures).
L'autre m�thode est la D�tection d'Anomalie. Cela signifie simplement
qu'un profil des activit�s normales de l'utilisateur a �t� cr��. Si le
comportement de l'utilisateur d�vie trop de ce profil, une alarme est
d�clench�e. La premi�re �tape de cette analyse est la cr�ation de profils
(base de donn�es) des activit�s � normales � de l'utilisateur. Un grand
nombre d'�tapes peuvent �tre enregistr�es : Combien de fois l'utilisateur
ex�cute-t-il des commandes sp�cifiques ? Quand ex�cute-t-il des commandes
sp�cifiques ? Combien de fois ouvre-t-il des fichiers sp�cifiques ? ... Un
petit exemple : l'utilisateur � Exemple � ex�cute /bin/su trois fois
par jour (cette valeur sera dans le profil). De mani�re soudaine, un jour,
l'utilisateur � Exemple � ex�cute su sept fois dans la journ�e, plus
de deux fois plus souvent que la normale. La D�tection d'Anomalie
d�tectera ce comportement � anormal � et avertira l'administrateur au sujet
des sept ex�cutions de su de l'utilisateur � Exemple � alors que
trois sont la moyenne � normale �. Les d�savantages de cette proc�dure me
sont apparus clairement lorsque j'ai commenc� son impl�mentation (voir
l'exemple de COLOID, � la fin). La m�thode pour installer la base de
donn�es des activit�s de l'utilisateur, requiert des calculs intensifs.
Nous surveillons, par exemple, combien de fois l'utilisateur a ouvert dix
fichiers sp�cifiques. Avec chaque commande open(), on doit v�rifier
si cela concerne un des dix fichiers sp�cifiques et si le r�sultat est
positif, le compteur correspondant est incr�ment�. N�anmoins, c'est une
belle opportunit� de d�couvrir de nouvelles techniques d'attaques
puisqu'elles appara�tront tr�s probablement comme � anormales �. En outre,
l'administrateur lui-m�me peut d�finir quelle d�viation doit �tre
consid�r�e comme � anormale �, par exemple une d�viation de 10% ou m�me
75%... En utilisant cette m�thode, nous devons faire attention � g�n�rer
les profils d'utilisateur dans un r�seau � sain �, sinon le comportement de
l'attaquant sera consid�r� comme normal et la conduite d'un utilisateur
l�gitime comme anormale.
En g�n�ral, la D�tection d'Anomalie inclut les proc�dures suivantes :
- D�tection de Seuil : dans cette zone, les compteurs sont utilis�s,
ils comptent combien de fois ce qui est ex�cut�, ouvert, d�marr�...
Cette analyse statique peut �tre augment�e par la D�tection � Heuristique �
de Seuil.
- D�tection bas�e sur des R�gles : bas�e sur des r�gles d�finies, que
l'usage d�vie de ces r�gles et une alarme est d�clench�e.
- Mesure Statique : le comportement de l'utilisateur et du syst�me se
conforme � une signature qui a �t� soit pr�-d�finie, soit �tablie par
d'autres moyens. Un programme notant l'activit� normale de l'utilisateur
pour la d�finition de signatures est souvent inclus.
La D�tection � Heuristique � de Seuil, dans ce cas, signifie que le compteur
(combien de fois a �t� ex�cut� ce qui peut l'�tre) n'est pas initialement
d�fini � une valeur statique mais dynamique. Qu'un utilisateur ex�cute
normalement /bin/login/ quatre fois, le compteur pourrait �tre
d�fini alors � cinq ...
La D�tection d'Anomalie de Protocole repr�sente un sous-groupe de la
D�tection d'Anomalie. C'est une technique relativement r�cente ; elle
fonctionne, � la base, comme la D�tection d'Anomalie. Chaque protocole a
une signature � pr�-d�finie � (voir les RFCs correspondantes). Le but de la
D�tection d'Anomalie de Protocole est de trouver si le comportement du
protocole est comme celui pr�-d�fini ou non. Plus d'attaques sont bas�es
sur l'abus de protocole qu'on pourrait le croire ; ce sous-groupe est donc
assez important pour les IDS. En regardant de nouveau la section sur le
balayage (scanning), nous pouvons trouver quelques indicateurs pour la
D�tection d'Anomalie de Protocole.
- V�rifier si aucun drapeau n'est d�fini (NULL scan)
- V�rifier si tous les drapeaux sont d�finis (XMas scan)
- V�rifier si des combinaisons d�pourvues de sens sont d�finies, comme
SF
- ...
Dans les RFC correspondantes, nous trouverons les sp�cificit�s correctes
ainsi que les types de comportements qui ne devrait pas se produire et quel
type de comportement devrait avoir lieu en r�ponse � un �v�nement
sp�cifique. En outre, il y a la D�tection d'Anomalie d'Application (qui
fonctionne presque comme les IDS bas�s sur Application). Dans la
litt�rature, j'ai trouv� plus d'indications sur le sujet et je l'ai
approfondi. Bien s�r, un programme a un comportement � normal �, par
exemple : comment r�agit-t-il � l'�v�nement X, Y ou si un utilisateur
note quelque chose d'erron�. Souvent, les binaires existant (par exemple,
ps, netstat, etc.) sont remplac�s par l'entr�e de l'utilisateur,
pour cacher des processus sp�cifiques dans le cas de ps. Avec la
D�tection d'Anomalie d'Application, il serait possible de d�tecter le
comportement � anormal � d'un programme. Quelques IDS bas�s sur application
fonctionnent ainsi, mais j'ai peu d'exp�rience avec eux.
Finalement, voici une autre nouvelle m�thode parmi les IDS : la
Pr�vention d'Intrusion. Elle est appliqu�e par quelques nouveaux IDS et
diff�re des pr�c�dentes m�thodes de d�tection d'intrusion d�crites
pr�c�demment. A la place d'analyser les logfiles/ du trafic c'est-�-dire
d�couvrir les attaques apr�s qu'elles se soient d�roul�es, la Pr�vention
d'Intrusion essaie de pr�venir ces attaques.
Contrairement aux IDS classiques, aucune signature n'est utilis�e pour
d�tecter les attaques. Ce qui suit est une courte explication sur la
mani�re dont travaille ces IDS. Leurs fonctionnalit�s devraient devenir
claires avec les exemples suivants :
- Surveillance du comportement d'application
- Cr�ation de r�gles d'application
- Alerte suite aux violations
- Corr�lation avec d'autres �v�nements
- Interception d'appels au syst�me
- ...
La � surveillance du comportement d'application � se rapproche des IDS
bas�s Application c'est-�-dire que le comportement de l'application est analys� et
not� (quelles donn�es sont normalement demand�es, avec quels programmes
elle interagit, quelles ressources sont requises...). Comme la D�tection
d'Anomalie, elle essaie de trouver la mani�re dont un programme op�re
normalement, ce qu'il est permis de faire.
La troisi�me fonctionnalit� (� Alerte suite aux violations �) ne n�cessite
aucune explication : cela signifie qu'une alerte est envoy�e seulement en
cas de d�viation (c'est-�-dire quand une attaque est d�tect�e). Cela peut r�sulter
simplement en une entr�e dans un journal ou un blocage de ressources.
Avec la seconde fonctionnalit� (� Cr�ation de r�gles d'application �), ce
qui est appel� une r�gle d'application est �tabli en se basant sur
l'information r�sultant de l'analyse en premi�re partie (� Surveillance du
comportement d'application �). Cet ensemble de r�gles donne des
informations sur ce que peut faire une application (quelles
ressources peut-elle demander ?) et ce qu'il n'est pas permis de faire � une
application.
La � Corr�lation avec d'autres �v�nements � signifie un partage
d'informations entre des senseurs coop�ratifs, cela donnant une meilleure
protection contre les attaques.
Application
|
V
Action
|
V
--------------------------
| D�cision en temps r�el |
--------------------------
/ \
Refuser Permettre
/ \
Alerte Executer une Action
Ce diagramme simplifi� devrait clarifer une fois de plus le processus.
Avant toute activit�, une � d�cision en temps r�el � est ex�cut�e (c'est-�-dire
l'activit� est compar�e � l'ensemble de r�gles). Si l'activit� est
ill�gale (c'est-�-dire si le programme demande des donn�es ou veut les changer
m�me s'il ne lui est pas permis d'acc�der aux donn�es du syst�me), une
alarme est donn�e. Dans la plupart des cas, les autres senseurs (ou une
console centrale) en sera aussi inform�e. Cela devrait emp�cher les autres
ordinateurs du r�seau d'ouvrir ou d'ex�cuter des fichiers sp�cifiques. Si
l'activit� se conforme � l'ensemble de r�gles, la permission sera accord�e
et l'activit� aura finalement lieu.
Finalement, voici le dernier item sur notre liste : � Interception d'appels
au syst�me �. Manipuler les appels au syst�me (c'est-�-dire ce qu'on appelle les
rootkits) sont fr�quennement d�tect�s. L'approche de l'interception des
appels au syst�me est assez simple : avant qu'un appel au syst�me soit
� accept� �, on le v�rifie compl�tement. Le v�rifier signifie, par exemple,
se poser les questions suivantes (voir aussi [5]) :
- qui a demand� l'appel au syst�me (quel programme) ?
- sous quelles autorisations d'utilisateur tourne le processus
(root...) ?
- � quoi l'appel syst�me essaie-t-il d'acc�der ?
Cela permet la surveillance des essais de changements d'importants
fichiers du syst�me ou de la configuration. Nous n'avons qu'� v�rifier si
l'appel syst�me satisfait l'ensemble de r�gles pr�d�fini ou non.
Programme
|
V
Appel Syst�me
|
V
Interception de l'Appel Syst�me
/ \
Refus Permission
| |
Ne pas effectuer Noyau
l'appel syst�me
Puisque la Pr�vention d'Intrusion est relativement nouvelle (par
comparaison avec les autres m�thodes), plus d'informations sur le sujet
seront disponibles.
En conclusion, un conseil pour OKENA, un IPS � fort potentiel. Dans la
section des articles (white paper) sur www.okena.com, vous pourrez trouver
plus d'informations sur Storm Watch. Pour avoir des informations au sujet
des imperfections de Storm Watch, voyez [6].
Signatures
Maintenant, nous allons voir l'utilisation de signatures dans les IDS. La
seconde partie va couvrir leurs faiblesses.
Concept
A l'aide des signatures, les attaques connues peuvent �tre reconnues, une
signature correspondant � un certain motif dans les donn�es du traffic. Ce
motif peut �tre une vari�t� d'�l�ments comme des cha�nes, un en-t�te
remarquable (avec des combinaisons de drapeaux inhabituelles), des ports
connus pour �tre utilis�s par des trojans. La plupart des attaques ont
certaines caract�ristiques, par exemple des drapeaux sp�cifiques sont
d�finis ou des cha�nes dans le corps. � travers les signatures, on essaie
de d�couvrir les attaques � partir de ces caract�ristiques.
Je souhaiterais commencer avec ce qu'on appelle les Signatures de Charge
Utile (� Payload Signatures �). Voici une partie d'un paquet de charge utile
:
00 00 00 00 E9 FE FE FF FF E8 E9 FF FF FF E8 4F ...............
0 FE FF FF 2F 62 69 6E 2F 73 68 00 2D 63 00 FF FF .../bin/sh.-c...
Comme nous le verrons plus tard dans la description des r�gles de SNORT,
il y a plusieurs options pour effectuer cela. On cherche g�n�ralement des
cha�nes sp�cifiques (dans Snort, avec � content � ou � content-list �) dans le
contenu de la charge utile. Admettons que quelqu'un veuille acc�der �, par
exemple, un fichier de mot de passe (par exemple /etc/passwd), on
peut chercher dans la charge utile (pour /etc/passwd) et, si le
paquet contient cette cha�ne, des contre-mesures peuvent �tre entreprises
comme :
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 \
(msg:"WEB-MISC/etc/passwd";flags: A+; content:"/etc/passwd"; \
nocase;classtype:attempted-recon; sid:1122; rev:1;)
Une autre possibilit� est la d�tection de paquets qui ne comportent pas une
cha�ne sp�cifique.
Une autre approche pour se prot�ger d'un possible d�bordement de tampon
est de contr�ler la taille des paquets sur un port sp�cifique. Il est en
g�n�ral possible de d�finir le port source, le port de destination et
les requ�tes �manant de ports sp�cifiques ou destin�s � des ports
sp�cifiques peuvent �tre interdits. Les cha�nes signature sont en g�n�ral
des signatures de corps, par exemple, la recherche d'une cha�ne
sp�cifique dans la signature d'une cha�ne dans le corps.
Quoi d'autre peut �tre d�tect� � partir des signatures ? Chercher des
cha�nes sp�cifiques dans la charge utile n'est pas toujours la meilleure
solution. Une autre possibilit� est de laisser la recherche de signature
pour une combinaison de drapeau dans l'en-t�te TCP. Si, dans un paquet, le
bit SYN tout comme le bit FIN sont d�finis, cela repr�sente une anomalie
qu'un attaquant pourrait utiliser pour trouver des fonctionnalit�s
sp�cifiques du syst�me d'exploitation (ou le syst�me d'exploitation
lui-m�me). Comme nous l'indiquions au d�but, il y a des ports sp�cifiques
qui sont connus pour �tre pr�f�r�s par les trojans, par exemple les ports
31337 ou 27374.
Peut-�tre cela deviendra-t-il plus clair si j'explique le processus avec
un exemple. Jetons un oeil aux indicateurs typiques d'une attaque synscan
:
- IP sources diff�rentes
- Le port TCP Src et Dest est 21
- Type De service 0
- Identifiant d'IP 39426
- SF d�fini (SYN et FIN)
- D�finition de diff�rentes s�quences de nombres
- D�finition de diff�rents nombres de remerciement
(acknowledgment)
- Taille de fen�tre TCP est 1028
Dans des cas comme celui-ci, la fonction de la signature devrait �tre de
pouvoir diff�rencier entre les fonctionnalit�s � normales � et � anormales �
d'une connection. Quelques IDS tiennent des bases de donn�es sp�ciales
avec l'information, comme montr� ci-dessus, il vont y chercher les
correspondances.
En principe, les anomalies peuvent �tre d�tect�e dans l'exemple synscan
avec la v�rification de signature :
- Les ports Source et Destination Port sont 21 (File Transfer Protocol
- ftp);
- Un m�me num�ro de port source et de port destination n'indique pas
in�vitablement l'imminence d'une attaque, seulement une probablilit�;
- SF d�fini, comme mentionn� plus haut, cela ne devrait pas se produire
puisqu'on ne devrait pas demander une connection et la terminer au m�me
moment;
- Num�ro de validation (acknowledgment) n'est pas �gal � 0, m�me si
seul SF et pas ACK est d�fini. Si ACK n'est pas d�fini, le num�ro de
validation devrait �tre 0;
- L'ID d'IP est toujours 39426, m�me si ce nombre ne devrait pas
rester constant (selon la RFC) mais cela n'indique pas in�vitablement
une attaque synscan : la m�me chose se produit lors d'une taille constante des
fen�tres...
Le d�veloppement de la signature pour la d�tection d'une attaque synscan
doit prendre plus de crit�res que ceux mentionn�s ci-dessus. Le but de
la signature devrait �tre la d�tection d'attaques existantes tout comme
celle de nouvelles attaques. Pour cette raison, des caract�ristiques
g�n�rales et sp�ciales devraient �tre combin�es pour augmenter la
probabilit� de d�tecter une attaque. M�me s'il serait possible d'�crire
une nouvelle signature pour chaque version d'une attaque, cela pourrait
nous occuper pour longtemps, nous emp�chant de faire des choses plus
importantes. Ainsi, nous devons faire attention aux signatures d�tectant
le plus possible d'attaques (et leurs versions), sans n�cessit� de les
�diter.
Les signatures devraient �tre �crites pour d�tecter les attaques
sp�cifiques mais on a aussi besoin de signatures g�n�rales pour trouver
les anomalies. Un exemple de signature pour la d�tection d'une attaque
sp�cifique est montr� ci-dessus (l'attaque de synscan). Une signature
plus g�n�rale, par exemple, pourrait �tre la v�rification pour les
crit�res suivantes :
- num�ro de validation (acknowledgment number) diff�rent de 0 m�me
si ACK n'est pas d�fini
- combinaisons de drapeaux anormales dans l'en-t�te TCP (SYN et FIN)
ou d'autres (voir la description des scans)
- ...
Les signatures qui, en g�n�ral, cherchent des anomalies dans les
protocoles sont appel�es des � Signatures bas�es sur l'Analyse de
Protocole � alors qu'un autre groupe est connu comme � Packet Grepping �.
Faiblesses
M�me si la m�thode des signatures de corps (y compris les
signatures de cha�ne) semble �tre assez s�re, il y a moyen de les
contourner. J'�crirai probablement un papier sur la mani�re de contourner
les r�gles de Snort mais je vais me limiter ici � l'essentiel. Une
signature, comme montr� plus haut, recherche � /etc/passwd �,
avec la mise en majuscule nocase ignor�e. Cependant, si nous
approchons /etc/passwd indirectement et pas directement (par
exemple si l'attaquant utilise � /etc/blablabla/.../.../\passwd �),
est-ce que la signature tirera quand m�me le signal d'alarme ? Non, parce
qu'elle cherche pour /etc/passwd (et les autres versions en
minuscule/majuscule). Une autre limite de ces signatures est la d�tection
des attaques les plus connues et leur recherche des vuln�rabilit�s
connues. Les nouvelles versions d'attaques sp�cifiques ne sont souvent pas
d�couvertes ... D'autres signatures (qui sont sp�cialis�es pour des
attaques sp�cifiques) ou les signatures g�n�ralis�es ont l'avantages de
d�couvrir ces nouvelles attaques. Cependant, on doit faire attention lors
de la cr�ation de r�gles de signature. Une signature qui est sp�cialis�e
dans une attaque sp�cifique ne trouvera pas une variante l�g�rement
modifi�e (par exemple : � la place d'une valeur d'ID d'IP de 39426, la
nouvelle attaque a une valeur variable ...). En tra�ant les signatures
g�n�rales (signatures bas�es sur l'analyse de protocole), nous devons �tre
s�r que les r�gles sont r�ellement d�finies globalement, c'est-�-dire qu'elles
doivent �tre autoris�es � montrer des anomalies qui ne peuvent ou ne
devraient pas arriver.
Un autre �cueil appara�t � l'examen plus serr� de l'attaque Unicode (voir
[4]). Voici une description typique d'un trou de s�curit� dans MS IIS qui
a �t� permis par l'attaque Unicode :
� Synth�se :
Une faille existe dans Internet Information Server (IIS) de Microsoft ;
elle permet aux utilisateurs distants de lister le contenu de r�pertoires,
voir les fichiers, les effacer et d'ex�cuter des commandes arbitraires.
Les attaquants pourraient utiliser l'ensemble de caract�res Unicode pour
cr�er des URL afin d'acc�der, via IIS, aux ressources qui devraient �tre
normalement inaccessibles. Toutes les versions r�centes d'IIS sont
affect�es par cette vuln�rabilit�. L'exploitation de celle-ci est
triviale. ISS X-Force est au courant de l'exploitation r�pandue de cette
vuln�rabilit�. �
Un probl�me pour les IDS r�side dans le fait que les caract�res en UTF-8
ont plusieurs codes avec le m�me r�sultat, par exemple � A � : U+0041,
U+0100, U+0102, U+0104, U+01CD, U+01DE, U+8721. Puisque MS IIS n'est pas
sensible � la casse, il y a de nouveau de nombreuses possibilit�s
d'afficher plusieurs caract�res (par exemple, il y a 83 060 640
possibilit�s diff�rentes d'afficher AEIOU).
Par exemple, si un attaquant appelle
� http://victim/../../winnt/system32/cmd.exe �, IIS va g�n�rer une erreur.
Cependant, en rempla�ant "../.." par son �quivalent en UTF-8, aucune
erreur n'est g�n�r�e : � http://victim/..%C1%9C../winnt/system32/cmd.exe �.
De plus, avec les codes UTF-8 appel�s � UN-escape �, il est possible
d'ouvrir des pages auxquelles nous ne devrions pas avoir acc�s. Un NIDS a
des difficult�s pour d�tecter ces attaques car ces �v�nements se passent
au niveau applicatif (dans ce cas, l'application d'un HIDS serait plus
appropri�). Le cryptage en g�n�ral repr�sente un probl�me pour les
senseurs - ce fait est fr�quemment exploit� pendant ce temps. Les d�marches de
quelques � producteurs d'IDS � montrent clairement les limites des
signatures : les signatures d�tect�es disponibles connaissent quelques
attaques Unicode mais, apr�s de petites modifications de l'attaque, les
signatures deviennent de nouveau inutiles. Seul NetworkICE a d�velopp�
avec succ�s des signatures qui d�couvrent ces types d'attaques (Snort et
ISS Real Secure ont cependant d�velopp� des signatures qui ont d�tect�
seulement les attaques Unicode connues).
R�ponses
Comme expliqu� pr�c�demment, les IDS analysent les activit�s sur le PC et
sur le net. Mais � quel point serait utile un IDS s'il ne r�agirait pas et
ne nous alerterait pas ? Un IDS serait sans valeur, juste un gaspillage de
performance machine. � la base, la � r�ponse � peut �tre diff�renci�e entre
R�ponse Active et R�ponse Passive. Nous allons expliquer les diff�rences
dans une section sp�cifique.
Le lecteur int�ress� peut se r�ferrer � l'
OPSEC.
S�curis�s par Check Point, les appareils sont des solutions de s�curit� qui
int�grent la technologie Check Point VPN-1/FireWall-1 sur les plates-formes
mat�rielles de nos partenaires.
Ce syst�me permet l'int�gration de syst�mes existants avec FireWall-1. Un
avantage suppl�mentaire est sa reconnaissance mondiale (il a environ 300
partenaires). Si vous d�couvrez une attaque, vous pouvez bloquer l'adresse
IP de l'attaquant (seulement comme une option de r�ponse possible)... Si
vous �tes int�ress�s dans OPSEC, lisez la section � Deployment Platforms �,
vous y trouverez aussi les conditions pour � joindre � le syst�me (pour
devenir un partenaire).
R�ponse Active
Une R�ponse Active signifie une r�action automatique si l'IDS d�tecte une
attaque (ou un essai d'attaque). En fonction de la s�v�rit� de l'attaque,
la plupart des IDS offrent plusieurs options de r�ponse.
1) Agir contre l'intrus potentiel. 2) � Simplement � collecter des donn�es
compl�mentaires (sur l'intrus et son attaque, ses implications). 3) Changer
la configuration
La premi�re r�action possible serait le d�clenchement des �tapes contre
l'intrus. Cela peut inclure une vari�t� d'�tapes comme bloquer l'acc�s de
la personne ou d�clencher des attaques contre l'intrus. Comme nous
l'expliquions en relation avec les pots-de-miel, il est souvent facile de
diriger les attaques contre l'intrus mais c'est aussi ill�gal. Dans ce
contexte, l'effet � Tierce Partie � se montre souvent. Mais qu'est-ce que
cet effet ? Expliqu� graphiquement, l'effet Tierce Partie ressemble �
ceci :
---------- ------------ --------
| Intrus | --------> | Innocent | --------> | VOUS |
---------- ------------ --------
L'effet de Tierce Partie signifie simplement qu'une personne innocente (ou
un r�seau innocent) est attaqu� avec succ�s par l'intrus et, plus tard,
l'intrus utilise ce r�seau pour attaquer le n�tre (et probablement
d'autres r�seaux �galement). Mais quel est le probl�me ? Le probl�me est
que notre r�seau va cat�goriser le r�seau � innocent � comme l'attaquant et
contre-attaquer en cons�quence � innocent � en n�gligeant � l'intrus � ayant
envahi ce r�seau pour lancer une attaque contre nous. R�sultant de notre
attaque (sous la fausse supposition que nous n'attaquerons que les
intrus), des dommages ind�termin�s peuvent �tre caus�s � � l'innocent �. Et
si � l'intrus � a �t� assez intelligent pour cacher ses traces, nous serons
consid�r�s comme responsables pour ces dommages, pas � l'intrus �.
La seconde option (collecter des informations compl�mentaires) est moins
probl�matique. Qu'une attaque ou une intrusion potentielle soit d�tect�e et
� seulement � des informations compl�mentaires sur l'utilisateur et son
attaque seront collect�es. Si un IDS d�termine qu'un utilisateur
sp�cifique a �tendu avec succ�s ses privil�ges (ou qu'un autre type
d'attaque s'est pass�), l'observation de cet utilisateur peut �tre
�tendue, par exemple, en enregistrant ses commandes (si cela n'�tait pas
activ� auparavant), o� cet utilisateur s'introduit, combien de temps il
reste, quand s'introduit-il, quand et � quelle fr�quence s'introduit-il
dans les jours qui suivent, essaie-t-il de transf�rer (FTP) des binaires
sp�cifiques... De cette mani�re, un profil de l'attaquant est cr��. Avec
cela, nous avons l'avantage de pouvoir analyser les journaux (log) en
d�tail, fermer les �chappatoires (loopholes) possibles et cela nous
permettra aussi de prendre des mesures l�gales.
Comme troisi�me option, je vois la modification du syst�me, le pare-feu,
etc. Si l'attaquant utilise des adresses IP sp�cifiques, nous pouvons
emp�cher cet utilisateur de se connecter au r�seau avec ces adresses IP.
Bien s�r, nous pouvons bloquer et noter les autres demandes d'acc�s
d'origines suspectes. Dans certains cas sp�cifiques, nous pouvons
simplement bloquer tout acc�s au r�seau lui-m�me (ou toute requ�te � des
ports sp�cifiques, � partir d'interfaces r�seau sp�cifiques...). Une
autre possibilit� de R�ponse Active est d'arr�ter une connection TCP
(connu aussi sous le nom de � TCP kill �). Pour d�connecter un autre
ordinateur, nous envoyons un RST (drapeau Reset) : cela � tue � la session.
Normalement, RST est envoy� lorsqu'une erreur s'est produite dans la
connection... dans ce cas, il peut �tre utilis� comme IDS (comme dans
ISS RealSecure) pour terminer la session avec un autre ordinateur (pour
MS-Windows NT, il existe un outil avec le m�me nom).
" tcpkill - tue les connections TCP sur un r�seau LAN
.......
tcpkill tue les connections TCP en cours sp�cifi�es (utile pour les
applications bas�es sur libnids qui requi�rent un TCP complet 3-whs pour la
cr�ation de TCB). "
C'�tait un extrait de 'man tcpkill' ...
Comme vous pouvez le voir, il y a de r�elles possibilit�s compl�tes de
r�agir aux attaques. Lancer une contre-attaque parait attractif mais ne
devrait pas �tre effectu�.
R�ponse Passive
En comparaison � la R�ponse Active, la plupart du temps, seuls les
avertissements (warnings) sont not�s et ils doivent �tre surveill�s par
l'administrateur / l'utilisateur. Voici les options de r�action :
1) avertissements, conseils... notation
2) g�n�ration de rapports qui surveillent les syst�mes pour un temps d�fini
et produisent un compte-rendu.
Presque tout IDS est capable de g�n�rer des avertissements ou d'envoyer des
indications � l'utilisateur / au navigateur. Si, par exemple, on essaie
d'effacer un fichier syst�me important, de d�marrer des services
sp�cifiques (ceux dont l'usage devrait �tre interdit)... un
avertissement annon�ant l'incident peut �tre g�n�r�, indiquant �galement
qui y a pris part et � quel moment. Entretemps, de plus en plus d'IDS ont
l'option de g�n�rer ces rapports. Le statut d'un syst�me peut �tre
surveill� sur une grande p�riode de temps, les activit�s peuvent �tre
not�es et un rapport de statut peut �tre g�n�r�. Presque tous les IDS
fournissent l'option de r�ponse passive.
Filtrer
Les filtres sont utilis�s pour identifier les attaques par leur signature.
Cette signature est indirectement reli�e aux signatures mentionn�es
pr�c�demment ; ici, nous cherchons les caract�ristiques typiques d'une
attaque (comme ports destination/source, IPs
destination/source...). Dans une autre partie de cette section, je
vais introduire et expliquer, au moyen de N-code, quelques exemples de
filtres pour des attaques connues. � la fin de cet article, vous trouverez
une page (le guide des utilisateurs avanc�s) qui offre les
caract�ristiques de N-code, si vous n'�tes pas familier avec lui.
land :
# Ceci est un exemple sur la mani�re de d�tecter
# une attaque land en N-code
filter pptp ip () {
if(ip.src == ip.dest)
{
record system.time,
eth.src, ip.src, eth.dst, ip.dest
to land_recdr;
}
}
Puisque des variables inconnues ont �t� utilis�es, voici une courte
explication :
- ip.src = l'adresse IP source
- ip.dest = l'adresse IP destination
- eth.src = l'adresse MAC de la � machine cible �
- eth.dst = l'adresse MAC du � PC source �
- record system.time = note le point dans le temps lorsque la
condition ip.src == ip.dest a �t� remplie
Comme vous pouvez le voir, N-code connait aussi l'op�rateur == ; si vous
lisez le Guide de l'Utilisateur Avanc�, vous trouverez d'autres
similarit�s existantes (avec d'autres langages de haut niveau) comme, par
exemple, le fait que N-code connaisse les op�rateurs +, -, * ou des
op�rateurs d'assemblage comme >=, != ou ==, comme montr�
ci-dessus
Scan Xmas :
Comme vous pourriez vous en souvenir de la section � Types d'Attaques �,
dans un Scan Xmas, tous les drapeaux sont d�finis. Ainsi, il devient
plausible de v�rifier s'ils sont tous d�finis ou non. Pour cela, nous
avons besoin des valeurs des bits d�finis individuellement :
Bit Valeur
--------------------------------------
F-FIN 1
S-SYN 2
R-RST 4
P-PSH 8
A-ACK 16
U-URG 32
---------------------------------------
filter xmas ip() { if(tcp.hdr) { $dabyte = byte(ip.blob,13);
if(!($dabyte ^ 63)) { record system.time,
ip.src,tcp.sport,ip.dest, \ tcp.dport, "UAPRSF" to
xmas_recorder; return; } } }
Ici, de nouveau, il y a des variables inconnues. Laissez-moi vous les
expliquer :
- tcp.hdr = : si tcp.hdr == 0, le paquet ne contient aucun en-t�te TCP
valide ; si tcp.hdr == 1, il en contient
- tcp.dport = port TCP de destination
- tcp.sport = port TCP source
- ip.blob = contenu de charge d'un paquet (sans en-t�te)
- "UAPRSF" signifie que les drapeaux URG,ACK,PSH,RST,SYN et FIN sont
d�finis
$dabyte est une variable locale assign�e � l'octet (ip.blob,13). Pour
expliquer � l'expression byte �, voici une petite d�monstration de bits de
code TCP :
| Src Port | Dest Port | Seq Number | ACK Number | HDR Length | Flags |\
URG | ACK | PSH | RST | SYN | FIN | Win Size | Chksum | Urg Off | Opt |
Nous r�alisons pourquoi 13 octets dans bytes() ont �t� sp�cifi�s : parce
que 13 octets sont suffisant pour contenir les drapeaux. Avant d'�tre
capable de comprendre comment l'octet fonctionne, voici d'abord quelques
remarques sur blob. Si vous vous r�f�rez au Chapitre 3 du Guide de
l'Utilisateur Avanc�, blob est une � s�quence de taille arbitraire d'octets �.
Un 'octet' retourne un octet de l'offset sp�cifi� d'un blob ; la
syntaxe courante ressemble � ceci : byte (str blob_to_search, int offset).
Le premier argument sp�cifie le blob dans lequel il faut chercher
(ci-dessus : ip.blob), le second argument d�fini l'offset (dans
'blob_to_search') de l'octet que l'on recherche. Avec 'if(!($dabyte ^ 63))', on
v�rifie si tous les drapeaux sont d�finis ; cela doit donner 63 si on
additionne les valeurs de tous les drapeaux (32+16+8+4+2+1). Si quelqu'un
souhaite savoir, avec ^, un XOR bit � bit est ex�cut�
Outre les options mentionn�es, N-code offre beaucoup de possibilit�s
compl�tes. Il est par exemple possible de trouver :
- si le paquet est un paquet IP (ip.is)
- la longueur du paquet IP (ip.len)
- le protocole appliqu� au paquet IP (ICMP,TCP or UDP)
(ip.protocol)
- la somme de contr�le d'un paquet ICMP (icmp.cksum)
- le contenu de la charge des paquets ICMP (dans un blob) (avec
icmp.blob)
- si le paquet contient un en-t�te ICMP valide (icmp.hdr)
- si le paquet est un paquet ICMP (icmp.is)
- le type de paquet ICMP comme Echo Reply, Destination inacessible...
- etc...
Vous pourrez trouver des informations additionnelles sur N-code dans le
Guide de l'Utilisateur Avanc� � :
http://www.cs.columbia.edu/ids/HAUNT/doc/nfr-4.0/advanced/advanced-
htmlTOC.html
Dans les version futures de ces articles, un bon nombre de filtres seront
d�crits ; v�rifiez s'il n'y a pas de nouvelles versions � intervalles
r�guliers ;-)
Standards
Dans cette section, je vais vous pr�senter divers � standards � tout
comme des listes / accords qui sont partag�s par de nombreux outils
� experts �.
CVE
CVE est l'abbr�viation de � Common Vulnerabilities and Exposures �
(Exposition et Vuln�rabilit�s courantes) qui n'est rien de plus qu'une
liste d'expositions et de vuln�rabilit�s. A premi�re vue, cela semble
rigolo mais il peut devenir assez pratique plus tard. Diff�rents outils
utilisent diff�rents termes pour les vuln�rabilit�s d�tect�es ; en
utilisant CVE, une description uniforme des diff�rentes
vuln�rabilit�s/expositions peut �tre utilis�e. Ainsi, il n'est plus
n�cessaire d'utiliser le m�me outil que d'autres utilisateurs.
CVE fournit un nom pour une vuln�rabilit�/exposition sp�cifique et une
description uniforme (et standardis�e), emp�chant les incompr�hensions
entre les utilisateurs de diff�rents syst�mes. CVE d�finit une
vuln�rabilit� comme � des probl�mes qui sont normalement regard�s comme des
vuln�rabilit�s dans le contexte de toutes les r�gles de s�curit�s
raisonnables � et une exposition comme � des probl�mes qui sont seulement
des violations de quelques r�gles de s�curit� raisonnables �. Dans CVE, la
diff�renciation entre vuln�rabilit� et exposition est fondamentale. Voici
des exemples de vuln�rabilit�s : phf, les fichiers de mots de passe o�
tout le monde peut �crire... Voici des exemples d'expositions :
utilisation de programme pouvant �tre attaqu�s par force brute ou
l'utilisation de services qui sont attaqu�s, en g�n�ral. Par d�finition et
avec ces exemples, il devrait �tre possible de diff�rencier les
vuln�rabilit�s et les expositions (dans CVE). La diff�rence fondamentale
pourrait �tre la capacit� de l'attaquant d'appliquer des commandes comme un
utilisateur diff�rent ou pouvoir lire/�crire dans des fichiers alors que
cela ne devrait pas �tre possible (� cause des permissions du fichier). Par
contre, les exposition permettent � un utilisateur d'extraire des
informations suppl�mentaires � propos du syst�me (et son statut), ces
activit�s tournant en t�che de fond... Les expositions appara�ssent
suite � des r�glages de s�curit� fautifs qui peuvent �tre � r�par�s �. Les
vuln�rabilit�s peuvent �tre comprises comme des trous de s�curit� dans le
syst�me de s�curit� � normal � (qui devrait inclure la possibilit� de
minimiser la menace d'attaquants potentiels gr�ce � la v�rification de
permission). Cependant, cette liste doit rester � jour et chacune des
vuln�rabilit�s ou expositions n'est pas imm�diatement � accept�e �. Apr�s qu'une
vuln�rabilit� / exposition est d�tect�e, elle re�oit un � num�ro de
candidat � tout d'abord (cela se passe � travers le CNA : Candidate
Numbering Authority). De plus, il sera post� sur le Forum (par l'Editeur
du CVE Editor) et discut� (est-ce que cette vuln�rabilit�/exposition doit
�tre accept�e). Si le Forum d�cide de ne pas accepter le candidat (pour le
moment), la raison de ce refus sera post�e sur le site web. Si le candidat
est accept�, il sera ajout� � la liste (et devient une partie officielle
de CVE). Maintenant, il devrait �tre clair que chaque vuln�rabilit�
(potentielle) re�oit initialement un � num�ro de candidat � puisqu'elle doit
�tre discut�e pour voir si elle est accept�e ou pas. La vuln�rabilit�
re�oit le 'num�ro de candidat' pour la diff�rencier des entr�es
officielles dans la liste. Chaque candidat poss�de 3 champs de base (ils
� l'identifient �) :
- Num�ro
- Description
- R�f�rences
Dans ce contexte, le num�ro est le nom r�el du candidat, compos� de
� l'ann�e d'apparition �, un nombre suppl�mentaire r�v�lant quel candidat
il repr�sente dans la s�quence d'une ann�e :
CAN-Ann�e-s�quence candidat de l'ann�e
Comme indiqu� pr�c�demment, un candidat accept� est ajout� � la liste. Il
en r�sulte que la s�quence 'CAN-ANNEE-Num�ro de candidat' devient
'CVE-Ann�e-Num�ro de candidat'. Un exemple : 'CAN-2001-0078' devient
'CVE-2001-0078' dans la liste.
C'est tout ; pour plus d'information, consultez la page web officielle de
CVE.
Exemples
Dans cette derni�re partie, quelques IDS vont �tre pr�sent�s.
Snort
Puisque Snort est tr�s bien connu et qu'il offre beaucoup d'options, je
vais le d�crire avec plus de d�tails que les autres IDS pris en exemple.
Fondamentalement, Snort peut �tre dans un de ces trois modes : Sniffer
(Renifleur), Packet Logger (Log de paquets) et Network Intrusion Detection
System (Syst�me de D�tection d'Intrusion de R�seau). Dans le mode Sniffer,
Snort g�n�re des paquets sur la console. Dans le mode Packet Logger, il
les note sur le disque dur. Et le mode Network Intrusion Detection permet
d'analyser les paquets. Je vais me concentrer principalement sur le
dernier mode mais voici une courte introduction aux modes Sniffer et
Packer Logger :
En mode Sniffer, une vari�t� d'information sur le paquet peut �tre lue,
comme l'en-t�te TCP/IP :
[Socma]$ ./snort -v
En sortie, nous aurons seulement l'en-t�te IP/TCP/ICMP/UDP. Il y a de
nombreuses options, seules quelques unes seront mentionn�es ici.
-d = va livrer le paquet de donn�es
-e = montre le Data Link Layer
Mode Packet Logger :
A la diff�rence du mode Sniffer, le mode Packet Logger peut �crire les
paquets sur le disque dur. Nous devons seulement assigner un r�pertoire
dans lequel Snort peut les �crire et il va automatiquement passer en mode
Packet Logger :
#le repertoiredelogging doit exister :
[Socma]$ ./snort -dev -l ./repertoiredelogging
Lorsqu'on entre � -l �, Snort r�cup�re parfois l'adresse de l'ordinateur
distant et l'utilise comme nom de r�pertoire (dans lequel se trouvent les
logs), d'autres fois, il prend l'adresse de l'h�te local. Pour noter le
r�seau maison (home network), nous devons sp�cifier ce r�seau dans la
ligne de commande :
[Socma]$ ./snort -dev -l ./repertoiredelogging -h 192.168.1.0./24
Une autre possibilit� est de noter le log en format TCP-DUMP :
[Socma]$ ./snort -l ./repertoiredelogging -b
Maintenant, le paquet tout entier sera �crit, pas seulement des sections
sp�cifiques ; cela �limine la n�cessit� de sp�cifier des commandes
additionnelles. Il est possible d'utiliser des programmes comme tcpdump
pour traduire les fichiers en texte ASCII mais Snort peut faire cela
aussi :
[Socma]$ ./snort -dv -r paquetaverifier.log
Mode Network Intrusion Detection : Pour basculer en mode NIDS, nous
pouvons utiliser une commande comme celle-ci :
[Socma]$ ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
Dans ce cas, snort.conf est le fichier de configuration. Il est utilis�
pour faire savoir � Snort o� il peut trouver ses � r�gles � pour d�terminer
s'il y a une attaque ou pas, si la requ�te doit �tre permise... Les
r�gles, telles que d�finies dans snort.conf, seront alors appliqu�es au paquet
pour l'analyser. Si aucun r�pertoire de sortie sp�cifique n'a �t� �tabli,
le r�pertoire par d�faut /var/log/snort est utilis�. Le r�sultat de sortie
de Snort d�pend du mode d'alerte - bas� sur ceci, l'information est
disponible l�g�rement plus t�t ou plus tard.
----------------------------------------------------------------
| Mode | Comment/Ce qui est affich� |
----------------------------------------------------------------
| -A fast | Temps, IPs/ports Source et Destination, |
| | le Message d'Alerte |
-----------------------------------------------------------------
| -A full | Param�trage par D�faut |
-----------------------------------------------------------------
| -A unsock | Envoi l'avertissement vers un socket |
| | UNIX |
-----------------------------------------------------------------
| -A none | Arr�te les alertes |
-----------------------------------------------------------------
Comme nous l'avons vu, avec l'option -b, nous pouvons noter ce qui se
passe en mode binaire et avec l'option -N, la notation de paquets est
compl�tement cess�e. Mais ce n'est pas la limite ; par exemple, Snort est
capable d'envoyer des messages � syslog. Le r�glage par d�faut pour cela
est LOG_AUTHPRIV et LOG_ALERT. Pour envoyer des messages � syslog, nous
devons seulement entrer � -s � (des exemples suivent). En outre, nous avons
la possibilit� d'envoyer des messages au client smb ou un avertissement
pop-up Windows � un ordinateur sous MS-Windows. Pour utiliser cette
� fonctionnalit� �, nous devons entrer � -enable-smbalerts � lors de la
configuration de Snort.
[Socma]$ ./snort -c snort.conf -b -M MASTATIONWINDOWS
Voici un exemple d'application des modes d'alerte :
[Socma]$ ./snort -b -A fast -c snort.conf
Outre les options d�crites, il en existe d'autres comme celles-ci :
-D = d�marre Snort en mode daemon
-u utilisateursnort = d�marre Snort avec l'UID � utilisateursnort �
-g groupesnort = d�marre Snort avec le GID � groupesnort �
-d = note aussi les donn�es de la couche d'applications
Snort offre de nombreuses options ; si vous rencontrez un probl�me, entrez
juste � snort -h � ou regardez dans les mailing lists si votre probl�me
�tait apparu autre part. La section suivante couvre les r�gles de Snort ;
si vous n'�tes pas int�ress�s par la compr�hension des r�gles existantes
ou par l'�criture de vos propres r�gles, vous pouvez passer cette section.
Comme je l'indiquais � la fin de cette partie (sur Snort), vous pouvez
t�l�charger le Manuel des Utilisateurs de Snort sur www.snort.org : c'est
notre vraie source.
Les r�gles de Snort :
Pour une meilleure compr�hension de Snort, il est obligatoire de conna�tre
les R�gles de Snort. Snort utilise parfois des variables sp�cifiques qui
peuvent �tre d�finies avec l'utilisation de � var � :
var: <name> <wert> var
MON_REZO [192.168.1.0/24,10.1.1.0/24]
alert tcp any any -> $MON_REZO any (flags:S;msg: "paquet SYN";)
Il y a d'autres mani�res d'entrer le nom d'une variable :
$variable = d�finit la variable M�ta
$(variable) = ici, la valeur de la variable � variable � est entr�
$(variable:-default) = si � variable � est d�fini, sa valeur est entr�e ici ; si
"variable" n'est pas d�fini, la valeur � default � est entr�e
$(variable:?msg) = entre la valeur de la variable � variable � ou, si ind�finie,
affiche le message � msg �
Si vous avez �t� confront� � la programmation shell auparavant, ce qui
suit ne devrait pas vous �tre �tranger :
[Socma]$ shelltest=we
[Socma]$ echo hello $shelltestlt
hello
[Socma]$ echo hello ${shelltest}lt
hello world
L'application de $(variable) dans Snort et de ${variable} dans le shell
est identique. Il y a d'autres �quivalents (ou termes semblables) dans la
programmation du shell :
[Socma]$ shelltest = bash
[Socma]$ echo ${shelltest:-nobash}
bash
[Socma]$ echo ${notdefined:-nobash}
nobash
L'application du terme � $(variable:-default) � diff�re seulement dans le
fait que le shell utilise { et } � la place de ( et ).
Le dernier terme existe aussi dans le shell :
[Socma]$ shelltest = bash
[Socma]$ echo ${shelltest:?"then csh"}
bash
[Socma]$ echo ${variablenondefinie:?"pas definie ou nulle"}
pas definie ou nulle
Le but de cette courte excursion �tait � d'associer les connaissances � : j'ai
�t� capable de m�moriser la syntaxe de Snort plus vite en me r�ferrant
mentalement aux termes du shell dont je me rappellais.
De nombreuses options de la ligne de commande peuvent �tre d�finies dans
les fichiers de configuration. Pour cela, � config � est utilis� :
config <directive> [: <valeur> ]
Les � directives � les plus importantes sont :
alertfile = change le fichier dans lequel les alertes sont
enregistr�es
daemon = d�marre le processus comme daemon ( -D)
reference_net = d�fini le r�seau maison (-h)
logdir = d�finit le r�pertoire pour les logs (-l)
nolog = ferme la cr�ation de logs
set_gid = change le GID (-g)
chroot = chroot� dans le r�pertoire sp�cifi� (-t)
set_uid = d�fini l'UID (-U)
Si, par exemple, vous voulez changer le fichier d'alerte en, par exemple,
� meslogs �, vous devez proc�der comme suit :
config alertfile : meslogs
Retour aux r�gles actuelles (ici un extrait de r�gles pour le ftp) :
alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP EXPLOIT overflow";\
flags: A+; content:"|5057 440A 2F69|";\
classtype:attempted-admin; sid:340;rev:1;)
A la base, les r�gles de Snort consistent en deux parties : l'en-t�te de
la r�gle et ses options. L'en-t�te de la r�gle nous informe de trois
choses :
- les adresses IP source et destination
- le protocole
- les actions qui doivent �tre d�clench�es par la r�gle
Dans la r�gle ftp ci-dessus, l'en-t�te est la partie suivante :
Action ip source ip destination
| | |
alert tcp $EXTERNAL_NET any -> $HOME_NET 21
| | |
Protocole de tous ports Port
Comme vous pouvez le voir, l'en-t�te de la r�gle se termine � la premi�re
� ( � et, apr�s ��, les options de la r�gles commencent. Il y a plusieurs
actions possibles (� alert � dans ce cas) qui peuvent �tre lanc�es lorsque
les r�gles de Snort d�couvrent quelque chose de suspect :
- alert = en fonction de la m�thode d'alerte utilis�e (par d�faut,
c'est 'alert full'), une alerte est lanc�e et le paquet impliqu� est
trac�
- log = seul le paquet est trac�
- pass = les r�sultats dans le paquet sont ignor�s
- activate = g�n�re une alerte et retourne vers une autre r�gle
dynamique de Snort (bient�t plus sur ce sujet)
- dynamic = la r�gle reste inactive tant qu'elle est activ�e par une
autre r�gle ; apr�s, elle fonctionne comme � log � (voir ci-dessus)
Le second champ (protocole ; tcp ici) sp�cifie quel protocole n�cessite
une analyse. Les possibilit�s sont : tcp, udp, icmp et ip (dans le futur,
il pourrait en avoir d'autres ... comme ARP, GRE).
En relation avec le champ suivant (ip source), nous trouvons fr�quemment
l'op�rateur � ! � (op�rateur de n�gation).
alert tcp !$REZO_EXTERNE any -> $REZO_MAISON 21
Il r�sulte de cet op�rateur de n�gation que chaque paquet qui n'arrive pas
du $REZO_EXTERNE est trac�. Il y a des possibilit� additionnelles pour
entrer un nombre d'adresses IP (c'est-�-dire une liste d'adresses IP). Les
adresses doivent �tre s�par�es par une virgule et entour�es par [ ].
alert tcp ![addresse ip,addresse ip] any -> ....
Une autre alternative est l'utilisation de � any � qui inclut toutes les
adresses IP.
log tcp any any -> ...
La derni�re partie de l'en-t�te de la r�gle est la sp�cification des
ports, ftp dans notre exemple. Il n'est pas seulement possible de
surveiller un port sp�cifique mais �galement une gamme de ports
(plusieurs ports). Voici les options :
:numeroport -> tous les ports plus petits ou �gaux au numeroport
numeroport: -> tous les ports plus grands ou �gaux au numeroport
debutnumeroport:finnumeroport -> tous les ports entre debutnumeroport �
finnumeroport (ceux-ci inclus)
Bien s�r, il est possible d'utiliser les op�rateurs de n�gations, avec la
cons�quence que tous les ports seront surveill�s � l'exception de celui
entr�, par exemple.
!:21 -> tous les ports qui ne sont pas plus petits ou �gal � 21
Quelque chose qui n'a pas �t� expliqu� mais qui a �t� utilis� tout le
temps est l'op�rateur de direction � -> �.
"source" -> "destination"
Cependant, il existe une autre variante <> :
"source" <> "destination"
Cela signifie que Snort va rechercher la source aussi bien que la
destination, pour l'adresse.
Comme je l'ai mentionn�, il y a l'�tape � activate � : elle g�n�re une
alerte et retourne vers une autre r�gle dynamique de Snort.
Si une r�gle sp�cifique a compl�t� ses actions, elle peut activer une
autre r�gle. A la base, la diff�rence entre les r�gles normales et les
� r�gles activ�es � est le fait que seulement un champ sp�cifique doit �tre
sp�cifi� : "activates". Les r�gles dynamiques, d'autre part, fonctionnent
comme des logs (voir ci-dessus) ; seule diff�rence : � activate_by � doit
�tre entr�. Un champ suppl�mentaire doit encore �tre entr� : � count �.
Apr�s que la � r�gle activ�e � ait fait son boulot, la r�gle dynamique est
�voqu�e mais seulement pour � count � paquets (ce qui signifie � pour 40
paquets � lorsque count = 40).
activate tcp !$REZO_MAISON any -> $REZO_MAISON 143 (flags : PA; \
content : "|E8C0FFFFFF|\bin|;activates : 1; msg : "IMAP buf!";)
dynamic tcp !$REZO_MAISON any -> $REZO_MAISON 143 (activated_by : 1; \
count : 50;)
Quelques unes des options, comme les options � une r�gle, n'ont pas encore
�t� pr�sent�es. Je vais les expliquer maintenant mais cela prendra plus de
sens pour vous plus tard. Veuillez noter que les champs activates
et activated_by (r�gle dynamique) dans notre exemple plus haut. La
premi�re r�gle invoque une r�gle dynamique apr�s qu'elle ait fini son
travail ; cela est �galement indiqu� par l'assertion � activated_by = 1 � de
la r�gle dynamique.
Maintenant, voici la seconde partie des r�gles de Snort : les options � la
r�gle. Utilisons encore une fois la premi�re r�gle (ftp) :
alert tcp $REZO_EXTERNE any -> $REZO_MAISON 21 (msg:"FTP EXPLOIT
overflow"; flags: A+;\
content:"|5057 440A 2F69|";classtype:attempted-admin;\
sid:340; rev:1;)
L'option de r�gle, dans ce cas (l'en-t�te de r�gle s'arr�te � la premi�re
� ) �) est :
(msg:"FTP EXPLOIT overflow";\
flags: A+; content:"|5057 440A 2F69|";\
classtype:attempted-admin; sid:340; rev:1;)
Il y a 34 mots cl�s, je vais limiter mes explications aux plus importantes
et/ou aux plus usit�es. Pour ceux qui souhaitent avoir un aper�u de tous
les mots cl�s possibles, veuillez jeter un oeil dans le Manuel des
Utilisateurs de Snort.
msg - affiche les messages d'alerte et les trace dans le Packet Logger
Mode
logto - trace les paquets dans un fichier sp�cifique
dsize - compare la taille du paquet avec une valeur diff�rente v
flags - v�rifie les drapeaux TCP pour des valeurs sp�cifiques
content - recherche un motif/une cha�ne sp�cifique dans un paquet
content-list - recherche un motif/une cha�ne sp�cifique dans un paquet
nocase - la casse (majuscule et minuscule) est n�glig�e dans la cha�ne
recherch�e
react - r�ponse active (bloque les sites web)
sid - ID de r�gle Snort
classtype - trie les attaques potentielles dans des groupes
priority - d�fini la sensibilit�
Jusqu'ici, tout va bien mais comment fonctionne les r�gles individuelles
?
msg:
Nous trouvons souvent � msg � lorsque nous parcourons les r�gles. Cette
option est responsable de la g�n�ration des alertes et leur tra�age.
msg:"<texte>";
Le "<texte>" est le message qui est �crit/affich� dans le fichier
d'alerte (alertfile)
logto:
Chaque paquet pour lequel la r�gle est d'application est trac� dans un
fichier sp�cifique
logto: "<nomdefichier>";
Dans ce cas, "<nomdefichier>" est le fichier dans lequel les
fichiers applicables sont trac�s.
dsize:
Ceci est utilis� pour sp�cifier la taille d'un paquet. Si nous connaissons
la taille du tampon d'un service sp�cifique, cette option peut �tre
utilis�e pour se d�fendre contre les d�bordement de tampon possible.
Compar� � � content �, elle est un peu plus rapide ; c'est pourquoi elle est
utilis�e plus fr�quemment pour tester les d�bordements de tampon.
dsize: [>|<] <taille>;
Les deux op�rateur optionnels > et < indiquent que la taille du
paquet devrait �tre respectivement plus grande et plus petite que la
valeur sp�cifi�e
value flags:
Cela v�rifie quels sont les drapeaux d�finis. � pr�sent, 9 drapeaux sont
disponibles dans Snort :
F FIN
S SYN
R RST
P PSH
A ACK
U URG
2 Bit 2 assign�
1 Bit 1 assign�
0 pas de drapeau TCP d�fini
Il existe des op�rateurs logiques suppl�mentaires pour sp�cifer les
crit�res de test des drapeaux :
+ ALL flag = Marche pour tous les drapeaux (flag) sp�cifi�s (aussi bien
que les autres).
* ANY flag = Marche pour tous les drapeaux sp�cifi�s.
! NOT flag = Si les drapeaux sp�cifi�s ne sont pas d�finis.
En g�n�ral, le mot cl� � flags � est utilis� comme ceci :
flags: <valeur_drapeau>;
Les bits r�serv�s peuvent �tre utilis�s pour d�tecter un comportement
inhabituel ; par exemple, des essais d'IP stack fingerprinting.
content:
Un des mots cl�s les plus utilis�s (except� � msg �) est � content �. Il peut
�tre utilis� pour chercher dans la masse de paquets pour un contenu
particulier. Si le contenu sp�cifi� est d�tect�, des �tapes pr�d�finies
sont lanc�es contre l'utilisateur. Apr�s la d�tection du contenu dans la
charge d'un paquet, le reste des r�gles de Snort va �tre ex�cut�. Sans
appliquer � nocase � (voir ci-dessous), la casse sera consid�r�e. Le contenu
de la charge devrait �tre fouill�e pour des binaires comme pour du texte.
Les donn�es binaires sont plac�es entre || et mont�es comme du byte code.
Le byte code montre l'information binaire sous forme de nombres
hexad�cimaux. En rapport avec ce mot cl�, l'op�rateur de n�gation (!) peut
�tre appliqu�, par exemple, nous pouvons �mettre une alerte si un paquet
contient un texte sp�cifique.
content: [!] "<contenu>";
La d�claration de ! n'est pas obligatoire.
alert tcp any any -> 192.168.1.0/24 143 \
(content: "|90C8 C0FF FFFF|/bin/sh";\
msg: "IMAP buffer overflow";)
Comme d�montr� dans cette r�gle, les donn�es binaires sont entour�es
dans || ; � la suite de quoi, du texte normal peut �tre appliqu�. Regardez
la description de � offset � et � depth � dans le Manuel des Utilisateurs de
Snort : ils sont fr�quemment utilis� dans ce contexte avec � context �.
content-list:
Ce mot cl� fonctionne de mani�re similaire � � content � avec la diff�rence
qu'un nombre de cha�nes (utilis�es pour chercher dans les paquets) peut
�tre entr�. Nous entrons les nombres hexad�cimaux, les cha�nes, etc. dans
un fichier. Ce fichier, contenant les cha�nes � trouver, sera sp�cifi�
dans l'application de � content list �. Nous ne devons pas oublier d'�crire
les lignes espac�es verticalement (chaque cha�ne sur une ligne). Par
exemple :
"kinderporno"
"warez"
.....
A la suite de quoi, nous pouvons chercher pour le contenu de ce fichier
(par application de "content-list: [!] "<filename>" "). Bien s�r, !
est optionnel ; il a le m�me effet que dans � content �.
nocase:
Cette r�gle joue un r�le important dans un contexte avec les mots cl�s
� content �. D'habitude, la casse est respect�e ; en utilisant � nocase �,
elle est ignor�e :
alert tcp any any -> 192.168.1.0/24 21 (content: "USER root";\
nocase; msg: "FTP root user access attempt";)
Sans l'utilisation de � nocase �, seule la cha�ne � USER root � va �tre
r�pertori�e ; ici, puisque � nocase � a �t� sp�cifi�, la casse ne sera pas
appliqu�e.
Si la recherche d'un contenu sp�cifique (application de � content � ou
� content_list �) dans un paquet donne un r�sultat, � react � peut �tre
utilis� pour y r�pondre. Comme r�ponse g�n�rale, les pages sp�cifiques
demand�es par l'utilisateur seront bloqu�es (pages pornographiques...).
En appliquant � Flex Resp �, les connections peuvent �tre coup�es ou des
avertissements envoy�s au navigateur. Les options suivantes sont
possibles/l�gales :
block - d�connecte et envoie une notification.
warn - envoie un avertissement visible (bient�t disponible)
Ces � arguments de base � peuvent �tre compl�t�s par des arguments
additionnels (aussi appel�s � modificateurs additionels �) :
msg - le texte � envoyer (par le mot cl� � msg �) est inclus dans la
notification allant �tre envoy�e � l'utilisateur
proxy : <nnumerodeport> - le proxy est utilis� pour envoyer la
notification (bient�t disponible)
react : <argument de base [, modificateur additionel ]>;
Le mot cl� � react � est ajout� � la fin des options d'une r�gle. Il peut
�tre utilis� comme ceci :
alert tcp any any <> 192.168.1.0/24 80 (content-list: "adults"; \
msg: "Cette page n'est pas pour les enfants !"; react: block, msg;)
sid:
'sid' ou r�gles d'IDentification de Snort (Snort rules IDentification) est
utilis� pour identifier des r�gles � sp�ciales � de Snort. Cela rend
l�gal/possible l'utilisation de � plugins de sortie � pour identifier chaque
r�gle. Il y a de nombreux groupes sid :
< 100 = r�serv� pour un usage futur
100-1 000 000 = r�gles qui viennent avec Snort
> 1 000 000 = utilis� pour les r�gles locales
sid-msg.map contient une carte des tags msg pour les sid. C'est utilis�
par le post-traitement d'�tranger pour assigner un avertissement � une
identit�
sid: <snort rules id>;
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 \
(msg: "WEB-IIS file permission canonicalization"; uricontent:\
"/scripts"..%c1%9c../"; flags: A+;nocase;sid: 983;rev:1;)
classtype:
En utilisant � classtype �, nous pouvons trier les attaques dans divers
groupes. Dans les r�gles, nous pouvons d�terminer la priorit� d'une
attaque potentielle et dans quel groupe elle appartient. Les r�gles qui
sont cat�goris�es dans le fichier de configuration seront automatiquement
attribu�e � une priorit� standard.
classtype: <class name>;
Les cat�gories de r�gles doivent �tre d�finies dans classification.config.
La syntaxe suivante est utilis�e :
config classification: <class name>,<class description>,\
<standard priority>
Dans le prochain paragraphe (la description de � priority �), nous
apprendrons quel type de groupes d'attaque existent.
priority:
Ce mot cl� est utilis� pour assigner des � priorit�s de s�curit� � � nos
r�gles, signifiant combien endommageante pourrait �tre une attaque
potentielle. Plus la priorit� est �lev�e, plus le risque de s�curit�
potentiel est dommageable. En rapport avec les � class types � expliqu�
plus t�t, les priorit�s sont plus faciles � comprendre :
Class type Description Priorit�
------------------------------------------------------------------------
not-suspicious Tout traffic "non suspect" 0
unknown Traffic inconnu 1
bad-unknown Traffic potentiellement "mauvais" 2
attempted-recon Essai de fuite d'information 3
successful-recon-limited Fuite d'information 4
successful-recon-largescale Fuite d'information � grande �chelle 5
attempted-dos Essai d'attaque de d�ni de service 6
successful-dos Attaque de d�ni de service r�ussie 7
attempted-user Essai d'obtention des privil�ges
utilisateur 8
unsuccessful-user Essai d'obtention des privil�ges
utilisateur non r�ussi
successful-user Essai d'obtention des privil�ges
utilisateur r�ussi
attempted-admin Essai d'obtention des privil�ges
administrateur 10
successful-admin Essai d'obtention des privil�ges
administrateur r�ussi
Comme mentionn� pr�c�demment, les priorit� plus �lev�es repr�sentent de
plus grands risques de s�curit�. Un utilisateur re�evant des privil�ges
d'administrateur serait l'attaque la plus s�rieuse.
alert tcp any any -> any 80 (msg: "WEB-MISC phf Versuch";\
flags: A+;content: "/cgi-bin/bash";priority:10;)
Le sujet des � r�gles � est certainement assez complexe mais pas si
difficile. Etudiez quelques r�gles, cherchez dans le manuel ce qu'elles
sont et, apr�s quelques temps, le � monstre des r�gles � prendra sens ;-)
Des ressources pour Snort et la documentation peuvent �tre trouv�s sur
http://www.snort.org. Vous y trouverez des PDF de valeur (par exemple,
le Manuel des Utilisateurs de Snort) qui ont �t� la source principale pour
cette description.
LIDS
Depuis le papier (et les sources) de Stealth et le LIDS-Hacking-HOWTO,
nous savons que LIDS n'augmente pas r�ellement la s�curit� de
l'ordinateur mais il tient plus du � root kit � dans certains cas ;-)
Penchons-nous sur le concept et, ensuite, � la force (imaginaire) de LIDS
et ses faiblesses. Il a �t� d�velopp�, � l'origine, pour prot�ger, par
exemple, des syst�mes de fichier importants et pour cacher des processus
sp�cifiques � l'utilisateur. De plus, il n'est pas autoris� � simplement
lier des modules : les modules n�cessaires seront li�s avec le d�marrage
du syst�me. Pr�c�demment, j'ai mentionn� le LIDS-Hacking-HOWTO et les
papiers de Stealth, tous deux expliquant le travail et les faiblesses de
LIDS. Je vais me limiter aux fonctionnalit�s les plus importantes. Vous
trouverez un lien vers ces deux textes � la fin de cette section.
Le travail principal de LIDS est la protection du syst�me de fichier. Pour
�tre capable de les prot�ger, les fichiers/r�pertoires importants sont
tri�s en groupes :
- Read Only = Ce fichier/r�pertoire n'a qu'un acc�s en lecture, les
changements ne sont pas permis
- Append Only = Il est seulement permis � d'attacher � du contenu au
fichier
- Exception = Ces fichiers ne sont pas prot�g�s
- Protect (un)mounting = permet ou interdit de (d�)monter un syst�me
de fichiers
Pour une protection � r�elle �, quelques appels syst�me sont manipul�s pour
�tre s�r que les protections sont maintenues (par exemple : sys_open(),
sys_mknod(), ...).
De plus, LIDS emp�che des processus sp�cifiques d'�tre tu�s (ou de
devenir invisibles). Le but de cette proc�dure est d'emp�cher l'attaquant
de voir des processus sp�cifiques qui le tracerait. Un appel de � ps -ax �
ne devrait pas non plus r�v�ler nos processus. Pour v�ritablement cacher
le processus, il est marqu� comme � PF_HIDDEN �. Dans le cas o� ps travaille
pour g�n�rer l'information sur les processus, il va �tre emp�ch� de le
faire sur les processus qui sont marqu�s � PF_HIDDEN �. Cela, en soi, n'est
pas suffisant pour cacher de mani�re s�re un processus parce qu'il a
toujours temporairement une entr�e dans le syst�me de fichier proc
(/proc). En cons�quence, LIDS manipule �galement cette fonction pour
emp�cher le processus de se montrer dans le r�pertoire /proc. A part
cela, il y a la possibilit� de restreindre les privil�ges d'un processus
avec capacit�s. Si, par exemple, CAP_ROOT est d�fini � 0, le processus est
emp�ch� d'utiliser chroot (voir
/usr/src/linux/include/linux/capatibilites.h).
De plus, LIDS a la possibilit� de faire tourner une des deux options de
s�curit� : � security � ou � none_security �. Pour d�finir la diff�rence entre
� security � et � none_security �, la variable globale � lids_load � est
utilis�e. Sa valeur par d�faut est � 1 �, ce qui signifie que LIDS tourne en
mode � s�curit� � (c'est-�-dire que les restrictions sont d'application). Si
� security=0 � est d�fini au d�marrage (invite LILO), � none_security � est
activ�. Il en r�sulte que toutes les v�rifications de s�curit�, toutes les
restrictions... sont d�sactiv�es. Avec � lids_load=0 �, l'ordinateur
fonctionne comme si LIDS n'�tait pas install�. Une autre possibilit� de
changer les options de s�curit� est l'application en ligne de � lidsadm -S �
(pour cela, un mot de passe doit �tre fourni).
LIDS offre �galement la possibilit� de prot�ger les r�gles de pare-feu en
activant CONFIG_LIDS_ALLOW_CHANGE_ROUTES et d�sactivant CAP_NET_ADMIN. Si
quelqu'un veut modifier les r�gles du pare-feu, CAP_NET_ADMIN doit �tre
activ� pour emp�cher n'importe de changer les r�gles. En plus de
cela, Sniffer peut �tre d�sactiv� et un scanner de port peut �tre int�gr�
dans le noyau.
LIDS offre aussi plusieurs � options de r�ponse � (voyez la section sur la
r�ponse) par exemple, pour envoyer des notifications avec un pager, par
SMS (texto), � l'administrateur.
En g�n�ral, il y a de nombreuses options ; Stealth explique, dans son
papier, comment abuser LIDS :
http://www.securitybugware.org/Linux/4997.html. Le LIDS Howto peut �tre
trouv� sur : http://www.lids.org/lids-howto/lids-hacking-howto.html.
COLOID
COLOID est l'acronyme de � Collection of LKMs for Intrusion Detection �
(collection de LKMs pour la d�tection d'intrusion) et il a �t� cr�� par
moi-m�me, il y a quelques temps.
Depuis qu'on a appris que des parties du projet ne fonctionnaient pas
bien, le projet a �t� temporairement arr�t�. Cependant, je voudrais
m'�tendre un peu sur les fonctionnalit�s pr�vues initialement : avec le
premier module (prev_exec), nous voulions - entre autres - emp�cher
temporairement l'ex�cution de binaires sp�cifiques � des moments d�finis
(dans mes sources, j'utilisait le compilateur GNU GCC). Il est d�fini
dans les sources quand une ex�cution doit �tre emp�ch�e (le temps peut
�tre sp�cifi� en minutes). Si un utilisateur veut ex�cuter GCC � ce
moment, il sera bloqu� : GCC ne va pas s'ex�cuter. Si un utilisateur veut
ex�cuter GCC � un moment � autoris� �, les arguments vont �tre v�rifi�s et
une recherche pour les fichiers .c prend place. La raison de cette
proc�dure est la recherche, dans les sources (ici, quelqu'un veut
compiler), des � fonctions dangereuses �. Par d�faut, il y avait � scanf � et
� strcpy �, etc. ; il est possible d'ajouter plus de fonctions. Comme je
l'ai indiqu� plus t�t, le LKM cherche dans le code source ; s'il d�tecte
une des fonctions, l'ex�cution de GCC est interdite. De plus, un fichier
de log est �crit et un � beep � est produit.
Jusqu'ici, le module fonctionnait mais le concept n'�tait pas assez
g�n�ral et pouvait facilement �tre contourn�.
Le second module �tait 'anom_detection' qui utilisait la D�tection
d'Anomalie mentionn�e auparavant. En fait, deux LKM appartenaient � cette
section :
1) Anomaly_Detection.c qui g�n�re la base de donn�es des activit�s normales
de l'utilisateur
et
2) Misuse_Detect.c qui v�rifie si le comportement d'un utilisateur
s'�carte de la normale (d�crite dans la base de donn�es) en utilisant cette
base de donn�es comme rep�re.
Le plan �tait de laisser le LKM v�rifier les crit�res suivants :
A quelle fr�quence l'utilisateur ex�cute-t-il les commandes suivantes :
- su
- login
- chmod
- chown
- insmod
- ps
- lsmod
- rm
- last
- lastlog
- ftp
Quand l'utilisateur a-t-il ex�cut� les commandes suivantes :
Ou quand l'utilisateur a d�marr� normalement le PC et quand a-t-il lanc�
un shutdown.
Autre :
Combien de fois a-t-il ouvert (essay� d'ouvrir) les fichiers suivants :
- /etc/passwd
- /etc/group
- /etc/shadow
- /etc/ftpusers
- /etc/ftpgroups
- /etc/ftpaccess
- /etc/hosts.allow
- /etc/hosts.deny
- /etc/inetd.conf
- ...
Combien de fois ex�cute-t-il des programmes avec le bit SUID d�fini ?
Nous devons faire attention aux fichiers � surveiller (combien de fois
l'utilisateur l'ouvre-t-il). Si nous choisissons trop de fichiers, la
performance du PC en prendra un coup et un travail raisonnable et d�cent
ne sera plus possible.
Il existait d'autres LKM plus petits sans toutes les sources ; les sources
des deux modules mentionn�s ci-dessus sont disponibles sur ma page web.
Peut-�tre que quelqu'un fera quelque chose de cela, un jour, ...
Le mot de la fin
Si quelqu'un a plus d'id�es pour le contenu de cet article, s'il vous
pla�t, envoyez-moi une note � Socma(Q)gmx.net. Pour les stimulations,
louanges, critiques, ... suppl�mentaire, envoyez-moi �galement un
e-mail
R�f�rences (outre celles mentionn�es dans le texte) :
-
http://online.securityfocus.com/infocus/1524
-
http://online.securityfocus.com/infocus/1534
-
http://online.securityfocus.com/infocus/1544
-
http://online.securityfocus.com/infocus/1232
- http://www.entercept.com/products/entercept/
whitepapers/downloads/systemcall.pdf
-
http://www.computec.ch/dokumente/intrusion_detection/
angriffsmoeglichkeiten_auf_okenas_stormwatch/
angriffsmoeglichkeiten_auf_okenas_stormwatch.doc