
расширяемый фреймворк для эксплуатации, построенный на модульной многозадачной архитектуре
Образовательный фреймворк для эксплуатации, построенный на модульной и высокорасширяемой многозадачной и многопроцессорной архитектуре.
Ищете версию 1? Посмотрите ветки в этом репозитории.
Brutus — это образовательный фреймворк для эксплуатации, написанный на Python. Он автоматизирует сетевые эксплойты до и после подключения, а также веб-разведку. Будучи легковесным фреймворком, Brutus стремится минимизировать зависимость от сторонних библиотек. Оптимизированный для Kali Linux, Brutus также совместим с macOS и большинством дистрибутивов Linux, имеет полностью интерактивный интерфейс командной строки и универсальную систему плагинов.
Brutus обладает высокорасширяемой модульной архитектурой. Входящие в его состав эксплойты (слой плагинов) состоят из нескольких независимых модулей, которые работают на «уровне задач», состоящем из пулов потоков и потокобезопасных асинхронных очередей (в зависимости от того, что наиболее подходит для данного модуля). Основной поток работает поверх пула процессов, который управляет контекстом приложения и запускает новые процессы, чтобы задачи могли выполняться в фоне, в отдельных оболочках и т.д.
Слой пользовательского интерфейса также является независимым и расширяемым. По умолчанию Brutus поставляется с меню-ориентированным интерфейсом командной строки, но ничто не мешает вам добавить адаптеры для графического интерфейса, парсера аргументов или даже HTTP API или удаленного вызова процедур.
Наконец, Brutus имеет слой утилит с общими функциями для операций с файловой системой, управления оболочкой (эмулятором терминала), методов сохранения состояния и метаданных системы.
Если вы просто интересуетесь хакингом на Python, не стесняйтесь загружать скрипты напрямую — каждый модуль может быть вызван самостоятельно.
Демонстрация веб-сканирования и компиляции полезной нагрузки: смотреть mp4

