L’injection de code en mémoire est une astuce employée par de nombreux logiciels malveillants (malwares) pour passer inaperçus. En termes simples, cela revient à cacher du code malveillant à l’intérieur de la mémoire d’un programme légitime.
Cet article détaille ce qu’est l’injection mémoire, comment les malwares s’en servent pour contourner les antivirus, présenter des exemples concrets, et enfin les principales contre-mesures à adopter pour s’en protéger. Le tout dans un langage clair, accessible à tous.
Table des matières
Qu’est-ce que l’injection de code
L’injection de code en mémoire consiste pour un programme (ici, malveillant) à s’infiltrer dans la mémoire d’un autre processus (programme) qui est déjà en cours d’exécution. Concrètement, le malware insère son propre code dans l’espace mémoire d’un logiciel légitime, puis le fait exécuter comme s’il faisait partie du programme hôte. Autrement dit, au lieu de fonctionner en tant que programme séparé (ce qui serait plus facilement repéré), le code malveillant se fond dans un processus existant.
Cette technique peut être comparée à un intrus qui s’invite discrètement dans un véhicule officiel pour franchir un point de contrôle : le logiciel malveillant “voyage” à l’intérieur d’un programme de confiance, ce qui le rend beaucoup moins visible. L’injection mémoire est une forme de « code injection » spécialement orientée vers la mémoire vive de l’ordinateur. Elle peut tirer parti de fonctionnalités prévues à la base pour de bonnes raisons (par exemple, certains outils de développement ou de diagnostic utilisent aussi l’injection de code pour étendre ou déboguer des applications), mais des acteurs malveillants la détournent afin d’exécuter du code sans autorisation et à l’insu de l’utilisateur.
Il s’agit d’une des méthodes utilisées par les malwares pour s’infiltrer dans le système, mais également, échapper aux détections antivirus. Plus de détails :Comment les malwares se cachent des antivirus
Pourquoi les malwares utilisent-ils cette technique pour se cacher ?
L’intérêt principal de l’injection mémoire pour un malware est de contourner les mécanismes de sécurité et rester invisible. Puisque le code malveillant tourne au sein d’un processus légitime, il hérite de ses droits et de sa confiance auprès du système. Par exemple, si un virus injecte son code dans un processus système connu (comme explorer.exe ou svchost.exe sous Windows), l’antivirus le considère d’abord comme le processus habituel approuvé et risque de ne pas détecter la présence du parasite à l’intérieur. En somme, le malware se déguise en composant du programme hôte.
Cette invisibilité fonctionne à plusieurs niveaux : les règles classiques des antivirus (basées sur la détection de fichiers suspects ou de processus inconnus) sont mises en échec, car rien de suspect n’apparaît en surface. Le code malveillant ne crée pas forcément de nouveau fichier sur le disque dur, ce qui lui permet d’éviter le scan antivirus traditionnel par signatures. On parle d’ailleurs de malware sans fichier (fileless malware) lorsque l’attaque réside uniquement en mémoire. Certains virus modernes n’écrivent aucun fichier malicieux sur le disque : ils injectent tout directement en mémoire, ce qui les rend très furtifs.
De plus, le processus système est contrôlé par le logiciel malveillant et peut émettre des connexions sortantes.
Là aussi, si les règles du pare-feu autorise le processus système, la connexion ne sera pas bloquée.
En outre, en utilisant un processus légitime comme « hôte », le malware profite aussi de ses privilèges. Si le processus cible a des droits élevés (administrateur, accès réseau, etc.), le code injecté en bénéficie également, facilitant l’exécution d’actions malveillantes au cœur du système. Par exemple, un cheval de Troie caché dans le processus d’un navigateur web pourra lire ou modifier ce qui s’affiche à l’écran, car le navigateur lui-même en a le droit. Tous ces facteurs contribuent à déjouer la vigilance des outils de sécurité. Un antivirus classique qui surveille les programmes malveillants autonomes peut passer à côté d’un code nuisible si celui-ci tourne dissimulé dans un programme de confiance.
Il arrive même que des outils système officiels soient utilisés comme véhicule. Par exemple, PowerShell (l’interpréteur de commandes de Windows, pourtant légitime et signé par Microsoft) est fréquemment exploité : un pirate peut s’en servir pour charger du code en mémoire. Étant donné que PowerShell est un composant de confiance du système, l’antivirus ne bloquera généralement pas ce type d’injection de code malveillant, et rien d’anormal ne sera visible dans les journaux d’événements de Windows. Ce stratagème permet aux malwares de passer sous le radar des protections traditionnelles.
Exemple d’injection de code dans des processus système
Cette technique existe depuis maintenant une décénie et reste encore à l’ordre du jour avec des malwares plus récents comme Purple Fox ou Netwalker.
Voici quelques exemples d’utilisation.
Zeus (Zbot) (2007)
Ce célèbre cheval de Troie bancaire (apparu vers 2007) visait à voler les informations financières. Il intégrait un module d’injection dans le navigateur web de la victime. Concrètement, Zeus injectait des scripts malveillants directement dans les pages web affichées par le navigateur pour dérober des identifiants bancaires, le tout sans éveiller les soupçons de l’utilisateur.
Cette technique de « man-in-the-browser » (littéralement « dans le navigateur ») a permis à Zeus de contourner les protections et d’altérer les pages sécurisées afin de piéger les victimes.
TDSS et ZAcess (2010)
Le logiciel malveillant TDSS a aussi souvent utilisé l’injection de code pour s’implanter dans le système.
Ci-dessous, le malware utilise le processus système spoolsv.exe (le processus du service du spooler d’imprimante) pour exécuter un logiciel malveillant.
Zaccess fait exactement la même chose – le dropper lance explorer.exe est en prend le contrôle :
Puis lance smss.exe certainement pour accéder au niveau kernel Windows (noyau Windows).
La connexion est ensuite établie par le système vers 188.229.100.68 (SYN).
Ce qu’il faut bien comprendre, c’est que la connexion est établie par winlogon.exe, le processus système contrôlé par le logiciel malveillant.
De ce fait, la connexion sortante n’est pas établie par un processus externe.
Si une règle trop peu permissive est présente dans le firewall, celle-ci n’est pas bloquée.
Ensuite, explorer.exe se charge ensuite de créer un service relatif aux fichiers patchés (commence toujours par un .)
À noter que si on bloque la modification en mémoire d’explorer.exe tout s’arrête.
Malware via un PDF malveillant
Voici un autre exemple avec un PDF malveillant qui utilisait une vulnérabilité logicielle sur Acrobat Reader.
Ci-dessous, on voit que le processus d’Acrobat Reader tente d’exécuter un fichier DLL.
Ce dernier s’enregistre dans le système via regsrv32.exe
Pour terminer, la dite DLL prends ensuite le contrôle d’explorer.exe
Spambot via svchost.exe
La capture ci-dessous montre clairement le processus qui lance une instance de svchost.exe qui effectue les connexions SMTP du SpamBot.
Enfin cette technique peut aussi être utilisé par des Backdoors comme par exemple Backdoor.Win32.HareBot –
Trojan et injection DLL en pratique
Quelques vidéos qui montrent des trojans utilisant des injections de DLL.
Le but est de bien comprendre en pratique comment cela se passe dans Windows.
Une partie aussi de ces injections sont expliquées en pratique sur la page : Trojan avancé : fonctionnement de cheval de troie plus complexe
En vidéo avec le Trojan Sathurbot :
En vidéo les injections de processus effectuées par le Trojan Bedep :
Enfin, dans la vidéo suivante, comment détecter une injection de DLL non signée provenant du Trojan Bedep :
Quelles contre-mesures contre l’injection mémoire ?
Microsoft a apporté de nouvelles protections dans Windows 10 et Windows pour limiter les ionjections de codes.
Les systèmes modernes intègrent des gardes-fous contre les attaques mémoire.
Par exemple, la fonction DEP (Data Execution Prevention) empêche l’exécution de code à partir de zones mémoire qui ne devraient contenir que des données, bloquant ainsi certaines injections.
De même, l’ASLR (Address Space Layout Randomization) brouille les emplacements mémoire utilisés par les programmes, rendant plus difficile pour un attaquant de deviner où insérer son code.
De plus, les logiciels de sécurité modernes intègrent des mécanismes de détection comportementale capables d’identifier des activités anormales en mémoire. Un antivirus à jour reconnaîtra mieux les techniques d’injection récemment découvertes et pourra stopper les comportements suspects (par exemple, un programme qui tente d’écrire dans la mémoire d’un autre).
Les antivirus de nouvelle génération et outils EDR (Endpoint Detection & Response) vont plus loin qu’un antivirus traditionnel. Ils surveillent en temps réel les processus et leur comportement. Par exemple, certaines solutions comportent une protection dédiée contre l’injection mémoire, qui bloque toute tentative pour un code non autorisé de se greffer dans un processus légitimerapid7.com. Ces outils peuvent aussi neutraliser les documents malveillants (macros, scripts) avant qu’ils n’aient la possibilité de charger du code en mémoirerapid7.com. Pour le grand public, cela se traduit par des suites de sécurité plus performantes, capables de détecter les attaques « sans fichier » en se basant sur les signes d’infection plutôt que sur la seule présence d’un fichier suspect.
Enfin, la meilleure défense reste votre prudence. Les techniques d’injection mémoire, aussi sophistiquées soient-elles, nécessitent souvent une action initiale.
Par exemple, cliquer sur une pièce jointe infectée, exécuter un programme douteux, etc.).
Soyez méfiant face aux emails ou liens inattendus (phishing) et n’exécutez pas de fichiers dont l’origine n’est pas sûre.
En limitant les occasions pour le malware de s’introduire, vous réduisez d’autant le risque qu’il ait la chance d’exploiter l’injection mémoire par la suite.
Liens
- Les virus informatiques : fonctionnement et protections
- Comment les virus informatiques sont distribués
- Comment fonctionnent les trojans : les explications
- Liste des détections antivirus : exemples de malwares, trojans, PUP, adwares
- Trojan Stealer : le malware qui vole des données
- Les keylogger ou enregistreur de frappes clavier
- Trojan PowerShell
- Vers informatiques (worms) : description et fonctionnement
- Qu’est-ce que les spywares (logiciel espion) et comment les supprimer
- Les Trojans Banker
- Comprendre le Trojan Downloader : rôle, fonctionnement, exemples, protection
- Les virus sur Android
- Trojan RAT (Remote Access Tool)
- Les botnets : réseau de machines infectées
- Business malwares : le Pourquoi des infections informatiques
- Comment les virus informatiques sont distribués.
- La sécurité de son PC, c’est quoi ?
- Savoir si on a un virus sur son PC : 9 signes d’une infection par un malware