Vulnérabilités de sécurité : comment les attaquants s’introduisent et se propagent dans votre réseau
Imaginez ce scénario :
Vous vous précipitez au supermarché local pour prendre un sandwich rapide et boire entre les réunions lors d’une journée chargée. Sur le parking, vous laissez votre portefeuille sur la banquette arrière, mais vous pensez à appuyer sur la clé pour verrouiller votre nouvelle voiture.
Il s’avère que votre modèle de voiture a un bug logiciel où la télécommande ne verrouille que les deux portes avant mais pas les deux arrière. Alors, pendant que vous êtes dans le magasin, un voleur remarque le portefeuille et tente la porte arrière. À leur grande surprise, la porte s’ouvre et ils ont accès à votre portefeuille !
Ce scénario est l’histoire d’une vulnérabilité de sécurité en miniature. Le bug était minime, et à lui seul il ne faisait absolument rien. C’est devenu un problème dès que quelqu’un a remarqué ce à quoi cela lui donnait accès.
Le logiciel fonctionne de la même manière. Une faille rapporte du temps à un attaquant en fonction du résultat qu’il obtient, et ce résultat façonne chaque mouvement qui suit.
Les attaquants considèrent un exploit comme une ligne de départ. Derrière cela, ils enchaînent une série d’étapes prévisibles : trouver la faille, exécuter le code qu’ils contrôlent, prendre le contrôle de la machine, et s’étendre à partir de là. Ils exécutent désormais cette chaîne à la vitesse machine, et l’automatisation réduit sans cesse l’écart entre un premier exploit et un problème à l’échelle du réseau.
Vous pouvez suivre la chaîne d’attaque du point de vue de l’attaquant, de la première faiblesse à l’objectif final, afin que les défenseurs voient où la briser.
Qu’apporte un exploit réussi à un attaquant ?
Les vulnérabilités se déclinent en trois grands types. Un défaut peut résider dans le code, dans la façon dont un système est configuré, ou dans la couche identité et utilisateur. Quel que soit le type de départ, une faille réussie conduit généralement à un ou plusieurs résultats.
- Exécution arbitraire de code (ACE). Un exploit réussi qui permet à un attaquant d’accéder au flux normal du programme de l’application vulnérable. Ils redirigent ensuite le flux pour exécuter le code propre à l’attaquant plutôt que le code original de l’application. L’exécution de code à distance (RCE) est un sous-ensemble de l’ACE : la même attaque exécutée sur un réseau.
- Élévation du privilège (EoP). Cela permet à un attaquant d’obtenir des privilèges plus élevés que ceux sur lesquels il a atterri. Par exemple, les attaquants utilisent EoP pour passer d’un compte utilisateur standard à un compte administratif. Des outils populaires comme Mimikatz permettent l’escalade des privilèges.
- Divulgation d’informations (ID). Un exploit qui donne à l’attaquant des informations qu’il ne devrait pas pouvoir voir, souvent des données personnelles sensibles ou des détails sur la sécurité du système.
- Contournement des fonctions de sécurité. Un exploit qui contourne des garde-fous de sécurité qui auraient bloqué l’accès à une partie sensible d’un système ou d’un logiciel.
Pour un attaquant, une vulnérabilité et son exploit ne sont qu’un moyen d’atteindre une fin : un moyen de déclencher une brèche et de s’implanter.
Gardez cela à l’esprit du côté technique : chaque étape après que l’exploit s’exécute sur les connexions réseau, et les défenseurs ont leur mot à dire sur lesquelles restent ouvertes.
Comment les acteurs malveillants utilisent-ils une vulnérabilité pour déclencher une violation ?
L’attaquant tentera d’injecter du code d’exploitation dans la mémoire via une application vulnérable, comme par un débordement de tampon. Cela leur permet de rediriger le flux normal des programmes vers le code malveillant de l’attaquant, également appelé shellcode.
Désormais, le code malveillant de l’acteur de menace (shellcode) prend le contrôle de la machine pour prendre un premier pied et mettre en place le commandement et le contrôle (C&C ou C2). À ce stade, l’attaquant a réussi à lancer la brèche.
Chaque étape remplit un rôle crucial dans la chaîne d’attaque globale :
- Découverte de vulnérabilités. C’est le processus qui consiste à trouver une faiblesse dans la façon dont un système ou un logiciel est conçu ou utilisé. Cela peut inclure l’ingénierie inverse, le fuzzing, l’analyse de code (statique et dynamique), ou l’analyse des dépendances.
- Exploitez un programme vulnérable. Les exploits sont des morceaux de code bas niveau ou natif qui exploitent avec succès une vulnérabilité. Cela peut inclure des exploits conduisant à une exécution arbitraire de code (ACE), à un contournement, à l’élévation de privilèges (EoP) ou à la divulgation d’informations (ID).
- Shellcode. Le shellcode est le code malveillant de bas niveau spécifique ou une attaque spécialement conçue qui tente de détourner le flux normal d’un programme en cours d’exécution et de rediriger ce flux vers le code malveillant d’un attaquant également en cours de mémoire. Cela peut inclure des débordements de tampons, des pulvérisations de tas, des détournements VTables ou une programmation orientée retour (ROP).
- Coque inversée. Un shell inversé initie une connexion vers l’infrastructure d’écoute de l’attaquant pour obtenir un accès non autorisé au programme ou au système vulnérable. Cela peut inclure commandement (cmd), bash pour télécharger des exploits supplémentaires, et des charges utiles plus performantes telles que pour l’escalade de privilèges.
- Charge utile de malware. Les charges utiles de logiciels malveillants sont des exécutables malveillants ou des exploits plus performants et progressifs qui font progresser l’attaque au-delà du point d’appui initial. Les capacités et actions qu’un malware supplémentaire offre sur un système compromis dépassent ce qu’un vrai, souvent petit code, est conçu pour offrir. Cela peut inclure des attaques à plusieurs étapes via une exploitation locale d’escalade de privilèges, puis des malwares pour un mouvement latéral de type ver.
Les étapes 2 à 4 surviennent toutes en mémoire. Un attaquant exploite un programme vulnérable, utilise du shellcode pour prendre le contrôle de son flux de contrôle, et délivre un shell inversé. Vous pouvez analyser cela en utilisant la structure de mémoire virtuelle d’un processus (un exécutable en cours d’exécution). Cette structure comporte cinq parties clés : la pile, le tas, les données, le BSS et les sections textuelles.