Вам, вероятно, понадобятся следующие зависимости:
Brutus оптимизирован для Kali Linux. В интернете много информации о том, как запустить Kali Linux в виртуальной машине.
Для установки:
pipenv install
Запуск:
pipenv run brutus
Тестирование:
pipenv run test
Линтинг:
pipenv run lint
Настройка Git-хуков для разработки:
pipenv run setup
Не стесняйтесь открывать PR с предложениями функций, исправлениями ошибок и т.д. Обратите внимание, что большая часть этого проекта всё ещё в разработке. Основа есть и готова к тому, чтобы вы на ней строили.
Brutus включает несколько модулей, которые можно обобщить как относящиеся к трём макрокатегориям: сетевые, веб и полезные нагрузки. Последняя категория — это библиотека компиляторов и соответствующих полезных нагрузок; полезные нагрузки можно компилировать через интерактивное меню командной строки Brutus; скомпилированные полезные нагрузки затем можно загружать во многие применимые сетевые модули Brutus.
Базовый слой Brutus использует потоки POSIX для конкурентной многозадачности. Некоторые модули — то есть всё, что сильно связано с вводом-выводом, — вместо этого используют асинхронные библиотеки ввода-вывода Python и работают на абстракции поверх стандартного цикла событий Python.
Включённые утилиты/скрипты
ПРИМЕЧАНИЕ: Этот инструмент предназначен для 48-битных MAC-адресов с форматом байта %02x по умолчанию.
MAC (Media Access Control) — это постоянный, физический и уникальный адрес, присваиваемый сетевым интерфейсам производителями устройств. Это означает, что даже ваша беспроводная карта, например, имеет свой уникальный MAC-адрес.
MAC-адрес, аналогичный IP в интернете, используется внутри сети для обеспечения правильной доставки ресурсов и данных (т.е. пакетов). Взаимодействие обычно состоит из исходного MAC-адреса и MAC-адреса назначения. MAC-адреса могут идентифицировать вас, быть отфильтрованы или иным образом ограничены в доступе.
Важно отметить, что эти уникальные адреса не являются эфемерными; они постоянны и останутся связанными с устройством, даже если пользователь установит его в другой машине. Но они не обязательно должны быть неразрывно связаны...
Этот модуль принимает на вход любое беспроводное устройство и любой действительный MAC-адрес, на который пользователь хочет переназначить это устройство. Программа проста, так что нет необходимости объяснять её подробно: она использует модуль subprocess для автоматизации последовательности необходимых команд оболочки: отключение беспроводного интерфейса, переназначение MAC и его повторная инициализация.
Если вы активно меняете свой MAC-адрес, было бы разумно иметь какую-то структуру проверки или метод более высокого порядка, чтобы убедиться, что 1) беспроводное устройство существует, 2) беспроводное устройство поддерживает MAC-адрес, 3) введённый пользователем MAC-адрес имеет действительный формат и 4) MAC-адрес беспроводного устройства успешно обновлён. Этот инструмент автоматизирует эти функции.
Выбрав опцию «generate» вместо конкретного MAC-адреса, программа сгенерирует действительный MAC-адрес в соответствии со спецификациями IEEE. Я рад, что реализовал расширенную функциональность для генерации не только полностью случайных (и действительных) MAC-адресов, но и MAC-адресов, которые либо начинаются с определённого префикса производителя (OUI), либо генерируются с опциями multicast и/или UAA. Эти опции запускают логику байт-кода в методе генератора, который дополняется в соответствии со спецификациями IEEE. Узнайте больше о MAC-адресах здесь.
Сетевой сканер — ещё один очень полезный инструмент, и мощный, если использовать его вместе с упомянутым ранее сменщиком MAC. Этот сканер использует функциональность ARP-запросов, принимая на вход действительный IPv4 или IPv6 адрес и, хотя и опционально, диапазон подсети.
Затем программа берёт заданный IP и/или диапазон и проверяет их на соответствие спецификациям IEEE (опять же, эта проверка выполняется по стандартам IPv4 и IPv6). Наконец, создаётся широковещательный объект с заданным IP и сгенерированным Ethernet-кадром; этот объект возвращает список всех подключённых устройств в заданной сети и диапазоне, сопоставляя их IP-адреса с соответствующими MAC-адресами.
Программа выводит таблицу с этими соответствиями, которая затем может быть использована как входные данные для сменщика MAC, если обстоятельства того потребуют.
Модуль ARP-спуфинга позволяет перенаправлять поток пакетов в заданной сети, одновременно манипулируя ARP-таблицами целевого клиента и шлюза его сети. Этот модуль автоматически включает перенаправление портов в процессе и динамически создаёт и отправляет ARP-пакеты.
Когда пользователь завершает модуль, ARP-таблицы целей сбрасываются, чтобы не оставить контроллер в опасной ситуации (к тому же, это правильный поступок).
Поскольку этот процесс помещает контроллер между клиентом и точкой доступа, контроллер получает доступ ко всему потоку данных (работа с возможным шифрованием этих данных — задача для другого скрипта). Отсюда становятся очевидными многочисленные возможности для управления потоком пакетов: подмена кода с помощью автоматизации и регулярных выражений, принудительные перенаправления, удалённый доступ и т.д. К счастью, Brutus может автоматизировать и это.
Сниффер пакетов — отличный модуль для использования после ARP-спуфера; он создаёт поток данных всех перехваченных HTTP-пакетов, который включает URL-адреса или возможные учётные данные пользователей.
Скрипт является расширяемым и может поддерживать различные протоколы, создавая объект прослушивателя с одним из множества доступных фильтров. Обратите внимание, что Brutus автоматически понижает HTTPS, поэтому, если не задействован HSTS, поток данных должен быть пригоден для разведки.
Отказ от ответственности: Это программное обеспечение и всё его содержимое созданы только для исследовательских целей. Я никоим образом не одобряю и не несу ответственности за действия тех, кто может намереваться использовать это программное обеспечение злонамеренно или незаконно.