Nous avons couvert l'injection de processus et le creusement de processus. L'injection de processus est le processus consistant à injecter à un processus déjà en cours d'exécution un code malveillant ou un shellcode. L'évidement de processus consiste à créer un processus légitime dans un état suspendu, puis à démapper le code légitime de la mémoire et à le remplacer par le code shell. L'injection de processus et le creux sont utiles pour masquer les rootkits et les shellcodes dans des processus d'apparence inoffensive afin de maintenir l'accès et la persistance. Cela faisait partie de TryHackMe abuse des composants internes de Windows parcours de l'équipe rouge.
Nous avons également couvert l'injection de DLL et le détournement de DLL ainsi qu'un scénario pratique du laboratoire TryHackMe Abusing Windows Internals qui fait partie du parcours de l'équipe rouge. L'injection de DLL repose sur l'utilisation d'appels d'API Windows pour effectuer des actions spécifiques telles que la sélection d'un processus en cours d'exécution, l'allocation de mémoire et l'écriture de la DLL malveillante dans la région de mémoire allouée. Le détournement de DLL repose sur l’obtention d’autorisations d’accès pour localiser et remplacer une DLL légitime par une DLL malveillante.
Obtenez les notes d'étude COMPTIA Pentest+
Cours sur les techniques d'élévation des privilèges Windows
Description du défi
Tirez parti des composants internes de Windows pour échapper aux solutions de détection courantes, en utilisant des approches modernes indépendantes des outils.
Faits saillants de la vidéo
L'injection de processus est couramment utilisée comme terme général pour décrire l'injection de code malveillant dans un processus via des fonctionnalités ou des composants légitimes.
À un niveau élevé, l’injection de shellcode peut être divisée en quatre étapes :
- Ouvrez un processus cible avec tous les droits d'accès.
- Allouez de la mémoire de processus cible pour le shellcode.
- Écrivez le shellcode dans la mémoire allouée dans le processus cible.
- Exécutez le shellcode à l’aide d’un thread distant.
Le Process Hollowing offre la possibilité d’injecter un fichier malveillant entier dans un processus. Ceci est accompli en « creusant » ou en décartographiant le processus et en injectant des PE (P.ortable Eexécutable) des données et des sections dans le processus.
Dans un processus de haut niveau, le creusement peut être divisé en six étapes :
- Créez un processus cible dans un état suspendu.
- Ouvrez une image malveillante.
- Supprimez le code légitime de la mémoire du processus.
- Allouez des emplacements de mémoire pour le code malveillant et écrivez chaque section dans l'espace d'adressage.
- Définissez un point d’entrée pour le code malveillant.
- Sortez le processus cible d’un état suspendu.
Au niveau d'un thread de haut niveau (exécution), le détournement peut être divisé en onze étapes :
- Localisez et ouvrez un processus cible à contrôler.
- Allouez une région de mémoire pour le code malveillant.
- Écrivez du code malveillant dans la mémoire allouée.
- Identifiez l’ID du thread cible à détourner.
- Ouvrez le thread cible.
- Suspendez le thread cible.
- Obtenez le contexte du fil de discussion.
- Mettez à jour le pointeur d’instruction vers le code malveillant.
- Réécrivez le contexte du thread cible.
- Reprenez le fil de discussion piraté.
À un niveau élevé, l'injection de DLL peut être divisée en six étapes :
- Localisez un processus cible à injecter.
- Ouvrez le processus cible.
- Allouez une région de mémoire pour les DLL malveillantes.
- Écrivez la DLL malveillante dans la mémoire allouée.
- Chargez et exécutez la DLL malveillante.
Réponses de la salle
Quel flag est obtenu après l'injection du shellcode ?
Quel drapeau est obtenu après avoir creusé et injecté le shellcode ?
Quel drapeau est obtenu après le détournement du fil ?
Quel est l’appel API Windows utilisé pour mettre en file d’attente une fonction APC ?
Le pointeur de fonction void peut-il être utilisé sur un processus distant ? (o/n)
Les techniques d'injection utilisées par TrickBot étaient-elles réfléchissantes ? (o/n)
Quel nom de fonction a été utilisé pour écrire manuellement les hooks ?
Vidéo pas à pas