• Aucun résultat trouvé

Évaluation d’un produit anti-virus

8.3.1 Outils et critères théoriques

Une évaluation du moteur de détection selon des critères objectifs requiert un effort de modélisation. Nous pouvons citer notamment trois cadres théoriques dans lesquels il est possible de dégager des critères utiles à l’analyse en boîte blanche d’un moteur de détection :

– la théorie de la complexité et l’étude des grammaires et langages formels ; – la théorie de l’interprétation abstraite (algèbre) ;

– la théorie de l’information, des probabilités et statistiques.

Cadre des grammaires et langages formels

La modélisation par utilisation de la théorie de la complexité, permet de définir des limites théoriques et de qualifier les solutions algorithmiques approximatives proposées, en terme de performance mais également en terme de com- plétude et de correction. Nous avons présenté les principaux résultats associés à ce cadre théorique dans le chapitre

1.

Dans ce cadre théorique, nous pouvons considérer les critères suivant [Fil07b] :

CRITERE DESCRIPTION

correction un schéma de détection (LV, fV)3 est dit correct vis-à-vis d’un ensemble viral V lorsque le langage

LV décrivant cette famille virale est suffisamment précis pour éviter le risque qu’un programme

bénin soit considéré à tort comme appartenant à ce langage. La fonction de détection fV ne

reconnaît que les mots appartenant à ce langage.

complétude un schéma de détection (LV, fV) est dit complet vis-à-vis d’un ensemble viral V lorsque le langage

LV décrivant cette famille virale est complet, dans le sens où toutes les variantes possibles du

virus appartiennent à ce langage. Le risque résiduel est dans ce cas que des programmes bénins appartiennent également à ce langage.

Comme nous l’avons rappelé dans le chapitre 2, dans le contexte viral, un moteur de mutation, c’est-à-dire un moteur de polymorphisme ou de métamorphisme, doit renforcer à la fois la diversité et la résistance vis-à-vis de la reconnaissance de motifs. Le polymorphisme [Qoz99] et le métamorphisme [Fil07b] peuvent être formalisés en terme de productions de grammaire. La difficulté à reconnaître un virus correspond à l’expressivité nécessaire de la machine ou de l’automate qui est capable de reconnaître le langage L(G) généré par la grammaire G en appliquant ses règles de production (voir table2.1page31).

Le type de grammaire générative est crucial lorsque l’on conçoit un moteur de polymorphisme. Ce point a été discuté plus en détail dans la section2.6.4du chapitre2. Nous avons alors observé que plus la grammaire est irrégu- lière, plus il est difficile de dériver un automate à partir de la grammaire qui soit capable de détecter la fonction de chiffrement d’un virus polymorphe. Nous avons également alors rappelé plusieurs résultats théoriques concernant la complexité de la détection des virus polymorphes et métamorphes.

Il en ressort que l’analyse en boîte blanche d’un moteur de détection virale peut se fonder sur ce cadre théo- rique, qui se révèle particulièrement pertinent lorsqu’il s’agit de qualifier un algorithme de détection en termes de :

– performance, en temps et espace mémoire nécessaires à l’exécution de l’algorithme de détection ;

– correction et complétude vis-à-vis d’une classe de transformations d’obfuscation, dès lors que l’on est capable de décrire le langage produit par un ensemble de transformations d’obfuscation et de démontrer que l’automate correspondant au schéma de détection est en mesure de reconnaître tous les mots du langage, et seulement ces derniers.

Il est à noter que cet outil théorique ne s’applique pas qu’aux moteurs de détection fondés sur une recherche de mo- tifs (ou d’expression rationnelles), mais peut également s’appliquer naturellement aux moteurs de détection fondés sur une approche structurelle, comme par exemple [BMM06, BKM08].

À titre d’exemple, on trouve dans le papier [BKM08] une formulation du problème de détection sous-jacent en terme de reconnaissance du langage produit par une grammaire formelle par un automate à état finis. Cette présentation pourrait être complétée par une preuve de résistance du schéma de détection à certaines transformations d’obfus- cation du flot de contrôle et une présentation des limites du schéma de détection (vis à vis d’autres transformations d’obfuscation).

3le motif de détection est représenté par le langage L

V, supposé produit par une grammaire GV et la fonction de détection fV est

Cadre de l’interprétation abstraite

La modélisation par interprétation abstraite permet de capturer les aspects sémantiques de l’information extraite d’un programme, ainsi que de valider la correction et l’efficacité des transformations imposées à cette information (i.e. l’efficacité du processus d’élaboration d’un schéma de détection fondé sur des informations sémantiques). Elle permet en particulier de formaliser l’analyse statique et dans une certaine mesure la rétro-ingénierie par utilisation de méthodes d’analyse dynamique ou hybride statique/dynamique. Nous avons présenté et étudié ce formalisme dans le chapitre4. Dans ce cadre théorique, nous pouvons considérer les critères suivant [DPCJD07] :

CRITERE DESCRIPTION

correction un schéma de détection (α(SJV K), α)4 est dit correct vis-à-vis d’un ensemble de transformations

d’obfuscationO si et seulement si :

∃αr: α(SJV K) ⊆ α ◦ αr(SJP K) ⇒ ∃o ∈ O : P infecté par o(V ).

complétude un schéma de détection (α(SJV K), α) est dit complet vis-à-vis d’une transformation d’obfuscation o si et seulement si :

