Kubebot
Slackbot для тестирования безопасности, построенный на бэкенде Kubernetes в Google Cloud Platform

ПРИМЕЧАНИЕ: Я больше не поддерживаю этот проект активно. Я работаю над версией 2 Kubebot вместе с несколькими другими людьми, которая, вероятно, будет представлена на одной из предстоящих конференций по безопасности.
Архитектура

Демо
Пожалуйста, посмотрите это видео - https://youtu.be/RKvtyU3CcZk
Поток данных
- 1 - API-запрос (инструмент, цель, параметры) инициируется из Slackbot, отправляется на API-сервер, который работает как Docker-контейнер в кластере Kubernetes (K8s) и может масштабироваться.
- 2 - API-сервер помещает полученный запрос как сообщение в тему PubSub Tool.
- 3 - Сообщения публикуются в подписку Tool.
- 4 - Worker(ы) подписки, работающие как Docker-контейнер(ы) в кластере K8s, потребляют сообщение из подписки. Количество этих worker'ов также может масштабироваться.
- 5 - В зависимости от инструмента, цели и параметров, полученных от конечного пользователя, запускаются соответствующие Tool Worker(ы) в том же кластере K8s как Docker-контейнеры. Результаты временно сохраняются в локальной директории этого контейнера. Клонируется Github-директория этого инструмента.
- 6 - Проверяется, существовал ли сгенерированный файл результатов. Если его не было, он добавляется и изменения отправляются в Github. Если он существует, файлы сравниваются, новый файл отправляется в Github, и в следующий шаг передаются только изменения.
- 7 - Webhook от Tool Worker(ов) отправляет изменения обратно в Slack. Tool worker(ы) удаляются, так как они больше не нужны.
PS - Все Docker-образы API-сервера, Worker(ов) подписки и Tool Worker(ов) загружаются из Google Container Registry этой учетной записи GCP перед развертыванием в кластере K8s.
Список автоматизированных рабочих процессов, интегрированных на данный момент (Этот список будет обновляться по мере добавления новых рабочих процессов)
Структура папок
- api - Содержит весь код для API-сервера Kubebot.
- config - Содержит файлы конфигурации для развертывания компонентов Kubebot.
- cronjobs - Содержит пример файла развертывания (.yaml) для настройки cron-заданий для запуска определенного инструмента с определенным интервалом и отправки результатов обратно в Slack через Webhook.
- docs - Документация
- imgs - Изображения
- setup scripts - Некоторые скрипты, используемые для настройки Kubebot.
- subscriptionworker - Содержит код для Worker подписки.
- tools - Все инструменты, которые может запускать Kubebot. Некоторые все еще в разработке.
- utils - Папка утилит.
- Утилита-контейнер с именем
checkfile используется для выполнения операции diff над файлами Github для выявления любых изменений между предыдущим и последним запуском инструмента. Этот контейнер запускается после каждого контейнера инструмента.
- Утилита с именем
converttobq используется для преобразования данных из инструментов в формат, пригодный для загрузки в BigQuery. Эта утилита запускается в автоматизированных рабочих процессах, где результаты каждого инструмента сохраняются в BQ для дальнейшего использования другими инструментами.
- Утилита с именем
wfuzzbasicauthbrute используется для перебора механизма базовой аутентификации конечных точек, хранящихся в таблице BQ, со всеми секретами, хранящимися в другой таблице BQ.
- .env.sample - Переименуйте этот файл в
.env и убедитесь, что значения в нем корректны, когда вы хотите развернуть Kubebot локально.
- Makefile - makefile для сборки вашего окружения Kubebot.
Начало работы
- Предварительные требования - Пожалуйста, убедитесь, что все эти предварительные требования выполнены.
- Запуск Kubebot локально - Это хорошее место для начала, чтобы привыкнуть к Kubebot перед запуском удаленно.
- Интеграция собственных инструментов - Если вы хотите интегрировать свои собственные инструменты в Kubebot, это довольно просто!
- Список задач - Пожалуйста, помогите мне сделать Kubebot лучше!
Запуск Kubebot удаленно - Когда вы убедитесь, что Kubebot работает как ожидалось локально (с использованием Minikube) и теперь хотите раскрыть его потенциал и использовать в полную силу в облаке, его можно развернуть в кластере Google Container Engine (GKE). Однако я пока не могу предоставить инструкции для удаленного развертывания. Тем не менее, если будет интерес, я с удовольствием помогу. И если вы хотите просто использовать Kubebot как Slack-приложение и не беспокоиться о бэкенд-инфраструктуре, это также может быть организовано за небольшую ежемесячную плату, так как я буду размещать бэкенд в своем личном аккаунте GCP, а вы будете нести только обычные расходы, связанные с хостингом VPS у облачного провайдера. Пожалуйста, свяжитесь со мной, чтобы обсудить эти варианты.
Демонстрационные видео
Примеры Slash-команд в Slack
Обратите внимание, как можно выполнить slash-команду с именем инструмента, параметрами и целью(ями). Я говорю «цель(и)», потому что можно выполнить одну slash-команду для запуска одного инструмента с набором параметров против нескольких целей. Например, команда gitrob ниже выполняется против test и abc.
- /runtool nmap|-Pn -p 1-1000|google.com
- /runtool sublist3r|-t 50|test.com
- /runtool gobuster|-m dns -w fierce_hostlist.txt -t 10 -fw|google.com
PS - Wordlist to choose from: