Pentesting Cloud Methodology

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Базова методологія

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

  • Перевірка стандартів

  • Це допоможе вам зрозуміти розмір середовища та використані сервіси

  • Це також дозволить виявити деякі швидкі помилки конфігурації, оскільки більшість цих тестів можна виконати за допомогою автоматизованих інструментів

  • Перелік сервісів

  • Ймовірно, ви не знайдете багато інших помилок конфігурації тут, якщо ви правильно виконали тестування стандартів, але ви можете знайти деякі, які не були перевірені під час тестування стандартів.

  • Це дозволить вам знати що саме використовується в хмарному середовищі

  • Це дуже допоможе в наступних кроках

  • Перевірка відкритих активів

  • Це можна зробити під час попереднього розділу, вам потрібно з'ясувати все, що потенційно відкрито в Інтернеті якимось чином і як до цього можна отримати доступ.

  • Тут я беру вручну відкриту інфраструктуру, таку як екземпляри з веб-сторінками або інші порти, які відкриті, а також інші хмарні керовані сервіси, які можуть бути налаштовані на відкритість (наприклад, бази даних або бакети)

  • Потім вам слід перевірити, чи може цей ресурс бути відкритий чи ні (конфіденційна інформація? вразливості? помилки конфігурації в відкритому сервісі?)

  • Перевірка дозволів

  • Тут вам слід з'ясувати всі дозволи кожної ролі/користувача всередині хмари та як вони використовуються

  • Занадто багато високопривілейованих (контролюють все) облікових записів? Згенеровані ключі не використовуються?... Більшість цих перевірок вже повинні були бути виконані під час тестування стандартів

  • Якщо клієнт використовує OpenID або SAML або іншу федерацію, вам може знадобитися запитати їх додаткову інформацію про те, як кожна роль призначена (не те ж саме, що роль адміністратора призначена 1 користувачеві або 100)

  • Недостатньо знайти, які користувачі мають адміністративні дозволи "*:*". Є багато інших дозволів, які в залежності від використаних сервісів можуть бути дуже чутливими.

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

  • Перевірка інтеграцій

  • Дуже ймовірно, що інтеграції з іншими хмарами або SaaS використовуються всередині хмарного середовища.

  • Для інтеграцій хмари, яку ви аудитуєте, з іншою платформою вам слід повідомити хто має доступ до (зловживання) цією інтеграцією і ви повинні запитати, наскільки чутливою є дія, яка виконується. Наприклад, хто може писати в бакет AWS, з якого GCP отримує дані (запитайте, наскільки чутливою є дія в GCP щодо цих даних).

  • Для інтеграцій всередині хмари, яку ви аудитуєте, зовнішніх платформ, вам слід запитати хто має зовнішній доступ до (зловживання) цією інтеграцією і перевірити, як використовується ці дані. Наприклад, якщо сервіс використовує образ Docker, розміщений в GCR, ви повинні запитати, хто має доступ до зміни цього та яка чутлива інформація та доступ отримає цей образ при виконанні всередині хмари AWS.

Інструменти для багатох хмар

Існує кілька інструментів, які можна використовувати для тестування різних хмарних середовищ. Кроки для встановлення та посилання будуть вказані в цьому розділі.

Інструмент для виявлення поганих конфігурацій та шляхів підвищення привілеїв в хмарах та між хмарами/SaaS.

# You need to install and run neo4j also
git clone https://github.com/carlospolop/PurplePanda
cd PurplePanda
python3 -m venv .
source bin/activate
python3 -m pip install -r requirements.txt
export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"
python3 main.py -h # Get help

