L'analyse de malwares
Fonctionalités des malwares
Persistence
Pour être efficace, un malware va chercher à rester persistant sur le système cible, c'est à
dire qu'il va
essayer
d'être actif au redémarrage du système.
Nous pouvons distinguer quatre techniques principales permettant de rendre persistant un
malware au sein d'un
système :
Sous les environnement Windows, la base de registre contient tous les paramétrages
relatifs au système et
aux
programmes.
Cette base permet notamment, par le biais de certaines clés, d'associer des programmes
au redémarrage du
système. En
voici une liste non exhaustive :
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce] [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce] [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]
Ces clés varient d'une version de windows à l'autre. Il est donc intéressant de consulter le support officiel pour connaitre la liste de ces entrées pour une version spécifique.
Sous Windows certains fichiers spéciaux permettent de paramétrer le système et son démarrage. C'est le cas par exemple du fichier boot.ini.
Pour rester persistant, un malware peut s'intégrer sur le système en tant que
service.
Un service est une bibliothèque (.dll) chargée et exécutée au démarrage du système par
le processus
svhost.exe.
L'avantage de cette technique est qu'elle permet également de dissimuler l'activité du
malware. En effet les
services ne sont pas visibles directement par le gestionnaire de taches, puisqu'ils
appartiennent au
processus
svhost.exe.
Certains malwares vont même jusqu'a s'intégrer dans des drivers ou encore au niveau du MBR.
Dans ce cas il est très difficile de les identifier.
Dissimulation
Les malwares vont également essayer de cacher au maximum leurs activités au sein du système. Il peuvent tout
d'abord s'intégrer dans le système en tant que service pour ne pas être visible directement dans le gestionnaire
des taches.
En effet comme vu précédemment, les services sont chargés par le processus svhost.exe.
De nombreuses autres techniques de dissimulation existent, les plus connues sont les hook et l'injection de
code.
Hook
Les hook sont très utilisés notamment par les rootkit. Ils consistent à remplacer une fonctionnalité externe par
sa propre fonction.
Par exemple remplacer la fonction permettant de liste les processus en activité dans le
gestionnaire des taches Windows par sa propre fonction.
En faisant de la sort, il est aisé de cacher la présence du malware dans la liste des processus actifs sur le
système.
Injection de code
Cette méthode permet de s'intégrer dans un processus légitime du système. Les processus explorer.exe ou
winlogon.exe sont couvent ciblés par les malwares dans un environnement Windows.
L'intérêt est réel puisqu'il permet de se cacher dans un processus habituel pour paraitre inexistant auprès de
l'utilisateur.
Pour faire de l'injection de code de nombreuses méthodes existent.
Une des plus courantes est l'utilisation de la base de registre.
Il suffit de s'inscrire dans la clé de base de registre suivante pour injecter une DLL dans un processus
spécifique :
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs
Cette clé permet d'indiquer les DLL chargées avec le système.