Исследование векторов начального доступа к
Kubernetes-кластерам, практическое воспроизведение техникиT1078и разработка мер защиты.
- Описание проекта
- Ключевые результаты
- Изученные техники
- Практическая демонстрация
- Рекомендации по защите
- Как воспроизвести
- Структура репозитория
- Источники
- Лицензия
В работе проведён всесторонний анализ тактики Initial Access (TA0001) в среде Kubernetes на основе матрицы MITRE ATT&CK для контейнеров. Исследованы основные техники начального доступа, реальные примеры атак (включая группировку Lazarus, уязвимость React2Shell и атаки через открытые API), а также в лабораторной среде воспроизведена техника T1078 (Valid Accounts) — кража и использование токена сервисного аккаунта для получения несанкционированного доступа к кластеру.
Проект выполнен в рамках образовательной задачи и предназначен для администраторов, разработчиков и специалистов по безопасности, интересующихся защитой Kubernetes.
- Рост атак на Kubernetes — количество операций, связанных с кражей токенов, увеличилось на 282% за последний год (данные Unit 42, 2026).
- Самый частый вектор начального доступа — скомпрометированные учётные данные (
T1078) используются в большинстве реальных инцидентов. - Один токен с избыточными правами может привести к полной компрометации кластера и выходу в облачную инфраструктуру (кейс Lazarus).
- Скорость эксплуатации уязвимостей — критическая RCE (
CVE‑2025‑55182) начала эксплуатироваться в течение 2 дней после раскрытия.
В рамках тактики Initial Access (TA0001) были рассмотрены следующие техники:
| ID | Название | Краткое описание |
|---|---|---|
| T1078 | Valid Accounts |
Использование скомпрометированных токенов, kubeconfig, учётных данных облачных провайдеров. |
| T1078.001 | Default Accounts |
Анонимный доступ к API-серверу при неправильной настройке RBAC. |
| T1133 | External Remote Services |
Открытые наружу компоненты: Kubernetes Dashboard, незащищённый API (порт 6443), kubelet (10250). |
| T1190 | Exploit Public-Facing Application |
Эксплуатация уязвимостей веб-приложений, запущенных в кластере (например, React2Shell). |
| T1199 | Trusted Relationship |
Компрометация цепочки поставок через CI/CD или реестры образов. |
| T1552.007 | Unsecured Credentials |
Кража секретов из переменных окружения, Kubernetes Secrets, образов и файлов конфигурации. |
| T1610 | Deploy Container |
Развёртывание вредоносных контейнеров для дальнейшей эскалации или криптомайнинга. |
В лабораторной среде (kind + kubectl) была воспроизведена техника T1078 (Valid Accounts):
- Создан тестовый кластер
kindс одним узлом. - Создан сервисный аккаунт
attacker-saс завышенными правами (cluster-admin). - Токен сервисного аккаунта извлечён (имитация кражи).
- С использованием токена выполнены:
- аутентификация в API-сервере (curl, kubectl);
- получение списка секретов и подов во всех namespace;
- создание вредоносного пода
malicious-podдля выполнения произвольных команд.
- Подтверждена работоспособность пода через просмотр логов.
Скриншоты всех этапов доступны в папке screenshots/.
- Строгое RBAC — принцип наименьших привилегий, избегать wildcard-разрешений.
- Краткосрочные токены — использовать ротацию и ограниченное время жизни для сервисных аккаунтов.
- Аудит и мониторинг — внедрение Falco для обнаружения подозрительных API-запросов и чтения токенов.
- Network Policies — ограничение доступа к API-серверу и критическим компонентам.
- Сканирование образов — проверка контейнеров на уязвимости перед развёртыванием.
- Регулярное патчирование — оперативное обновление кластера и компонентов (например, для
CVE-2025-55182). - Обучение персонала — повышение осведомлённости о социальной инженерии и фишинге.
- Регулярные аудиты — проверка конфигурации RBAC, политик безопасности и образа системы.
Все команды для создания кластера, создания сервисного аккаунта, извлечения токена и эксплуатации приведены в разделе 4 отчёта (report/report.md). Вы также можете использовать готовые скрипты из папки scripts/ для автоматизации.
Быстрый старт:
# 1. Создать кластер kind
kind create cluster --name attck-lab
# 2. Создать сервисный аккаунт с правами
kubectl create namespace demo
kubectl create serviceaccount attacker-sa -n demo
# ... (далее см. отчёт)
# 3. Извлечь токен
TOKEN=$(kubectl create token attacker-sa -n demo --duration=1h)
# 4. Использовать токен для доступа
kubectl --server=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') \
--insecure-skip-tls-verify --token=$TOKEN get pods --all-namespacesВнимание! Эксперимент проводится только в изолированной лабораторной среде. Никогда не применяйте подобные действия в боевых кластерах без явного разрешения.
kubernetes-mitre-attack-initial-access/
├── docs/
│ └── RepositoryStructure.md
├── report/
│ ├── report.md
│ └── report.pdf
├── screenshots/
│ ├── step1-cluster-created.png
│ ├── step2-serviceaccount.png
│ ├── step3-token-extracted.png
│ ├── step4-curl-access.png
│ ├── step4-kubectl-access.png
│ └── step5-malicious-pod.png
├── scripts/
│ ├── attack.ps1
│ ├── clusterrole.yaml
│ ├── serviceaccount.ps1
│ ├── step1.ps1
│ ├── step2.ps1
│ ├── step3.ps1
│ ├── step4.ps1
│ └── step5.ps1
├── README.md
└── .gitignore
- MITRE ATT&CK — Initial Access (TA0001)
- MITRE ATT&CK — T1078 Valid Accounts
- MITRE ATT&CK — T1610 Deploy Container
- Unit 42 — Understanding Current Threats to Kubernetes Environments
- CISecurity — CVE-2025-55182 (React2Shell)
- ThaiCERT — React2Shell Active Exploitation
- Securelist — Containers on fire
- Aqua Security — First-Ever Attack Leveraging Kubernetes RBAC
- Falco — Runtime Security
- OPA Gatekeeper — Policy as Code
Данный проект предоставлен в образовательных целях. Использование материалов допускается при условии указания авторства и ссылки на исходный репозиторий:
https://github.com/F-L-git/kubernetes-mitre-attack-initial-access
Автор: Федор Луцкий
Дата: Июль 2026
Связаться: GitHub