• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Матрица угроз для Kubernetes

Данная статья перевод

1590178673862.png


Kubernetes -это самая популярная контейнерная оркестровка и один из самых быстрорастущих проектов в истории открытого программного обеспечения, которая занимает значительную часть вычислительного стека многих компаний. Гибкость и масштабируемость контейнеров побуждает многих разработчиков переносить свои рабочие нагрузки на Kubernetes. Несмотря на то, что Kubernetes имеет много преимуществ, он также ставит новые задачи в области безопасности, которые необходимо учитывать. Поэтому очень важно понимать различные риски безопасности, которые существуют в контейнерных средах, и особенно в Kubernetes.

Фреймворк MITRE ATT&CK® представляет собой базу известных тактика и методов, которые используются при кибератаках. Начиная с Windows и Linux, матрицы MITRE ATT&CK охватывают различные этапы, которые вовлечены в кибератаки (тактики) и разрабатывают известные методы в каждой технике. Эти матрицы помогают организациям понять поверхность атак в их среде и убедиться в том, что у них есть адекватное обнаружение и уменьшение различных рисков. Framework tactics MITRE ATT&CK включает в себя:
  • Начальный доступ (Initial access)
  • Выполнение (Execution)
  • Стойкость (Persistence)
  • Повышение привилегий (Privilege escalation)
  • Уклонение от защиты (Defense evasion)
  • Доступ к учетным данным (Credential access)
  • Обнаружение (Discovery)
  • Боковое движение (Lateral movement)
  • Воздействие (Impact)
Когда мы в Azure Security Center начали создавать исследователь безопасность Kubernetes, мы заметили, что несмотря на отличающиеся методы атаки, нацеленных на Linux или Windows, их тактика была на самом деле схожа. Например, перевод первых четырех тактик с кластеров ОС на кластеры-контейнеры будет выглядеть следующим образом:
  1. "Начальный доступ к компьютеру" становится "Начальным доступом к кластеру",
  2. "Вредоносный код на компьютере" становится "Вредоносная деятельность на контейнерах",
  3. "Поддержание доступа к компьютеру" становится "Поддержание доступа к кластеру",
  4. "Получение более высоких привилегии на компьютере" становится "Получение более высоких привилегии в кластере".
Поэтому мы создали первую матрицу атак Kubernetes: схожую на ATT&CK матрицу и состоящую из основных техник, которые имеют отношение к безопасности контейнерной оркестровки, с фокусом на Kubernetes.

1590175805763.png


Как видно, матрица содержит 9 тактик, перечисленных выше. Каждая из них содержит несколько приемов, которые могут быть использованы злоумышленниками для достижения различных целей. Ниже приведены описания каждой из техник.

1. Начальный доступ

Тактика начального доступа состоит из техник, которые используются для получения доступа к ресурсу. В контейнерных средах эти техники обеспечивают первый доступ к кластеру. Этот доступ может быть получен непосредственно через уровень управления кластером или, в качестве альтернативы, путем получения доступа к вредоносному или уязвимому ресурсу, который установлен на кластере.
  • Использование учетных данных облака
В случаях, когда кластер Kubernetes развертывается в публичном облаке (например, AKS в Azure, GKE в GCP или EKS в AWS), скомпрометированные учетные данные в облаке могут привести к поглощению кластера. Злоумышленники, имеющие доступ к учетным записям в "облаке", могут получить доступ к уровню управления кластером.
  • Скомпрометированные образы в реестре
Запуск скомпрометированного образа в кластере может скомпрометировать кластер. Злоумышленники, получившие доступ к частному реестру, могут вставить свои собственные скомпрометированные образы в реестр. Последний - может быть взломан пользователем. К тому же, пользователи часто используют недоверенные образы из публичных реестров (например, Docker Hub), которые могут быть вредоносными.

Создание образов на основе недоверенных базовых образов также может привести к подобным результатам.
  • Файл Kubeconfig
Файл kubeconfig, также используемый kubectl, содержит подробную информацию о кластерах Kubernetes, включая их расположение и учетные данные. Если кластер расположен как облачный сервис (например, AKS или GKE), этот файл загружается клиенту с помощью команд облака (например, "az aks get-credential" для AKS или "gcloud container clusters get-credentials" для GKE).

