Облака под угрозой. Как пентестить инфру в AWS

Содержание статьи

  • Теория
  • Сервисы
  • Политика
  • Пользователь
  • Группа
  • Роль
  • EC2
  • Initial Access
  • Сбор информации
  • Подключение
  • Enumeration
  • IAM
  • EC2
  • Повышение привилегий
  • IAM
  • EC2
  • Выводы

Об­лака — это, как извес­тно, не толь­ко белог­ривые лошад­ки, но и прек­расный инс­тру­мент, что­бы соз­дать удоб­ную инфраструк­туру для при­ложе­ний и сер­висов. Ком­пании и незави­симые раз­работ­чики перено­сят свои про­екты в AWS или Azure, час­то не задумы­ваясь о безопас­ности. А зря. Будут ли эти дан­ные недос­тупны для хакеров, смо­жет ли обла­ко гаран­тировать защиту? Давай раз­бирать­ся.

Сна­чала рас­смот­рим «базу» — перечис­ление и повыше­ние при­виле­гий в IAM и EC2. В даль­нейшем мы научим­ся зак­реплять­ся в этих сер­висах, оку­нем­ся в вол­шебс­тво Lambda и SecretManager, най­дем пароль в S3, выберем­ся из кон­тей­нера, вытащим дан­ные из EBS, RDS и даже проб­росим­ся в дру­гой VPC!

 

Теория

Amazon Web Services — облачное решение, пре­дос­тавля­ющее сво­им кли­ентам мно­жес­тво полез­ных сер­висов. Их мож­но раз­делить на три типа.

  • IAS (infrastructure as a service) — к этой катего­рии отно­сит­ся толь­ко сер­вис Virtual Private Cloud, который дает воз­можность поль­зовате­лю соз­давать при­ват­ные изо­лиро­ван­ные сети пря­мо в обла­ке.
  • PAS (platform as a service) поз­воля­ет арен­довать один вир­туаль­ный сер­вер (инстанс).
  • SAS (software as a service) — пре­дос­тавле­ние ПО и услуг.

 

Сервисы

Identity and access management (IAM) — один из осно­вопо­лага­ющих сер­висов облачной инфраструк­туры Amazon. Он поз­воля­ет управлять дос­тупом к ресур­сам AWS. Адми­нис­три­руют поль­зовате­лей, груп­пы, роли и их дос­туп имен­но здесь. Струк­тура это­го сер­виса показа­на на сле­дующей иллюс­тра­ции.

Струк­тура identity and access management 

Политика

По­лити­ка содер­жит информа­цию о том, что может делать поль­зователь, а что нет, какие у него име­ются пра­ва. Полити­ку мож­но при­менять к груп­пам, поль­зовате­лям или ролям. Нап­ример, если полити­ка раз­реша­ет дей­ствие GetUser, то поль­зователь с такой полити­кой может получить информа­цию о дру­гих поль­зовате­лях.