La section des piles sera particulièrement intéressante. Nous allons explorer ces sections de mémoire dans la deuxième partie, avec un exemple de l’une des techniques d’exploitation suivantes.
Techniques principales pour exploiter les vulnérabilités
Parmi les meilleures techniques d’exploit figurent :
- Des attaquesbasées sur l’identité ciblant des comptes compromis.
- Les attaques de failles logiques exploitent des failles disparates dans la logique de programmation pour créer une vulnérabilité exploitable.
- Le débordement de tampon, où un tampon est dépassé pour écraser l’adresse de retour.
- Les attaques de tas spray tentent de remplir (pulvériser) le tas avec du code malveillant exécutable, ce qui augmente les chances d’exécuter ce code après l’exploit. Les heap sprays tentent de surmonter les protections de randomisation de disposition de l’espace d’adressage (ASLR).
Une fois qu’un acteur malveillant exploite une vulnérabilité et prend un premier point d’ancrage, il est à mi-chemin d’une stratégie prévisible. Ils doivent maintenant utiliser cet accès pour pivoter d’une machine à l’autre, répartir l’attaque et atteindre leurs objectifs.
Comment les acteurs malveillants utilisent-ils une vulnérabilité pour propager une violation ?
La phase d’expansion de l’attaque tombe sur un territoire plus familier. Il suit généralement la seconde moitié des tactiques et techniques du cadre MITRE ATT&CK. Ces quatre étapes reprennent là où les cinq premières s’étaient arrêtées — neuf pas au total.
- Découverte. La découverte signifie en apprendre davantage sur le système sur lequel ils sont tombés et sur le réseau auquel il est connecté. Cela peut inclure la découverte de comptes, les informations réseau, la découverte de navigateurs et la découverte d’infrastructures cloud.
- Mouvement latéral. Le déplacement latéral signifie se connecter et prendre le contrôle des systèmes distants pour les étendre dans le réseau. Cela peut inclure le détournement RDP/SSH, les partages administratifs, les PME, le hash pass-the-hash, les outils de déploiement logiciel et les techniques de vie à partir de la terre.
- Commandement et contrôle. Le commandement et le contrôle sont la manière dont les attaquants communiquent avec et contrôlent les systèmes infectés via leur propre infrastructure d’écoute. Cela peut inclure les canaux shell inversés, les canaux web, les algorithmes de génération de domaines (DGA), les canaux textuels DNS et le front de domaine (CDN).
- Objectifs. Les objectifs sont les buts finaux de l’attaque. Cela peut inclure le vol ou l’exfiltration de données (pyexfil ou icmpexfil), les ransomwares, le déni de service ou les botnets.
Techniques principales pour étendre une brèche
Les attaquants ont rarement besoin d’outils exotiques pour se propager. Les mêmes chemins qui permettent aux administrateurs de gérer les systèmes et aux équipes de partager des fichiers comportent aussi une faille d’une machine à l’autre :
- Ports administratifs et protocoles. RDP, SSH et WinRM offrent aux attaquants le même contrôle à distance qu’aux équipes informatiques.
- Partages de fichiers et de dossiers. Les actions PME transportent les malwares aussi facilement qu’elles déplacent les documents.
- Instrumentation. Des outils comme WMI permettent aux attaquants d’exécuter des commandes sur des systèmes distants sans perdre un seul nouveau fichier.
- Les chaînes en ligne. Le trafic HTTP et DNS permet de se cacher dans le bruit de la navigation normale.
Pourquoi le flux d’attaque compte plus que la faille
Les nouvelles vulnérabilités apparaissent plus vite que n’importe quelle équipe ne peut les corriger, et celles qui causent le plus de dégâts sont rarement celles qui ont le score le plus élevé. Ce qui détermine les dégâts, c’est tout ce qui se passe après l’exploit : la distance que l’attaquant peut parcourir, combien de systèmes il peut atteindre, et combien de temps il a pour travailler.
C’est une bonne nouvelle pour les défenseurs, car la phase de propagation est la partie prévisible. La découverte, le déplacement latéral, le commandement et le contrôle, ainsi que l’objectif final, dépendent tous des connexions entre les systèmes que la plupart des réseaux permettent par défaut. Fermez ces chemins et un point d’appui reste un point d’appui. La segmentation, un contrôle strict des ports administratifs et des protocoles, ainsi qu’une visibilité claire sur la communication des charges de travail peuvent transformer une chaîne en neuf étapes en une chaîne qui s’arrête à l’étape cinq.
Souviens-toi de la voiture sur le parking. Le voleur ne comptait que parce qu’une porte s’ouvrait. La segmentation, c’est la façon dont vous gardez toutes les autres portes verrouillées, même lorsqu’une serrure tombe en panne.
Les attaquants automatisent désormais toute cette séquence et la font tourner à la vitesse de la machine. La détection et la réponse restent importantes, et elles fonctionnent mieux lorsque le rayon d’explosion est déjà faible. Contenir la faille au point d’entrée est ce qui donne à une équipe de sécurité le temps d’agir.
Dans la deuxième partie, nous allons approfondir les exploits de mémoire, comment fonctionnent des chaînes et entrées spécialement conçues dans un exploit, et les techniques que les défenseurs peuvent utiliser pour les contrecarrer.
Test drive Illumio Segmentation Pour voir comment vous pouvez fermer les trajectoires latérales et contenir les brèches au point d’entrée.





