Elke wolk het sy eie eienaardighede, maar oor die algemeen is daar 'n paar gemeenskaplike dinge wat 'n pentester moet nagaan wanneer 'n wolkomgewing getoets word:
Benchmark kontroles
Dit sal jou help om die grootte van die omgewing en dienste wat gebruik word te begryp.
Dit sal jou ook toelaat om 'n paar vinnige miskonfigurasies te vind, aangesien jy die meeste van hierdie toetse met geoutomatiseerde gereedskap kan uitvoer.
Dienste Enumerasie
Jy sal waarskynlik nie veel meer miskonfigurasies hier vind as jy die benchmark toetse korrek uitgevoer het nie, maar jy mag dalk sommige vind wat nie in die benchmark toets gesoek is nie.
Dit sal jou toelaat om te weet wat presies gebruik word in die wolkomgewing.
Dit sal baie help in die volgende stappe.
Kontroleer blootgestelde bates
Dit kan gedoen word tydens die vorige afdeling, jy moet uitvind alles wat potensieel blootgestel is aan die Internet op een of ander manier en hoe dit toegang verkry kan word.
Hier neem ek handmatig blootgestelde infrastruktuur soos instansies met webbladsye of ander poorte wat blootgestel word, en ook oor ander wolkkontroleerde dienste wat geconfigureer kan word om blootgestel te word (soos DB's of emmers).
Dan moet jy nagaan of daardie hulpbron blootgestel kan word of nie (vertroulike inligting? kwesbaarhede? miskonfigurasies in die blootgestelde diens?)
Kontroleer toestemmings
Hier moet jy uitvind wat die toestemmings van elke rol/gebruiker binne die wolk is en hoe dit gebruik word.
Te veel hoogs bevoorregte (beheer alles) rekeninge? Geproduseerde sleutels wat nie gebruik word?... Die meeste van hierdie kontroles behoort reeds in die benchmark toetse gedoen te wees.
As die kliënt OpenID of SAML of ander federasie gebruik, mag jy hulle moet vra vir verdere inligting oor hoe elke rol toegeken word (dit is nie dieselfde dat die admin rol aan 1 gebruiker of aan 100 toegeken word nie).
Dit is nie genoeg om te vind watter gebruikers admin toestemmings "*:*" het nie. Daar is baie ander toestemmings wat, afhangende van die dienste wat gebruik word, baie sensitief kan wees.
Boonop is daar potensiële privesc maniere om te volg deur misbruik van toestemmings. Al hierdie dinge moet in ag geneem word en so veel privesc paaie as moontlik moet gerapporteer word.
Kontroleer Integrasies
Dit is hoogs waarskynlik dat integrasies met ander wolke of SaaS binne die wolkomgewing gebruik word.
Vir integrasies van die wolk wat jy oudit met ander platforms moet jy kennis gee van wie toegang het tot (mis)bruik van daardie integrasie en jy moet vra hoe sensitief die aksie is wat uitgevoer word.
Byvoorbeeld, wie kan skryf in 'n AWS-emmer waar GCP data van ontvang (vra hoe sensitief die aksie in GCP is wat daardie data hanteer).
Vir integrasies binne die wolk wat jy oudit van eksterne platforms, moet jy vra wie toegang het van buite om (mis)bruik van daardie integrasie en kyk hoe daardie data gebruik word.
Byvoorbeeld, as 'n diens 'n Docker beeld gebruik wat in GCR gehosh is, moet jy vra wie toegang het om dit te wysig en watter sensitiewe inligting en toegang daardie beeld sal kry wanneer dit binne 'n AWS-wolk uitgevoer word.
Multi-Cloud tools
Daar is verskeie gereedskap wat gebruik kan word om verskillende wolkomgewings te toets. Die installasietappe en skakels gaan in hierdie afdeling aangedui word.
'n Gereedskap om slegte konfigurasies en privesc paaie in wolke en oor wolke/SaaS te identifiseer.
# 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
Kontroleer alle Projekte
Om al die projekte te kontroleer, moet jy die gcp.spc lêer genereer wat al die projekte aandui wat getoets moet word. Jy kan net die aanwysings van die volgende skrif volg.
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.
Dit vereis python2.7 en lyk ononderhou.
Nessus
Nessus het 'n Audit Cloud Infrastructure skandering wat ondersteun: AWS, Azure, Office 365, Rackspace, Salesforce. Sommige ekstra konfigurasies in Azure is nodig om 'n Client Id te verkry.
Cartography is 'n Python-gereedskap wat infrastruktuur bates en die verhoudings tussen hulle in 'n intuïtiewe grafiekweergave saamvoeg, aangedryf deur 'n Neo4j-databasis.
# 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 versamel bates en verhoudings van dienste en stelsels, insluitend wolkinfrastruktuur, SaaS-toepassings, sekuriteitsbeheer, en meer in 'n intuïtiewe grafiekweergave wat deur die Neo4j-databasis ondersteun word.
# 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
Ontdek die mees bevoorregte gebruikers in die gescande AWS of Azure omgewing, insluitend die AWS Shadow Admins. Dit gebruik 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
'n Gereedskap om 'n maatskappy (teiken) infrastruktuur, lêers en toepassings op die top wolkverskaffers (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) te vind.
Stormspotterskep 'n “aanval grafiek” van die hulpbronne in 'n Azure intekening. Dit stel rooi span en pentesters in staat om die aanvaloppervlak en draaipunte binne 'n huurder te visualiseer, en versterk jou verdedigers om vinnig te oriënteer en insidentresponswerk te prioritiseer.
Office365
Jy het Global Admin of ten minste Global Admin Reader nodig (maar let daarop dat Global Admin Reader 'n bietjie beperk is). Hierdie beperkings verskyn egter in sommige PS-modules en kan omseil word deur toegang te verkry tot die funksies via die webtoepassing.