Если злоумышленники получают доступ к этому файлу, например, через скомпрометированного клиента, они могут использовать его для доступа к кластерам.
  • Уязвимое приложение
Запуск уязвимого приложения с открытым доступом в кластере может обеспечить начальный доступ к кластеру. Может быть использован контейнер, который запускает приложение, чувствительное к уязвимости удаленного выполнения кода (RCE). Если учетная запись службы смонтирована на контейнер (по умолчанию в Kubernetes), атакующий сможет посылать запросы на API сервер, используя учетные данные этой учетной записи службы.
  • Незащищенная панель инструментов
Dashboard Kubernetes - это веб-интерфейс пользователя, позволяющий контролировать и управлять кластером Kubernetes. По умолчанию панель отображает внутреннюю конечную точку (ClusterIP service). Если dashboard подвергается внешнему воздействию, она может позволить неаутентифицированное удаленное управление кластером.

2. Выполнение

Тактика выполнения состоит из техник, которые используются злоумышленниками для выполнения своего кода внутри кластера.
  • Выполнить в контейнер
Злоумышленники, имеющие права, могут выполнять вредоносные команды в контейнерах в кластере с помощью команды exec ("kubectl exec"). В этом методе злоумышленники могут использовать доверенные образы, такие как образ операционной системы (например, Ubuntu) в качестве backdoor контейнера , и запускать свой вредоносный код удаленно с помощью команды "kubectl exec".
  • Новый контейнер
Злоумышленники могут попытаться запустить свой код в кластере, развернув контейнер. Злоумышленники, имеющие разрешения на установку подсистемы или контроллера в кластере (например, DaemonSet \ ReplicaSet\ Deployment), могут создать новый ресурс для выполнения своего кода.
  • Эксплойт приложения
Приложение, развернутое в кластере и уязвимое к уязвимости удаленного выполнения кода, или уязвимость, которая в конечном счете, позволяет выполнение кода, позволяет злоумышленникам выполнять код в кластере. Если учетная запись службы смонтирована в контейнер (по умолчанию в Kubernetes), атакующий сможет посылать запросы на API сервер, используя данные учетной записи службы.
  • SSH сервер, запущенный внутри контейнера
SSH-сервер, запущенный внутри контейнера, может использоваться злоумышленниками. Если злоумышленники получают действительные учетные данные контейнера, будь то с помощью брутфорса или других методов (таких как фишинг), они могут использовать его для получения удаленного доступа к контейнеру по SSH.

3. Настойчивость

Тактика настойчивости состоит из приемов, которые используются злоумышленниками для сохранения доступа к кластеру в случае, если их первоначальная позиция потеряна.
  • Backdoor контейнера
Злоумышленники запускают свой вредоносный код в кластере контейнера. Используя контроллеры Kubernetes, такие как DaemonSets или Deployments, злоумышленники могут гарантировать, что в одном или всех узлах кластера будет запущено постоянное количество контейнеров.
  • Письменное монтирование hostPath
hostPath монтирует каталог или файл с хоста в контейнер. Злоумышленники, имеющие разрешения на создание нового контейнера в кластере, могут создать контейнер с записываемым томом hostsPath и получить конект на основном хосте. Например, последнее может быть достигнуто путем создания задания cron на хосте.
  • Kubernetes CronJob
Kubernetes Job - это контроллер, который создает один или несколько модулей и обеспечивает их успешное завершение в определенном количестве. Kubernetes Job может использоваться для запуска контейнеров, которые выполняют конечные задачи для пакетных заданий. Kubernetes CronJob используется для планирования вакансий. Злоумышленники могут использовать Kubernetes CronJob для планирования выполнения вредоносного кода, который будет запущен как контейнер в кластере.

4. Повышение привилегий

Тактика эскалации привилегий состоит из техник, которые используются злоумышленниками для получения более высоких привилегий в среде, чем те, которые у них имеются в наличии в настоящее время. В контейнерных средах это может включать получение доступа к узлу из контейнера, получение более высоких привилегий в кластере и даже получение доступа к облачным ресурсам.
  • Привилегированный контейнер