export GOOGLE_DISCOVERY=$(echo 'google:
- file_path: ""

- file_path: ""
service_account_id: "some-sa-email@sidentifier.iam.gserviceaccount.com"' | base64)

python3 main.py -a -p google #Get basic info of the account to check it's correctly configured
python3 main.py -e -p google #Enumerate the env

Підтримує AWS, GCP & Azure. Перевірте, як налаштувати кожного провайдера за посиланням https://docs.prowler.cloud/en/latest/#aws

# Install
pip install prowler
prowler -v

# Run
prowler <provider>
# Example
prowler aws --profile custom-profile [-M csv json json-asff html]

# Get info about checks & services
prowler <provider> --list-checks
prowler <provider> --list-services

AWS, Azure, Github, Google, Oracle, Alibaba

# Install
git clone https://github.com/aquasecurity/cloudsploit.git
cd cloudsploit
npm install
./index.js -h
## Docker instructions in github

## You need to have creds for a service account and set them in config.js file
./index.js --cloud google --config </abs/path/to/config.js>

AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure

mkdir scout; cd scout
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image

scout gcp --report-dir /tmp/gcp --user-account --all-projects
## use "--service-account KEY_FILE" instead of "--user-account" to use a service account

SCOUT_FOLDER_REPORT="/tmp"
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "================================================"
echo "Checking $pid"
mkdir "$SCOUT_FOLDER_REPORT/$pid"
scout gcp --report-dir "$SCOUT_FOLDER_REPORT/$pid" --no-browser --user-account --project-id "$pid"
done

Завантажте та встановіть Steampipe (https://steampipe.io/downloads). Або скористайтеся Brew:

brew tap turbot/tap
brew install steampipe

Методологія тестування на проникнення хмарних сервісів

  1. Збір інформації

    • Збір публічної інформації про цільову організацію та її хмарні сервіси.

    • Використання інструментів, таких як Google, Shodan, Censys, PublicWWW, GitHub, GitLab, Bitbucket, Pastebin, HackerOne, Bugcrowd, URLScan, SecurityTrails, BinaryEdge, ZoomEye, FOFA, DNSDumpster, Sublist3r, Amass, Aquatone, SpiderFoot, theHarvester, Wayback Machine, Social Networks, Search Engines, etc.

  2. Сканування портів

    • Сканування відкритих портів та служб, що працюють на них.

    • Використання інструментів, таких як Nmap, Masscan, Zmap, Unicornscan, MassiveScanner, Shodan, Censys, ZoomEye, etc.

  3. Виявлення вразливостей

    • Виявлення вразливостей у відкритих портах та службах.

    • Використання інструментів, таких як Nmap, Nessus, OpenVAS, Nexpose, Qualys, Vuls, Vulners, SearchSploit, ExploitDB, Metasploit, etc.

  4. Експлуатація вразливостей

    • Використання виявлених вразливостей для отримання доступу до системи або інформації.

    • Використання інструментів, таких як Metasploit, ExploitDB, SearchSploit, Nmap, Nessus, OpenVAS, Nexpose, Qualys, Vuls, Vulners, etc.

  5. Підняття привілеїв

    • Підняття привілеїв на скомпрометованій системі для отримання більш високих прав доступу.

    • Використання інструментів, таких як LinEnum, LinuxPrivChecker, LinuxExploitSuggester, Windows-Exploit-Suggester, Windows-Privesc-Check, BeRoot, PowerUp, WindowsEnum, Windows-Privesc, etc.

  6. Збір інформації

    • Збір додаткової інформації на скомпрометованій системі для подальшого руху вглиб.

    • Використання інструментів, таких як LinEnum, LinuxPrivChecker, LinuxExploitSuggester, Windows-Exploit-Suggester, Windows-Privesc-Check, BeRoot, PowerUp, WindowsEnum, Windows-Privesc, etc.

  7. Збір даних

    • Збір конфіденційних даних або інформації, яка може бути використана для наступних атак.

    • Використання інструментів, таких як Rclone, Rsync, SCP, FTP, SFTP, Netcat, Socat, Wget, Curl, etc.

  8. Збереження доступу

    • Забезпечення постійного доступу до скомпрометованої системи для подальшого дослідження або атак.

    • Використання інструментів, таких як Netcat, Socat, SSH, Meterpreter, Web Shells, Backdoors, etc.

  9. Заключні дії

    • Закриття слідів атаки та видалення всіх залишків з системи.

    • Використання інструментів, таких як Netcat, Socat, SSH, Meterpreter, Web Shells, Backdoors, etc.

# Install gcp plugin
steampipe plugin install gcp

# Use https://github.com/turbot/steampipe-mod-gcp-compliance.git
git clone https://github.com/turbot/steampipe-mod-gcp-compliance.git
cd steampipe-mod-gcp-compliance
# To run all the checks from the dashboard
steampipe dashboard
# To run all the checks from rhe cli
steampipe check all
Перевірте всі проекти

Щоб перевірити всі проекти, вам потрібно згенерувати файл gcp.spc, вказавши всі проекти для тестування. Ви можете просто дотримуватися вказівок з наступного скрипту

FILEPATH="/tmp/gcp.spc"
rm -rf "$FILEPATH" 2>/dev/null

# Generate a json like object for each project
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "connection \"gcp_$(echo -n $pid | tr "-" "_" )\" {
plugin  = \"gcp\"
project = \"$pid\"
}" >> "$FILEPATH"
done

# Generate the aggragator to call
echo 'connection "gcp_all" {
plugin      = "gcp"
type        = "aggregator"
connections = ["gcp_*"]
}' >> "$FILEPATH"

echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generated"

Для перевірки інших відомостей про GCP (корисно для переліку служб) використовуйте: https://github.com/turbot/steampipe-mod-gcp-insights

Для перевірки коду Terraform GCP: https://github.com/turbot/steampipe-mod-terraform-gcp-compliance

Більше плагінів GCP для Steampipe: https://github.com/turbot?q=gcp

# Install aws plugin
steampipe plugin install aws

# Modify the spec indicating in "profile" the profile name to use
nano ~/.steampipe/config/aws.spc

# Get some info on how the AWS account is being used
git clone https://github.com/turbot/steampipe-mod-aws-insights.git
cd steampipe-mod-aws-insights
steampipe dashboard

# Get the services exposed to the internet
git clone https://github.com/turbot/steampipe-mod-aws-perimeter.git
cd steampipe-mod-aws-perimeter
steampipe dashboard

# Run the benchmarks
git clone https://github.com/turbot/steampipe-mod-aws-compliance
cd steampipe-mod-aws-compliance
steampipe dashboard # To see results in browser
steampipe check all --export=/tmp/output4.json

Для перевірки коду Terraform AWS: https://github.com/turbot/steampipe-mod-terraform-aws-compliance

Більше плагінів AWS для Steampipe: https://github.com/orgs/turbot/repositories?q=aws

AWS, GCP, Azure, DigitalOcean. Вимагає python2.7 і виглядає необслуговуваним.

Nessus

Nessus має сканування Audit Cloud Infrastructure з підтримкою: AWS, Azure, Office 365, Rackspace, Salesforce. Для отримання Client Id в Azure потрібні додаткові конфігурації.

Cloudlist - це багатохмарковий інструмент для отримання активів (імен хостів, IP-адрес) від постачальників хмарних послуг.

cd /tmp
wget https://github.com/projectdiscovery/cloudlist/releases/latest/download/cloudlist_1.0.1_macOS_arm64.zip
unzip cloudlist_1.0.1_macOS_arm64.zip
chmod +x cloudlist
sudo mv cloudlist /usr/local/bin

Картографія - це інструмент Python, який об'єднує активи інфраструктури та взаємозв'язки між ними в інтуїтивному графічному вигляді, який працює на базі бази даних Neo4j.

