Svaka cloud platforma ima svoje specifičnosti, ali generalno postoji nekoliko zajedničkih stvari koje pentester treba da proveri prilikom testiranja cloud okruženja:
Provere standarda
Ovo će vam pomoći da razumete veličinu okruženja i usluge koje se koriste
Takođe će vam omogućiti da pronađete neke brze pogrešne konfiguracije jer većinu ovih testova možete izvršiti pomoću automatskih alata
Enumeracija usluga
Verovatno nećete pronaći mnogo više pogrešnih konfiguracija ovde ako ste pravilno izvršili provere standarda, ali mogli biste pronaći neke koje nisu bile tražene u testu standarda.
Ovo će vam omogućiti da znate šta se tačno koristi u cloud okruženju
Ovo će mnogo pomoći u sledećim koracima
Proverite izložene resurse
Ovo se može uraditi tokom prethodne sekcije, potrebno je da otkrijete sve što je potencijalno izloženo internetu na neki način i kako može biti pristupljeno.
Ovde mislim na ručno izloženu infrastrukturu kao što su instance sa web stranicama ili drugi portovi koji su izloženi, kao i na druge usluge u cloudu koje se mogu konfigurisati da budu izložene (kao što su DB-ovi ili bucket-i)
Zatim treba da proverite da li taj resurs može biti izložen ili ne (povjerljive informacije? ranjivosti? pogrešne konfiguracije u izloženoj usluzi?)
Proverite dozvole
Ovde treba da otkrijete sve dozvole svake uloge/korisnika unutar clouda i kako se koriste
Previše visoko privilegovanih (kontrolišu sve) naloga? Generisani ključevi koji se ne koriste?... Većina ovih provera bi već trebala biti izvršena u testovima standarda
Ako klijent koristi OpenID ili SAML ili neku drugu federaciju, možda ćete morati da ih pitate za dodatne informacije o tome kako se dodeljuju svake uloge (nije isto da je admin uloga dodeljena 1 korisniku ili 100)
Nije dovoljno pronaći koji korisnici imaju admin dozvole "*:*". Postoji mnogo drugih dozvola koje, u zavisnosti od korišćenih usluga, mogu biti veoma osetljive.
Štaviše, postoje potencijalni putevi za eskalaciju privilegija koje treba pratiti zloupotrebom dozvola. Sve ove stvari treba uzeti u obzir i što više puteva za eskalaciju privilegija koliko je moguće treba prijaviti.
Proverite integracije
Veoma je verovatno da se integracije sa drugim cloud-ovima ili SaaS koriste unutar cloud okruženja.
Za integracije clouda koji audirate sa drugom platformom, trebate obavestiti ko ima pristup da (zloupotrebi) tu integraciju i trebate pitati kako je osetljiva akcija koja se vrši.
Na primer, ko može da piše u AWS bucket gde GCP dobija podatke (pitajte koliko je osetljiva akcija u GCP-u koja obrađuje te podatke).
Za integracije unutar clouda koji audirate sa eksternih platformi, trebate pitati ko ima eksterni pristup da (zloupotrebi) tu integraciju i proveriti kako se ti podaci koriste.
Na primer, ako neka usluga koristi Docker sliku hostovanu u GCR-u, trebate pitati ko ima pristup da to izmeni i koje povjerljive informacije i pristup će ta slika dobiti kada se izvrši unutar AWS clouda.
Multi-Cloud tools
Postoji nekoliko alata koji se mogu koristiti za testiranje različitih cloud okruženja. Koraci instalacije i linkovi će biti navedeni u ovoj sekciji.
Alat za identifikaciju loših konfiguracija i puteva za eskalaciju privilegija u cloud-ovima i između 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
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
Proveri sve projekte
Da biste proverili sve projekte, potrebno je da generišete gcp.spc datoteku koja označava sve projekte koje treba testirati. Možete jednostavno pratiti uputstva iz sledećeg skripta.
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.
Zahteva python2.7 i izgleda da nije održavan.
Nessus
Nessus ima Audit Cloud Infrastructure skeniranje koje podržava: AWS, Azure, Office 365, Rackspace, Salesforce. Neka dodatna podešavanja u Azure su potrebna da bi se dobio Client Id.
Cartography je Python alat koji konsoliduje infrastrukturne resurse i odnose između njih u intuitivnom grafičkom prikazu koji pokreće Neo4j baza podataka.
# 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 prikuplja resurse i odnose iz usluga i sistema uključujući cloud infrastrukturu, SaaS aplikacije, bezbednosne kontrole i još mnogo toga u intuitivnom grafičkom prikazu podržanom Neo4j bazom podataka.
# 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
Otkrivanje najprivilegovanijih korisnika u skeniranoj AWS ili Azure sredini, uključujući AWS Shadow Admins. Koristi 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
Alat za pronalaženje infrastrukture, fajlova i aplikacija kompanije (cilj) na vodećim cloud provajderima (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
Stormspotterkreira “graf napada” resursa u Azure pretplati. Omogućava red timovima i pentesterima da vizualizuju površinu napada i mogućnosti preusmeravanja unutar zakupca, i pojačava vaše odbrambene timove da brzo orijentišu i prioritizuju rad na incidentima.
Office365
Potrebni su vam Global Admin ili barem Global Admin Reader (ali imajte na umu da je Global Admin Reader malo ograničen). Međutim, ta ograničenja se pojavljuju u nekim PS modulima i mogu se zaobići pristupom funkcijama putem web aplikacije.