Files
hacktricks-cloud/src/pentesting-cloud/pentesting-cloud-methodology.md
T

20 KiB

Pentesting Cloud Methodology

{{#include ../banners/hacktricks-training.md}}

Basic Methodology

Κάθε cloud έχει τις δικές του ιδιαιτερότητες, αλλά γενικά υπάρχουν μερικά κοινά πράγματα που πρέπει να ελέγξει ένας pentester όταν δοκιμάζει ένα περιβάλλον cloud:

  • Έλεγχοι αναφοράς
  • Αυτό θα σας βοηθήσει να κατανοήσετε το μέγεθος του περιβάλλοντος και τις υπηρεσίες που χρησιμοποιούνται
  • Θα σας επιτρέψει επίσης να βρείτε κάποιες γρήγορες κακοδιαρθρώσεις, καθώς μπορείτε να εκτελέσετε τις περισσότερες από αυτές τις δοκιμές με αυτοματοποιημένα εργαλεία
  • Καταμέτρηση Υπηρεσιών
  • Πιθανότατα δεν θα βρείτε πολλές περισσότερες κακοδιαρθρώσεις εδώ αν έχετε εκτελέσει σωστά τις δοκιμές αναφοράς, αλλά μπορεί να βρείτε κάποιες που δεν αναζητήθηκαν στις δοκιμές αναφοράς.
  • Αυτό θα σας επιτρέψει να γνωρίζετε τι ακριβώς χρησιμοποιείται στο περιβάλλον cloud
  • Αυτό θα βοηθήσει πολύ στα επόμενα βήματα
  • Έλεγχος εκτεθειμένων πόρων
  • Αυτό μπορεί να γίνει κατά τη διάρκεια της προηγούμενης ενότητας, πρέπει να ανακαλύψετε τα πάντα που είναι δυνητικά εκτεθειμένα στο Διαδίκτυο με κάποιο τρόπο και πώς μπορεί να προσπελαστεί.
  • Εδώ αναφέρομαι σε χειροκίνητα εκτεθειμένη υποδομή όπως περιπτώσεις με ιστοσελίδες ή άλλες θύρες που είναι εκτεθειμένες, καθώς και σε άλλες υπηρεσίες cloud που διαχειρίζονται που μπορούν να ρυθμιστούν για να είναι εκτεθειμένες (όπως DBs ή buckets)
  • Στη συνέχεια, θα πρέπει να ελέγξετε αν αυτός ο πόρος μπορεί να είναι εκτεθειμένος ή όχι (εμπιστευτικές πληροφορίες; ευπάθειες; κακοδιαρθρώσεις στην εκτεθειμένη υπηρεσία;)
  • Έλεγχος δικαιωμάτων
  • Εδώ θα πρέπει να ανακαλύψετε όλα τα δικαιώματα κάθε ρόλου/χρήστη μέσα στο cloud και πώς χρησιμοποιούνται
  • Πάρα πολλοί υψηλά προνομιούχοι (έχουν έλεγχο σε όλα) λογαριασμοί; Δημιουργημένα κλειδιά που δεν χρησιμοποιούνται;... Οι περισσότερες από αυτές τις ελέγχους θα έπρεπε να έχουν γίνει ήδη στις δοκιμές αναφοράς
  • Αν ο πελάτης χρησιμοποιεί OpenID ή SAML ή άλλη ομοσπονδία, μπορεί να χρειαστεί να τους ρωτήσετε για περαιτέρω πληροφορίες σχετικά με πώς ανατίθεται κάθε ρόλος (δεν είναι το ίδιο να ανατίθεται ο ρόλος του διαχειριστή σε 1 χρήστη ή σε 100)
  • Δεν είναι αρκετό να βρείτε ποιους χρήστες έχουν δικαιώματα διαχειριστή "*:*". Υπάρχουν πολλά άλλα δικαιώματα που ανάλογα με τις υπηρεσίες που χρησιμοποιούνται μπορεί να είναι πολύ ευαίσθητα.
  • Επιπλέον, υπάρχουν πιθανές διαδρομές privesc που μπορούν να ακολουθηθούν εκμεταλλευόμενοι τα δικαιώματα. Όλα αυτά τα πράγματα θα πρέπει να ληφθούν υπόψη και όσες περισσότερες διαδρομές privesc είναι δυνατόν θα πρέπει να αναφερθούν.
  • Έλεγχος Ενοποιήσεων
  • Είναι πολύ πιθανό ότι ενοποιήσεις με άλλα clouds ή SaaS χρησιμοποιούνται μέσα στο περιβάλλον cloud.
  • Για τις ενοποιήσεις του cloud που ελέγχετε με άλλη πλατφόρμα, θα πρέπει να ενημερώσετε ποιος έχει πρόσβαση για (κακή) χρήση αυτής της ενοποίησης και θα πρέπει να ρωτήσετε πόσο ευαίσθητη είναι η ενέργεια που εκτελείται.
    Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο το GCP αποκτά δεδομένα (ρωτήστε πόσο ευαίσθητη είναι η ενέργεια στο GCP που επεξεργάζεται αυτά τα δεδομένα).
  • Για ενοποιήσεις μέσα στο cloud που ελέγχετε από εξωτερικές πλατφόρμες, θα πρέπει να ρωτήσετε ποιος έχει πρόσβαση εξωτερικά για (κακή) χρήση αυτής της ενοποίησης και να ελέγξετε πώς χρησιμοποιούνται αυτά τα δεδομένα.
    Για παράδειγμα, αν μια υπηρεσία χρησιμοποιεί μια εικόνα Docker που φιλοξενείται στο GCR, θα πρέπει να ρωτήσετε ποιος έχει πρόσβαση για να την τροποποιήσει και ποιες ευαίσθητες πληροφορίες και πρόσβαση θα αποκτήσει αυτή η εικόνα όταν εκτελείται μέσα σε ένα AWS cloud.

Multi-Cloud tools

Υπάρχουν διάφορα εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά περιβάλλοντα cloud. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα αναφέρονται σε αυτή την ενότητα.

PurplePanda

Ένα εργαλείο για να εντοπίσετε κακές ρυθμίσεις και διαδρομές privesc σε clouds και σε διάφορα clouds/SaaS.

{{#tabs }} {{#tab name="Install" }}

# 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

{{#endtab }}

{{#tab name="GCP" }}

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

{{#endtab }} {{#endtabs }}

Prowler

Υποστηρίζει 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

CloudSploit

AWS, Azure, Github, Google, Oracle, Alibaba

{{#tabs }} {{#tab name="Εγκατάσταση" }}

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

{{#endtab }}

{{#tab name="GCP" }}

## 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>

{{#endtab }} {{#endtabs }}

ScoutSuite

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

{{#tabs }} {{#tab name="Εγκατάσταση" }}

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

{{#endtab }}

{{#tab name="GCP" }}

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

{{#endtab }} {{#endtabs }}

Steampipe

{{#tabs }} {{#tab name="Εγκατάσταση" }} Κατεβάστε και εγκαταστήστε το Steampipe (https://steampipe.io/downloads). Ή χρησιμοποιήστε το Brew:

brew tap turbot/tap
brew install steampipe

{{#endtab }}

{{#tab name="GCP" }}

# 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

Περισσότερα plugins GCP του Steampipe: https://github.com/turbot?q=gcp {{#endtab }}

{{#tab name="AWS" }}

# 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

Περισσότερα plugins AWS του Steampipe: https://github.com/orgs/turbot/repositories?q=aws {{#endtab }} {{#endtabs }}

cs-suite

AWS, GCP, Azure, DigitalOcean.
Απαιτεί python2.7 και φαίνεται ότι δεν συντηρείται.

Nessus

Το Nessus έχει μια Audit Cloud Infrastructure σάρωση που υποστηρίζει: AWS, Azure, Office 365, Rackspace, Salesforce. Ορισμένες επιπλέον ρυθμίσεις στο Azure είναι απαραίτητες για να αποκτήσετε ένα Client Id.

cloudlist

Το Cloudlist είναι ένα multi-cloud εργαλείο για την απόκτηση Assets (Ονόματα κεντρικών υπολογιστών, Διευθύνσεις IP) από Παρόχους Cloud.

{{#tabs }} {{#tab name="Cloudlist" }}

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

{{#endtab }}

{{#tab name="Second Tab" }}

## For GCP it requires service account JSON credentials
cloudlist -config </path/to/config>

{{#endtab }} {{#endtabs }}

χαρτογράφηση

Η χαρτογράφηση είναι ένα εργαλείο Python που ενοποιεί τα περιουσιακά στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από μια βάση δεδομένων Neo4j.

{{#tabs }} {{#tab name="Εγκατάσταση" }}

# 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.*

{{#endtab }}

{{#tab name="GCP" }}

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

{{#endtab }} {{#endtabs }}

starbase

Το Starbase συλλέγει πόρους και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένης της υποδομής cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από τη βάση δεδομένων Neo4j.

{{#tabs }} {{#tab name="Install" }}

# 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

{{#endtab }}

{{#tab name="GCP" }}

## 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

{{#endtab }} {{#endtabs }}

SkyArk

Ανακαλύψτε τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον 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

Cloud Brute

Ένα εργαλείο για να βρείτε την υποδομή, τα αρχεία και τις εφαρμογές μιας εταιρείας (στόχος) στους κορυφαίους παρόχους cloud (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).

CloudFox

  • Το CloudFox είναι ένα εργαλείο για να βρείτε εκμεταλλεύσιμες διαδρομές επίθεσης στην υποδομή cloud (προς το παρόν υποστηρίζονται μόνο AWS & Azure με GCP να έρχεται).
  • Είναι ένα εργαλείο αρίθμησης που προορίζεται να συμπληρώσει το χειροκίνητο pentesting.
  • Δεν δημιουργεί ή τροποποιεί κανένα δεδομένο μέσα στο περιβάλλον cloud.

Περισσότερες λίστες εργαλείων ασφάλειας cloud

Google

GCP

{{#ref}} gcp-security/ {{#endref}}

Workspace

{{#ref}} workspace-security/ {{#endref}}

AWS

{{#ref}} aws-security/ {{#endref}}

Azure

{{#ref}} azure-security/ {{#endref}}

Attack Graph

Stormspotter δημιουργεί ένα “γράφημα επίθεσης” των πόρων σε μια συνδρομή Azure. Επιτρέπει στις κόκκινες ομάδες και τους pentesters να οπτικοποιήσουν την επιφάνεια επίθεσης και τις ευκαιρίες pivot εντός ενός ενοικιαστή, και ενισχύει τους υπερασπιστές σας να προσανατολίζονται και να προτεραιοποιούν γρήγορα την εργασία απόκρισης σε περιστατικά.

Office365

Χρειάζεστε Global Admin ή τουλάχιστον Global Admin Reader (αλλά σημειώστε ότι ο Global Admin Reader είναι λίγο περιορισμένος). Ωστόσο, αυτοί οι περιορισμοί εμφανίζονται σε ορισμένα PS modules και μπορούν να παρακαμφθούν αποκτώντας πρόσβαση στις δυνατότητες μέσω της διαδικτυακής εφαρμογής.

{{#include ../banners/hacktricks-training.md}}