L’analyse spectrale se sert des
particularités propres à chaque moteur de mutations des virus polymorphes. En
effet, celui-ci sert à générer une boucle de déchiffrement en langage machine,
et possède ses propres particularités dans le choix du codage des instructions
utilisées, au même titre que les compilateurs ou les assembleurs. Rappelons en
effet qu’une instruction du langage machine peut souvent être codée de
plusieurs façons différentes, et ainsi chacun de ces programmes utilise tels
codages plutôt que tels autres. Comme tous font des choix différents, il
devient possible en analysant le codage des instructions employées dans un code
d’en déduire le programme qui l’a assemblé. D’un point de vue théorique, on
représente toute instruction codée du langage machine par un point dans
l’espace des codages possibles, puis on établit les zones de cet espace que
chaque compilateur, assembleur ou moteur de mutation utilise. Ainsi, par
analyse du spectre des instructions d’un code, on peut situer celui-ci dans cet
espace et faire des recoupements avec les zones voisines. On en déduit par quoi
il a été construit, ce qui permet d’identifier un virus polymorphe dont on
connaît le moteur.
On pourra par exemple rechercher dans un code
susceptible d’être infecté par tel virus polymorphe, si il y a des codes
d’instruction que seul le moteur de mutation de ce virus emploie, ou au
contraire qu’il n’emploie jamais, et en déduire ainsi la présence ou l’absence
du virus. Malheureusement, si une version du virus polymorphe ne présente
aucune particularité, ce qui statistiquement doit arriver, elle ne pourra être
détecter par analyse spectrale. De plus, un virus polymorphe peut riposter en
introduisant dans son programme hôte une série d’instructions inutiles que son
moteur ne pourrait pas générer, pour tromper l’analyse.
Aucun commentaire:
Enregistrer un commentaire