Détection d`intrusions et lutte antivirus : deux mondes

Transcription

Détection d`intrusions et lutte antivirus : deux mondes
Détection d’intrusions et lutte antivirus : deux
mondes convergents
Thomas Letan
Lundi 3 décembre 2012
Table des matières
I
II
Introduction
1
Des thématiques convergentes
2
1 La détection d’intrusion
3
2 La détection de malwares
4
III
Le virus est un attaquant
6
3 L’influence de la détection d’intrusion
7
4 Utiliser Snort comme détecteur de malwares
7
5 L’analyse des payloads d’un trafic
8
IV
8
Monitoring et analyse dynamique
6 L’analyse dynamique
8
7 L’exemple de NORT
9
V
Conclusion
10
1
Première partie
Introduction
En 2011, le Cert-IST dressait un bilan de l’année écoulée en terme de sécurité informatique et mettait en avant plusieurs constats [CI11], notamment
sur l’émergence de nouvelles menaces. Les faiblesses des systèmes SCADA 1 ,
l’ampleur nouvelle du cyber-activisme ou la prolifération des virus visant les
smartphones sont autant de préoccupations que les entreprises ou les particuliers ne peuvent ignorer. Si le début des années 2000 vit plusieurs attaques virales
massives, la tendance est désormais aux intrusions plus pernicieuses.
Les premiers « virus » n’ont pas été écrits avec malveillance mais comme un
divertissement. Réservé à une — très petite — poignée d’initiés, , il constituait
à faire s’affronter deux programmes informatiques [top]. Aujourd’hui, Stuxnet,
un ver informatique issu d’une collaboration entre les États-Unis et Israël, est
considéré comme une cyber-arme. Dans ce rapport, nous nous intéresserons aux malwares. Un virus est un malware, mais tous les malwares
ne sont pas des virus.
Le présent rapport s’intéresse aux points communs et aux différences entre la
détection d’intrusions et la détection de malwares et l’influence qu’elles peuvent
avoir l’un sur l’autre. Et elle est réelle. Depuis la fin des années 2000, les deux
communautés tendent à se rapprocher et cela se ressent dans le vocabulaire et
les techniques utilisées.
Deuxième partie
Des thématiques convergentes
La détection d’intrusions et la détection de malwares cherchent à détecter les
malveillances à l’encontre d’un système informatique. Autrement dit, savoir s’il
existe un danger pour la politique de sécurité du système. Cette dernière définit
les droits des utilisateurs d’un système sur les objets qu’il contient. Il existe
énormément de modèles de politique de sécurité, plus ou moins complexes et
expressifs.
Un modèle de sécurité est implémenté et garantit normalement qu’un utilisateur ne peut pas faire une action qui lui est interdite (typiquement, lire, écrire
ou exécuter). Dans la pratique, il est possible de contourner ces limitations en
profitant de faiblesses logicielles qui se présentent sous la forme d’erreurs ou de
négligences lors de l’implémentation d’un composant du système. On parle alors
de vulnérabilités du système. Plus formellement, le standard CVE donne une
définition précise de la vulnérabilités [GBG+ 11] :
1. Très utilisés dans l’informatique industriel et cibles de Stuxnet.
2
Définition 1 Une vulnérabilité est un état particulier du système qui permet à
un attaquant :
– d’exécuter une commande comme s’il était un autre utilisateur ;
– d’accéder à des données qu’il n’a normalement pas le droit de lire ;
– de se faire passer pour une autre entité ;
– de provoquer un déni de service.
1
La détection d’intrusion
Une attaque est la tentative de l’exploitation d’une vulnérabilité et une
intrusion sa réussite. Un IDS a pour but de découvrir quand il y a eu intrusion
(ou attaque).
Quelles sources de données ?
Pour pouvoir travailler, un IDS a besoin de données. On parle de NIDS 2
quand les données sont des paquets réseaux. On parle de HIDS 3 quand les
données proviennent du systèmes d’exploitation et du hardware. Il existe aussi
des IDS qui analysent les logs de certaines applications, comme les serveurs web
par exemple. Enfin, il arrive que l’on veuille faire collaborer des IDS, dans ce
cas, les données sont des alertes déjà émises, qu’il faut « vérifier ».
Chaque source de données à ses avantages et ses inconvénients. Un NIDS
n’aura aucun impact sur le système qu’il monitore, par exemple, mais il aura
énormément de données à analyser. L’utilisation d’un HIDS se traduira au
contraire par un overhead parfois non négligeable 4 .
L’approche par signature
Dans ce contexte, la signature d’une attaque est l’ensemble des symptômes
correspondant à une vulnérabilité, symptômes que l’on pourra trouver dans
des logs par exemple, sous forme de messages d’erreurs. C’est en parvenant à
reconnaître ces signatures dans les données qu’il analyse qu’un IDS lève ou non
une alerte. Cela implique plusieurs choses, mais les deux à retenir en particulier
sont :
– Quand l’IDS lève une alerte, on sait qu’elle est la vulnérabilité visée ;
– Impossibilité de découvrir des attaques inconnues (0-day, etc.) ;
Il s’agit de respectivement du principal avantage et de l’inconvénient majeur
de l’approche par signature. Il existe une autre approche, dite comportementale.
Dans ce second cas, l’IDS connaît le comportement normal et recherche des
déviances.
2. Network based Intrusion Detection System
3. Host based Intrusion Detection System
4. Voir section 7.
3
L’approche comportementale
L’approche comportementale propose de modéliser le comportement normal d’un système et de s’en servir comme référence. Les techniques utilisées
sont multiples mais se basent souvent sur le machine learning. Dans un premier temps, on observe un système considéré comme sain et on construit un ou
des détecteurs. Ensuite, on utilise ses détecteurs pour mesurer l’écart entre le
comportement observé et celui attendu.
Il est cependant difficile de construire un modèle précis du comportement
normal du système. Si, à l’instar de l’approche par signatures, un IDS comportemental aura un bon taux de détection (peu de faux négatifs), il aura aussi
tendance à lever des fausses alertes (faux positifs) en trop grand nombre.
Dans la détection d’intrusion, on fait face à un déséquilibre des classes. On
rencontrera beaucoup plus de négatifs (comportement légal) que de positifs
(comportement illégal). Ce fait oblige à avoir un taux de détection très haut
et un taux de faux positifs très bas. Un taux de faux positif de 1% est déjà
beaucoup trop important en conditions réelles, on cherchera plutôt des chiffres
de 0.1% voir moins.
2
La détection de malwares
Les malwares
Il existe plusieurs types de malwares, chacun possédant sa propre technique
de propagation [KN]. Le virus n’est pas un programme en particulier mais un
fragment de code qui s’attache à des exécutables. Ces exécutables deviennent
alors des programmes hôtes 5 . Ils sont proches des vers informatiques, ces derniers n’ont néanmoins pas besoin de programmes hôtes, ils sont des exécutables
indépendants. Les trojans sont des programmes souvent présentés comme des
utilitaires gratuits, dont le but réel est de donner accès au système au hacker.
Les spywares ont pour but de collecter des informations et de les envoyer au
hacker.
Contrairement à ce que son nom peut laisser penser, un antivirus ne s’intéresse pas seulement aux virus informatique mais plus globalement aux malwares.
En vingt ans, les techniques de détection visant les malwares ont grandement
évoluées. [KS92] proposait en 1992 un tour d’horizons des techniques utilisées
alors. Vingt ans plus tard, l’état de l’art proposé par [San12] permet de se rendre
compte des avancées dans le domaine.
La détection de malwares se concentre sur les exécutables et les analyse
afin de découvrir du code malicieux. Il existe deux techniques pour aborder ce
problème :
– Une analyse statique, qui nécessite que le code soit désassemblé, recherche
du code malicieux avant que le programme ne s’exécute ;
5. Une partie du vocabulaire traitant des virus informatiques est emprunté à la biologie,
on parle d’hôtes, d’infections, d’épidémie, etc.
4
– Une analyse dynamique, par émulation par exemple, recherche du code
malicieux pendant ou après l’exécution du programme.
Il est possible de combiner ces deux techniques, afin d’avoir une approche
hybride.
Un détecteur de malwares a besoin de deux données pour fonctionner : ce
qu’il sait être le comportement « normal » du malware 6 et le programme à
analyser.
Plusieurs types de classifications des méthodes de détections semblent plus
ou moins cohabiter. En 2009, [VJLG09] différenciait trois catégories différentes
(signature, comportemental, spécification) alors qu’en 2007, [IM07] différenciait
deux catégories (signature, qui n’a exactement pas le même sens que précédemment, et anomalies, possédant une sous catégorie spécifications) qui a été
reprise en 2012 par [San12] par exemple. La classification présentée ici est celle
de [VJLG09], les différences seront explicitées section 3.
Détection basée sur les signatures
À l’instar de la majorité des IDS, la plupart des antivirus du marché utilisent
des scanners ayant une approchée basée sur la signature. La signature d’un virus
peut prendre plusieurs formes. La façon de faire la plus courante est d’identifier
un virus par une suite d’instructions et de regarder le code des programmes
surveillés. Si on retrouve la séquence cherchée, alors le programme a de grandes
chances d’être infecté. Cette vérification a très rapidement montré ses faiblesses
face aux efforts des hackers à la contourner, que ce soit via l’obfuscation du
code, la création de versions du virus légèrement différentes pour tromper le
scanner ou l’émergence des virus polymorphes (qui modifient leur code à chaque
duplication). De nombreux travaux de recherches ont pour but de débusquer les
virus malgré ces techniques d’échappement.
Détection basée sur le comportement
[Ove05] propose par exemple en 2005 une approche plus générale de la signature, en se basant sur des templates qui permettent de s’intéresser à la sémantique des instructions utilisées par le virus. Ainsi, pour savoir si un programme est infecté, on ne fait plus du pattern-matching mais on vérifie que le
programme instancie la template, c’est à dire qu’ils ont tous deux le même effet sur la mémoire. Les templates représentent les comportement typiques des
virus ; par exemple, une boucle de décryptage 7 . Les templates permettent donc
de spécifier les comportements typiques d’un virus.
Cette façon de faire est behavior based [VJLG09] et n’est pas à confondre avec
l’approche comportementale d’un IDS. On se concentre ici sur le comportement
6. Attention, ici, le comportement considéré est donc le comportement anormal au sens
détection d’intrusion.
7. Une autre méthode couramment utilisée par un virus est de propager une version cryptée
de lui-même, avec une boucle de décryptage pour récupérer le code machine lors de l’exécution.
5
malicieux du virus. Si le virus utilise une technique complètement nouvelle, le
détecteur ne le verra pas.
Détection basée sur les spécifications
Comme pour la détection d’intrusion, l’approche par signature trouve rapidement ses limites, la principale étant qu’elle ne permet pas de débusquer les
nouveaux malwares.
Ici, le comportement du malware est inféré par le comportement normal du
programme analysé ou plus globalement du système considéré. Grâce à cette
approche, il est possible de détecter des malwares inconnus, utilisant des failles
inconnues. Encore une fois, on est encore très proche des techniques utilisés par
les IDS, ce qui fait que les faiblesses sont les mêmes : comme il est impossible de
décrire très précisément le comportement normal d’un programme, le nombre de
faux positifs a tendance à devenir trop important. Pour cette raison, on utilise
rarement un tel détecteur seul. Parvenir à décrire précisément le comportement
normal d’un système est un problème toujours non résolu.
Les techniques mises en avant par [IM07] ressemblent à celles de la détection
d’intrusions : utilisant des N-Grams 8 , le machine learning, le monitoring des
appels systèmes, etc.
Il existe une autre approche comportementale basée sur les spécifications
d’un programme ou d’un système.
Il n’est pas rare d’utiliser en même temps un IDS et un détecteur de malwares. Plus précisément, le détecteur de malwares n’est souvent « que » un
composant d’un IDS.
Troisième partie
Le virus est un attaquant
Il est naturel de voir un malware comme étant un attaquant. Son rôle est
en effet de s’attaquer aux machines et réseaux qu’il infecte. Si une partie des
détecteurs de malwares s’intéresse plus à la façon dont il se duplique ou se
camoufle, il est possible de se servir d’IDS pour détecter leurs méfaits.
Néanmoins, utiliser un IDS pour détecter les malwares en particulier est
rarement mis en œuvre. [Ove05] met en évidence trois raisons :
– Le potentiel des IDS n’est pas compris ;
– Il est difficile de paramétrer correctement un IDS ;
– Les IDS sont sujets à des taux de faux positifs trop importants.
8. PAYL, cité dans [IM07], est aussi utilisé dans le cadre des NIDS par exemple.
6
Un malware est constitué de deux parties : le code chargé de la propagation et
le code chargé des actions malveillantes. Chacun de ces composants est porteur
de comportement illégaux, qu’un IDS pourra normalement détecter.
3
L’influence de la détection d’intrusion
Avant de regarder des exemples précis, il peut être intéressant de s’intéresser
aux dénominations utilisées dans les différents articles. Ils sont différents d’une
année sur l’autre et parfois d’un article à l’autre. Ainsi, en 1992, [KS92] met en
avant deux démarches principales, au travers du moniteur (approche comportementale) et du scanner (approche par signature). En 2009, [VJLG09] décrit trois
démarches, l’approche par signature (utilisant des expressions régulières), l’approche comportementale (cherchant à découvrir des comportements propres au
malwares) et l’approche par spécification (qui apprend le comportement normal
du programme ou système avant de le vérifier). En 2012, [San12] ne parle plus
d’approche comportementale à proprement parler et l’englobe dans la recherche
par signature. Il fait de l’approche par spécification un cas particulier de l’approche par anomalie, typique de la détection d’intrusions. Il est d’ailleurs à noter
que l’auteur semble plus proche de la communauté de la détection d’intrusions
que de la détection de malwares.
4
Utiliser Snort comme détecteur de malwares
Snort 9 est un NIDS open-source basé sur les signatures. Il s’agit d’un projet très actif, possédant une communauté importante et proposant des versions
commerciales crédibles qui intéressent les entreprises. [Ove05] explique une démarche pour utiliser Snort comme un détecteur de malwares. Ses principaux
arguments en faveur d’une telle utilisation sont les suivants :
– La plupart des malwares utilisent Internet ce qui rend l’utilisation d’un
NIDS approprié ;
– Créer une signature pour Snort est plus rapide qu’attendre que les antivirus soient mis à jour ;
– Rajouter un niveau supplémentaire de protection est très souvent bénéfique.
Pendant un an, l’auteur de [Ove05] utilisa 500 signatures Snort de sa confection comme détecteur de malwares. Au total, ce sont 500 000 alertes qui furent
levées par l’IDS.
Malheureusement, l’article ne donne que peu de détails chiffrés sur les résultats de son expérimentation personnelle. Il se concentre sur la façon dont on
peut écrire une signature Snort pour la détection de malwares. Il ne donne aucun
taux de détections ou de faux positifs (parce qu’il s’agit d’une observation em9. http ://www.snort.org/
7
pirique basée sur une utilisation de tous les jours, ces valeurs sont difficilement
calculables).
5
L’analyse des payloads d’un trafic
De plus en plus, les malwares utilisent le réseau, que ce soit pour se propager
ou pour envoyer des informations. L’utilisation du réseau permet d’utiliser des
techniques de détection d’intrusion afin de repérer cette activité anormale. Ici,
nous allons prendre l’exemple de PAYL est un algorithme de détection d’intrusion utilisant les N-Grams [HSB+ 12], dont on peut donner une définition simple
et concise :
Définition 2 Un N-Gram d’une séquence donnée est une sous-séquence de taille
N.
PAYL fonctionne grossièrement de la façon suivante : dans un premier temps,
le but est de construire un ensemble de détecteurs, un par port écouté. Le but
de l’algorithme est de comparer la distribution des octets d’un payload. Pour ce
faire, l’ensemble des 1-Grams de chaque payload — autrement dit, l’ensemble
des octets du payload – est construit et est utilisé pour mettre la distribution
moyenne à jour. À noter que PAYL ne considère pas une distribution moyenne
par port, mais une distribution moyenne par taille de payload par port. Une
fois le détecteur construit, chaque payload lui est soumis, et en fonction de la
distance entre sa distribution d’octets et la distribution moyenne sélectionnée
par l’algorithme, le détecteur lève ou non une alerte.
[San12] cite l’algorithme PAYL comme étant capable de détecter les exploits
utilisés par les malwares. À titre d’exemple, il est révélé que PAYL a été capable
de détecter l’attaque par buffer overflow du malware Code Red II.
Quatrième partie
Monitoring et analyse dynamique
Dans les années 1990, la lutte antivirus semblait se concentrer sur la recherche du code malicieux dans les programmes pouvant être potentiellement
infecté. Le but était de recherché des séquences d’octets particulières. Si cette
approche a encore cours aujourd’hui dans de nombreux antivirus commerciaux
(pour son efficacité sur un grand nombre de malwares, pour un coût très faible),
il existe d’autres approches désormais qui se confondent avec la détection d’intrusions.
6
L’analyse dynamique
Peu importe quelle approche on utilise en détection de malwares, il existe
toujours deux techniques d’analyse possible : statique et dynamique (et hybride).
8
La seconde se prête bien à la détection d’intrusion étant donnée qu’elle analyse le
programme pendant son exécution. Plus particulièrement, il existe des détecteurs
basés sur les anomalies avec analyse dynamique.
Ces détecteurs font le même travail qu’un IDS basé sur les anomalies. Pour
[MKLP12], les deux se confondent, car le but des malwares est d’utiliser des
vulnérabilités pour se propager et/ou accomplir leurs méfaits. Une approche
basés sur les anomalies 10 permet de ne pas se soucier des méthodes d’obfuscation
toujours plus complexes écrites par les hackers.
À noter que l’analyse dynamique ne se limite bien entendu pas aux détecteurs basés sur les anomalies. Il existe des détecteurs basés sur les signatures
qui utilisent l’analyse dynamique pour trouver des signatures connues (ou plus
généralement, des templates). Là encore, on peut utiliser cette approche aussi
bien en détections d’intrusions qu’en détections de malwares.
7
L’exemple de NORT
NORT est un HIDS anomaly-based pour Windows [MKLP12]. Il permet de
détecter des exploits derrière lesquels peuvent se cacher aussi bien des attaquants
humains ou des virus. Ils se basent sur les travaux de Forrest et al [FHSL96], qui
proposaient un HIDS utilisant les séquences d’appels systèmes pour déterminer
si le programme déviait de son comportement normal.
Si un virus a réussi à infecter un programme, ce n’est pas pour le laisser se
comporter normalement mais profiter de ses droits sur le système. Il va devoir
se répliquer et corrompre des données, par exemple. Ces tâches ont de grandes
chances de ne pas faire appel aux mêmes appels systèmes. Dans le pire des cas,
si les appels sont les mêmes, les séquences d’appels pourront être différentes
(l’ordre et le nombre). Il existe cependant des attaques par mimétisme qui visent
à tromper le système.
NORT n’a pas pour but de se substituer à un antivirus classique (basé sur
les signatures) mais à être utilisé en complément. Il permet à la fois la détection
d’intrusions et la détection de malwares.
L’approche de NORT est d’aller plus loin dans le contrôle des appels systèmes. Après une phase d’apprentissage passée à construire un modèle du comportement normal, NORT va s’intéresser, entre autres, à :
– Regarder l’entropie entre deux jeux de données (ici, les séquences d’appels
systèmes) ;
– Utiliser un algorithme de data mining pour trouver des patterns intéressants ;
Les bons résultats de NORT (il parvient à détecter des malwares du « monde
réel » 11 ) ont un coût. Il est commun à tous les HIDS qui surveillent dynamiquement l’exécution des programmes : les performances du systèmes sont dégradées.
On parle d’overhead. L’overhead de NORT dépend des situations dans lesquelles
10. Pour éviter toute confusion, il est important de ne pas parler d’approche comportementale, qui possède un sens différent dans la détection d’intrusions et de malwares.
11. Aucun taux précis ne semble cependant avancé...
9
il est utilisé, mais restait faible et peu dérangeant à l’usage (dans le cas de compression/décompression 7z, l’overhead était toujours inférieur à 10%.
Cinquième partie
Conclusion
La détection d’intrusion et la détection de malwares sont deux domaines
possédant un même but : protéger un système informatique de ses agresseurs et
faire en sorte que la politique de sécurité qui le régit soit respectée. Pour autant,
les deux communautés n’ont commencé à converger que récemment.
Historiquement, les IDS s’attachaient à détecter les exploits permettant de
contourner la politique de sécurité d’un système informatique. Pour cela, la
détection s’appuie sur deux approches : la recherche d’attaques connues (on
parle d’approche basée signatures) et la surveillance du comportement connu
(on parle d’approche basée sur les anomalies, ou approche comportementale).
À l’opposé, les antivirus cherchaient à trouver dans des exécutables les comportements typiques des malwares : boucle de décryptage, envoi massif de courriels, etc. Jusqu’à récemment, on parlait de trois approches différentes : l’approche par signatures (qui consiste à recherche des séquences d’octets dans un
exécutables), l’approche comportementale (qui cherche à repérer des comportements malicieux) et l’approche par spécification (qui se rapproche de l’approche
par anomalie des IDS).
Ici, on peut voir l’une des différences les plus importantes qui existe entre
les deux communautés : l’approche comportementale n’a pas du tout la même
signification si l’on parle d’IDS ou d’antivirus.
Dans les articles les plus récents, la détection d’intrusion influence la détection de malwares, qui prend ses termes. Ainsi, on parlera de détection par
anomalie (dont la détection par spécification est un cas particulier) et de détection par signature (qui englobera l’ancien détection comportementale).
Il est un domaine dans lequel les deux détections semblent se fondre : l’analyse dynamique (ou runtime) d’exécutable basée sur les anomalies. Un HIDS de
ce type pourra servir à détecter les virus, comme le démontre NORT. Des IDS
plus traditionnels, comme SNORT, peuvent aussi être utilisés comme antivirus.
Ces derniers tendent à devenir, d’ailleurs, des composants d’IDS complets.
Références
[CI11]
Cert-IST. Bilan cert-ist 2011 des failles et attaques. 2011.
[FHSL96] S. Forrest, S.A. Hofmeyr, A. Somayaji, and T.A. Longstaff. A sense
of self for unix processes. In Security and Privacy, 1996. Proceedings., 1996 IEEE Symposium on, pages 120–128. IEEE, 1996.
+
[GBG 11] M. Garcia, A. Bessani, I. Gashi, N. Neves, and R. Obelheiro. Os
diversity for intrusion tolerance : Myth or reality ? In Dependable
10
Systems & Networks (DSN), 2011 IEEE/IFIP 41st International
Conference on, pages 383–394. IEEE, 2011.
[HSB+ 12] D. Hadžiosmanović, L. Simionato, D. Bolzoni, E. Zambon, and
S. Etalle. N-gram against the machine : On the feasibility of the
n-gram network analysis for binary protocols. Research in Attacks,
Intrusions, and Defenses, pages 354–373, 2012.
[IM07]
N. Idika and A.P. Mathur. A survey of malware detection techniques.
Purdue University, page 48, 2007.
[KN]
G. Kaur and B. Nagpal. Exploring the malware analysis landscape
for forensic investigation.
[KS92]
S. Kumar and E.H. Spafford. A generic virus scanner for c++.
In Computer Security Applications Conference, 1992. Proceedings.,
Eighth Annual, pages 210–219. IEEE, 1992.
[MKLP12] N. Milea, S. Khoo, D. Lo, and C. Pop. Nort : Runtime anomalybased monitoring of malicious behavior for windows. In Runtime
Verification, pages 115–130. Springer, 2012.
[Ove05]
M. Overton. Anti-malware tools : Intrusion detection systems. IBM,
UK, 2005.
[San12]
Lars Arne Sand. Malware detection — a review of the state of the
art malware detection techniques. 2012.
[top]
topvirus.com.
Histoire du premier
http ://www.topvirus.com/dossier1.php.
virus
informatique.
[VJLG09] P. Vinod, R. Jaipur, V. Laxmi, and M. Gaur. Survey on malware
detection methods. In Proceedings of the 3rd Hackers’ Workshop
on Computer and Internet Security (IITKHACK’09), pages 74–79,
2009.
11