OVH Cloud OVH Cloud

Méthodes formelles pour la détection de virus

5 réponses
Avatar
Frederic Bonroy
Article très technique sur de nouvelles méthodes de détection de virus:

http://www.virusbtn.com/magazine/archives/200309/formal.xml

Je n'ai pas encore tout lu mais ça a l'air d'être très intéressant.

5 réponses

Avatar
Tweakie
On Sun, 23 Nov 2003, Frederic Bonroy wrote:

Article très technique sur de nouvelles méthodes de détection de vi rus:

http://www.virusbtn.com/magazine/archives/200309/formal.xml

Je n'ai pas encore tout lu mais ça a l'air d'être très intéressan t.




Bonjour,

Je ne suis pas certain d'avoir tout suivi, mais si j'ai bien
compris il s'agit d'une methode alternative (ou complementaire) a
l'emulation qui consiste a reconstituer la structure d'un programme
a partir de sa forme binaire et a transcrire celle-ci sous la forme
d'un graphe dont chaque noeud represente une "fonction" et a identifier
quelles sont les donnees accedees/modifiees par chacune de ces fonctions.
La detection heuristique consisterait ensuite a rechercher au sein de
ce graphe des motifs connus et correspondant a des operations
generalement effectuees par les virus, comme par exemple envoyer des
emails en rafale. L'interet d'une telle methode serait de permettre
la detection de malware polymorphe ou metamorphe, les "motifs
caracteristiques" du graphe etant supposes invariants vis a vis des
"mutations" subies par le binaire.

Graphiquement, certaines des informations contenues dans ce graphe
peuvent donc etre repesentees comme ceci (j'espere que Pierre Vandevenne
me corrigera si je me trompe) :
http://www.datarescue.com/idabase/pix/pc2.gif
http://www.datarescue.com/idabase/pix/pc10.gif

Les auteurs presentent le principe de la methode, qui se decompose
en 5 phases successives et illustrent la vulnerabilite' de chacune de
ces etapes en presentant differentes methodes d'attaque. Ils concluent
que si cette methode permet effectivement d'obtenir des resultats
satisfaisants pour des programmes standards, compiles a partir d'un
code source ecrit en langage de haut niveau, il est relativement aise'
de la circonvenir si on le veut vraiment.

J'espere que ce "pitch" aura donne' a ceux qui ne l'ont pas encore fait
envie de lire l'article.

Cela dit, l'analyse parait pertinente et est accessible au beotien que
je suis, mais je ne peux m'empecher de me poser la question de l'utilite'
d'une telle innovation, ou plutot : cette utilite' est bien celle que les
auteurs de l'article lui atribuent ? Quelle est la frequence d'apparition
de malwares poly/metamorphiques necessitant une mise a jour des moteurs
d'anti-virus ? Cette frequence est-elle si importante qu'on ait a ce
point besoin d'implanter une nouvelle methode au sein des antivirus ?
L'objectif princpal d'une telle technique ne serait-il pas plutot de
permettre la detection heuristique des programmes ecrits en langage
de haut niveau, la detection de virus poly/meta-morphe n'etant qu'un
bonus appreciable ? La quasi-absence de detection heuristique de la
grande majorite' malwares modernes n'est-elle pas un des grands manques
des anti-virus modernes ?

Meme si on ne peut exclure l'apparition d'un nouvel "Hybris-like",
au vu de la production actuelle de malware (quantitativement et
qualitativement), il me semble qu'il faut avant tout se premunir
contre les "Swen-like".

--
Tweakie

Avatar
Misterjack
Salut !

Article très technique sur de nouvelles méthodes de détection de virus:
http://www.virusbtn.com/magazine/archives/200309/formal.xml
Je n'ai pas encore tout lu mais ça a l'air d'être très intéressant.


Très bon lien ! Merci.

Amicalement,
--
Mister Jack (MJ)
"Linux c'est pas pour les manchots !"
Adresse invalide pour quelques jours <<<






Avatar
Frederic Bonroy

Je ne suis pas certain d'avoir tout suivi, mais si j'ai bien
compris il s'agit d'une methode alternative (ou complementaire) a
l'emulation qui consiste a reconstituer la structure d'un programme
a partir de sa forme binaire et a transcrire celle-ci sous la forme
d'un graphe dont chaque noeud represente une "fonction" et a identifier
quelles sont les donnees accedees/modifiees par chacune de ces fonctions.


