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

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


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

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


 

Теория


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


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

  • 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, то поль­зователь с такой полити­кой может получить информа­цию о дру­гих поль­зовате­лях.


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



  1. Effect — исполь­зует­ся для пре­дос­тавле­ния дос­тупа или отка­за в нем.

  2. Action — вклю­чает спи­сок дей­ствий, которые полити­ка раз­реша­ет или зап­реща­ет.

  3. 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

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



  1. Опе­раци­онная сис­тема — на EC2 мож­но уста­новить прак­тичес­ки любую ОС.

  2. Дос­туп — спо­собы, с помощью которых мож­но получить дос­туп к EC2 через интернет.

  3. Ад­рес — IP-адрес, по которо­му откли­кает­ся инстанс.

  4. Хра­нили­ще — мес­то, где хра­нят­ся дан­ные инстан­са.

  5. Груп­пы безопас­ности — набор пра­вил, которые при­меня­ются к EC2, они поз­воля­ют кон­тро­лиро­вать вхо­дящий и исхо­дящий тра­фик.

  6. VPC (virtual private cloud) — изо­лиро­ван­ная облачная сеть, в которой может находить­ся наш инстанс.


 

Initial Access


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


 

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


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


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


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

Enumeration


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


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


 

IAM


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

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



Перейти обратно к новости