kube-hunter

Cloud & Container Security v0.6.8 · 18.05.2022 не обновлялся >2 лет

Автоматизированный поиск уязвимостей в Kubernetes-кластерах от Aqua Security. Режимы: удалённое сканирование (снаружи), внутри пода (из скомпрометированного контейнера). Находит: открытые API-серверы, etcd без аутентификации, привилегированные поды, секреты в переменных окружения, пути побега из контейнера.

v0.6.8
18.05.2022 current
Добавлен 13.07.2026 · Обновлён 13.07.2026 · Cloud & Container Security
Установка
pip install kube-hunter
# Удалённо
kube-hunter --remote 10.0.0.1
# Внутри кластера
kube-hunter --pod
переведено ИИ

---

Уведомление

Разработка kube-hunter прекращена. Если вы заинтересованы в сканировании кластеров Kubernetes на наличие известных уязвимостей, мы рекомендуем использовать Trivy. В частности, его возможности по сканированию конфигурации Kubernetes и сканированию уязвимостей в KBOM. Подробнее в документации Trivy.


kube-hunter ищет слабости безопасности в кластерах Kubernetes. Инструмент был разработан для повышения осведомленности и видимости проблем безопасности в средах Kubernetes. Вы НЕ ДОЛЖНЫ запускать kube-hunter на кластере Kubernetes, которым вы не владеете!

Запуск kube-hunter: kube-hunter доступен как контейнер (aquasec/kube-hunter), а также мы предлагаем веб-сайт на kube-hunter.aquasec.com, где вы можете зарегистрироваться онлайн, чтобы получить токен, позволяющий просматривать и делиться результатами в сети. Вы также можете запустить Python-код самостоятельно, как описано ниже.

Изучение уязвимостей: База знаний kube-hunter включает статьи об обнаруживаемых уязвимостях и проблемах. Когда kube-hunter сообщает о проблеме, он показывает её VID (Идентификатор уязвимости), чтобы вы могли найти ее в базе знаний по адресу https://aquasecurity.github.io/kube-hunter/
Если вас интересует интеграция kube-hunter с Kubernetes ATT&CK Matrix, продолжайте чтение

Демонстрационное видео kube-hunter

Содержание

Kubernetes ATT&CK Matrix

kube-hunter теперь поддерживает новый формат Kubernetes ATT&CK matrix. В то время как уязвимости kube-hunter представляют собой коллекцию творческих техник, имитирующих атакующего в кластере (или за его пределами), Mitre ATT&CK определяет более общие стандартизированные категории техник для этого.

Можно представить уязвимости kube-hunter как небольшие шаги для атакующего, следующего по пути более общей техники, на которую он нацелился. Большинство "охотников" и уязвимостей kube-hunter могут быть точно классифицированы по этим техникам, поэтому мы перешли на соблюдение стандарта Matrices.

Некоторые уязвимости kube-hunter, которые мы не смогли сопоставить с техникой Mitre, имеют префикс General (Общее) kube-hunter

Охота (Hunting)

Где мне следует запускать kube-hunter?

Есть три разных способа запустить kube-hunter, каждый из которых обеспечивает свой подход к обнаружению слабостей в вашем кластере:

Вы можете запустить kube-hunter на любой машине (включая ваш ноутбук), выбрать "Удаленное сканирование" и указать IP-адрес или доменное имя вашего кластера Kubernetes. Это даст вам взгляд атакующего на вашу конфигурацию Kubernetes.

Вы можете запустить kube-hunter непосредственно на машине в кластере и выбрать вариант проверки всех локальных сетевых интерфейсов.

Вы также можете запустить kube-hunter в поде (pod) внутри кластера. Это покажет, насколько ваш кластер был бы открыт, если бы один из ваших подов приложений был скомпрометирован (например, через уязвимость в ПО). (Флаг --pod)

Варианты сканирования

Сначала проверьте предварительные требования.

