L'émulation est une technologie de pointe crée depuis les années 90 par les pionniers de l'industrie Antivirus de l'époque pour faire face aux menaces ascendantes des virus Polymorphiques du type MTE et compagnies. Un émulateur, est par définition un module qui imite partiellement ou totalement le fonctionnement d'un ordinateur; c'est à dire qu'il permet de faire exécuter un quelconque fichier cible sous un environnement contrôlé et purement virtuel indépendamment de l'ordinateur et des ses composants. L'utilité d'un tel module se résume à pouvoir analyser le fonctionnement potentiel d'un fichier cible afin d'anticiper un quelconque comportement malicieux du fichier en question au cas où il serait exécuté en mode réel :
- Suppression de fichiers.
- Formatage ou destruction du disque dur.
- Infections des autres fichiers.
- Propagation par le réseau.
- Désactivation des Firewalls / Antivirus installés.
- Corruption du système d'exploitation.
- etc..
- Émulation Processeur ( Pentium, AMD, ARM etc... ).
- Émulation Mémoire.
- Émulation Hardware (Disque dur virtuel,Carte réseau etc..)
- Émulation Système d'exploitation (Windows / Linux / Solaris etc.. ).
Maintenant en parlant de mon propre travail : j'ai essayé de maintenir un niveau d'abstraction élevé pendant toute la phase de développement afin de pouvoir offrir une architecture d'émulation évolutive et adaptative. L'abstraction des méthodes et de l'interface générale d'émulation est un peu coûteuse en terme de performances, mais elle a l'avantage de me permettre d'avoir une plus grande flexibilité de travail pour la prise en charge des différentes combinaisons de configurations liées au processus d'émulation. L'avantage d'une telle approche se résume au faite que le Kernel d'émulation sera indépendant et portable en terme de fonctionnement entre les différents systèmes d'exploitation et les différents Processeurs que j'ai implémenté et que j'implémenterai dans un proche futur. Pour être plus clair sur ce point :
- Un seul Kernel est capable d'émuler plusieurs Processeurs : Pentium, AMD, ARM etc..
- Un seul Kernel est capable d'émuler plusieurs systèmes d'exploitation Windows, Linux, Solaris etc..
- L'engin principal rencontre un fichier exécutable Linux de type ELF sous un environnement exécutif Windows, le Kernel d'émulation se connecte alors dynamiquement à l'interface d'émulation du système d'exploitation Linux et commence le processus d'émulation.
- L'engin principal rencontre un fichier exécutable Windows de type PE sous un environnement exécutif Linux, le kernel d'émulation se connecte alors dynamiquement à l'interface d'émulation du système d'exploitation Windows et commence le processus d'émulation.
- Le processus de scanning lancé depuis un environnement 32bit fonctionne de cette manière :
- Si l'engin principal rencontre un fichier exécutable 32bit, le kernel d'émulation invoque alors l'interface d'émulation processeur 32bit.
- Si l'engin principal rencontre un fichier exécutable 64bit, le kernel d'émulation invoque alors l'interface d'émulation processeur 64bit.
- Le processus de scanning lancé depuis un environnement 64bit fonctionne de cette manière :
- Si l'engin principal rencontre un fichier exécutable 64bit, le kernel d'émulation invoque alors l'interface d'émulation processeur 64bit.
- Si l'engin principal rencontre un fichier exécutable 32bit, le kernel d'émulation invoque alors l'interface d'émulation processeur Legacy Mode.
Aucun commentaire:
Enregistrer un commentaire