Кожен хмарний сервіс має свої особливості, але загалом є кілька загальних речей, які повинен перевірити пентестер під час тестування хмарного середовища:
Перевірки стандартів
Це допоможе вам зрозуміти розмір середовища та використовувані сервіси
Це також дозволить вам знайти деякі швидкі неправильні налаштування, оскільки ви можете виконати більшість цих тестів за допомогою автоматизованих інструментів
Перерахування сервісів
Ви, ймовірно, не знайдете багато інших неправильних налаштувань тут, якщо ви правильно виконали перевірки стандартів, але ви можете знайти деякі, які не були виявлені під час перевірки стандартів.
Це дозволить вам дізнатися, що саме використовується в хмарному середовищі
Це дуже допоможе на наступних етапах
Перевірка відкритих активів
Це можна зробити під час попереднього розділу, вам потрібно виявити все, що потенційно відкрито в Інтернеті і як до цього можна отримати доступ.
Тут я маю на увазі вручну відкриту інфраструктуру, таку як інстанси з веб-сторінками або інші порти, що відкриті, а також інші управляємі хмарні сервіси, які можуть бути налаштовані на відкриття (такі як бази даних або контейнери)
Потім ви повинні перевірити, чи може цей ресурс бути відкритим чи ні (конфіденційна інформація? вразливості? неправильні налаштування в відкритому сервісі?)
Перевірка дозволів
Тут ви повинні виявити всі дозволи кожної ролі/користувача всередині хмари і як вони використовуються
Занадто багато високопривілейованих (контроль всього) облікових записів? Згенеровані ключі не використовуються?... Більшість цих перевірок вже повинні були бути виконані під час перевірок стандартів
Якщо клієнт використовує OpenID або SAML або іншу федерацію, вам, можливо, потрібно буде запитати у них додаткову інформацію про те, як призначається кожна роль (не те саме, що роль адміністратора призначена 1 користувачу або 100)
Недостатньо просто знайти, які користувачі мають адміністративні дозволи "*:*". Є багато інших дозволів, які, залежно від використовуваних сервісів, можуть бути дуже чутливими.
Більше того, є потенційні шляхи підвищення привілеїв, які можна використовувати, зловживаючи дозволами. Усі ці речі повинні бути враховані, і якомога більше шляхів підвищення привілеїв повинні бути зафіксовані.
Перевірка інтеграцій
Існує висока ймовірність, що інтеграції з іншими хмарами або SaaS використовуються всередині хмарного середовища.
Для інтеграцій хмари, яку ви перевіряєте, з іншою платформою ви повинні повідомити хто має доступ до (зловживати) цією інтеграцією і ви повинні запитати наскільки чутливим є виконуване дію.
Наприклад, хто може записувати в AWS контейнер, з якого GCP отримує дані (запитайте, наскільки чутливим є це дію в GCP при обробці цих даних).
Для інтеграцій всередині хмари, яку ви перевіряєте, з зовнішніх платформ, ви повинні запитати хто має доступ зовні до (зловживати) цією інтеграцією і перевірити, як ці дані використовуються.
Наприклад, якщо сервіс використовує Docker-образ, розміщений у GCR, ви повинні запитати, хто має доступ до його зміни і яку чутливу інформацію та доступ отримає цей образ при виконанні всередині хмари AWS.
Multi-Cloud tools
Існує кілька інструментів, які можна використовувати для тестування різних хмарних середовищ. Кроки установки та посилання будуть вказані в цьому розділі.
Інструмент для виявлення поганих налаштувань і шляхів підвищення привілеїв у хмарах та між хмарами/SaaS.
# You need to install and run neo4j alsogitclonehttps://github.com/carlospolop/PurplePandacdPurplePandapython3-mvenv.sourcebin/activatepython3-mpipinstall-rrequirements.txtexport PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"python3main.py-h# Get help
export GOOGLE_DISCOVERY=$(echo'google:- file_path: ""- file_path: ""service_account_id: "some-sa-email@sidentifier.iam.gserviceaccount.com"'|base64)python3main.py-a-pgoogle#Get basic info of the account to check it's correctly configuredpython3main.py-e-pgoogle#Enumerate the env
# Installpipinstallprowlerprowler-v# Runprowler<provider># Exampleprowleraws--profilecustom-profile [-M csvjsonjson-asffhtml]# Get info about checks & servicesprowler<provider>--list-checksprowler<provider>--list-services
mkdirscout; cdscoutvirtualenv-ppython3venvsourcevenv/bin/activatepipinstallscoutsuitescout--help## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image
scoutgcp--report-dir/tmp/gcp--user-account--all-projects## use "--service-account KEY_FILE" instead of "--user-account" to use a service accountSCOUT_FOLDER_REPORT="/tmp"for pid in $(gcloudprojectslist--format="value(projectId)"); doecho"================================================"echo"Checking $pid"mkdir"$SCOUT_FOLDER_REPORT/$pid"scoutgcp--report-dir"$SCOUT_FOLDER_REPORT/$pid"--no-browser--user-account--project-id"$pid"done
# Install gcp pluginsteampipeplugininstallgcp# Use https://github.com/turbot/steampipe-mod-gcp-compliance.gitgitclonehttps://github.com/turbot/steampipe-mod-gcp-compliance.gitcdsteampipe-mod-gcp-compliance# To run all the checks from the dashboardsteampipedashboard# To run all the checks from rhe clisteampipecheckall
Перевірити всі проекти
Щоб перевірити всі проекти, вам потрібно згенерувати файл gcp.spc, вказуючи всі проекти для тестування. Ви можете просто слідувати вказівкам з наступного скрипту.
FILEPATH="/tmp/gcp.spc"rm-rf"$FILEPATH"2>/dev/null# Generate a json like object for each projectfor pid in $(gcloudprojectslist--format="value(projectId)"); doecho"connection \"gcp_$(echo-n $pid |tr "-" "_" )\" {plugin = \"gcp\"project = \"$pid\"}">>"$FILEPATH"done# Generate the aggragator to callecho'connection "gcp_all" {plugin = "gcp"type = "aggregator"connections = ["gcp_*"]}'>>"$FILEPATH"echo"Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generated"
# Install aws pluginsteampipeplugininstallaws# Modify the spec indicating in "profile" the profile name to usenano~/.steampipe/config/aws.spc# Get some info on how the AWS account is being usedgitclonehttps://github.com/turbot/steampipe-mod-aws-insights.gitcdsteampipe-mod-aws-insightssteampipedashboard# Get the services exposed to the internetgitclonehttps://github.com/turbot/steampipe-mod-aws-perimeter.gitcdsteampipe-mod-aws-perimetersteampipedashboard# Run the benchmarksgitclonehttps://github.com/turbot/steampipe-mod-aws-compliancecdsteampipe-mod-aws-compliancesteampipedashboard# To see results in browsersteampipecheckall--export=/tmp/output4.json
AWS, GCP, Azure, DigitalOcean.
Вимагає python2.7 і виглядає непідтримуваним.
Nessus
Nessus має Аудит хмарної інфраструктури сканування, що підтримує: AWS, Azure, Office 365, Rackspace, Salesforce. Деякі додаткові налаштування в Azure потрібні для отримання Client Id.
Картографія - це інструмент на Python, який консолідує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі бази даних Neo4j.
# Installationdockerimagepullghcr.io/lyft/cartographydockerrun--platformlinux/amd64ghcr.io/lyft/cartographycartography--help## Install a Neo4j DB version 3.5.*
dockerrun--platformlinux/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/npminstall--globalyarnnvminstall14gitclonehttps://github.com/JupiterOne/starbase.gitcdstarbasenvmuse14yarninstallyarnstarbase--help# Configure manually config.yaml depending on the env to analyzeyarnstarbasesetupyarnstarbaserun# Dockergitclonehttps://github.com/JupiterOne/starbase.gitcdstarbasecpconfig.yaml.exampleconfig.yaml# Configure manually config.yaml depending on the env to analyzedockerbuild--no-cache-tstarbase:latest.docker-composerunstarbasesetupdocker-composerunstarbaserun
## Config for GCP### Check out: https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md### It requires service account credentialsintegrations:-name:graph-google-cloudinstanceId:testInstanceIddirectory:./.integrations/graph-google-cloudgitRemoteUrl:https://github.com/JupiterOne/graph-google-cloud.gitconfig: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:falsestorage:engine:neo4jconfig:username:neo4jpassword:s3cr3turi:bolt://localhost:7687#Consider using host.docker.internal if from docker
Виявлення найбільш привілейованих користувачів у відсканованому середовищі AWS або Azure, включаючи AWS Shadow Admins. Він використовує PowerShell.
Import-Module .\SkyArk.ps1 -forceStart-AzureStealth# in the Cloud ConsoleIEX (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 незабаром).
Це інструмент для перерахунку, який призначений для доповнення ручного pentesting.
Він не створює і не модифікує жодні дані в хмарному середовищі.
Stormspotterстворює “граф атаки” ресурсів у підписці Azure. Це дозволяє червоним командам та pentester'ам візуалізувати поверхню атаки та можливості повороту в межах орендаря, а також підсилює ваших захисників, щоб швидко орієнтуватися та пріоритизувати роботу з реагування на інциденти.
Office365
Вам потрібен Global Admin або принаймні Global Admin Reader (але зверніть увагу, що Global Admin Reader має деякі обмеження). Однак ці обмеження з'являються в деяких PS модулях і можуть бути обійдені, отримуючи доступ до функцій через веб-додаток.