AWS Pentesting

HackTricks को समर्थन दें

Basic Information

AWS environment का pentesting शुरू करने से पहले आपको AWS कैसे काम करता है इसके बारे में कुछ मूल बातें जाननी चाहिए ताकि आप समझ सकें कि आपको क्या करना है, misconfigurations कैसे खोजनी है और उन्हें कैसे exploit करना है।

जैसे organization hierarchy, IAM और अन्य मूलभूत अवधारणाओं को समझाया गया है:

AWS - Basic Information

Labs to learn

Tools to simulate attacks:

AWS Pentester/Red Team Methodology

AWS environment का audit करने के लिए यह जानना बहुत महत्वपूर्ण है: कौन से services उपयोग किए जा रहे हैं, क्या exposed है, किसके पास access है, और आंतरिक AWS services और बाहरी services कैसे जुड़े हुए हैं।

Red Team के दृष्टिकोण से, AWS environment को compromise करने का पहला कदम कुछ credentials प्राप्त करना है। यहां कुछ विचार दिए गए हैं कि इसे कैसे किया जा सकता है:

  • github (या समान) में leaks - OSINT

  • Social Engineering

  • Password reuse (password leaks)

  • AWS-Hosted Applications में Vulnerabilities

  • Server Side Request Forgery metadata endpoint तक पहुंच के साथ

  • Local File Read

  • /home/USERNAME/.aws/credentials

  • C:\Users\USERNAME\.aws\credentials

  • 3rd parties breached

  • Internal Employee

  • Cognito credentials

या unauthenticated service को compromise करके जो exposed है:

AWS - Unauthenticated Enum & Access

या यदि आप review कर रहे हैं तो आप बस इन roles के साथ credentials मांग सकते हैं:

AWS - Permissions for a Pentest

एक बार जब आप credentials प्राप्त कर लेते हैं, तो आपको यह जानना होगा कि वे credentials किसके हैं, और उनके पास क्या access है, इसलिए आपको कुछ बुनियादी enumeration करना होगा:

Basic Enumeration

SSRF

यदि आपने AWS के अंदर किसी मशीन में SSRF पाया है तो इस पेज पर ट्रिक्स देखें:

Whoami

पहली चीजों में से एक जो आपको जाननी चाहिए वह है कि आप कौन हैं (किस account में आप हैं और AWS environment के बारे में अन्य जानकारी):

# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user

# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456

# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa

# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document

ध्यान दें कि कंपनियां canary tokens का उपयोग कर सकती हैं यह पहचानने के लिए कि tokens चोरी हो रहे हैं और उपयोग किए जा रहे हैं। इसे उपयोग करने से पहले यह जांचना अनुशंसित है कि token canary token है या नहीं। अधिक जानकारी के लिए इस पेज को देखें

Org Enumeration

AWS - Organizations Enum

IAM Enumeration

यदि आपके पास पर्याप्त अनुमतियाँ हैं, तो AWS खाते के अंदर प्रत्येक इकाई के विशेषाधिकारों की जाँच करना आपको यह समझने में मदद करेगा कि आप और अन्य पहचानें क्या कर सकते हैं और विशेषाधिकार कैसे बढ़ा सकते हैं

यदि आपके पास IAM को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप उन्हें bruteforce करके चुरा सकते हैंसूचीकरण और brute-forcing कैसे करें इसकी जाँच करें:

AWS - IAM, Identity Center & SSO Enum

अब जब आपके पास अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है (और यदि आप एक red team हैं तो उम्मीद है कि आप पता नहीं चले हैं)। अब यह पता लगाने का समय है कि पर्यावरण में कौन सी सेवाएँ उपयोग की जा रही हैं। निम्नलिखित अनुभाग में आप कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके देख सकते हैं।

Services Enumeration, Post-Exploitation & Persistence

AWS में सेवाओं की एक आश्चर्यजनक मात्रा है, निम्नलिखित पृष्ठ पर आपको मूल जानकारी, सूचीकरण cheatsheets**,** पता लगाने से बचने, स्थायित्व प्राप्त करने, और उनमें से कुछ के बारे में अन्य post-exploitation ट्रिक्स मिलेंगे:

AWS - Services

ध्यान दें कि आपको सारा काम मैन्युअल रूप से करने की आवश्यकता नहीं है, इस पोस्ट के नीचे आप स्वचालित उपकरणों के बारे में एक अनुभाग पा सकते हैं।