# Installation
docker image pull ghcr.io/lyft/cartography
docker run --platform linux/amd64 ghcr.io/lyft/cartography cartography --help
## Install a Neo4j DB version 3.5.*
docker run --platform linux/amd64 \
--volume "$HOME/.config/gcloud/application_default_credentials.json:/application_default_credentials.json" \
-e GOOGLE_APPLICATION_CREDENTIALS="/application_default_credentials.json" \
-e NEO4j_PASSWORD="s3cr3t" \
ghcr.io/lyft/cartography  \
--neo4j-uri bolt://host.docker.internal:7687 \
--neo4j-password-env-var NEO4j_PASSWORD \
--neo4j-user neo4j


# It only checks for a few services inside GCP (https://lyft.github.io/cartography/modules/gcp/index.html)
## Cloud Resource Manager
## Compute
## DNS
## Storage
## Google Kubernetes Engine
### If you can run starbase or purplepanda you will get more info

Starbase збирає активи та взаємозв'язки з послуг та систем, включаючи хмарну інфраструктуру, додатки SaaS, засоби безпеки та інше у зручному графічному вигляді, підтримуваному базою даних Neo4j.

# You are going to need Node version 14, so install nvm following https://tecadmin.net/install-nvm-macos-with-homebrew/
npm install --global yarn
nvm install 14
git clone https://github.com/JupiterOne/starbase.git
cd starbase
nvm use 14
yarn install
yarn starbase --help
# Configure manually config.yaml depending on the env to analyze
yarn starbase setup
yarn starbase run

# Docker
git clone https://github.com/JupiterOne/starbase.git
cd starbase
cp config.yaml.example config.yaml
# Configure manually config.yaml depending on the env to analyze
docker build --no-cache -t starbase:latest .
docker-compose run starbase setup
docker-compose run starbase run
## Config for GCP
### Check out: https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md
### It requires service account credentials

integrations:
-
name: graph-google-cloud
instanceId: testInstanceId
directory: ./.integrations/graph-google-cloud
gitRemoteUrl: https://github.com/JupiterOne/graph-google-cloud.git
config:
SERVICE_ACCOUNT_KEY_FILE: '{Check https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md#service_account_key_file-string}'
PROJECT_ID: ""
FOLDER_ID: ""
ORGANIZATION_ID: ""
CONFIGURE_ORGANIZATION_PROJECTS: false

storage:
engine: neo4j
config:
username: neo4j
password: s3cr3t
uri: bolt://localhost:7687
#Consider using host.docker.internal if from docker

Виявлення найбільш привілейованих користувачів у сканованому середовищі AWS або Azure, включаючи AWS Shadow Admins. Використовує powershell.

Import-Module .\SkyArk.ps1 -force
Start-AzureStealth

# in the Cloud Console
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyberark/SkyArk/master/AzureStealth/AzureStealth.ps1')
Scan-AzureAdmins

Інструмент для пошуку інфраструктури компанії (цільової), файлів та додатків на провідних хмарних постачальниках (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).

  • CloudFox - це інструмент для пошуку вразливих шляхів атак в хмарній інфраструктурі (наразі підтримується лише AWS та Azure, з підтримкою GCP у майбутньому).

  • Це інструмент для переліку, який призначений для доповнення ручного пентестування.

  • Він не створює або змінює будь-які дані в хмаровому середовищі.

Ще списки інструментів з безпеки хмари

Google

GCP

pageGCP Pentesting

Workspace

pageGWS - Workspace Pentesting

AWS

pageAWS Pentesting

Azure

pageAzure Pentesting

Attack Graph

Stormspotter створює "граф атак" ресурсів у підписці Azure. Це дозволяє червоним командам та пентестерам візуалізувати поверхню атаки та можливості півоту в межах орендаря, а також прискорює вашим захисникам швидко орієнтуватися та пріоритизувати роботу з реагування на інциденти.

Office365

Вам потрібен Global Admin або принаймні Global Admin Reader (але слід зауважити, що Global Admin Reader трохи обмежений). Однак ці обмеження з'являються в деяких PS-модулях і можуть бути обійдені, отримуючи доступ до функцій через веб-застосунок.

Last updated