P infecté paro(V ) ⇒ ∃αr: α(SJV K) ⊆ α ◦ αr(SJP K).

Remarquons que des travaux récents [DPCJD07] ont permi de modéliser un moteur de détection [CJS+05] dans

le cadre de l’interprétation abstraite et de prouver dans ce cadre la résistance et la complétude de leur schéma de détection, sous certaines hypothèses5. Ils ont complété cette démonstration par une preuve des limites de leur

schéma de détection au regard de certaines transformations d’obfuscation.

Cadre probabiliste

Une modélisation statistique du problème de détection offre une vision complémentaire et s’applique à l’analyse de comportements viraux, sur la base d’informations statistiques. Elle permet notamment de capturer les aspects liés aux interactions du programme avec son environnement. Ce formalisme a été présenté et étudié dans le chapitre7. Dans ce cadre théorique, nous pouvons considérer les critères suivant [FJ07] :

CRITERE DESCRIPTION

correction un schéma de détection (λV, fV)6est dit correct vis-à-vis d’un ensemble viral V lorsque β, le risque

de fausse alarme, est suffisamment proche de zéro.

complétude un schéma de détection (λV, fV) est dit complet vis-à-vis d’un ensemble viral V lorsque α, le risque

de non détection, est suffisamment proche de zéro.

Les tests statistiques et la notion de simulabilité des tests constituent un outil théorique naturellement adapté à la modélisation d’un moteur de détection, en particulier lorsque celui-ci met en oeuvre des méthodes de classification probabilistes basées sur des algorithmes d’apprentissage, comme c’est le cas des moteurs de détection fondés sur l’utilisation de modèles bayésiens (réseaux bayésiens dynamiques par exemples [SEZS01, AHH+99, WS06]). Nous

4le motif de détection représente une information utile α(S

JV K) extraite de la sémantique JV K du virus V et la fonction de détection est une fonction d’abstraction α qui extrait l’information sémantique utile des programmes

5 De manière à pouvoir raisonner indépendamment de la résolution de certains problèmes réputés difficiles de la théorie de la

complexité ou de l’optimisation des programmes, les auteurs ont introduit une définition de la complétude et de la correction d’une fonction de détection qui prend en compte l’invocation d’un ou plusieurs oracles, supposés parfaits. Ils considèrent en particulier que certaines réponses à des questions difficiles sont fournis par des oracles, comme le problème de l’extraction du graphe CFG d’un programme ou la détection de junk code

6le schéma de signature est représenté par la distribution d’une loi de probabilité caractérisant l’information ou par un modèle λ M

formé sur des données d’apprentissage et la fonction de détection est une règle de décision générée sur la base de données d’apprentissage, permettant d’évaluer la vraisemblance d’une observation, étant donné le modèle λM

avons illustré l’utilisation de tels modèles dans le cas de l’analyse spectrale (cf. chapitre 7), et démontré que la notion de simulabilité des tests statistiques permet de rendre compte de la robustesse ou rigidité d’un schéma de détection, les risques de première et seconde espèce associés à la définition d’un test permettant de rendre compte naturellement des notions de correction et de complétude.

Ces méthodes de détection s’appliquent naturellement à la reconnaissance de programmes poly/métamorphes, par le biais de l’utilisation d’algorithmes de recherche de similarité et de classification par souches virales.

Nous avons constaté que la simulabilité des tests statistiques revient à exploiter l’imprécision du modèle de détection. Nous pouvons définir de la manière suivante l’imprécision d’un schéma de détection :

CRITERE DESCRIPTION

imprécision l’imprécision d’un schéma de détection (λV, fV) est donnée par l’entropie relative entre la vraie

distribution pY de la variable Y et la distribution pλYV de la variable Y sous le modèle de détection :

dKL(pY||pλYV) = X y pY(y) log pY(y) pλV Y (y) = ε > 0.

L’imprécision d’un schéma de détection rend compte de l’entropie relative entre la distribution réelle d’une famille virale et le modèle de détection construit sur la base des données d’apprentissage.

La rigidité d’un schéma de détection sera d’autant plus grande que l’imprécision du modèle est proche de zéro. Nous pouvons observer que la rigidité (ou l’imprécision) d’un schéma de détection sont des critères intrinsèques aux modèles de détection considérés, c’est-à-dire qu’ils ne sont pas relatifs à la population virale considérée.

Ce formalisme s’applique également (quoique de manière duale) à l’analyse des virus furtifs par contrôle de modèle (cf. chapitre6). Dans ce cas, nous pouvons également caractériser la méthode de détection (et de manière duale le système furtif) en terme de simulabilité des tests statistiques sous-jacents.

Remarquons que cette approche est également appliquable dans d’autres domaines de la détection d’intrusion, comme le filtrage réseau ou les systèmes de détection/protection face à une intrusion, où cette fois l’approche est un peu différente, dans la mesure où elle s’attache à détecter tout comportement suspect, définit comme s’écartant d’un comportement moyen jugé a priori conforme à une politique de sécurité.

Si la fonction de sécurité est différente, les méthodes d’extraction d’information et d’élaboration des schémas de détection sont très similaires, la principale différence résidant dans le type et le nombre de bases de connaissances utilisées par la fonction de détection pour fonder sa décision.

Nous espérons donc que notre méthode d’évaluation et partie des outils et critères théoriques et techniques peuvent être adaptés sans trop d’effort à l’analyse de ce type de produits de sécurité.