Mavinject où comment Microsoft facilite l’injection de code malveillant

Si vous n’êtes pas un féru des LOLBins – vous savez les binaires Microsoft qui détournés de leur usage standard peuvent réaliser des actions malveillantes (https://lolbas-project.github.io/) – alors vous n’avez probablement jamais entendu parlé de mavinject.exe.

Cette exécutable est utilisé par la technologie App-V de Microsoft, de la virtualisation d’applications, chose que l’on ne rencontre pas forcément très souvent sur des postes de travail lambda.

Tout ça pour dire que si vous n’utilisez pas cette technologie App-V alors vous avez sur votre système un exécutable signé par Microsoft, légitime, qui permet comme par magie, en une seule ligne de commande d’injecter du code (une DLL) dans les processus Windows.

Un petit exemple vaut mieux qu’un long discours.

Imaginez un document Office malveillant qui enregistre une DLL quelque part sur votre système, disons pour faire simple dans C:\Temp

La macro n’a qu’une seule ligne de code à exécuter pour charger cette DLL dans un processus actif, par exemple dans l’explorateur de fichiers.

Cet exemple n’est pas si anodin, l’explorateur de fichiers (explorer.exe) est souvent utilisé pour héberger du code malveillant car il est toujours chargé en mémoire.

L’injection de code ne nécessite que le PID (Process ID) du processus cible, par exemple ici mon explorateur de fichiers a le PID 1700 :

Ensuite il n’y a plus qu’à lancer mavinject.exe (il se trouve dans C:\windows\System32 et C:\windows\SysWOW64) avec le PID cible et le chemin de la DLL à injecter :

Et boum la DLL est chargée dans l’espace mémoire de l’explorateur de fichiers comme on peut le voir ci-dessous (injectme64.dll présent dans la liste des DLL chargées par le processus explorer.exe) :

et forcément le code de la DLL est exécutée (DllMain) :

Moralité, il s’agit d’une technique extrêmement simple fournie par Microsoft pour tout acteur malveillant qui souhaite cacher du code dans des processus et par la même occasion bypasser les solutions de contrôles d’applications (comme Applocker par exemple), pas mal non ?