Svaki oblak ima svoje specifičnosti, ali uopšteno postoje neke uobičajene stvari koje bi pentester trebao proveriti prilikom testiranja oblak okruženja:
Provera benchmarka
Ovo će vam pomoći da razumete veličinu okruženja i korišćene usluge
Takođe će vam omogućiti da pronađete neke brze greške u konfiguraciji jer većinu ovih testova možete izvršiti pomoću automatizovanih alata
Enumeracija usluga
Verovatno nećete pronaći mnogo više grešaka u konfiguraciji ovde ako ste pravilno izvršili test benchmarka, ali možda ćete pronaći neke koje nisu bile predmet benchmark testa.
Ovo će vam omogućiti da znate šta se tačno koristi u oblaku
Ovo će mnogo pomoći u sledećim koracima
Provera izloženih resursa
Ovo se može uraditi tokom prethodne sekcije, trebate pronaći sve što je potencijalno izloženo na neki način na internetu i kako mu se može pristupiti.
Ovde se misli na ručno izloženu infrastrukturu kao što su instance sa veb stranicama ili drugim otvorenim portovima, kao i na druge oblakom upravljane usluge koje se mogu konfigurisati da budu izložene (kao što su baze podataka ili bucketi)
Zatim trebate proveriti da li se taj resurs može izložiti ili ne (poverljive informacije? ranjivosti? greške u konfiguraciji izložene usluge?)
Provera dozvola
Ovde trebate pronaći sve dozvole svake uloge/korisnika unutar oblaka i kako se koriste
Previše visoko privilegovanih (kontrolišu sve) naloga? Generisani ključevi koji se ne koriste?... Većina ovih provera trebala bi biti obavljena u testovima benchmarka
Ako klijent koristi OpenID ili SAML ili neko drugo udruživanje, možda ćete morati da ih pitate za dodatne informacije o načinu dodele svake uloge (nije isto da li je admin uloga dodeljena 1 korisniku ili 100)
Nije dovoljno pronaći koje korisnike imaju admin dozvole "*:*". Postoji mnogo drugih dozvola koje, u zavisnosti od korišćenih usluga, mogu biti vrlo osetljive.
Osim toga, postoje potencijalni načini eskalacije privilegija koje treba uzeti u obzir i treba prijaviti što je više moguće putanja eskalacije privilegija.
Provera integracija
Vrlo je verovatno da se integracije sa drugim oblakom ili SaaS-om koriste unutar oblak okruženja.
Za integracije oblaka koji se testira sa drugom platformom trebali biste obavestiti ko ima pristup (zlo)upotrebi te integracije i trebali biste pitati koliko je osetljiva akcija koja se izvršava.
Na primer, ko može pisati u AWS bucket iz kojeg GCP preuzima podatke (pitajte koliko je osetljiva akcija u GCP-u koja obrađuje te podatke).
Za integracije unutar oblaka koji se testira sa spoljnim platformama, trebali biste pitati ko ima spoljni pristup (zlo)upotrebi te integracije i proveriti kako se ti podaci koriste.
Na primer, ako usluga koristi Docker sliku smeštenu u GCR-u, trebali biste pitati ko ima pristup za izmenu te slike i koje osetljive informacije i pristup će ta slika dobiti kada se izvrši unutar AWS oblaka.
Alati za više oblaka
Postoji nekoliko alata koji se mogu koristiti za testiranje različitih oblak okruženja. Koraci za instalaciju i linkovi biće navedeni u ovoj sekciji.
Alat za identifikaciju loše konfiguracije i putanje eskalacije privilegija u oblaku i između oblaka/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
Proverite sve projekte
Da biste proverili sve projekte, morate generisati gcp.spc datoteku koja navodi sve projekte za testiranje. Samo pratite 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 skeniranje Audit Cloud Infrastructure koje podržava: AWS, Azure, Office 365, Rackspace, Salesforce. Potrebne su dodatne konfiguracije u Azure-u da biste dobili Client Id.
Kartografija je Python alat koji konsoliduje infrastrukturne resurse i odnose između njih u intuitivnom prikazu grafa koji pokreće Neo4j baza podataka.
# Installationdockerimagepullghcr.io/lyft/cartographydockerrun--platformlinux/amd64ghcr.io/lyft/cartographycartography--help## Install a Neo4j DB version 3.5.*
GCP (Google Cloud Platform) je jedna od najpopularnijih cloud platformi koja pruža razne usluge i resurse za razvoj, implementaciju i upravljanje aplikacija. U nastavku su opisane neke od metoda koje možete koristiti prilikom pentestiranja GCP okruženja.
1. Faza prikupljanja informacija
Identifikujte ciljnu organizaciju i njen GCP identifikator projekta.
Prikupite informacije o GCP resursima, kao što su virtualne mašine, baze podataka, mreže i skladišta podataka.
Identifikujte korisnike i njihove privilegije u GCP okruženju.
Prikupite informacije o GCP API-ima i njihovim dozvolama.
2. Faza identifikacije ranjivosti
Skenirajte GCP resurse kako biste identifikovali ranjivosti, kao što su neažurirani softveri, loše konfigurisane mreže ili nebezbedne API dozvole.
Proverite da li postoje nezaštićeni GCP resursi koji mogu biti izloženi napadima, kao što su nezaštićene baze podataka ili skladišta podataka.
3. Faza iskorišćavanja ranjivosti
Iskoristite identifikovane ranjivosti kako biste dobili neovlašćen pristup GCP resursima.
Iskoristite slabosti u konfiguraciji mreže ili API dozvolama kako biste izvršili napade poput DDoS-a ili preusmeravanja saobraćaja.
4. Faza održavanja pristupa
Održavajte pristup GCP resursima kako biste zadržali kontrolu nad okruženjem.
Sakrijte svoje aktivnosti i tragove kako biste izbegli otkrivanje.
5. Faza dokumentacije
Dokumentujte sve korake i rezultate pentestiranja GCP okruženja.
Napravite izveštaj sa preporukama za poboljšanje sigurnosti GCP okruženja.
Napomena: Pre pentestiranja GCP okruženja, uvek se konsultujte sa vlasnikom ili administratorom sistema kako biste dobili odobrenje i izbegli neželjene posledice.
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 veze sa usluga i sistema, uključujući cloud infrastrukturu, SaaS aplikacije, sigurnosne kontrole i još mnogo toga, u intuitivnom prikazu grafa 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
Otkrijte najprivilegovanije korisnike u skeniranom AWS ili Azure okruženju, 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
Alatka za pronalaženje infrastrukture, datoteka i aplikacija kompanije (cilja) na vodećim cloud provajderima (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
CloudFox je alat za pronalaženje iskorišćivih putanja napada u cloud infrastrukturi (trenutno podržava samo AWS i Azure, sa GCP-om koji će biti dostupan uskoro).
Ovo je alat za enumeraciju koji je namenjen kao dodatak ručnom pentestiranju.
Ne kreira ili menja podatke unutar cloud okruženja.
Stormspotterkreira "attack graph" resursa u Azure pretplati. Omogućava crvenim timovima i pentesterima da vizualizuju površinu napada i mogućnosti za prelazak unutar jednog zakupca, i omogućava vašim odbrambenim timovima da brzo orijentišu i prioritetizuju rad na odgovoru na incidente.
Office365
Potrebno je da imate Global Admin privilegije ili barem Global Admin Reader (ali imajte na umu da su te privilegije malo ograničene). Međutim, ove ograničenja se pojavljuju u nekim PS modulima i mogu se zaobići pristupanjem funkcijama putem web aplikacije.