AWS Pentesting

Reading time: 15 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

Перед початком пентестингу середовища AWS є кілька основних речей, які вам потрібно знати про те, як працює AWS, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати.

Концепції, такі як ієрархія організації, IAM та інші базові концепції, пояснюються в:

AWS - Basic Information

Лабораторії для навчання

Інструменти для симуляції атак:

Методологія AWS Pentester/Red Team

Для аудиту середовища AWS дуже важливо знати: які послуги використовуються, що експонується, хто має доступ до чого, і як внутрішні AWS послуги та зовнішні послуги з'єднані.

З точки зору Red Team, перший крок до компрометації середовища AWS - це отримати деякі облікові дані. Ось кілька ідей, як це зробити:

  • Витоки в github (або подібних) - OSINT
  • Соціальна інженерія
  • Повторне використання паролів (витоки паролів)
  • Вразливості в AWS-розміщених додатках
  • Server Side Request Forgery з доступом до метаданих
  • Читання локальних файлів
  • /home/USERNAME/.aws/credentials
  • C:\Users\USERNAME\.aws\credentials
  • 3-ті сторони зламані
  • Внутрішній співробітник
  • Cognito облікові дані

Або шляхом компрометації неавтентифікованої служби, що експонується:

AWS - Unauthenticated Enum & Access

Або, якщо ви проводите огляд, ви можете просто попросити облікові дані з цими ролями:

AWS - Permissions for a Pentest

note

Після того, як ви змогли отримати облікові дані, вам потрібно знати, кому належать ці облікові дані, і до чого вони мають доступ, тому вам потрібно виконати деяку базову енумерацію:

Базова енумерація

SSRF

Якщо ви знайшли SSRF на машині всередині AWS, перевірте цю сторінку для трюків:

Cloud SSRF - HackTricks

Whoami

Однією з перших речей, які вам потрібно знати, є те, хто ви (в якому обліковому записі ви знаходитесь та інша інформація про середовище AWS):

bash
# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user

# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456

# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa

# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document

caution

Зверніть увагу, що компанії можуть використовувати canary tokens для виявлення, коли токени крадуться та використовуються. Рекомендується перевірити, чи є токен canary token, перш ніж його використовувати.
Для отримання додаткової інформації перевірте цю сторінку.

Org Enumeration

AWS - Organizations Enum

IAM Enumeration

Якщо у вас достатньо прав, перевірка привілеїв кожної сутності в обліковому записі AWS допоможе вам зрозуміти, що ви та інші ідентичності можете робити і як підвищити привілеї.

Якщо у вас недостатньо прав для перерахунку IAM, ви можете викрасти їх за допомогою брутфорсу, щоб їх виявити.
Перевірте як виконати нумерацію та брутфорс в:

AWS - IAM, Identity Center & SSO Enum

note

Тепер, коли ви маєте деяку інформацію про свої облікові дані (і якщо ви червона команда, сподіваюся, ви не були виявлені). Час з'ясувати, які сервіси використовуються в середовищі.
У наступному розділі ви можете перевірити деякі способи перерахунку деяких загальних сервісів.

Services Enumeration, Post-Exploitation & Persistence

AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете базову інформацію, нумерацію cheatsheets**,** як уникнути виявлення, отримати постійність та інші післяексплуатаційні трюки про деякі з них:

AWS - Services

Зверніть увагу, що вам не потрібно виконувати всю роботу вручну, нижче в цьому пості ви можете знайти розділ про автоматичні інструменти.

Більше того, на цьому етапі ви могли виявити більше сервісів, доступних для неавтентифікованих користувачів, ви можете мати можливість їх експлуатувати:

AWS - Unauthenticated Enum & Access

Privilege Escalation

Якщо ви можете перевірити принаймні свої власні права на різні ресурси, ви могли б перевірити, чи можете ви отримати додаткові права. Вам слід зосередитися принаймні на правах, зазначених у:

AWS - Privilege Escalation

Publicly Exposed Services