По умолчанию kube-hunter откроет интерактивную сессию, в которой вы сможете выбрать один из следующих вариантов сканирования. Вы также можете вручную указать вариант сканирования из командной строки. Вот ваши варианты:

  1. Удаленное сканирование

Чтобы указать удаленные машины для охоты, выберите вариант 1 или используйте опцию --remote. Пример: kube-hunter --remote some.node.com

  1. Сканирование интерфейса

Чтобы указать сканирование интерфейса, вы можете использовать опцию --interface (это будет сканировать все сетевые интерфейсы машины). Пример: kube-hunter --interface

  1. Сетевое сканирование

Чтобы указать конкретную CIDR для сканирования, используйте опцию --cidr. Пример: kube-hunter --cidr 192.168.0.0/24

  1. Автоматическое обнаружение узлов Kubernetes

Установите флаг --k8s-auto-discover-nodes для запроса Kubernetes на наличие всех узлов в кластере, а затем попытки сканирования всех из них. По умолчанию он будет использовать внутрикластерную конфигурацию для подключения к API Kubernetes. Если вы хотите использовать явный файл kubeconfig, установите --kubeconfig /location/of/kubeconfig/file.

Также обратите внимание, что это всегда выполняется при использовании режима --pod.

Аутентификация

Для имитации атакующего на ранних этапах kube-hunter не требует аутентификации для проведения охоты.

  • Имперсонация - Вы можете предоставить kube-hunter определённый маркер сервисной учётной записи для использования при охоте, вручную передав JWT Bearer-токен секрета сервисной учетной записи с помощью флага --service-account-token.

Пример: bash $ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni...

  • При запуске с флагом --pod, kube-hunter использует маркер сервисной учетной записи, монтированный внутри пода, для аутентификации на обнаруженных во время охоты службах.
  • Если указано, флаг --service-account-token имеет приоритет при запуске в режиме пода

Активная охота

Активная охота - это опция, при которой kube-hunter будет использовать обнаруженные уязвимости для исследования дальнейших уязвимостей. Основное различие между обычной и активной охотой заключается в том, что обычный поиск никогда не изменяет состояние кластера, тогда как активная охота может выполнять операции, изменяющие состояние, что может быть вредным.

По умолчанию kube-hunter не проводит активную охоту. Для активной охоты кластера используйте флаг --active. Пример: kube-hunter --remote some.domain.com --active

Список тестов

Вы можете увидеть список тестов с помощью опции --list. Пример: kube-hunter --list

Чтобы увидеть тесты активной и пассивной охоты: kube-hunter --list --active

Карта узлов

Чтобы увидеть только карту сети ваших узлов, запустите с опцией --mapping. Пример: kube-hunter --cidr 192.168.0.0/24 --mapping Это выведет все узлы Kubernetes, которые обнаружил kube-hunter.

Вывод данных

Для управления логированием вы можете указать уровень логов с помощью опции --log. Пример: kube-hunter --active --log WARNING Доступные уровни логирования:

  • DEBUG
  • INFO (по умолчанию)
  • WARNING

Отправка отчетов