Привилегированный контейнер - это контейнер, обладающий всеми возможностями хост-устройства, снимающего все ограничения, присущие обычным контейнерам. На практике это означает, что привилегированные контейнеры могут выполнять почти все действия, которые могут быть выполнены непосредственно на хосте. Злоумышленники, получающие доступ к привилегированному контейнеру, имеют возможность создать новый привилегированный контейнер (например, используют скомпрометированную служебную учетную запись pod's), получая доступ к ресурсам хоста.
  • Привязка кластера к админ-кластеру
Контроль доступа на основе ролей (Role-based access control, RBAC) является ключевой функцией безопасности в Kubernetes. RBAC может ограничивать разрешенные действия различных идентичностей в кластере. Cluster-admin - это встроенная привилегированная роль в Kubernetes. Злоумышленники, имеющие права на создание привязок и привязок-кластеров в кластере, могут создать привязку к Cluster-admin ClusterRole или другим ролям с высокими привилегиями.
  • Монтирование hostPath
Монтирование hostPath может быть использован злоумышленниками для получения доступа к основному хосту и, таким образом, разрыва от контейнера к хосту. (Подробнее см. в разделе "3: Монтаж по пути к хосту с возможностью записи").
  • Доступ к облачным ресурсам
Если кластер Kubernetes развернут в облаке, в некоторых случаях злоумышленники могут использовать свой доступ к одному контейнеру, чтобы получить доступ к другим ресурсам облака за пределами кластера. Например, в AKS каждый узел содержит служебную учетную запись, хранящуюся в файле /etc/kubernetes/azure.json. AKS использует эту учетную запись службы для создания и управления ресурсами Azure, необходимые для работы кластера.

По умолчанию, администратор службы имеет права доступа к ресурсам в группе ресурсов кластера. Злоумышленники, получившие доступ к файлу администратора (например, с помощью монтирования hostPath), могут использовать его учетные данные для доступа или изменения ресурсов облака.

5. Уклонение от защиты

Тактика уклонения от защиты состоит из приемов, используемых злоумышленниками, во избежание обнаружения и скрыть свою деятельность.
  • Очистить журналы контейнеров
Злоумышленники могут удалить журнал приложения или операционной системы на взломанном контейнере в попытке предотвратить обнаружение их активности.
  • Удаление событий Kubernetes
Событие Kubernetes - это объект Kubernetes, который регистрирует изменения состояния и сбои ресурсов в кластере. Примером события является создание контейнера, подтягивание изображения или планирование подкачки на узле.

События Kubernetes могут быть очень полезны для определения изменений, происходящих в кластере. Поэтому злоумышленники могут захотеть удалить эти события (например, используя: "kubectl delete events-all") в попытке избежать обнаружения их активности в кластере.
  • Схожесть названия кода/контейнера
Модули, созданные такими контроллерами, как Deployment или DaemonSet, имеют случайный суффикс в своих именах. Злоумышленники могут использовать этот факт и называть свои backdoor коды, так как они были созданы существующими контроллерами. Например, злоумышленник может создать вредоносный код под названием coredns-{случайный суффикс}, который будет выглядеть как относящийся к CoreDNS Deployment .

Также, злоумышленники могут устанавливать свои контейнеры в пространстве kube-system, где находятся административные контейнеры.
  • Подключение с прокси-серверу
Злоумышленники могут использовать прокси-серверы для сокрытия своего IP-адреса. В частности, злоумышленники часто используют анонимные сети, такие как TOR для своей деятельности. Это может использоваться для связи с самими приложениями или с сервером API.

6. Доступ к учетным данным

Тактика данного доступа состоит из техник, которые используются злоумышленниками для кражи учетных данных.

В контейнерных средах сюда входят учетные данные запущенного приложения, идентификационные данные, секреты, хранящиеся в кластере, или учетные данные компьютерного облака.
  • Список секретов Kubernetes
Секрет Kubernetes - это объект, позволяющий пользователям хранить и управлять конфиденциальной информацией, такой как пароли и строки соединения в кластере. Секреты могут быть использованы по ссылке в конфигурации модуля. Злоумышленники, имеющие разрешения на получение секретов с API сервера (например, с помощью учетной записи службы кода), могут получить доступ к конфиденциальной информации, которая может включать учетные данные различных служб.
  • Принцип работы службы монтирования
Когда кластер расположен в облаке, в некоторых случаях злоумышленники могут использовать свой доступ к контейнеру в кластере для получения учетных данных в облаке. Например, в AKS каждый узел содержит служебные учетные данные. (См. "4: Доступ к облачным ресурсам" для более подробной информации).
  • Учетная запись службы контейнера доступа
Service account (SA) представляет собой идентификатор приложения в Kubernetes. По умолчанию, SA монтируется к каждой созданной структуре данных в кластере. Используя SA, контейнеры в подсистеме могут отправлять запросы на API-сервер Kubernetes. Злоумышленники, получившие доступ к подсистеме, могут получить доступ к SA-токену (расположенному в /var/run/secrets/kubernetes.io/service account/token) и выполнить действия в кластере, в соответствии с разрешениями SA. Если RBAC не включен, SA имеет неограниченные права доступа в кластере. Если RBAC включен, его разрешения определяются с помощью RoleBindings \ ClusterRoleBindings, которые с ним ассоциированы.
  • Учетные данные приложения в файлах конфигурации
Разработчики хранят секретную информацию в конфигурационных файлах Kubernetes, таких как переменные окружения в конфигурации модуля. Такое поведение обычно наблюдается в кластерах, которые отслеживаются Azure Security Center. Злоумышленники, имеющие доступ к этим конфигурациям, запрашивая API сервер или получая доступ к этим файлам на конечной точке разработчика, могут заполучить секретную информацию и использовать ее.

7. Обнаружение

Тактика обнаружения состоит из приемов, которые используются злоумышленниками для изучения среды, к которой они получили доступ. Это исследование помогает злоумышленникам выполнять боковое движение и получать доступ к дополнительным ресурсам.
  • Доступ к серверу API Kubernetes
Сервер Kubernetes API является шлюзом к кластеру. Действия в кластере выполняются путем отправки различных запросов к RESTful API. Статус кластера, который включает в себя все компоненты, развернутые на нем, может быть получен сервером API. Злоумышленники могут отправлять API запросы на исследование кластера и получать информацию о контейнерах, секретной информации и других ресурсах в кластере.
  • Доступ к Kubelet API
Kubelet - это агент Kubernetes, который устанавливается на каждом узле. Kubelet отвечает за правильное выполнение модулей, предназначенных для узла. Kubelet предоставляет службу API только для чтения, которая не требует аутентификации (TCP-порт 10255). Злоумышленники с сетевым доступом к хосту (например, через запущенный код на взломанном контейнере) могут посылать API-запросы к Kubelet API. Специальный запрос https://[NODE IP]:10255/pods/ получает информацию о самом узле, такую как потребление процессора и памяти. https://[NODE IP]:10255/spec/получает информацию о самом узле, такую как потребление процессора и памяти.
  • Создание карты сети
Злоумышленники могут попытаться составить карту сети кластера, чтобы получить информацию о запущенных приложениях, включая сканирование на наличие имеющихся уязвимостей. По умолчанию в Kubernetes нет никаких ограничений на взаимодействие модулей. Поэтому злоумышленники, получившие доступ к одному контейнеру, могут использовать его для сканирования сети.
  • Панель доступа Kubernetes
Dashboard Kubernetes - это веб-интерфейс, который используется для мониторинга и управления кластером Kubernetes. Панель позволяет пользователям выполнять действия в кластере, используя свою учетную запись (kubernetes-dashboard) с разрешениями, которые определяются привязкой или привязкой к кластеру для этой учетной записи службы. Злоумышленники, получившие доступ к контейнеру в кластере, могут использовать его сетевой доступ к панели управления. Следовательно, злоумышленники могут получить информацию о различных ресурсах в кластере, используя идентификатор приборной панели.
  • Instance Metadata API
Облачные провайдеры предоставляют услугу метаданных экземпляров для получения информации о виртуальной машине, такой как конфигурация сети, диски и открытые ключи SSH. Эта услуга доступна виртуальным машинам через немаршрутизируемый IP-адрес, доступ к которому возможен только из виртуальной машины. Злоумышленники, получившие доступ к контейнеру, могут запросить службу метаданных API для получения информации о базовом узле. Например, в Azure, следующий запрос получит всю информацию о метаданных экземпляра: http:///metadata/instance?api-version=2019-06-01.

8. Lateral movement или Бокове движение


Тактика бокового перемещения состоит из приемов, которые используются злоумышленниками для перемещения по среде жертвы. В контейнерных средах это включает в себя получение доступа к различным ресурсам в кластере с заданного доступа к одному контейнеру, получение доступа к базовому узлу с контейнера или получение доступа к облачной среде.
  • Доступ к облачным ресурсам
Злоумышленники могут перемещаться из взломанного контейнера в облачную среду. (Подробности см. в разделе "4: Доступ к облачным ресурсам").
  • Учетная запись службы контейнера
Злоумышленники, получившие доступ к контейнеру в кластере, могут использовать подключенный токен учетной записи службы для отправки запросов на API сервер, а также получить доступ к дополнительным ресурсам в кластере. (См. "6: Учетная запись службы контейнера доступа" для более подробной информации).
  • Внутренняя сеть кластера
Поведение сети Kubernetes позволяет трафику конектится между подсистемами в кластере, как поведение по умолчанию. Злоумышленники, получившие доступ к одному контейнеру, могут использовать его для сетевой доступности к другому контейнеру в кластере.
  • Учетные данные приложений в файлах конфигурации
Разработчики хранят секретную информацию в конфигурационных файлах Kubernetes, например, в виде переменных окружения в конфигурации модуля. Используя эти учетные данные, злоумышленники могут получить доступ к дополнительным ресурсам как внутри, так и вне кластера. (Подробнее см. "6: Учетные данные приложения в конфигурационных файлах").
  • Монтирование writable volume на хост
Злоумышленники могут попытаться получить доступ к основному хосту из взломанного контейнера. (См. "3: Монтаж по пути к хосту с возможностью записи" для более подробной информации).
  • Доступ к панели управления Kubernetes
Злоумышленники, имеющие доступ к панели Kubernetes, могут управлять ресурсами кластера, а также запускать свой код на различных контейнерах, используя встроенную возможность "выполнения" приборной панели. (См. "7: Доступ к приборной панели Kubernetes" для более подробной информации).
  • Конечная точка доступа
Helm - популярный менеджер пакетов для Kubernetes, поддерживаемый CNCF. Tiller является серверным компонентом Helm в версии 2.

Tiller раскрывает внутреннюю конечную точку gRPC в кластере, прослушивает порт 44134. По умолчанию эта конечная точка не требует аутентификации. Злоумышленники могут запускать код на любом контейнере, доступном службе tiller, и выполнять действия в кластере, используя учетную запись службы tiller, которая часто обладает высокими привилегиями.

9. Воздействие

Тактика воздействия состоит из методов, которые используются злоумышленниками, чтобы злоупотреблять или нарушать нормальное поведение окружающей среды.
  • Уничтожение данных
Злоумышленники могут попытаться уничтожить данные и ресурсы кластера. Сюда входит удаление развертываний, конфигураций, хранилищ и вычислительных ресурсов.
  • Перехват ресурсов
Злоумышленники могут злоупотреблять скомпрометированным ресурсом для выполнения задач. Обычным злоупотреблением является использование скомпрометированных ресурсов для выполнения задач по добыче цифровой валюты. Злоумышленники, имеющие доступ к контейнеру в кластере или разрешения на создание новых контейнеров, могут использовать их для такой деятельности.
  • Отказ в обслуживании
Злоумышленники могут попытаться совершить атаку типа "отказ в обслуживании", которая делает сервис недоступным для доверенных пользователей. В кластерах контейнеров это включает попытки блокирования доступности самих контейнеров, базовых узлов или сервера API.

Понимание поверхности атак контейнерных сред является первым шагом в построении решений безопасности для этих сред. Матрица, представленная выше, может помочь многим организациям определить текущие пробелы в области защиты от различных угроз, нацеленных на Kubernetes. Azure Security Center может помочь вам защитить контейнерную среду. Узнайте больше
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!