Під час перерахунку сервісів AWS ви могли знайти деякі з них, які відкривають елементи в Інтернеті (порти VM/контейнерів, бази даних або сервіси черг, знімки або кошики...).
Як pentester/red teamer, ви завжди повинні перевіряти, чи можете ви знайти чутливу інформацію / вразливості на них, оскільки вони можуть надати вам додатковий доступ до облікового запису AWS.

У цій книзі ви повинні знайти інформацію про те, як знайти відкриті сервіси AWS та як їх перевірити. Щодо того, як знайти вразливості у відкритих мережевих сервісах, я б рекомендував вам шукати конкретний сервіс в:

HackTricks - HackTricks

Compromising the Organization

From the root/management account

Коли обліковий запис управління створює нові облікові записи в організації, у новому обліковому записі створюється нова роль, за замовчуванням називана OrganizationAccountAccessRole, і надається політика AdministratorAccess для облікового запису управління для доступу до нового облікового запису.

Отже, щоб отримати доступ як адміністратор до дочірнього облікового запису, вам потрібно:

  • Скомпрометувати управлінський обліковий запис і знайти ID дочірніх облікових записів та імена ролі (за замовчуванням OrganizationAccountAccessRole), що дозволяє обліковому запису управління отримати доступ як адміністратор.
  • Щоб знайти дочірні облікові записи, перейдіть до розділу організацій у консолі aws або виконайте aws organizations list-accounts
  • Ви не можете знайти назви ролей безпосередньо, тому перевірте всі користувацькі політики IAM і шукайте будь-які, що дозволяють sts:AssumeRole над раніше виявленими дочірніми обліковими записами.
  • Скомпрометувати принципала в управлінському обліковому записі з дозволом sts:AssumeRole над роллю в дочірніх облікових записах (навіть якщо обліковий запис дозволяє будь-кому з управлінського облікового запису видавати себе, оскільки це зовнішній обліковий запис, специфічні дозволи sts:AssumeRole є необхідними).

Automated Tools

Recon

  • aws-recon: Багатопотоковий інструмент для збору інвентаризації, орієнтований на безпеку AWS, написаний на Ruby.
bash
# Install
gem install aws_recon

# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
  • cloudlist: Cloudlist є інструментом для багатохмарного отримання активів (імен хостів, IP-адрес) від постачальників хмар.
  • cloudmapper: CloudMapper допомагає вам аналізувати ваші середовища Amazon Web Services (AWS). Тепер він містить набагато більше функцій, включаючи аудит на предмет проблем безпеки.
bash
# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}

# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev

# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev

# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev

# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev

# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev

# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev

python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
  • cartography: Cartography - це інструмент на Python, який об'єднує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі Neo4j.
bash
# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*

# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt  --neo4j-user neo4j
  • starbase: Starbase збирає активи та зв'язки з сервісів та систем, включаючи хмарну інфраструктуру, SaaS додатки, засоби безпеки та інше в інтуїтивно зрозумілому графічному вигляді, підтримуваному базою даних Neo4j.
  • aws-inventory: (Використовує python2) Це інструмент, який намагається виявити всі ресурси AWS, створені в обліковому записі.
  • aws_public_ips: Це інструмент для отримання всіх публічних IP-адрес (як IPv4/IPv6), пов'язаних з обліковим записом AWS.

Privesc & Exploiting

  • SkyArk: Виявляє найбільш привілейованих користувачів у відсканованому середовищі AWS, включаючи AWS Shadow Admins. Він використовує powershell. Ви можете знайти визначення привілейованих політик у функції Check-PrivilegedPolicy в https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.
  • pacu: Pacu - це відкритий фреймворк експлуатації AWS, розроблений для тестування безпеки в наступальних цілях проти хмарних середовищ. Він може перераховувати, знаходити неправильні конфігурації та експлуатувати їх. Ви можете знайти визначення привілейованих дозволів в https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 всередині словника user_escalation_methods.
  • Зверніть увагу, що pacu перевіряє лише ваші власні шляхи privesc (не в межах облікового запису).
bash
# Install
## Feel free to use venvs
pip3 install pacu

# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
  • PMapper: Principal Mapper (PMapper) - це скрипт і бібліотека для виявлення ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних IAM користувачів і ролей в обліковому записі як орієнтований граф, що дозволяє перевіряти підвищення привілеїв та альтернативні шляхи, якими зловмисник може отримати доступ до ресурсу або дії в AWS. Ви можете перевірити дозволи, використані для знаходження шляхів privesc, у файлах, що закінчуються на _edges.py в https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