По умолчанию отчет будет отправляться в stdout, но вы можете указать другие методы с помощью опции --dispatch. Пример: kube-hunter --report json --dispatch http Доступные методы отправки:

  • stdout (по умолчанию)
  • http (для настройки установите следующие переменные окружения:)
    • KUBEHUNTER_HTTP_DISPATCH_URL (по умолчанию: https://localhost)
    • KUBEHUNTER_HTTP_DISPATCH_METHOD (по умолчанию: POST)

Расширенное использование

Быстрое сканирование в Azure

При запуске в виде пода в среде Azure или AWS, kube-hunter будет получать подсети из службы метаданных экземпляра. Естественно, это делает процесс обнаружения более длительным. Чтобы жестко ограничить сканирование подсети префиксом /24, используйте опцию --quick.

Пользовательская охота

Пользовательская охота позволяет опытным пользователям контролировать, какие "охотники" регистрируются в начале охоты. Если вы знаете, что делаете, это может помочь, если вы хотите адаптировать процесс охоты и обнаружения kube-hunter под свои нужды.

Пример:

kube-hunter --custom <HunterName1> <HunterName2>

Включение пользовательской охоты удаляет всех "охотников" из процесса, за исключением указанных в белом списке.

Флаг --custom считывает список имен классов "охотников". Чтобы просмотреть все имена классов kube-hunter, вы можете комбинировать флаг --raw-hunter-names с флагом --list.

Пример:

kube-hunter --active --list --raw-hunter-names

Уведомление: Из-за архитектурного дизайна kube-hunter, следующие "Основные Охотники/Классы" всегда будут регистрироваться (даже при использовании пользовательской охоты): * HostDiscovery * Генерирует IP-адреса для охоты на основе предоставленных конфигураций * Автоматически обнаруживает подсети, используя облачные API метаданных * FromPodHostDiscovery * Автоматически обнаруживает IP-адреса поверхности атаки для охоты, используя техники, основанные на среде подов * Автоматически обнаруживает подсети через облачные Metadata API * PortDiscovery (Обнаружение портов) * Сканирование портов на указанных IP-адресах для известных портов сервисов Kubernetes * Collector (Сборщик) * Собирает обнаруженные уязвимости и открытые сервисы для последующего отчёта * StartedInfo (Информация о запуске) * Выводит сообщение о запуске * SendFullReport (Отправка полного отчёта) * Отправляет отчёт на основе заданных конфигураций

Развёртывание

Существует три метода развёртывания kube-hunter:

На машине

Вы можете запустить kube-hunter непосредственно на вашей машине.

Предварительные требования

Вам потребуется установленное следующее: * python 3.x * pip

Установка с помощью pip

Установка:

pip install kube-hunter

Запуск:

kube-hunter
Запуск из исходного кода

Клонируйте репозиторий:

git clone https://github.com/aquasecurity/kube-hunter.git

Установите зависимости модуля. (Возможно, вы захотите сделать это в виртуальном окружении)

cd ./kube-hunter
pip install -r requirements.txt

Запуск:

python3 kube_hunter

Если вы хотите использовать pyinstaller/py2exe, вам необходимо сначала запустить скрипт install_imports.py.

Контейнер

Aqua Security поддерживает контейнеризированную версию kube-hunter в aquasec/kube-hunter:aqua. Этот контейнер включает исходный код, а также дополнительный (закрытый) плагин для формирования отчётов, который загружает результаты в отчёт, доступный для просмотра на kube-hunter.aquasec.com. Обратите внимание, что запуск контейнера aquasec/kube-hunter и загрузка данных отчётов подпадают под действие дополнительных условий и положений.

Dockerfile в этом репозитории позволяет вам собрать контейнеризированную версию без плагина формирования отчётов.

Если вы запустите контейнер kube-hunter с сетью хоста (host network), он сможет сканировать все интерфейсы на хосте:

docker run -it --rm --network host aquasec/kube-hunter

Примечание для Docker для Mac/Windows: Имейте в виду, что «хост» для Docker для Mac или Windows — это виртуальная машина (VM), в которой Docker запускает контейнеры. Поэтому указание --network host даёт kube-hunter доступ к сетевым интерфейсам этой VM, а не вашей физической машины. По умолчанию kube-hunter работает в интерактивном режиме. Вы также можете указать параметры сканирования с помощью описанных выше параметров, например:

docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24

Под (Pod)

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

Пример файла job.yaml определяет Job, которая запустит kube-hunter в поде, используя настройки доступа по умолчанию для подов в Kubernetes. (Вы можете изменить это определение, например, чтобы запускать от имени непривилегированного пользователя или в другом пространстве имен.)

  • Запустите job с помощью kubectl create -f ./job.yaml
  • Найдите имя пода с помощью kubectl describe job kube-hunter
  • Просмотрите результаты тестов с помощью kubectl logs <имя пода>

Участие

Чтобы ознакомиться с руководством по участию, Нажмите здесь

Лицензия

Этот репозиторий доступен по лицензии Apache License 2.0.

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