• Aucun résultat trouvé

4.4 Adaptation du scénario au système surveillé

4.4.4 Traduction dans le langage de corrélation cible

L’objectif est de traduire la règle de corrélation abstraite exprimée au travers de l’arbre de corrélation dans un langage spécifique à un corrélateur. Dans notre cas, nous utilisons le langage ADeLe ([TVM04]). Plus précisément, la règle générée correspond à la partie DETECT d’une règle de corrélation ADeLe qui est composée de trois parties : ENCHAIN, FILTER et CONSTRAINTS. A Construction des filtres

Chaque message issu de l’arbre de corrélation est transformé en filtre. Un filtre représente un type spécifique d’événement pouvant faire avancer la reconnaissance d’un scénario d’attaque. Il est constitué d’un identifiant, d’un nom de format et d’un ensemble de champs. Dans notre cas, un identifiant unique est généré pour le filtre, puis le nom du format est extrait du message. Les champs du filtre sont constitués des champs du message qui ont été instanciés. En ADeLe, un filtre représente un type particulier d’événement. Il est alors possible de définir une ou plusieurs instances d’événement correspondant à ce type d’événement. Dans le cas où plusieurs messages de l’arbre de corrélation sont constitués du même contenu, un unique filtre est créé et deux instances d’événements sont alors définies. Dans l’exemple 4.2, TYPE1 représente un type et E1 est une instance d’événement de type TYPE1.

Listing 4.2 – Définition d’un filtre. < EVENTS > TYPE1 : s n o r t _ f a s t { sensor == " snort -1 " id == " b r u t e _ f o r c e " tgt . id == " id2 " } E1 TYPE2 : o s s e c _ s y s l o g { sensor == " ossec -1 " id == " b r u t e _ f o r c e " tgt . id == " id1 " tgt . port == 80 } E2 ... </ EVENTS >

B Construction de l’enchaînement des événements

L’enchaînement des différentes instances d’événements s’exprime en ADeLe dans la section ENCHAIN. Pour réaliser cet enchaînement, un parcours en profondeur de l’arbre de corrélation est réalisé. Chaque opérateur de l’arbre de corrélation est traduit par un opérateur temporel en ADeLe. La correspondance entre les opérateurs est donnée par le tableau 4.4. Comme expliqué au paragraphe précédent, chaque message de l’arbre de corrélation est remplacé par une instance du filtre ADeLe correspondant. Par exemple, la figure 4.11 illustre la correspondance entre la définition de l’enchaînement des événements en ADeLe (2) et l’articulation des différentes feuilles de l’arbre de corrélation (1) correspondant. Dans cet exemple, les lettres sont utilisées pour identifier les instances d’événements.

Arbre de corrélation ADeLe SAND Sequence AND NonOrdered OR OneAmong

Table 4.4 – Correspondance entre les opérateurs de l’arbre de corrélation et les opérateurs du langage de corrélation ADeLe.

Figure4.11 – Traduction de l’enchaînement des événements en ADeLe.

C Construction des contraintes entre les événements

La section CONSTRAINTS modélise les contraintes qui lient les instances de certains événe- ments. Dans notre cas, une contrainte entre deux instances d’événement est générée lorsque les

4.4. ADAPTATION DU SCÉNARIO AU SYSTÈME SURVEILLÉ 87

messages correspondants dans l’arbre d’actions référencent des variables dynamiques communes. En effet, cela signifie qu’au moment de la détection, l’égalité entre les valeurs des deux champs respectifs des deux instances de messages est attendue. En pratique, cela se traduit en ADeLe par une contrainte du type m1.f1 == m2.f2, avec m1 et m2 les deux instances de messages et f1 et f2 les champs de ces messages respectifs.

Génération exhaustive ou sélective des contraintes L’utilisation d’une même variable dynamique à plus de deux reprises au sein d’un arbre d’actions rend nécessaire la traduction de la dépendance entre ces variables sous la forme de contraintes entre les champs d’un ou plusieurs messages. Plusieurs approches sont alors possibles pour générer ces contraintes. Dans une ap- proche exhaustive, toutes les combinaisons possibles sont conservées(en supprimant les symétries du type a == b et b == a). La génération de l’intégralité des contraintes est possible si le nombre d’occurrences d’une variable dynamique n’est pas trop important. Au moment de la détection, si une contrainte ne peut être satisfaite à cause de l’absence d’un événement, alors cette contrainte n’est pas évaluée. Par conséquent, la construction de contraintes entre des messages qui s’excluent mutuellement ou qui peuvent ne pas être tous produits ne bloque pas la détection du scénario d’attaque.

Cas des contraintes qui impliquent des messages fils de OneAmong Un choix dans l’algorithme de détection utilisé par le corrélateur GNG rend inutile certaines contraintes entre champs d’événements.

Le principe de fonctionnement de cet opérateur a pour conséquence qu’une contrainte entre les champs des instances d’événements A et B au sein de l’enchaînement OneAmong(A, B) ne peut être satisfaite car A et B ne peuvent se retrouver dans un même plan simultanément. De fait, l’impossibilité de disposer d’une instance de A et de B dans le même plan ne mène pas à un blocage lié à la non-résolution de la contrainte.

Une contrainte a un impact uniquement lorsque l’opérateur parent commun entre deux feuilles est un opérateur Sequence ou NonOrdered.

D Traitement des actions non observables

L’action non observable prend la forme d’une feuille de type UNOBSERVABLE dans l’arbre de corrélation de notre exemple. Contrairement aux autres nœuds de l’arbre de corrélation, il ne s’agit pas d’un message qui peut être généré par un observateur. Cette action ne doit donc pas être traduite dans la règle de corrélation. Cependant, une suppression simple de cette action lors de l’étape de traduction dans le langage de corrélation peut mener à une règle de corrélation erronée. Cette section s’intéresse à identifier les cas problématiques liés aux actions non observables et à étudier les solutions applicables pour l’obtention de règles de corrélation correctes.

