Ogni cloud ha le sue peculiarità, ma in generale ci sono alcune cose comuni che un pentester dovrebbe controllare quando testa un ambiente cloud:
Controlli di benchmark
Questo ti aiuterà a capire la dimensione dell'ambiente e i servizi utilizzati
Ti permetterà anche di trovare alcune impostazioni errate rapide poiché puoi eseguire la maggior parte di questi test con strumenti automatizzati
Enumerazione dei servizi
Probabilmente non troverai molte altre impostazioni errate qui se hai eseguito correttamente i test di benchmark, ma potresti trovarne alcune che non sono state cercate nel test di benchmark.
Questo ti permetterà di sapere cosa viene esattamente utilizzato nell'ambiente cloud
Questo aiuterà molto nei passaggi successivi
Controlla le risorse esposte
Questo può essere fatto durante la sezione precedente, devi scoprire tutto ciò che è potenzialmente esposto a Internet in qualche modo e come può essere accessibile.
Qui sto considerando infrastrutture esposte manualmente come istanze con pagine web o altre porte esposte, e anche altri servizi gestiti dal cloud che possono essere configurati per essere esposti (come DB o bucket)
Quindi dovresti controllare se quella risorsa può essere esposta o meno (informazioni confidenziali? vulnerabilità? impostazioni errate nel servizio esposto?)
Controlla le autorizzazioni
Qui dovresti scoprire tutte le autorizzazioni di ogni ruolo/utente all'interno del cloud e come vengono utilizzate
Troppi account altamente privilegiati (controllo totale su tutto)? Chiavi generate non utilizzate?... La maggior parte di questi controlli dovrebbe essere stata fatta già durante i test di benchmark
Se il cliente sta utilizzando OpenID o SAML o altre federazioni, potresti aver bisogno di chiedere ulteriori informazioni su come viene assegnato ogni ruolo (non è la stessa cosa che il ruolo di amministratore venga assegnato a 1 utente o a 100)
Non è sufficiente trovare quali utenti hanno autorizzazioni di amministratore "*:*". Ci sono molte altre autorizzazioni che, a seconda dei servizi utilizzati, possono essere molto sensibili.
Inoltre, ci sono potenziali percorsi di privesc da seguire abusando delle autorizzazioni. Tutte queste cose dovrebbero essere prese in considerazione e dovrebbero essere segnalati tanti percorsi di privesc quanto possibile.
Controlla le integrazioni
È molto probabile che siano utilizzate integrazioni con altri cloud o SaaS all'interno dell'ambiente cloud.
Per integrazioni del cloud che stai auditando con altre piattaforme, dovresti notificare chi ha accesso per (ab)usare quell'integrazione e dovresti chiedere quanto sensibile è l'azione che viene eseguita.
Ad esempio, chi può scrivere in un bucket AWS da cui GCP sta ottenendo dati (chiedi quanto sensibile è l'azione in GCP che tratta quei dati).
Per integrazioni all'interno del cloud che stai auditando da piattaforme esterne, dovresti chiedere chi ha accesso esterno per (ab)usare quell'integrazione e controllare come vengono utilizzati quei dati.
Ad esempio, se un servizio sta utilizzando un'immagine Docker ospitata in GCR, dovresti chiedere chi ha accesso per modificarla e quali informazioni sensibili e accesso otterrà quell'immagine quando viene eseguita all'interno di un cloud AWS.
Strumenti Multi-Cloud
Ci sono diversi strumenti che possono essere utilizzati per testare diversi ambienti cloud. I passaggi di installazione e i link verranno indicati in questa sezione.
Uno strumento per identificare configurazioni errate e percorsi di privesc in cloud e tra cloud/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
ScoutSuite è uno strumento di analisi delle configurazioni di sicurezza per le piattaforme cloud come AWS, Azure, GCP, Alibaba Cloud e Oracle Cloud Infrastructure.
Per installare ScoutSuite, eseguire il seguente comando:
pipinstallscoutsuite
Per utilizzare ScoutSuite, eseguire il seguente comando:
scout<cloud_provider><profile><output_directory>
Esempio:
scoutawsmy_profile/path/to/output
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
Controlla tutti i progetti
Per controllare tutti i progetti è necessario generare il file gcp.spc indicando tutti i progetti da testare. Puoi seguire le indicazioni dello script seguente:
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.
Richiede python2.7 e sembra non essere mantenuto.
Nessus
Nessus ha una scansione Audit Cloud Infrastructure che supporta: AWS, Azure, Office 365, Rackspace, Salesforce. Alcune configurazioni extra in Azure sono necessarie per ottenere un Client Id.
Cartografia è uno strumento Python che consolida le risorse di infrastruttura e le relazioni tra di esse in una vista grafica intuitiva alimentata da un database 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 raccoglie risorse e relazioni da servizi e sistemi, inclusa l'infrastruttura cloud, le applicazioni SaaS, i controlli di sicurezza e altro ancora, in una vista grafica intuitiva supportata dal database 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
Scopri gli utenti più privilegiati nell'ambiente AWS o Azure scansionato, inclusi gli amministratori ombra di AWS. Utilizza 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
Uno strumento per trovare l'infrastruttura, i file e le applicazioni di un'azienda (target) sui principali fornitori di cloud (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
CloudFox è uno strumento per trovare percorsi di attacco sfruttabili nell'infrastruttura cloud (attualmente supporta solo AWS e Azure, con GCP in arrivo).
È uno strumento di enumerazione che si intende integrare con il pentesting manuale.
Non crea o modifica alcun dato nell'ambiente cloud.
Stormspottercrea un "grafo degli attacchi" delle risorse in una sottoscrizione Azure. Consente alle red team e ai pentester di visualizzare la superficie di attacco e le opportunità di pivot all'interno di un tenant e potenzia i tuoi difensori per orientarsi rapidamente e dare priorità al lavoro di risposta agli incidenti.
Office365
Hai bisogno di Global Admin o almeno di Global Admin Reader (ma nota che Global Admin Reader è un po' limitato). Tuttavia, queste limitazioni si presentano in alcuni moduli di PowerShell e possono essere bypassate accedendo alle funzionalità tramite l'applicazione web.