AWS Pentesting
Reading time: 17 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
Basic Information
AWS वातावरण में pentesting शुरू करने से पहले, कुछ बुनियादी बातें हैं जो आपको जाननी चाहिए कि AWS कैसे काम करता है, ताकि आप समझ सकें कि आपको क्या करना है, गलत कॉन्फ़िगरेशन कैसे खोजें और उनका कैसे लाभ उठाएं।
संगठन की पदानुक्रम, IAM और अन्य बुनियादी अवधारणाओं जैसे विचारों को समझाया गया है:
Labs to learn
- https://github.com/RhinoSecurityLabs/cloudgoat
- https://github.com/BishopFox/iam-vulnerable
- https://github.com/nccgroup/sadcloud
- https://github.com/bridgecrewio/terragoat
- https://github.com/ine-labs/AWSGoat
- http://flaws.cloud/
- http://flaws2.cloud/
Tools to simulate attacks:
- https://github.com/Datadog/stratus-red-team/
- https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main
AWS Pentester/Red Team Methodology
AWS वातावरण का ऑडिट करने के लिए यह बहुत महत्वपूर्ण है: कौन सी सेवाएं उपयोग की जा रही हैं, क्या प्रदर्शित किया जा रहा है, किसके पास पहुँच है, और आंतरिक AWS सेवाएं और बाहरी सेवाएं कैसे जुड़ी हुई हैं।
Red Team के दृष्टिकोण से, AWS वातावरण को समझौता करने का पहला कदम कुछ क्रेडेंशियल्स प्राप्त करना है। यहां कुछ विचार दिए गए हैं कि आप ऐसा कैसे कर सकते हैं:
- github (या समान) में लीक - OSINT
- सामाजिक इंजीनियरिंग
- पासवर्ड पुन: उपयोग (पासवर्ड लीक)
- AWS-होस्टेड अनुप्रयोगों में कमजोरियां
- सर्वर साइड अनुरोध धोखाधड़ी जिसमें मेटाडेटा एंडपॉइंट तक पहुंच है
- स्थानीय फ़ाइल पढ़ें
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
- 3rd पार्टियों के भंग
- आंतरिक कर्मचारी
- Cognito क्रेडेंशियल्स
या अप्रमाणित सेवा को समझौता करके जो प्रदर्शित है:
AWS - Unauthenticated Enum & Access
या यदि आप एक समीक्षा कर रहे हैं तो आप बस इन भूमिकाओं के साथ क्रेडेंशियल्स के लिए पूछ सकते हैं:
AWS - Permissions for a Pentest
note
एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि ये क्रेडेंशियल्स किसके हैं, और इनके पास क्या पहुंच है, इसलिए आपको कुछ बुनियादी गणना करने की आवश्यकता है:
Basic Enumeration
SSRF
यदि आपने AWS के अंदर एक मशीन में SSRF पाया है, तो ट्रिक्स के लिए इस पृष्ठ की जांच करें:
Whoami
आपको जानने की पहली चीजों में से एक यह है कि आप कौन हैं (आप किस खाते में हैं और AWS वातावरण के बारे में अन्य जानकारी):
# 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
caution
ध्यान दें कि कंपनियां canary tokens का उपयोग कर सकती हैं यह पहचानने के लिए कि tokens चुराए जा रहे हैं और उपयोग किए जा रहे हैं। इसका सुझाव दिया जाता है कि उपयोग करने से पहले यह जांचें कि क्या एक token एक canary token है या नहीं।
अधिक जानकारी के लिए इस पृष्ठ की जांच करें.
Org Enumeration
IAM Enumeration
यदि आपके पास पर्याप्त अनुमतियाँ हैं तो AWS खाते के अंदर प्रत्येक इकाई के विशेषाधिकारों की जांच करना आपको यह समझने में मदद करेगा कि आप और अन्य पहचान क्या कर सकते हैं और कैसे विशेषाधिकार बढ़ा सकते हैं।
यदि आपके पास IAM को सूचीबद्ध करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप उन्हें चुराने के लिए ब्रूटफोर्स कर सकते हैं।
सूचीकरण और ब्रूट-फोर्सिंग कैसे करें की जांच करें:
AWS - IAM, Identity Center & SSO Enum
note
अब जब आपके पास अपने क्रेडेंशियल्स के बारे में कुछ जानकारी है (और यदि आप एक रेड टीम हैं तो उम्मीद है कि आप पता नहीं चले हैं)। यह पता लगाने का समय है कि वातावरण में कौन सी सेवाएँ उपयोग की जा रही हैं।
निम्नलिखित अनुभाग में आप कुछ सामान्य सेवाओं को सूचीबद्ध करने के कुछ तरीके देख सकते हैं।
Services Enumeration, Post-Exploitation & Persistence
AWS के पास सेवाओं की एक आश्चर्यजनक मात्रा है, निम्नलिखित पृष्ठ पर आपको बुनियादी जानकारी, सूचीकरण चीटशीट**,** पता लगाने से बचने के तरीके, स्थायीता प्राप्त करने और उनमें से कुछ के बारे में अन्य पोस्ट-एक्सप्लॉइटेशन ट्रिक्स मिलेंगी:
ध्यान दें कि आपको सभी कार्य हाथ से करने की आवश्यकता नहीं है, नीचे इस पोस्ट में आप स्वचालित उपकरणों के बारे में एक अनुभाग पा सकते हैं।
इसके अलावा, इस चरण में आप असत्यापित उपयोगकर्ताओं के लिए अधिक सेवाएँ उजागर कर सकते हैं, आप उन्हें शोषण करने में सक्षम हो सकते हैं:
AWS - Unauthenticated Enum & Access
Privilege Escalation
यदि आप विभिन्न संसाधनों पर कम से कम अपनी अनुमतियों की जांच कर सकते हैं तो आप जांच सकते हैं कि क्या आप आगे की अनुमतियाँ प्राप्त कर सकते हैं। आपको कम से कम उन अनुमतियों पर ध्यान केंद्रित करना चाहिए जो:
Publicly Exposed Services
जब आप AWS सेवाओं को सूचीबद्ध कर रहे थे, तो आप उनमें से कुछ को इंटरनेट पर तत्वों को उजागर करते हुए पा सकते हैं (VM/Containers पोर्ट, डेटाबेस या कतार सेवाएँ, स्नैपशॉट या बाल्टियाँ...)।
एक pentester/red teamer के रूप में आपको हमेशा यह जांचना चाहिए कि क्या आप उनमें संवेदनशील जानकारी / कमजोरियों को खोज सकते हैं क्योंकि वे आपको AWS खाते में आगे की पहुँच प्रदान कर सकते हैं।
इस पुस्तक में आपको जानकारी मिलनी चाहिए कि कैसे उजागर AWS सेवाओं को खोजें और उन्हें कैसे जांचें। उजागर नेटवर्क सेवाओं में कमजोरियों को खोजने के लिए मैं आपको विशिष्ट सेवा के लिए खोजने की सिफारिश करूंगा:
Compromising the Organization
From the root/management account
जब प्रबंधन खाता संगठन में नए खातों का निर्माण करता है, तो एक नया भूमिका नए खाते में बनाया जाता है, जिसे डिफ़ॉल्ट रूप से OrganizationAccountAccessRole
कहा जाता है और प्रबंधन खाते को नए खाते तक पहुँचने के लिए AdministratorAccess नीति दी जाती है।
.png)
तो, एक बच्चे के खाते के रूप में व्यवस्थापक के रूप में पहुँचने के लिए आपको चाहिए:
- प्रबंधन खाते को समझौता करें और बच्चे के खातों के ID और भूमिकाओं के नाम (डिफ़ॉल्ट रूप से OrganizationAccountAccessRole) को खोजें जो प्रबंधन खाते को व्यवस्थापक के रूप में पहुँचने की अनुमति देते हैं।
- बच्चे के खातों को खोजने के लिए AWS कंसोल में संगठनों के अनुभाग पर जाएँ या
aws organizations list-accounts
चलाएँ। - आप भूमिकाओं के नाम सीधे नहीं खोज सकते, इसलिए सभी कस्टम IAM नीतियों की जांच करें और किसी भी नीति को खोजें जो
sts:AssumeRole
को पहले से खोजे गए बच्चे के खातों पर अनुमति देती है। - **प्रबंधन खाते में एक principal को
sts:AssumeRole
अनुमति के साथ बच्चे के खातों में भूमिका पर समझौता करें (भले ही खाता प्रबंधन खाते से किसी को भी अनुकरण करने की अनुमति दे रहा हो, क्योंकि यह एक बाहरी खाता है, विशिष्टsts:AssumeRole
अनुमतियाँ आवश्यक हैं)।
Automated Tools
Recon
- aws-recon: एक मल्टी-थ्रेडेड AWS सुरक्षा-केंद्रित इन्वेंटरी संग्रह उपकरण जो Ruby में लिखा गया है।
# 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 एक मल्टी-क्लाउड टूल है जो क्लाउड प्रदाताओं से एसेट्स (होस्टनेम, आईपी पते) प्राप्त करने के लिए है।
- cloudmapper: CloudMapper आपको आपके Amazon Web Services (AWS) वातावरण का विश्लेषण करने में मदद करता है। इसमें अब सुरक्षा मुद्दों के लिए ऑडिटिंग सहित बहुत अधिक कार्यक्षमता है।
# 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 शोषण ढांचा है, जिसे क्लाउड वातावरण के खिलाफ आक्रामक सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह enumerate कर सकता है, miss-configurations खोज सकता है और उन्हें exploit कर सकता है। आप
user_escalation_methods
dict के अंदर https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 में विशेषाधिकार प्राप्त अनुमतियों की परिभाषा पा सकते हैं। - ध्यान दें कि 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 पहचान और पहुंच प्रबंधन (IAM) की कॉन्फ़िगरेशन में जोखिमों की पहचान करने के लिए है। यह एक खाते में विभिन्न IAM उपयोगकर्ताओं और भूमिकाओं को एक निर्देशित ग्राफ के रूप में मॉडल करता है, जो privilege escalation के लिए और एक हमलावर द्वारा संसाधन या क्रिया तक पहुंच प्राप्त करने के लिए वैकल्पिक पथों की जांच करने की अनुमति देता है। आप privesc पथों को खोजने के लिए उपयोग की जाने वाली permissions को
_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 रिपोर्ट उत्पन्न करता है।
यह आपको संभावित रूप से over privileged ग्राहक, inline और aws policies दिखाएगा और कौन से principals को उन तक पहुंच है। (यह न केवल 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 खातों का मूल्यांकन करता है सबडोमेन हाइजैकिंग कमजोरियों के लिए, जो कि Route53 और CloudFront कॉन्फ़िगरेशन के अलग होने के परिणामस्वरूप होता है।
- ccat: ECR रिपोजिटरी की सूची -> ECR रिपोजिटरी को खींचें -> इसे बैकडोर करें -> बैकडोर की गई छवि को पुश करें
- Dufflebag: Dufflebag एक उपकरण है जो सार्वजनिक Elastic Block Storage (EBS) स्नैपशॉट्स में रहस्यों के लिए खोजता है जो शायद गलती से छोड़ दिए गए हों।
ऑडिट
- cloudsploit: Aqua द्वारा CloudSploit एक ओपन-सोर्स प्रोजेक्ट है जिसे क्लाउड इन्फ्रास्ट्रक्चर खातों में सुरक्षा जोखिमों का पता लगाने के लिए डिज़ाइन किया गया है, जिसमें शामिल हैं: 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 आपको अपरिचित क्लाउड वातावरण में स्थिति की जागरूकता प्राप्त करने में मदद करता है। यह एक ओपन सोर्स कमांड लाइन टूल है जिसे पेनिट्रेशन टेस्टर्स और अन्य आक्रामक सुरक्षा पेशेवरों को क्लाउड इन्फ्रास्ट्रक्चर में शोषण योग्य हमले के रास्ते खोजने में मदद करने के लिए बनाया गया है।
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: क्लाउड सुरक्षा सूट (python2.7 का उपयोग करता है और अप्रबंधित लगता है)
- Zeus: Zeus AWS EC2 / S3 / CloudTrail / CloudWatch / KMS के लिए शक्तिशाली उपकरण है जो सर्वोत्तम हार्डनिंग प्रथाओं के लिए है (अप्रबंधित लगता है)। यह केवल सिस्टम के अंदर डिफ़ॉल्ट कॉन्फ़िगर किए गए क्रेड्स की जांच करता है।
निरंतर ऑडिट
- cloud-custodian: Cloud Custodian सार्वजनिक क्लाउड खातों और संसाधनों का प्रबंधन करने के लिए एक नियम इंजन है। यह उपयोगकर्ताओं को एक अच्छी तरह से प्रबंधित क्लाउड अवसंरचना सक्षम करने के लिए नीतियों को परिभाषित करने की अनुमति देता है, जो सुरक्षित और लागत अनुकूलित दोनों है। यह संगठनों के पास मौजूद कई अस्थायी स्क्रिप्टों को एक हल्के और लचीले उपकरण में समेकित करता है, जिसमें एकीकृत मैट्रिक्स और रिपोर्टिंग होती है।
- pacbot: नीति के रूप में कोड बॉट (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 ...
संदर्भ
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।