Her bulutun kendine özgü özellikleri vardır, ancak genel olarak bir bulut ortamını test ederken bir pentesterin kontrol etmesi gereken birkaç ortak şey vardır:
Benchmark kontrolleri
Bu, ortamın boyutunu ve kullanılan hizmetleri anlamanıza yardımcı olacaktır.
Ayrıca, otomatik araçlar ile bu testlerin çoğunu gerçekleştirebileceğiniz için bazı hızlı yanlış yapılandırmaları bulmanızı sağlar.
Hizmetlerin Sayımı
Benchmark testlerini doğru bir şekilde gerçekleştirdiyseniz burada çok fazla yanlış yapılandırma bulamayabilirsiniz, ancak benchmark testinde aranmayan bazılarını bulabilirsiniz.
Bu, bulut ortamında tam olarak neyin kullanıldığını bilmenizi sağlar.
Bu, sonraki adımlarda çok yardımcı olacaktır.
Açık varlıkları kontrol et
Bu, önceki bölüm sırasında yapılabilir, potansiyel olarak İnternete açık olan her şeyi ve nasıl erişilebileceğini bulmalısınız.
Burada, manüel olarak açılmış altyapıyı (web sayfalarına sahip örnekler veya diğer açık portlar gibi) ve ayrıca açık hale getirilebilecek diğer bulut yönetilen hizmetleri (DB'ler veya bucket'lar gibi) ele alıyorum.
Sonra, bu kaynağın açılıp açılamayacağını kontrol etmelisiniz (gizli bilgi mi? zafiyetler mi? açığa çıkan hizmetteki yanlış yapılandırmalar mı?)
İzinleri kontrol et
Burada, bulut içindeki her rol/kullanıcının tüm izinlerini bulmalısınız ve bunların nasıl kullanıldığını öğrenmelisiniz.
Çok fazla yüksek ayrıcalıklı (her şeyi kontrol eden) hesap mı var? Kullanılmayan anahtarlar mı oluşturuldu?... Bu kontrollerin çoğu zaten benchmark testlerinde yapılmış olmalıdır.
Müşteri OpenID veya SAML veya başka bir federasyon kullanıyorsa, her rolün nasıl atandığı hakkında daha fazla bilgi istemeniz gerekebilir (admin rolünün 1 kullanıcıya mı yoksa 100 kullanıcıya mı atandığı aynı değildir).
Hangi kullanıcıların admin izinlerine sahip olduğunu bulmak yeterli değildir "*:*". Kullanılan hizmetlere bağlı olarak çok fazla diğer izin çok hassas olabilir.
Ayrıca, izinleri kötüye kullanarak takip edilebilecek potansiyel privesc yolları vardır. Tüm bu şeyler dikkate alınmalı ve mümkün olduğunca fazla privesc yolu rapor edilmelidir.
Entegrasyonları kontrol et
Bulut ortamında diğer bulutlar veya SaaS ile entegrasyonların kullanılması oldukça olasıdır.
Denetlediğiniz bulutun diğer platformlarla entegrasyonları için, bu entegrasyonu (kötüye) kullanma erişimine sahip olanları bildirmeli ve gerçekleştirilen eylemin ne kadar hassas olduğunu sormalısınız.
Örneğin, GCP'nin veri aldığı bir AWS bucket'ında kimlerin yazma yetkisi olduğunu sorun (GCP'de bu veriyi işlerken eylemin ne kadar hassas olduğunu sorun).
Denetlediğiniz bulut içindeki harici platformlardan entegrasyonlar için, bu entegrasyonu (kötüye) kullanma erişimine sahip olanları sormalı ve verinin nasıl kullanıldığını kontrol etmelisiniz.
Örneğin, bir hizmet GCR'de barındırılan bir Docker imajı kullanıyorsa, kimlerin bunu değiştirme yetkisi olduğunu ve bu imajın AWS bulutunda çalıştırıldığında hangi hassas bilgilere ve erişimlere sahip olacağını sormalısınız.
Çoklu Bulut Araçları
Farklı bulut ortamlarını test etmek için kullanılabilecek birkaç araç vardır. Kurulum adımları ve bağlantılar bu bölümde belirtilecektir.
Bulutlarda ve bulutlar/SaaS arasında kötü yapılandırmaları ve privesc yollarını tanımlamak için bir araçtır.
# 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
Tüm Projeleri Kontrol Et
Tüm projeleri kontrol etmek için test edilecek tüm projeleri belirten gcp.spc dosyasını oluşturmanız gerekir. Aşağıdaki scriptteki talimatları takip edebilirsiniz.
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.
python2.7 gerektirir ve bakımsız görünüyor.
Nessus
Nessus, Audit Cloud Infrastructure taraması ile destekler: AWS, Azure, Office 365, Rackspace, Salesforce. Client Id almak için Azure'da bazı ek yapılandırmalar gereklidir.
Cartography, bir Neo4j veritabanası tarafından desteklenen sezgisel bir grafik görünümünde altyapı varlıklarını ve bunlar arasındaki ilişkileri bir araya getiren bir Python aracıdır.
# 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, bulut altyapısı, SaaS uygulamaları, güvenlik kontrolleri ve daha fazlası dahil olmak üzere hizmetlerden ve sistemlerden varlıkları ve ilişkileri Neo4j veritabanıyla desteklenen sezgisel bir grafik görünümüne toplar.
# 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
Tarayıcı AWS veya Azure ortamındaki en ayrıcalıklı kullanıcıları, AWS Shadow Admins dahil olmak üzere keşfedin. PowerShell kullanır.
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
Bir şirketin (hedef) altyapısını, dosyalarını ve en büyük bulut sağlayıcılarındaki (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) uygulamalarını bulmak için bir araç.
CloudFox, bulut altyapısında (şu anda yalnızca AWS ve Azure destekleniyor, GCP yakında gelecek) istismar edilebilir saldırı yollarını bulmak için bir araçtır.
Manuel pentesting'i tamamlamak için tasarlanmış bir numaralandırma aracıdır.
Bulut ortamında herhangi bir veri oluşturmaz veya değiştirmez.
Stormspotter, bir Azure aboneliğindeki kaynakların “saldırı grafiğini” oluşturur. Kırmızı takımlara ve pentesterlara saldırı yüzeyini ve bir kiracı içindeki pivot fırsatlarını görselleştirme imkanı tanır ve savunucularınızı olay yanıtı çalışmalarını hızlı bir şekilde yönlendirmek ve önceliklendirmek için güçlendirir.
Office365
Global Admin veya en azından Global Admin Reader'a ihtiyacınız var (ancak Global Admin Reader'ın biraz sınırlı olduğunu unutmayın). Ancak, bu sınırlamalar bazı PS modüllerinde görünür ve özelliklere web uygulaması aracılığıyla erişerek aşılabilir.