इसके अलावा, इस चरण में आपने अप्रमाणित उपयोगकर्ताओं के लिए अधिक सेवाएँ उजागर की हो सकती हैं, आप उन्हें शोषित करने में सक्षम हो सकते हैं:

AWS - Unauthenticated Enum & Access

Privilege Escalation

यदि आप कम से कम अपने स्वयं के अनुमतियों की जाँच कर सकते हैं विभिन्न संसाधनों पर तो आप अधिक अनुमतियाँ प्राप्त करने में सक्षम हो सकते हैं। आपको कम से कम उन अनुमतियों पर ध्यान केंद्रित करना चाहिए जो निम्नलिखित में इंगित की गई हैं:

AWS - Privilege Escalation

Publicly Exposed Services

AWS सेवाओं को सूचीबद्ध करते समय आप उनमें से कुछ को इंटरनेट पर तत्वों को उजागर करते हुए पा सकते हैं (VM/Containers पोर्ट्स, डेटाबेस या कतार सेवाएँ, snapshots या buckets...)। एक pentester/red teamer के रूप में आपको हमेशा यह जांचना चाहिए कि क्या आप उनमें संवेदनशील जानकारी / कमजोरियाँ पा सकते हैं क्योंकि वे आपको AWS खाते में और अधिक पहुंच प्रदान कर सकते हैं

इस पुस्तक में आपको उजागर AWS सेवाओं को खोजने और उनकी जांच करने के बारे में जानकारी मिलनी चाहिए। उजागर नेटवर्क सेवाओं में कमजोरियों को खोजने के बारे में मैं आपको विशिष्ट सेवा के लिए खोजने की सलाह दूंगा:

Compromising the Organization

From the root/management account

जब प्रबंधन खाता संगठन में नए खाते बनाता है, तो एक नई भूमिका नए खाते में बनाई जाती है, जिसे डिफ़ॉल्ट रूप से OrganizationAccountAccessRole नाम दिया जाता है और प्रबंधन खाते को नए खाते तक पहुँचने के लिए AdministratorAccess नीति दी जाती है।

इसलिए, एक child account के रूप में व्यवस्थापक तक पहुँचने के लिए आपको आवश्यकता है:

  • प्रबंधन खाते से समझौता करें और बच्चों के खातों के ID और भूमिका के नाम (डिफ़ॉल्ट रूप से OrganizationAccountAccessRole) को खोजें जो प्रबंधन खाते को व्यवस्थापक के रूप में पहुँचने की अनुमति देता है।

  • बच्चों के खातों को खोजने के लिए aws कंसोल में संगठनों के अनुभाग पर जाएं या aws organizations list-accounts चलाएं

  • आप सीधे भूमिकाओं के नाम नहीं पा सकते हैं, इसलिए सभी कस्टम IAM नीतियों की जाँच करें और किसी भी को खोजें जो sts:AssumeRole को पहले से खोजे गए बच्चों के खातों पर अनुमति देता है

  • प्रबंधन खाते में sts:AssumeRole अनुमति के साथ एक प्रमुख से समझौता करें जो बच्चों के खातों में भूमिका पर है (भले ही खाता किसी को भी प्रबंधन खाते से प्रतिरूपण करने की अनुमति दे रहा हो, क्योंकि यह एक बाहरी खाता है, विशिष्ट sts:AssumeRole अनुमतियाँ आवश्यक हैं)।

Automated Tools

Recon

  • aws-recon: एक बहु-थ्रेडेड AWS सुरक्षा-केंद्रित इन्वेंटरी संग्रह उपकरण जो रूबी में लिखा गया है।

# Install
gem install aws_recon

# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
  • cloudlist: Cloudlist एक multi-cloud टूल है जो Cloud Providers से Assets (Hostnames, IP Addresses) प्राप्त करने के लिए उपयोग होता है।

  • cloudmapper: CloudMapper आपकी Amazon Web Services (AWS) environments का विश्लेषण करने में मदद करता है। इसमें अब और भी अधिक कार्यक्षमता शामिल है, जिसमें सुरक्षा मुद्दों के लिए ऑडिटिंग भी शामिल है।

# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}

# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev

# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev

# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev

# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev

# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev

# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev

