Категория > Новости > Облака под угрозой. Как пентестить инфру в AWS - «Новости»
Облака под угрозой. Как пентестить инфру в AWS - «Новости»10-09-2022, 00:00. Автор: Лукерья |
Облака — это, как известно, не только белогривые лошадки, но и прекрасный инструмент, чтобы создать удобную инфраструктуру для приложений и сервисов. Компании и независимые разработчики переносят свои проекты в AWS или Azure, часто не задумываясь о безопасности. А зря. Будут ли эти данные недоступны для хакеров, сможет ли облако гарантировать защиту? Давай разбираться. Сначала рассмотрим «базу» — перечисление и повышение привилегий в IAM и EC2. В дальнейшем мы научимся закрепляться в этих сервисах, окунемся в волшебство Lambda и SecretManager, найдем пароль в S3, выберемся из контейнера, вытащим данные из EBS, RDS и даже пробросимся в другой VPC! ТеорияAmazon Web Services — облачное решение, предоставляющее своим клиентам множество полезных сервисов. Их можно разделить на три типа.
СервисыIdentity and access management (IAM) — один из основополагающих сервисов облачной инфраструктуры Amazon. Он позволяет управлять доступом к ресурсам AWS. Администрируют пользователей, группы, роли и их доступ именно здесь. Структура этого сервиса показана на следующей иллюстрации. Структура identity and access management ПолитикаПолитика содержит информацию о том, что может делать пользователь, а что нет, какие у него имеются права. Политику можно применять к группам, пользователям или ролям. Например, если политика разрешает действие Внутри политики — три важных компонента:
ПользовательПользователь IAM — сущность, которая создается в AWS для представления использующего его человека либо приложения. У пользователей есть так называемое User ARN (Amazon resource name), выглядит оно следующим образом:
arn:partition:service:region:account:resource
где
Вот некоторые примеры ARN:
arn:aws:iam::123456789012:root
arn:aws:iam::123456789012:user/JohnDoe
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
arn:aws:iam::123456789012:group/Developers
arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
arn:aws:iam::123456789012:role/S3Access
ГруппаГруппа IAM — это совокупность пользователей. Группы облегчают управление ими. Группа может содержать множество пользователей, а пользователь может принадлежать к нескольким группам. Кроме того, группы не могут быть вложенными: они должны содержать только пользователей, но не другие группы. РольРоль IAM — это сущность, которая определяет набор разрешений для выполнения запросов к сервисам AWS. Использование ролей — безопасный способ предоставить разрешения определенным объектам. Так, пентестер может попробовать взять на себя определенную роль, если у него есть на это права, и получить привилегии этой роли. Роли создаются для того, чтобы не пришлось регистрировать дополнительную учетную запись ради каких‑нибудь автоматических задач. Роль зачастую привязывается к какому‑либо сервису. EC2Он же Elastic Compute Cloud. Это виртуальный сервер (инстанс), на котором пользователь может запускать любые приложения, чтобы решать собственные задачи. Инстанс состоит из следующих компонентов. Структура Elastic Compute Cloud Рассмотрим все эти составляющие по порядку.
Initial AccessЕсть множество способов проникнуть в облако заказчика пентеста. Мы будем действовать через AWS CLI — командную строку для работы с AWS. Нам потребуются специальный идентификатор секретного ключа и сам секретный ключ, после предоставления которых мы получим возможность работать с облаком. В качестве точки входа будем использовать IAM и EC2. Сбор информацииНа компьютерах, взаимодействующих с облачными сервисами Amazon, обычно присутствует файл
/root/.aws/credentials
/home/user/.aws/credentials
В Windows:
Идентификатор секретного ключа и сам секретный ключ можно обнаружить в публичных репозиториях. Очень часто нужные нам ключи могут лежать в переменных окружения. Обязательно проверяй и их:
set
dir env:
Get-ChildItem Env: | ft Key,Value
Возможно, у тебя не получится обнаружить столь чувствительные данные такими простыми методами. Перед тестированием ты, скорее всего, успел обнаружить принадлежащие заказчику поддомены, репозитории, файлы. В таком случае попробуй поискать во всех этих источниках следующие характерные строки:
aws_access_key_id
aws_secret_access_key
aws_session_token
bucket_name
aws_access_key
aws_secret_key
S3_BUCKET
S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY
S3_SECRET_KEY
S3_ENDPOINT
list_aws_accounts
metadata_service_timeout
metadata_service_num_attempts
ПодключениеПосле того как ты нашел идентификатор и сам секретный ключ, настало время подключаться к AWS CLI. Для этого используем PowerShell:
aws configure
Чтобы узнать, под какой учетной записью ты подключился к системе, в Linux используется команда
awsstsget-caller-identity
# Дополнительно можно указать конфигурационный профиль (если, допустим, получили данные не от профиля default)
awsstsget-caller-identity--profiledemo
EnumerationВ начале любого тестирования на проникновение следует хорошенько осмотреться и понять, насколько большое облако предстоит пропентестить. Сначала столь скрупулезная разведка может показаться бесполезной, но, переходя к следующим этапам, мы уже будем располагать достаточным объемом информации. В начале каждого раздела я указал, для чего нам потребуются те или иные данные. Не переживай, механизм работы с политиками и ролями будет поначалу не совсем ясен. Постарайся удержать в голове команды. Когда дойдем до этапа повышения привилегий, все встанет на свои места само собой. IAMПользователи Пользователи — самая популярная точка входа в облако AWS. Именно пользовательскую учетную запись можно обнаружить в файле Перейти обратно к новости |