
Мультиагентная система для автоматизированного тестирования на проникновение (MASAPT)
❗ Отказ от ответственности
Этот инструмент разработан в академических и исследовательских целях в рамках университетского курса. Использование MASAPT для атак на цели без предварительного согласия незаконно.
Разработчики не несут ответственности за любой ущерб, причинённый с помощью этого инструмента, и осуждают любое злонамеренное использование MASAPT. Этот инструмент не предназначен для использования в любой профессиональной среде на данный момент, это лишь доказательство концепции для лежащей в основе теоретической модели.
Многоагентная система для автоматизированного тестирования на проникновение 🐱💻

Автономная система агентов SPADE, взаимодействующих через XMPP для координации и выполнения тестирования на проникновение. В CLI-инструменте!
Передайте URL, подождите немного, прочитайте отчёт!

Это доказательство концепции, многоагентная система, разработанная на Python, предназначенная для автоматизации процесса тестирования на проникновение структурированным и интеллектуальным способом.
Конечная цель — создать рабочий, гибкий, распределённый, основанный на CLI инструмент для тестирования на проникновение, который можно использовать для автоматизации задач тестирования на проникновение.
Текущие возможности:
Планы на будущее и возможности перечислены здесь.
Сложно.
Имеется довольно много предварительных условий и требований к установке:
Помимо Python и инструментов тестирования на проникновение, которые можно найти в Kali, вам также понадобится доступ к какому-либо XMPP-сервису. Для тестирования системы я использовал ejabberd, запущенный локально.
Чтобы запустить агентов на вашем XMPP-сервере, вам необходимо создать следующих пользователей. Вы, конечно, можете создать других пользователей, но тогда вам нужно будет передать новые параметры JID и PWD при создании агентов в скрипте masapt.
| JID | ПАРОЛЬ |
|---|---|
| repoter@domain | repoterSecret |
После установки всех предварительных требований и настройки XMPP:
Перейдите в папку проекта
cd ../MASAPT
Добавьте директорию в PATH
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
Установите Python зависимости
pip install -r requirements.txt
Сделайте скрипт masapt исполняемым
chmod +x masapt
Запустите систему с помощью:
masapt -t url/to/target
Больше агентов:
Расширить Explorer.py, чтобы он мог:
Расширить SQLinjector.py, чтобы он мог:
Расширить Coordinator.py, чтобы он мог:
Система MASAPT задумывалась как модульная, распределённая и прагматичная. Это означает, что агенты, составляющие систему, независимы от основного процесса, обновляемы и используют существующие, 'проверенные в бою' инструменты тестирования на проникновение.
Для достижения поставленных целей агенты разрабатываются как часть трёхуровневой модели, которая выведена из стандартных фаз тестирования на проникновение (планирование - выполнение - пост-выполнение). Общий обзор этой модели можно увидеть на Img1 ниже.
Все теоретические концепции в этом обзоре уже реализованы в коде (за исключением идеи для будущего — Img 8.). Эти концепции должны продолжать реализовываться в любых будущих обновлениях системы.
Основная идея трёхуровневой модели — предоставить структуру для организации и классификации агентов в этой системе.
Первый уровень модели содержит агента(ов) Explorer, которые отвечают за проведение OSINT и сбор любой полезной информации о цели.
Второй уровень содержит агента Coordinator и Exploit агентов. Coordinator — это единственный агент, который решает, какие агенты-эксплойты будут участвовать в текущем тестировании. Агенты-эксплойты, как следует из названия, запускают эксплойты — SQL-инъекции, XSS, DoS, переполнение буфера... Таких агентов-эксплойтов может быть много.
Третий уровень содержит агента Reporter, задача которого — собрать все данные эксплойтов, результаты, дампы данных от всех агентов-эксплойтов и обобщить их в итоговом отчёте. Отчёт затем показывается пользователю и сохраняется локально.
На первом изображении толстые стрелки представляют поток данных в модели.

Img2 показывает ту же модель, что и первое изображение, но более детально — агенты чётко видны на своих соответствующих уровнях. Сплошные стрелки на этом изображении снова представляют поток данных в модели, что, следовательно, показывает, какие агенты общаются друг с другом. Видно, что агент Explorer отправляет данные агенту Coordinator, который, в свою очередь, отправляет некоторые данные агентам Exploit (SQLinjector, agent2, agent3). Наконец, все данные, собранные агентами-эксплойтами, передаются агенту Reporter, который затем компилирует их, обобщает и представляет пользователю.
Также видно, что только агенты Explorer и Exploit (SQLinjector) взаимодействуют с внешней средой (тестовой целью). Это представлено двунаправленными пунктирными стрелками.
Как упоминалось ранее, одной из характеристик системы MASAPT является её распределённость. Один из аспектов этого уже реализован, так как все агенты реализованы как независимые программы, запускаемые главным скриптом (masapt).
Img 3. показывает, как текущая система была настроена и протестирована. Видно, что агенты используют среду SPADE для общения через сервер XMPP (ejabberd), который настроен на локальной системе. Тестовая цель (SQLi Labs) также настроена локально. Такая настройка хороша для тестирования системы, но не показывает полные возможности MASAPT как распределённой системы.
Img 4., с другой стороны, показывает одну из возможных будущих реализаций MASAPT. Она показывает распределённую многоагентную систему, которая использует XMPP для связи и Docker для запуска на множестве различных систем. Сплошные стрелки снова показывают аспект связи и потока данных системы, демонстрируя, как агенты отправляют и получают данные через центральный сервер XMPP.
Основная причина использования XMPP для связи агентов — обеспечить надёжный, не зависящий от языка способ общения. При таком подходе не все будущие агенты должны быть написаны на Python или даже использовать среду SPADE.
Логика здесь в том, что в будущем может возникнуть необходимость включить в MASAPT другую систему (например, агентов, написанных на других языках программирования). Таким образом, этот 'XMPP-подход' — лучший способ обеспечить такую гибкость системы.
Помимо способности общаться, поведение является вторым по важности аспектом любого агента. Агенты MASAPT и их поведение моделируются с помощью набора состояний, что делает их конечными автоматами. Среда SPADE хорошо поддерживает создание конечных автоматов.
Диаграммы ниже показывают все возможные состояния, в которых может находиться агент в любой момент времени. Диаграммы также показывают, какие события вызывают переход агента в следующее состояние. Все будущие агенты должны быть реализованы аналогичным образом.
Все будущие агенты-эксплойты (например, DoS, XSS...) должны быть реализованы с использованием диаграммы Img 8. в качестве шаблона.


[1] Большое спасибо Audi-1 и его отличным SQLI labs за тестирование SQL-инъекций на основе ошибок, слепых логических и временных!
| explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |