
Kubesploit — это кроссплатформенный сервер и агент для пост-эксплуатации с использованием HTTP/2 Command & Control, написанный на Golang и ориентированный на контейнерные среды.
Kubesploit — это кроссплатформенный сервер и агент для пост-эксплуатационного управления и контроля (C&C) по протоколу HTTP/2, предназначенный для контейнерных сред, написанный на Golang и построенный на основе проекта Merlin от Russel Van Tuyl (@Ne0nd0g).
Исследуя Docker и Kubernetes, мы заметили, что большинство доступных сегодня инструментов нацелены на пассивное сканирование уязвимостей в кластере, и не хватает покрытия более сложных векторов атак. Они могут позволить вам увидеть проблему, но не использовать её. Важно запустить эксплойт, чтобы смоделировать реальную атаку, которая будет использована для определения устойчивости корпоративной сети. При запуске эксплойта отрабатывается управление киберинцидентами организации, чего не происходит при сканировании проблем кластера. Это помогает организации научиться действовать при реальных атаках, проверить, работает ли её система обнаружения как ожидается, и какие изменения следует внести. Мы хотели создать атакующий инструмент, который будет соответствовать этим требованиям.
Но у нас была и другая причина для создания такого инструмента. У нас уже было два инструмента с открытым исходным кодом (KubiScan и kubeletctl), связанных с Kubernetes, и у нас были идеи для новых. Вместо создания отдельного проекта для каждого из них мы решили, что лучше сделать новый инструмент, который объединит новые разработки, — так и появился Kubesploit.
Мы искали открытый проект, который обеспечивал бы низкоуровневую основу для кроссплатформенной системы, и нашли Merlin, написанный Russel Van Tuyl (@Ne0nd0g), который нам подошёл.
Наша главная цель — способствовать повышению осведомлённости о безопасности контейнерных сред и улучшить меры защиты, реализованные в различных сетях. Всё это реализовано через фреймворк, предоставляющий подходящие инструменты для работы команд PT и Red Team во время их деятельности в этих средах. Использование этих инструментов поможет оценить надёжность этих сред и внести необходимые изменения для их защиты.
Поскольку инфраструктура C&C и агента уже была реализована в Merlin, мы интегрировали интерпретатор Go ("Yaegi"), чтобы иметь возможность выполнять код Golang с сервера на агенте. Это позволило нам писать наши модули на Golang, обеспечило большую гибкость модулей и возможность динамически загружать новые модули. Это текущий проект, и мы планируем в будущем добавить больше модулей, связанных с Docker и Kubernetes.
В настоящее время доступны следующие модули:
Выход из контейнера через монтирование
Выход из контейнера через docker.sock
Выход из контейнера с использованием эксплойта CVE-2019-5736
Сканирование кластера Kubernetes на известные CVE
Сканирование портов с акцентом на сервисы Kubernetes
Сканирование сервисов Kubernetes из контейнера
Облегчённая версия kubeletctl со следующими возможностями:
Выход через cGroup
Выход через модуль ядра
Побег через Var log
Deepce: перечень Docker (проект с открытым исходным кодом, интегрированный как модуль)
Тест на уязвимости: проверка, к каким эксплойтам Kubesploit уязвим ваш контейнер
Подробную информацию о модулях смотрите на Wiki-странице
Мы создали специальную среду Kubernetes на KillerCoda для экспериментов с Kubesploit. Это полная симуляция с полным набором автоматических инструкций по использованию Kubesploit. Рекомендуем вам её изучить.
Запуск сервера:
./kubesploitServer
Запуск агента:
./agent -url https://<server_ip>:443 &

Для сборки этого проекта выполните команду make из корневой папки.
ПРИМЕЧАНИЕ: В настоящее время вам потребуется использовать Golang 1.18 или Go 1.19 (два последних мажорных релиза) в соответствии с требованиями golang, предъявляемыми traefik/yaegi v0.14.3.
Для быстрой сборки под Linux можно выполнить следующее:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Чтобы запустить сервер в контейнере, необходимо заставить сервер Kubesploit слушать интерфейс 0.0.0.0 (а не 127.0.0.1).
Вы можете обновить поле интерфейса в файле config.yaml.
примечание: не забудьте привязать порты между хостом и контейнером (порт по умолчанию —
443, его также можно настроить в config.yaml)
Мы создали правила YARA, которые помогут обнаружить бинарные файлы Kubesploit. Правила записаны в файле kubesploit.yara.
Каждый модуль Go, загруженный в агент, записывается на машине жертвы.
Мы создали карту MITRE векторов атак, используемых Kubesploit.
Для каждого созданного нами модуля мы описали его работу и способы защиты от него. Это обобщено в файле MITIGATION.md.
Мы приветствуем вклад всех видов в этот репозиторий. Для получения инструкций по началу работы и описания наших рабочих процессов разработки, пожалуйста, ознакомьтесь с нашим руководством по вкладу.
Мы хотим поблагодарить Russel Van Tuyl (@Ne0nd0g) за создание Merlin как открытого проекта, который позволил нам построить Kubesploit на его основе. Мы также благодарим Traefik Labs (@traefik) за создание интерпретатора Go ("Yaegi"), который позволил нам легко запускать модули Golang на удалённом агенте.
Copyright (c) 2021 CyberArk Software Ltd. Все права защищены.
Этот репозиторий лицензирован под лицензией GPL-3.0.
Полный текст лицензии см. в файле LICENSE.
Для дополнительных комментариев, предложений или вопросов вы можете связаться с Eviatar Gerzi (@g3rzi) из CyberArk Labs или открыть issue. Другие наши проекты можно найти по адресу https://github.com/cyberark/.