La figure 4.12 illustre les différents moyens de traduire l’arbre de corrélations contenant une action non observable en ADeLe. Chaque arbre est une représentation de l’arbre d’ordonnancement des événements en ADeLe. Dans les arbres (i) et (ii), le message fictif U correspond à une action non observable qui doit être transformée. Les arbres (1) à (3) correspondent à des transformations possibles de l’arbre (ii) et l’arbre (0) à une transformation possible de l’arbre (i).

Le tableau 4.5 résume les conséquences de chaque choix de traitement :

— (0) une suppression simple dans le cas où l’opérateur père est une Sequence (ou un NonOr- dered) ;

— (1) une suppression simple de l’élément non observable peut bloquer la reconnaissance du scénario. Dans l’exemple donné, l’occurrence de la suite de message A- ?-E, où ? correspond à une action de l’attaquant non détectée entraîne la non-reconnaissance du scénario ; — (2) la suppression de l’opérateur OneAmong et de ses fils permet de résoudre le problème des

faux négatifs issus de la transformation (1). Par contre, cette suppression peut mener à la détection de séquences d’actions commençant par A et finissant par E qui sont légitimes. De plus, lorsque les messages levés correspondent à la séquence A-B-E ou A-D-E, les messages B et D sont perdus et ne participent plus au scénario ;

— (3) pour mettre en commun les cas (1) et (2), une approche naïve consisterait à utiliser un opérateur OneAmong joignant les arbres (1) et (2). Cependant, cette construction a un

inconvénient car tous les scénarios reconnus par le sous-arbre (1) le sont également par (2). Afin de restreindre l’arbre (2) à la reconnaissance d’un enchaînement A-E sans la présence de B ou de D entre A et E, une nouvelle branche est introduite et comporte l’opérateur Without qui permet d’éliminer les cas de reconnaissance redondants Un cas de figure portant sur l’arbre (i) lorsque les nœuds E et la branche du OneAmong sont inversés ne peut pas subir une transformation du type (3) car l’opérateur Without doit s’appliquer sur une branche impliquant au moins une séquence de deux événements (ou à un NonOrdered).

Figure 4.12 – Résolutions possibles des cas d’actions non-observables. Les nœuds en pointillé de l’arbre (3) correspondent à l’enchaînement qui ne doit pas être présent pendant la reconnaissance de la séquence A − E.

cas traitement conséquences

(1) Suppression simple Faux négatifs possibles (2) Suppression de l’opérateur père et

de ses nœuds fils

Faux positifs possibles et élimination de messages potentiellement importants

(3) Choix dynamique entre le cas (1) et (2)

Faux positifs possibles mais permet la détection d’un scénario complet

(4) Suppression simple Faux positifs possibles

Table4.5 – Conséquences du choix de traitement des actions non observables. E Exemple

La figure 4.13 est une représentation arborescente de l’enchainement des événements qui corres- pondent aux messages de l’arbre de corrélation de la figure 4.10. La transformation des opérateurs logiques en opérateurs temporels est effectuée. L’action non observable est éliminée ainsi que l’opé- rateur AND/NonOrdered devenu inutile puisqu’il n’a plus qu’un unique nœud fils (lien en gras sur la figure 4.13).

Même sur cet exemple simple, la règle de corrélation résultante est complexe. L’un des intérêts de la méthode de génération est qu’elle facilite la prise en compte de l’évolution du système dans la règle de corrélation. Prenons deux exemples d’évolutions.

(1) Un nouveau serveur est déployé au sein du même sous-réseau que les deux précédents et est également accessible depuis l’extérieur. Cette machine supplémentaire peut désormais consti- tuer une nouvelle cible et ainsi conduire à une nouvelle possibilité d’instanciation du scénario d’attaque présenté dans la figure 4.4. Il suffit cependant de relancer la génération à partir de ce même arbre d’actions pour construire une règle de corrélation mise à jour. Elle correspond à un arbre de corrélation constitué d’un sous-arbre supplémentaire décrivant l’exploitation de cette nouvelle machine.

4.4. ADAPTATION DU SCÉNARIO AU SYSTÈME SURVEILLÉ 89

Figure 4.13 – Ordonnancement des messages et filtres correspondant à la règle de corrélation ADeLe.

(2) Un HIDS est finalement installé sur le second serveur. Dans ce cas, une nouvelle génération mènera à une règle de corrélation correspondant à un arbre de corrélation constitué de deux sous-arbres similaires (ils diffèrent seulement par les identifiants des nœuds et des HIDS). Dans tous les cas cités, il est supposé que la base de connaissances est mise à jour (dans l’idéal de manière automatique) et contient bien les éléments qui correspondent au système déployé. F Discussion

Lors de cette traduction en langage ADeLe, un sous-ensemble du langage est utilisé. Les opé- rateurs Repeat et Without ne sont ainsi pas utilisés. Le Repeat n’est qu’un moyen de factoriser une séquence. Quant au Without, il est difficile à traduire dans l’arbre d’actions car cet opérateur sert généralement à modéliser des contre-mesures possibles entravant la progression d’un scénario d’at- taque. Les contraintes entre les champs des événements sont réduites à des égalités. Les contraintes de délais minimaux ou maximaux entre l’occurrence de deux événements ne sont pas définies car cette information n’est pas présente dans l’arbre d’actions initial. Ces contraintes temporelles per- mettent de réduire le nombre de plans possibles lors de la détection.