Ce qui m'interpelle, c'est la comparaison avec ce que font les
compilateurs. Théoriquement ça semble évident, mais en pratique? Le
compilateur a à sa disposition le code dans un format explicite (un code
intermédiaire entre langage de programmation et code assembleur), tandis
qu'un antivirus a devant soi le code binaire, ce qui rend sa tâche plus
difficile que celle du compilateur.

La detection heuristique consisterait ensuite a rechercher au sein de
ce graphe des motifs connus et correspondant a des operations
generalement effectuees par les virus, comme par exemple envoyer des
emails en rafale. L'interet d'une telle methode serait de permettre
la detection de malware polymorphe ou metamorphe, les "motifs
caracteristiques" du graphe etant supposes invariants vis a vis des
"mutations" subies par le binaire.


C'est aussi ce que j'ai compris. Je trouve que c'est un peu ce que
j'avais décrit ici, du moins en surface:
http://groups.google.fr/groups?selm=bgk041%24pg507%241%40ID-75150.news.uni-berlin.de

Cela dit, l'analyse parait pertinente et est accessible au beotien que
je suis, mais je ne peux m'empecher de me poser la question de l'utilite'
d'une telle innovation, ou plutot : cette utilite' est bien celle que les
auteurs de l'article lui atribuent ? Quelle est la frequence d'apparition
de malwares poly/metamorphiques necessitant une mise a jour des moteurs
d'anti-virus ?


Il n'y a pas beaucoup de tels virus en liberté, mais il ne faut pas
négliger les autres. Je pense à Prizzy et Crypto qui posent de vrais
problèmes à F-Prot en matière de vitesse, cette technique pourrait aider
à accélerer le processus.

Meme si on ne peut exclure l'apparition d'un nouvel "Hybris-like",
au vu de la production actuelle de malware (quantitativement et
qualitativement), il me semble qu'il faut avant tout se premunir
contre les "Swen-like".


Oui, mais là c'est avant tout aux utilisateurs de faire attention.

Avatar
Tweakie
On Mon, 24 Nov 2003, Frederic Bonroy wrote:


Ce qui m'interpelle, c'est la comparaison avec ce que font les
compilateurs. Théoriquement ça semble évident,


..et encore, l'evidence ne me saute pas aux yeux.

mais en pratique? Le
compilateur a à sa disposition le code dans un format explicite (un cod e
intermédiaire entre langage de programmation et code assembleur), tandi s
qu'un antivirus a devant soi le code binaire, ce qui rend sa tâche plus
difficile que celle du compilateur.



AMHA, c'est pour ca que les premieres etapes du processus, telles que
les decrivent les auteurs, consistent a desassembler le binaire et
a obtenir un code plus "lisible". Je veux bien croire que c'est plus
simple si ce code est produit par un compilateur qui va a-priori avoir
tendance a creer des sequences binaires similaires a partir de sequences
d'instructions de HLL elles memes similaires.

C'est aussi ce que j'ai compris. Je trouve que c'est un peu ce que
j'avais décrit ici, du moins en surface:
http://groups.google.fr/groups?selm=bgk041%24pg507%241%40ID-75150.news. uni-berlin.de



Oui, le principe est bien le meme. Doit-on conclure que ce type de
techniques n'est pas encore utilise' a l'heure actuelle dans les AVs ?

--
Tweakie

Avatar
Frederic Bonroy

Ce qui m'interpelle, c'est la comparaison avec ce que font les
compilateurs. Théoriquement ça semble évident,


..et encore, l'evidence ne me saute pas aux yeux.


Moi si puisque les compilateurs de nos jours font des efforts
d'optimisation considérables, ce qui nécessite parfois de deviner (si je
puis dire, ce n'est bien sûr pas tout à fait de la devinette) ce que le
programmeur voulait faire. Et c'est ce qu'on recherche aussi à faire
faire à un antivirus.

AMHA, c'est pour ca que les premieres etapes du processus, telles que
les decrivent les auteurs, consistent a desassembler le binaire et
a obtenir un code plus "lisible". Je veux bien croire que c'est plus
simple si ce code est produit par un compilateur qui va a-priori avoir
tendance a creer des sequences binaires similaires a partir de sequences
d'instructions de HLL elles memes similaires.


Je ne vois pas en quoi le désassemblage produirait du code plus "lisible"...

Oui, le principe est bien le meme. Doit-on conclure que ce type de
techniques n'est pas encore utilise' a l'heure actuelle dans les AVs ?


Je ne pense pas.