bash
# Install
pip install principalmapper

# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions

# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins

# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
  • cloudsplaining: Cloudsplaining - це інструмент оцінки безпеки AWS IAM, який виявляє порушення принципу найменших привілеїв і генерує звіт у форматі HTML з пріоритетом ризику.
    Він покаже вам потенційно переповнені привілеї клієнта, вбудовані та aws політики та які принципи мають доступ до них. (Він не тільки перевіряє на privesc, але й інші цікаві дозволи, рекомендовано використовувати).
bash
# Install
pip install cloudsplaining

# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev

# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
  • cloudjack: CloudJack оцінює облікові записи AWS на наявність вразливостей перехоплення піддоменів внаслідок розділених конфігурацій Route53 та CloudFront.
  • ccat: Список репозиторіїв ECR -> Завантажити репозиторій ECR -> Встановити бекдор -> Завантажити з бекдором зображення
  • Dufflebag: Dufflebag - це інструмент, який шукає через публічні знімки Elastic Block Storage (EBS) на наявність секретів, які могли бути випадково залишені.

Аудит

  • cloudsploit: CloudSploit від Aqua - це проект з відкритим кодом, призначений для виявлення ризиків безпеки в облікових записах хмарної інфраструктури, включаючи: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) та GitHub (не шукає ShadowAdmins).
bash
./index.js --csv=file.csv --console=table --config ./config.js

# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
  • Prowler: Prowler - це інструмент з відкритим кодом для оцінки найкращих практик безпеки AWS, аудитів, реагування на інциденти, безперервного моніторингу, зміцнення та готовності до судово-медичної експертизи.
bash
# Install python3, jq and git
# Install
pip install prowler
prowler -v

# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
  • CloudFox: CloudFox допомагає вам отримати ситуаційну обізнаність у незнайомих хмарних середовищах. Це інструмент командного рядка з відкритим вихідним кодом, створений для допомоги тестувальникам на проникнення та іншим фахівцям з наступальної безпеки у знаходженні вразливих шляхів атаки в хмарній інфраструктурі.
bash
cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite - це інструмент для аудиту безпеки в мульти-хмарних середовищах з відкритим кодом, який дозволяє оцінювати безпекову позицію хмарних середовищ.
bash
# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help

# Get info
scout aws -p dev
  • cs-suite: Cloud Security Suite (використовує python2.7 і виглядає непідтримуваним)
  • Zeus: Zeus - потужний інструмент для найкращих практик зміцнення AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (виглядає непідтримуваним). Він перевіряє лише стандартно налаштовані облікові дані в системі.

Постійний аудит

  • cloud-custodian: Cloud Custodian - це механізм правил для управління обліковими записами та ресурсами публічного хмари. Він дозволяє користувачам визначати політики для забезпечення добре керованої хмарної інфраструктури, яка є як безпечною, так і оптимізованою за витратами. Він консолідує багато з тих випадкових скриптів, які мають організації, в легкий і гнучкий інструмент з єдиними метриками та звітністю.
  • pacbot: Policy as Code Bot (PacBot) - це платформа для безперервного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари. У PacBot політики безпеки та відповідності реалізуються як код. Всі ресурси, виявлені PacBot, оцінюються відповідно до цих політик для оцінки відповідності політикам. Рамка автоматичного виправлення PacBot надає можливість автоматично реагувати на порушення політик, вживаючи попередньо визначені дії.
  • streamalert: StreamAlert - це безсерверна, реальна система аналізу даних, яка дозволяє вам збирати, аналізувати та сповіщати про дані з будь-якого середовища, використовуючи джерела даних та логіку сповіщення, які ви визначаєте. Команди комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журналів щодня для виявлення інцидентів та реагування.

DEBUG: Захоплення запитів AWS cli

bash
# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080

# Capture with burp nor verifying ssl
aws --no-verify-ssl ...

# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem

# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem

# Run aws cli normally trusting burp cert
aws ...

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks