23 KiB
Pentesting Cloud Methodology
{{#include ../banners/hacktricks-training.md}}
Basic Methodology
प्रत्येक क्लाउड की अपनी विशेषताएँ होती हैं लेकिन सामान्यतः कुछ सामान्य बातें हैं जिन्हें एक pentester को जांचना चाहिए जब वह एक क्लाउड वातावरण का परीक्षण कर रहा हो:
- बेंचमार्क जांच
- यह आपको पर्यावरण का आकार समझने में मदद करेगा और सेवाओं का उपयोग
- यह आपको कुछ त्वरित गलत कॉन्फ़िगरेशन खोजने की अनुमति देगा क्योंकि आप इनमें से अधिकांश परीक्षण स्वचालित उपकरणों के साथ कर सकते हैं
- सेवाओं की गणना
- यदि आपने बेंचमार्क परीक्षण सही ढंग से किया है तो आप यहाँ अधिक गलत कॉन्फ़िगरेशन नहीं पाएंगे, लेकिन आप कुछ ऐसा पा सकते हैं जो बेंचमार्क परीक्षण में नहीं देखा गया था।
- यह आपको यह जानने की अनुमति देगा कि क्लाउड env में वास्तव में क्या उपयोग किया जा रहा है
- यह अगले चरणों में बहुत मदद करेगा
- खुले संसाधनों की जांच करें
- यह पिछले अनुभाग के दौरान किया जा सकता है, आपको यह पता लगाना होगा कि क्या कुछ भी संभावित रूप से इंटरनेट पर खुला है और इसे कैसे एक्सेस किया जा सकता है।
- यहाँ मैं हाथ से खोली गई अवसंरचना जैसे वेब पृष्ठों के साथ उदाहरण या अन्य पोर्ट्स के बारे में बात कर रहा हूँ, और अन्य क्लाउड प्रबंधित सेवाओं के बारे में जो खोली जा सकती हैं (जैसे DBs या बकेट्स)
- फिर आपको यह जांचना चाहिए कि क्या उस संसाधन को खोला जा सकता है या नहीं (गोपनीय जानकारी? कमजोरियाँ? खोली गई सेवा में गलत कॉन्फ़िगरेशन?)
- अनुमतियों की जांच करें
- यहाँ आपको क्लाउड के अंदर प्रत्येक भूमिका/उपयोगकर्ता की सभी अनुमतियों का पता लगाना चाहिए और उनका उपयोग कैसे किया जा रहा है
- बहुत अधिक उच्च विशेषाधिकार (सब कुछ नियंत्रित करें) खाते? उत्पन्न कुंजी का उपयोग नहीं किया गया?... इनमें से अधिकांश जांच पहले से ही बेंचमार्क परीक्षण में की जानी चाहिए थी
- यदि ग्राहक OpenID या SAML या अन्य संघ का उपयोग कर रहा है तो आपको उनसे आगे की जानकारी पूछनी पड़ सकती है कि प्रत्येक भूमिका कैसे सौंपा जा रहा है (यह समान नहीं है कि व्यवस्थापक भूमिका 1 उपयोगकर्ता को या 100 को सौंपा गया है)
- यह खोजना पर्याप्त नहीं है कि कौन से उपयोगकर्ताओं के पास व्यवस्थापक अनुमतियाँ "*:*" हैं। बहुत सारी अन्य अनुमतियाँ हैं जो उपयोग की गई सेवाओं के आधार पर बहुत संवेदनशील हो सकती हैं।
- इसके अलावा, अनुमतियों का दुरुपयोग करते हुए संभावित privesc तरीके हैं। इन सभी बातों को ध्यान में रखा जाना चाहिए और जितने संभव हो privesc पथों की रिपोर्ट की जानी चाहिए।
- एकीकरण की जांच करें
- यह अत्यधिक संभावना है कि अन्य क्लाउड या SaaS के साथ एकीकरण क्लाउड env के अंदर उपयोग किया जा रहा है।
- आप जिस क्लाउड का ऑडिट कर रहे हैं उसके एकीकरण के लिए आपको सूचित करना चाहिए किसके पास उस एकीकरण का (दुरुपयोग) करने का अधिकार है और आपको पूछना चाहिए कितना संवेदनशील है किया जा रहा कार्य।
उदाहरण के लिए, कौन AWS बकेट में लिख सकता है जहाँ GCP डेटा प्राप्त कर रहा है (पूछें कि GCP में उस डेटा को संभालने में कार्य कितना संवेदनशील है)। - आप जिस क्लाउड का ऑडिट कर रहे हैं उसके अंदर बाहरी प्लेटफार्मों से एकीकरण के लिए, आपको पूछना चाहिए किसके पास बाहरी रूप से उस एकीकरण का (दुरुपयोग) करने का अधिकार है और यह जांचें कि उस डेटा का उपयोग कैसे किया जा रहा है।
उदाहरण के लिए, यदि एक सेवा GCR में होस्ट की गई Docker छवि का उपयोग कर रही है, तो आपको पूछना चाहिए कि इसे संशोधित करने का अधिकार किसके पास है और उस छवि को AWS क्लाउड के अंदर निष्पादित करने पर कौन सी संवेदनशील जानकारी और पहुंच प्राप्त होगी।
Multi-Cloud tools
कई उपकरण हैं जो विभिन्न क्लाउड वातावरण का परीक्षण करने के लिए उपयोग किए जा सकते हैं। स्थापना के चरण और लिंक इस अनुभाग में बताए जाएंगे।
PurplePanda
एक उपकरण जो क्लाउड और क्लाउड/SaaS में खराब कॉन्फ़िगरेशन और privesc पथों की पहचान करने के लिए है।
{{#tabs }} {{#tab name="Install" }}
# You need to install and run neo4j also
git clone https://github.com/carlospolop/PurplePanda
cd PurplePanda
python3 -m venv .
source bin/activate
python3 -m pip install -r requirements.txt
export PURPLEPANDA_NEO4J_URL="bolt://neo4j@localhost:7687"
export PURPLEPANDA_PWD="neo4j_pwd_4_purplepanda"
python3 main.py -h # Get help
{{#endtab }}
{{#tab name="GCP" }}
export GOOGLE_DISCOVERY=$(echo 'google:
- file_path: ""
- file_path: ""
service_account_id: "some-sa-email@sidentifier.iam.gserviceaccount.com"' | base64)
python3 main.py -a -p google #Get basic info of the account to check it's correctly configured
python3 main.py -e -p google #Enumerate the env
{{#endtab }} {{#endtabs }}
Prowler
यह AWS, GCP & Azure का समर्थन करता है। प्रत्येक प्रदाता को कॉन्फ़िगर करने के लिए देखें https://docs.prowler.cloud/en/latest/#aws
# Install
pip install prowler
prowler -v
# Run
prowler <provider>
# Example
prowler aws --profile custom-profile [-M csv json json-asff html]
# Get info about checks & services
prowler <provider> --list-checks
prowler <provider> --list-services
CloudSploit
AWS, Azure, Github, Google, Oracle, Alibaba
{{#tabs }} {{#tab name="Install" }}
# Install
git clone https://github.com/aquasecurity/cloudsploit.git
cd cloudsploit
npm install
./index.js -h
## Docker instructions in github
{{#endtab }}
{{#tab name="GCP" }}
## You need to have creds for a service account and set them in config.js file
./index.js --cloud google --config </abs/path/to/config.js>
{{#endtab }} {{#endtabs }}
ScoutSuite
AWS, Azure, GCP, Alibaba Cloud, Oracle Cloud Infrastructure
{{#tabs }} {{#tab name="Install" }}
mkdir scout; cd scout
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
## Using Docker: https://github.com/nccgroup/ScoutSuite/wiki/Docker-Image
{{#endtab }}
{{#tab name="GCP" }}
scout gcp --report-dir /tmp/gcp --user-account --all-projects
## use "--service-account KEY_FILE" instead of "--user-account" to use a service account
SCOUT_FOLDER_REPORT="/tmp"
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "================================================"
echo "Checking $pid"
mkdir "$SCOUT_FOLDER_REPORT/$pid"
scout gcp --report-dir "$SCOUT_FOLDER_REPORT/$pid" --no-browser --user-account --project-id "$pid"
done
{{#endtab }} {{#endtabs }}
Steampipe
{{#tabs }} {{#tab name="Install" }} Steampipe डाउनलोड और इंस्टॉल करें (https://steampipe.io/downloads). या Brew का उपयोग करें:
brew tap turbot/tap
brew install steampipe
{{#endtab }}
{{#tab name="GCP" }}
# Install gcp plugin
steampipe plugin install gcp
# Use https://github.com/turbot/steampipe-mod-gcp-compliance.git
git clone https://github.com/turbot/steampipe-mod-gcp-compliance.git
cd steampipe-mod-gcp-compliance
# To run all the checks from the dashboard
steampipe dashboard
# To run all the checks from rhe cli
steampipe check all
सभी प्रोजेक्ट्स की जांच करें
सभी प्रोजेक्ट्स की जांच करने के लिए आपको gcp.spc फ़ाइल उत्पन्न करनी होगी जिसमें परीक्षण के लिए सभी प्रोजेक्ट्स का संकेत दिया गया हो। आप बस निम्नलिखित स्क्रिप्ट से निर्देशों का पालन कर सकते हैं।
FILEPATH="/tmp/gcp.spc"
rm -rf "$FILEPATH" 2>/dev/null
# Generate a json like object for each project
for pid in $(gcloud projects list --format="value(projectId)"); do
echo "connection \"gcp_$(echo -n $pid | tr "-" "_" )\" {
plugin = \"gcp\"
project = \"$pid\"
}" >> "$FILEPATH"
done
# Generate the aggragator to call
echo 'connection "gcp_all" {
plugin = "gcp"
type = "aggregator"
connections = ["gcp_*"]
}' >> "$FILEPATH"
echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generated"
अन्य GCP अंतर्दृष्टियों (सेवाओं की गणना के लिए उपयोगी) की जांच करने के लिए उपयोग करें: https://github.com/turbot/steampipe-mod-gcp-insights
Terraform GCP कोड की जांच करने के लिए: https://github.com/turbot/steampipe-mod-terraform-gcp-compliance
Steampipe के अधिक GCP प्लगइन्स: https://github.com/turbot?q=gcp {{#endtab }}
{{#tab name="AWS" }}
# Install aws plugin
steampipe plugin install aws
# Modify the spec indicating in "profile" the profile name to use
nano ~/.steampipe/config/aws.spc
# Get some info on how the AWS account is being used
git clone https://github.com/turbot/steampipe-mod-aws-insights.git
cd steampipe-mod-aws-insights
steampipe dashboard
# Get the services exposed to the internet
git clone https://github.com/turbot/steampipe-mod-aws-perimeter.git
cd steampipe-mod-aws-perimeter
steampipe dashboard
# Run the benchmarks
git clone https://github.com/turbot/steampipe-mod-aws-compliance
cd steampipe-mod-aws-compliance
steampipe dashboard # To see results in browser
steampipe check all --export=/tmp/output4.json
Terraform AWS को चेक करने के लिए: https://github.com/turbot/steampipe-mod-terraform-aws-compliance
Steampipe के अधिक AWS प्लगइन्स: https://github.com/orgs/turbot/repositories?q=aws {{#endtab }} {{#endtabs }}
cs-suite
AWS, GCP, Azure, DigitalOcean.
यह python2.7 की आवश्यकता है और यह अप्रबंधित लगता है।
Nessus
Nessus में Audit Cloud Infrastructure स्कैन है जो समर्थन करता है: AWS, Azure, Office 365, Rackspace, Salesforce। Client Id प्राप्त करने के लिए Azure में कुछ अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता है।
cloudlist
Cloudlist एक multi-cloud tool for getting Assets (Hostnames, IP Addresses) है जो Cloud Providers से प्राप्त करता है।
{{#tabs }} {{#tab name="Cloudlist" }}
cd /tmp
wget https://github.com/projectdiscovery/cloudlist/releases/latest/download/cloudlist_1.0.1_macOS_arm64.zip
unzip cloudlist_1.0.1_macOS_arm64.zip
chmod +x cloudlist
sudo mv cloudlist /usr/local/bin
{{#endtab }}
{{#tab name="Second Tab" }}
## For GCP it requires service account JSON credentials
cloudlist -config </path/to/config>
{{#endtab }} {{#endtabs }}
cartography
Cartography एक Python उपकरण है जो बुनियादी ढांचे के संपत्तियों और उनके बीच के संबंधों को एक सहज ग्राफ दृश्य में समेकित करता है, जो Neo4j डेटाबेस द्वारा संचालित होता है।
{{#tabs }} {{#tab name="Install" }}
# Installation
docker image pull ghcr.io/lyft/cartography
docker run --platform linux/amd64 ghcr.io/lyft/cartography cartography --help
## Install a Neo4j DB version 3.5.*
{{#endtab }}
{{#tab name="GCP" }}
docker run --platform linux/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
{{#endtab }} {{#endtabs }}
starbase
Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड अवसंरचना, SaaS अनुप्रयोग, सुरक्षा नियंत्रण, और अधिक शामिल हैं, जो Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ दृश्य में प्रस्तुत किया जाता है।
{{#tabs }} {{#tab name="Install" }}
# You are going to need Node version 14, so install nvm following https://tecadmin.net/install-nvm-macos-with-homebrew/
npm install --global yarn
nvm install 14
git clone https://github.com/JupiterOne/starbase.git
cd starbase
nvm use 14
yarn install
yarn starbase --help
# Configure manually config.yaml depending on the env to analyze
yarn starbase setup
yarn starbase run
# Docker
git clone https://github.com/JupiterOne/starbase.git
cd starbase
cp config.yaml.example config.yaml
# Configure manually config.yaml depending on the env to analyze
docker build --no-cache -t starbase:latest .
docker-compose run starbase setup
docker-compose run starbase run
{{#endtab }}
{{#tab name="GCP" }}
## Config for GCP
### Check out: https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md
### It requires service account credentials
integrations:
- name: graph-google-cloud
instanceId: testInstanceId
directory: ./.integrations/graph-google-cloud
gitRemoteUrl: https://github.com/JupiterOne/graph-google-cloud.git
config:
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: false
storage:
engine: neo4j
config:
username: neo4j
password: s3cr3t
uri: bolt://localhost:7687
#Consider using host.docker.internal if from docker
{{#endtab }} {{#endtabs }}
SkyArk
स्कैन किए गए AWS या Azure वातावरण में सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं का पता लगाएं, जिसमें AWS Shadow Admins शामिल हैं। यह powershell का उपयोग करता है।
Import-Module .\SkyArk.ps1 -force
Start-AzureStealth
# in the Cloud Console
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyberark/SkyArk/master/AzureStealth/AzureStealth.ps1')
Scan-AzureAdmins
Cloud Brute
एक उपकरण जो शीर्ष क्लाउड प्रदाताओं (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode) पर एक कंपनी (लक्ष्य) की अवसंरचना, फ़ाइलों और ऐप्स को खोजने के लिए है।
CloudFox
- CloudFox एक उपकरण है जो क्लाउड अवसंरचना में exploitable हमले के रास्तों को खोजने के लिए है (वर्तमान में केवल AWS और Azure का समर्थन किया गया है, GCP आने वाला है)।
- यह एक enumeration उपकरण है जिसे मैनुअल pentesting के पूरक के रूप में डिज़ाइन किया गया है।
- यह क्लाउड वातावरण के भीतर कोई डेटा नहीं बनाता या संशोधित नहीं करता है।
क्लाउड सुरक्षा उपकरणों की अधिक सूचियाँ
GCP
{{#ref}} gcp-security/ {{#endref}}
Workspace
{{#ref}} workspace-security/ {{#endref}}
AWS
{{#ref}} aws-security/ {{#endref}}
Azure
{{#ref}} azure-security/ {{#endref}}
Attack Graph
Stormspotter एक Azure सदस्यता में संसाधनों का “हमला ग्राफ” बनाता है। यह रेड टीमों और pentesters को हमले की सतह और एक टेनेट के भीतर पिवट अवसरों को दृश्य बनाने में सक्षम बनाता है, और आपके रक्षकों को तेजी से उन्मुख और घटना प्रतिक्रिया कार्य को प्राथमिकता देने के लिए सुपरचार्ज करता है।
Office365
आपको Global Admin या कम से कम Global Admin Reader की आवश्यकता है (लेकिन ध्यान दें कि Global Admin Reader थोड़ा सीमित है)। हालाँकि, ये सीमाएँ कुछ PS मॉड्यूल में प्रकट होती हैं और वेब एप्लिकेशन के माध्यम से सुविधाओं तक पहुँचकर बाईपास की जा सकती हैं।
{{#include ../banners/hacktricks-training.md}}