Réaliser qu’un vecteur d’attaque a fonctionné dans votre réseau juste sous votre nez peut être choquant. Vous avez joué votre rôle en mettant en place des défenses de sécurité qui semblaient efficaces, mais l’attaquant a quand même réussi à les contourner. Comment cela a-t-il été possible ?


Il a pu déployer l’injection de processus en insérant des codes malveillants dans vos processus légitimes. Comment fonctionne l’injection de processus et comment l’empêcher ?

Qu’est-ce que l’injection de processus ?

L’injection de processus est un processus par lequel un attaquant injecte des codes malveillants dans un processus légitime et actif d’un réseau. Prévalent dans les attaques de logiciels malveillants, il permet aux cyberacteurs d’infecter les systèmes de la manière la plus discrète qui soit. Technique de cyberattaque avancée, l’intrus insère des logiciels malveillants dans vos processus valides et bénéficie des privilèges de ces processus.

Comment fonctionne l’injection de processus ?

Ordinateur portable sur un bureau de travail

Les types d’attaques les plus efficaces sont ceux qui peuvent fonctionner en arrière-plan sans éveiller de soupçons. Normalement, vous pourriez détecter une menace de malware en décrivant et en examinant tous les processus de votre réseau. Mais la détection de l’injection de processus n’est pas si facile car les codes se cachent dans l’ombre de vos processus légitimes.

Puisque vous avez établi une liste blanche de vos processus autorisés, vos systèmes de détection certifieront qu’ils sont valides sans que rien n’indique que quelque chose ne va pas. Les processus injectés contournent également les analyses de disque car les codes malveillants s’exécutent dans la mémoire du processus légitime.

L’attaquant utilise l’invisibilité des codes pour accéder à tous les aspects de votre réseau auxquels les processus légitimes sous lesquels ils se cachent peuvent accéder. Cela inclut certains privilèges administratifs que vous n’accorderiez pas à n’importe qui.

Bien que l’injection de processus puisse facilement passer inaperçue, les systèmes de sécurité avancés peuvent les détecter. Les cybercriminels mettent donc la barre plus haut en l’exécutant de la manière la plus discrète qui soit pour que ces systèmes passent inaperçus. Ils utilisent des processus Windows de base comme cmd.exe, msbuild.exe, explorer.exe, etc. pour lancer de telles attaques.

3 techniques d’injection de processus

Il existe différentes techniques d’injection de processus pour différents objectifs. Comme les acteurs de la cybermenace connaissent très bien les différents systèmes et leur niveau de sécurité, ils déploient la technique la plus appropriée pour augmenter leur taux de réussite. Examinons-en quelques-unes.

1. Injection de DLL

L’injection de DLL (Dynamic Link Library) est une technique d’injection de processus dans laquelle le pirate utilise une bibliothèque de liens dynamiques pour avoir un impact sur un processus exécutable, le forçant à se comporter d’une manière que vous n’aviez pas prévue ou attendue.

L’attaque injecte le code dans l’intention de remplacer le code original dans votre système et de le contrôler à distance.

Compatible avec plusieurs programmes, l’injection de DLL permet aux programmes d’utiliser le code plusieurs fois sans perdre sa validité. Pour qu’un processus d’injection de DLL réussisse, le logiciel malveillant doit contenir les données du fichier DLL contaminé dans votre réseau.

2. Injection de PE

Une exécution portable (PE) est une méthode d’injection de processus où un attaquant infecte un processus valide et actif dans votre réseau avec une image PE nuisible. Elle est plus simple que les autres techniques d’injection de processus car elle ne nécessite pas de compétences en codage shell. Les attaquants peuvent facilement écrire le code PE en C++ de base.

L’injection PE est sans disque. Le logiciel malveillant n’a pas besoin de copier ses données sur un disque avant que l’injection ne commence.

3. Creusement de processus

Le Process Hollowing est une technique d’injection de processus où, au lieu d’utiliser un processus légitime existant, l’attaquant crée un nouveau processus mais l’infecte avec du code malveillant. L’attaquant développe le nouveau processus sous la forme d’un fichier svchost.exe ou notepad. Ainsi, vous ne le trouverez pas suspect même si vous le découvrez dans votre liste de processus.

Le nouveau processus malveillant ne commence pas à fonctionner immédiatement. Le cybercriminel le rend inactif, le connecte au processus légitime et lui crée un espace dans la mémoire du système.

Comment prévenir l’injection de processus ?

Données HTML sur l'écran de l'ordinateur

L’injection de processus peut détruire l’ensemble de votre réseau car l’attaquant peut avoir le plus haut niveau d’accès. Vous lui facilitez grandement la tâche si les processus injectés ont accès à vos biens les plus précieux. C’est une attaque que vous devez vous efforcer de prévenir si vous n’êtes pas prêt à perdre le contrôle de votre système.

Voici quelques-uns des moyens les plus efficaces d’empêcher l’injection de processus.

1. Adopter la liste blanche

La liste blanche consiste à répertorier un ensemble d’applications qui peuvent entrer dans votre réseau en fonction de votre évaluation de la sécurité. Vous devez avoir jugé les éléments de votre liste blanche inoffensifs et, à moins que le trafic entrant n’entre dans le champ de votre liste blanche, il ne peut pas passer.

Pour empêcher l’injection de processus avec la liste blanche, vous devez également ajouter l’entrée utilisateur à votre liste blanche. Il doit y avoir un ensemble d’entrées qui sont autorisées à passer à travers vos contrôles de sécurité. Ainsi, si un attaquant effectue une entrée en dehors de votre juridiction, le système le bloquera.

2. Surveiller les processus

Dans la mesure où une injection de processus peut contourner certains contrôles de sécurité, vous pouvez renverser la situation en prêtant une attention particulière au comportement du processus. Pour ce faire, vous devez d’abord définir les performances attendues d’un processus spécifique, puis les comparer à ses performances actuelles.

La présence de codes malveillants dans un processus entraînera certains changements, aussi minimes soient-ils pour un processus. Normalement, vous ne tenez pas compte de ces changements car ils sont insignifiants. Mais si vous avez à cœur de découvrir les différences entre les performances attendues et les performances actuelles via la surveillance des processus, vous remarquerez l’anomalie.

3. Coder la sortie

Les acteurs de la cybermenace utilisent souvent le Cross-Site Scripting (XSS) pour injecter des codes dangereux dans un processus d’injection. Ces codes se transforment en scripts qui s’exécutent en arrière-plan de votre réseau à votre insu. Vous pouvez empêcher cela en contrôlant et en nettoyant toutes les entrées suspectes. Elles seront alors affichées comme des données et non des codes malveillants comme prévu.

Le codage de la sortie fonctionne mieux avec le codage HTML, une technique qui vous permet de coder une sortie variable. Vous identifiez certains caractères spéciaux et les remplacez par des alternatives.

Prévenir l’injection de processus avec la sécurité basée sur l’intelligence

L’injection de processus crée un écran de fumée qui dissimule les codes malveillants au sein d’un processus valide et opérationnel. Ce que vous voyez n’est pas ce que vous obtenez. Les attaquants comprennent l’efficacité de cette technique et l’utilisent continuellement pour exploiter les utilisateurs.

Pour combattre les injections de processus, vous devez être plus malin que l’attaquant en étant moins évident dans vos défenses. Mettez en place des mesures de sécurité qui seront invisibles en surface. Ils penseront qu’ils se jouent de vous, mais sans qu’ils le sachent, c’est vous qui vous jouez d’eux.