Réaliser qu'un vecteur d'attaque s'exécute dans votre réseau sous votre nez peut être choquant. Vous avez joué votre rôle en mettant en place ce qui semblait être des défenses de sécurité efficaces, mais l'attaquant a quand même réussi à les contourner. Comment était-ce possible ?
Ils auraient 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 pouvez-vous 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. Répandu avec les attaques de logiciels malveillants, il permet aux cyber-acteurs d'infecter les systèmes de la manière la plus modeste. Une 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?
Les types d'attaques les plus efficaces sont ceux qui peuvent s'exécuter en arrière-plan sans éveiller les soupçons. Normalement, vous pouvez détecter une menace de logiciel malveillant en décrivant et en examinant tous les processus de votre réseau. Mais détecter l'injection de processus n'est pas si facile car les codes se cachent sous l'ombre de vos processus légitimes.
Puisque vous avez mis sur liste blanche vos processus autorisés, vos systèmes de détection certifieront qu'ils sont valides sans aucune indication que quelque chose ne va pas. Les processus injectés contournent également l'investigation du disque car les codes malveillants s'exécutent dans la mémoire du processus licite.
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 à personne.
Bien que l'injection de processus puisse facilement passer inaperçue, les systèmes de sécurité avancés peuvent les détecter. Ainsi, les cybercriminels placent la barre plus haut en l'exécutant de la manière la plus modeste que ces systèmes ignorent. 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 à des fins différentes. Étant donné que les acteurs de la cyber-menace 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. Regardons certains d'entre eux.
1. Injection de DLL
L'injection de DLL (Dynamic Link Library) est une technique d'injection de processus dans laquelle le pirate utilise un 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 l'intention ou attendre.
L'attaque injecte le code dans le but de remplacer le code d'origine 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 des données du fichier DLL contaminé dans votre réseau.
2. Injection PE
Une exécution portable (PE) est une méthode d'injection de processus dans laquelle un attaquant infecte un processus valide et actif de votre réseau avec une image PE nuisible. C'est plus simple que les autres techniques d'injection de processus car il ne nécessite pas de compétences en codage shell. Les attaquants peuvent facilement écrire le code PE en C++ de base.
L'injection de PE est sans disque. Le logiciel malveillant n'a pas besoin de copier ses données sur un disque avant le début de l'injection.
3. Processus d'évidement
Le Process Hollowing est une technique d'injection de processus dans laquelle, 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 d'un bloc-notes. De cette façon, vous ne le trouverez pas suspect même si vous le découvriez sur votre liste de processus.
Le nouveau processus malveillant ne démarre pas 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 pouvez-vous empêcher l'injection de processus?
L'injection de processus peut détruire l'ensemble de votre réseau car l'attaquant pourrait avoir le plus haut niveau d'accès. Vous facilitez grandement leur travail si les processus injectés sont au courant de vos actifs les plus précieux. C'est une attaque que vous devez vous efforcer d'empêcher 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 est le processus de listant 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 ne soit couvert par votre liste blanche, ils ne peuvent pas passer.
Pour empêcher l'injection de processus avec la liste blanche, vous devez également ajouter une entrée utilisateur à votre liste blanche. Il doit y avoir un ensemble d'entrées autorisées à passer par vos contrôles de sécurité. Ainsi, si un attaquant fait 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 l'inverser en portant une attention particulière au comportement du processus. Pour ce faire, vous devez d'abord décrire les performances attendues d'un processus spécifique, puis les comparer avec ses performances actuelles.
La présence de codes malveillants dans un processus entraînera des changements, aussi minimes soient-ils pour un processus. Normalement, vous négligeriez ces changements car ils sont insignifiants. Mais lorsque vous souhaitez découvrir les différences entre les performances attendues et les performances actuelles via la surveillance des processus, vous remarquerez l'anomalie.
3. Encoder la sortie
Les cybercriminels utilisent souvent Cross-Site Scripting (XSS) pour injecter des codes dans une injection de processus. Ces codes se transforment en scripts qui s'exécutent en arrière-plan de votre réseau à votre insu. Vous pouvez éviter que cela ne se produise en vérifiant et en nettoyant toutes les entrées suspectes. À leur tour, ils seront affichés sous forme de données et non de codes malveillants comme prévu.
L'encodage de sortie fonctionne mieux avec l'encodage HTML, une technique qui vous permet d'encoder une sortie variable. Vous identifiez certains caractères spéciaux et les remplacez par des alternatives.
Empêcher l'injection de processus grâce à une sécurité basée sur l'intelligence
L'injection de processus crée un écran de fumée qui dissimule les codes malveillants dans 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 en permanence pour exploiter les utilisateurs.
Pour lutter contre les injections de processus, vous devez déjouer l'attaquant en étant moins évident avec vos défenses. Mettre 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 les jouez.