python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
  • cartography: Cartography एक Python टूल है जो Neo4j डेटाबेस द्वारा संचालित एक सहज ग्राफ़ दृश्य में इंफ्रास्ट्रक्चर एसेट्स और उनके बीच के संबंधों को एकत्रित करता है।

# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*

# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt  --neo4j-user neo4j
  • starbase: Starbase सेवाओं और प्रणालियों से संपत्तियों और संबंधों को एकत्र करता है, जिसमें क्लाउड इन्फ्रास्ट्रक्चर, SaaS एप्लिकेशन, सुरक्षा नियंत्रण और अधिक शामिल हैं, और इसे Neo4j डेटाबेस द्वारा समर्थित एक सहज ग्राफ़ दृश्य में प्रस्तुत करता है।

  • aws-inventory: (python2 का उपयोग करता है) यह एक उपकरण है जो एक खाते में बनाए गए सभी AWS संसाधनों को खोजने की कोशिश करता है

  • aws_public_ips: यह एक उपकरण है जो AWS खाते से जुड़े सभी सार्वजनिक IP पतों (दोनों IPv4/IPv6) को प्राप्त करता है

Privesc & Exploiting

  • SkyArk: स्कैन किए गए AWS वातावरण में सबसे विशेषाधिकार प्राप्त उपयोगकर्ताओं की खोज करें, जिसमें AWS Shadow Admins भी शामिल हैं। यह powershell का उपयोग करता है। आप https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1 में Check-PrivilegedPolicy फ़ंक्शन में विशेषाधिकार प्राप्त नीतियों की परिभाषा पा सकते हैं।

  • pacu: Pacu एक ओपन-सोर्स AWS exploitation framework है, जिसे क्लाउड वातावरण के खिलाफ आक्रामक सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह गणना कर सकता है, गलत कॉन्फ़िगरेशन पा सकता है और उनका शोषण कर सकता है। आप https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 में user_escalation_methods dict के अंदर विशेषाधिकार प्राप्त अनुमतियों की परिभाषा पा सकते हैं।

  • ध्यान दें कि pacu केवल आपके अपने privescs पथों की जांच करता है (पूरे खाते की नहीं)।

# Install
## Feel free to use venvs
pip3 install pacu

# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
  • PMapper: Principal Mapper (PMapper) एक स्क्रिप्ट और लाइब्रेरी है जो AWS खाते या AWS संगठन के लिए AWS Identity and Access Management (IAM) के कॉन्फ़िगरेशन में जोखिमों की पहचान करने के लिए है। यह एक खाते में विभिन्न IAM Users और Roles को एक निर्देशित ग्राफ़ के रूप में मॉडल करता है, जो privilege escalation और वैकल्पिक रास्तों की जांच को सक्षम बनाता है जिनका उपयोग एक हमलावर AWS में किसी संसाधन या क्रिया तक पहुंच प्राप्त करने के लिए कर सकता है। आप permissions used to find privesc पथों की जांच कर सकते हैं जिनके फाइलनाम _edges.py में समाप्त होते हैं https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing में।

# Install
pip install principalmapper

# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions

# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins

# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
  • cloudsplaining: Cloudsplaining एक AWS IAM सुरक्षा मूल्यांकन उपकरण है जो न्यूनतम विशेषाधिकारों के उल्लंघनों की पहचान करता है और एक जोखिम-प्राथमिकता वाली HTML रिपोर्ट उत्पन्न करता है। यह आपको संभावित अधिक विशेषाधिकार प्राप्त ग्राहक, इनलाइन और aws नीतियों और किन प्रमुखों को उन तक पहुंच है दिखाएगा। (यह केवल privesc के लिए ही नहीं बल्कि अन्य प्रकार की दिलचस्प अनुमतियों के लिए भी जांच करता है, उपयोग करने की सिफारिश की जाती है)।

# Install
pip install cloudsplaining

# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev

# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
  • cloudjack: CloudJack AWS खातों का आकलन करता है subdomain hijacking vulnerabilities के लिए जो decoupled Route53 और CloudFront configurations के परिणामस्वरूप होती हैं।

  • ccat: List ECR repos -> Pull ECR repo -> Backdoor it -> Push backdoored image

  • Dufflebag: Dufflebag एक उपकरण है जो सार्वजनिक Elastic Block Storage (**EBS) snapshots में secrets की searches करता है जो गलती से छोड़े जा सकते हैं।

Audit

  • cloudsploit: CloudSploit by Aqua एक ओपन-सोर्स प्रोजेक्ट है जिसे cloud infrastructure खातों में security risks का पता लगाने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI), और GitHub (यह ShadowAdmins की खोज नहीं करता)।

./index.js --csv=file.csv --console=table --config ./config.js

# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
  • Prowler: Prowler एक ओपन सोर्स सुरक्षा उपकरण है जो AWS सुरक्षा सर्वोत्तम प्रथाओं के आकलन, ऑडिट, घटना प्रतिक्रिया, निरंतर निगरानी, सख्ती और फोरेंसिक तैयारी करने के लिए उपयोग किया जाता है।

# Install python3, jq and git
# Install
pip install prowler
prowler -v

# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
  • CloudFox: CloudFox आपको अपरिचित cloud environments में स्थिति जागरूकता प्राप्त करने में मदद करता है। यह एक open source command line tool है जिसे penetration testers और अन्य offensive security professionals को cloud infrastructure में exploitable attack paths खोजने में मदद करने के लिए बनाया गया है।

cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Scout Suite एक ओपन सोर्स मल्टी-क्लाउड सिक्योरिटी-ऑडिटिंग टूल है, जो क्लाउड वातावरण की सुरक्षा स्थिति का आकलन करने में सक्षम बनाता है।

# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help

# Get info
scout aws -p dev
  • cs-suite: Cloud Security Suite (python2.7 का उपयोग करता है और अप्रचलित लगता है)

  • Zeus: Zeus AWS EC2 / S3 / CloudTrail / CloudWatch / KMS के लिए एक शक्तिशाली टूल है जो सर्वोत्तम हार्डनिंग प्रथाओं के लिए है (अप्रचलित लगता है)। यह केवल सिस्टम के अंदर डिफ़ॉल्ट कॉन्फ़िगर किए गए क्रेड्स की जांच करता है।

Constant Audit

  • cloud-custodian: Cloud Custodian सार्वजनिक क्लाउड खातों और संसाधनों के प्रबंधन के लिए एक नियम इंजन है। यह उपयोगकर्ताओं को नीतियों को परिभाषित करने की अनुमति देता है ताकि एक अच्छी तरह से प्रबंधित क्लाउड इन्फ्रास्ट्रक्चर सक्षम हो, जो सुरक्षित और लागत अनुकूलित हो। यह संगठनों के कई एडहॉक स्क्रिप्ट्स को एक हल्के और लचीले टूल में समेकित करता है, जिसमें एकीकृत मेट्रिक्स और रिपोर्टिंग होती है।

  • pacbot: Policy as Code Bot (PacBot) एक प्लेटफ़ॉर्म है जो निरंतर अनुपालन निगरानी, अनुपालन रिपोर्टिंग और क्लाउड के लिए सुरक्षा स्वचालन के लिए है। PacBot में, सुरक्षा और अनुपालन नीतियों को कोड के रूप में लागू किया जाता है। PacBot द्वारा खोजे गए सभी संसाधनों का इन नीतियों के खिलाफ मूल्यांकन किया जाता है ताकि नीति अनुरूपता का आकलन किया जा सके। PacBot ऑटो-फिक्स फ्रेमवर्क नीति उल्लंघनों का पूर्वनिर्धारित कार्यों को लेकर स्वचालित रूप से प्रतिक्रिया देने की क्षमता प्रदान करता है।

  • streamalert: StreamAlert एक सर्वरलेस, वास्तविक-समय डेटा विश्लेषण फ्रेमवर्क है जो आपको किसी भी वातावरण से डेटा को इनजेस्ट, विश्लेषण और अलर्ट करने की शक्ति देता है, डेटा स्रोतों और अलर्टिंग लॉजिक का उपयोग करके जिसे आप परिभाषित करते हैं। कंप्यूटर सुरक्षा टीमें StreamAlert का उपयोग हर दिन टेराबाइट्स लॉग डेटा को स्कैन करने के लिए करती हैं ताकि घटना का पता लगाने और प्रतिक्रिया देने के लिए।

DEBUG: AWS cli अनुरोधों को कैप्चर करें

# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080

# Capture with burp nor verifying ssl
aws --no-verify-ssl ...

# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem

# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem

# Run aws cli normally trusting burp cert
aws ...

संदर्भ

HackTricks को समर्थन दें

Last updated