AWS Pentesting

HackTricks का समर्थन करें

मूल जानकारी

AWS वातावरण में पेंटेस्टिंग शुरू करने से पहले, AWS कैसे काम करता है, इसके बारे में कुछ बुनियादी बातें जानना आवश्यक है ताकि आप समझ सकें कि आपको क्या करना है, गलत कॉन्फ़िगरेशन कैसे खोजें और उनका कैसे लाभ उठाएं।

संगठन की पदानुक्रम, IAM और अन्य बुनियादी अवधारणाओं जैसे विचारों को समझाया गया है:

AWS - Basic Information

सीखने के लिए प्रयोगशालाएँ

हमलों का अनुकरण करने के लिए उपकरण:

AWS Pentester/Red Team कार्यप्रणाली

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

एक बार जब आप क्रेडेंशियल्स प्राप्त करने में सफल हो जाते हैं, तो आपको यह जानने की आवश्यकता है कि ये क्रेडेंशियल्स किसके हैं, और इनके पास क्या पहुँच है, इसलिए आपको कुछ बुनियादी गणना करने की आवश्यकता है:

बुनियादी गणना

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

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

संगठन Enumeration

AWS - Organizations Enum

IAM Enumeration

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

यदि आपके पास IAM को enumerate करने के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो आप उन्हें चुराने के लिए ब्रूटफोर्स कर सकते हैंसंख्यांकन और ब्रूट-फोर्सिंग कैसे करें की जांच करें:

AWS - IAM, Identity Center & SSO Enum

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

सेवाओं का संख्यांकन, पोस्ट-एक्सप्लॉइटेशन और स्थिरता

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

AWS - Services

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

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

AWS - Unauthenticated Enum & Access

विशेषाधिकार वृद्धि

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

AWS - Privilege Escalation

सार्वजनिक रूप से उजागर सेवाएँ

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

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

संगठन को समझौता करना

रूट/प्रबंधन खाते से

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

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

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

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

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

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

स्वचालित उपकरण

पुनः खोज

  • 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 शोषण ढांचा है, जिसे क्लाउड वातावरण के खिलाफ आक्रामक सुरक्षा परीक्षण के लिए डिज़ाइन किया गया है। यह सूचीबद्ध कर सकता है, गलत कॉन्फ़िगरेशन खोज सकता है और उन्हें शोषित कर सकता है। आप 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: प्रिंसिपल मैपर (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 ...

References

HackTricks का समर्थन करें

Last updated