Внут­ри полити­ки — три важ­ных ком­понен­та:

  • Effect — исполь­зует­ся для пре­дос­тавле­ния дос­тупа или отка­за в нем.
  • Action — вклю­чает спи­сок дей­ствий, которые полити­ка раз­реша­ет или зап­реща­ет.
  • Resource — спи­сок ресур­сов, к которым при­меня­ется полити­ка.
  •  

    Пользователь

    Поль­зователь IAM — сущ­ность, которая соз­дает­ся в AWS для пред­став­ления исполь­зующе­го его челове­ка либо при­ложе­ния. У поль­зовате­лей есть так называ­емое User ARN (Amazon resource name), выг­лядит оно сле­дующим обра­зом:

    arn:partition:service:region:account:resource

    где

    • arn — иден­тифика­тор стро­ки;
    • partition иден­тифици­рует раз­дел для ресур­са. Для стан­дар­тных реги­онов AWS исполь­зует­ся раз­дел aws. Для Пекина, допус­тим, будет aws-cn;
    • service иден­тифици­рует про­дукт AWS. Ресур­сы IAM всег­да исполь­зуют iam;
    • region опре­деля­ет реги­он ресур­са. Для ресур­сов IAM это поле всег­да оста­ется пус­тым;
    • account ука­зыва­ет иден­тифика­тор учет­ной записи AWS без дефисов;
    • 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

    Рас­смот­рим все эти сос­тавля­ющие по поряд­ку.

  • Опе­раци­онная сис­тема — на EC2 мож­но уста­новить прак­тичес­ки любую ОС.
  • Дос­туп — спо­собы, с помощью которых мож­но получить дос­туп к EC2 через интернет.
  • Ад­рес — IP-адрес, по которо­му откли­кает­ся инстанс.
  • Хра­нили­ще — мес­то, где хра­нят­ся дан­ные инстан­са.
  • Груп­пы безопас­ности — набор пра­вил, которые при­меня­ются к EC2, они поз­воля­ют кон­тро­лиро­вать вхо­дящий и исхо­дящий тра­фик.
  • VPC (virtual private cloud) — изо­лиро­ван­ная облачная сеть, в которой может находить­ся наш инстанс.
  •  

    Initial Access

    Есть мно­жес­тво спо­собов про­ник­нуть в обла­ко заказ­чика пен­теста. Мы будем дей­ство­вать через AWS CLI — коман­дную стро­ку для работы с AWS. Нам пот­ребу­ются спе­циаль­ный иден­тифика­тор сек­ретно­го клю­ча и сам сек­ретный ключ, пос­ле пре­дос­тавле­ния которых мы получим воз­можность работать с обла­ком. В качес­тве точ­ки вхо­да будем исполь­зовать IAM и EC2.

     

    Сбор информации

    На компь­юте­рах, вза­имо­дей­ству­ющих с облачны­ми сер­висами Amazon, обыч­но при­сутс­тву­ет файл credentials, в котором находит­ся иден­тифика­тор сек­ретно­го клю­ча дос­тупа и сам этот ключ. Стан­дар­тные пути рас­положе­ния фай­ла сле­дующие. В Linux:

    /root/.aws/credentials
    /home/user/.aws/credentials

    В Windows:

    %userprofile%.awscredentials

    Иден­тифика­тор сек­ретно­го клю­ча и сам сек­ретный ключ мож­но обна­ружить в пуб­личных репози­тори­ях.

    Очень час­то нуж­ные нам клю­чи могут лежать в перемен­ных окру­жения. Обя­затель­но про­веряй и их:

    setdir 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 исполь­зует­ся коман­да whoami, но в AWS такой коман­ды нет. Что­бы узнать свое имя поль­зовате­ля, нуж­но ввес­ти в кон­соль PowerShell сле­дующую коман­ду:

    aws sts get-caller-identity# Дополнительно можно указать конфигурационный профиль (если, допустим, получили данные не от профиля default)aws sts get-caller-identity --profile demo

     

    Enumeration

    В начале любого тес­тирова­ния на про­ник­новение сле­дует хорошень­ко осмотреть­ся и понять, нас­коль­ко боль­шое обла­ко пред­сто­ит про­пен­тестить. Сна­чала столь скру­пулез­ная раз­ведка может показать­ся бес­полез­ной, но, перехо­дя к сле­дующим эта­пам, мы уже будем рас­полагать дос­таточ­ным объ­емом информа­ции. В начале каж­дого раз­дела я ука­зал, для чего нам пот­ребу­ются те или иные дан­ные.

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

     

    IAM

    Пользователи

    Поль­зовате­ли — самая популяр­ная точ­ка вхо­да в обла­ко AWS. Имен­но поль­зователь­скую учет­ную запись мож­но обна­ружить в фай­ле .aws/credentials, а так­же в пуб­личных репози­тори­ях.

    Источник: xakep.ru

    Ответить

    Ваш адрес email не будет опубликован. Обязательные поля помечены *