AWS Pentesting

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मौलिक जानकारी

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

संगठन वर्गीकरण, IAM और अन्य मौलिक अवधारणाएं इसमें स्पष्ट की गई हैं:

सीखने के लिए लैब

हमले करने के लिए उपकरण:

AWS पेंटेस्टर/रेड टीम मेथडोलॉजी

AWS माहौल की मानवीय समृद्धि के लिए एक महत्वपूर्ण बिंदु है: कौन सेवाएं उपयोग की जा रही हैं, क्या अनावरण किया जा रहा है, किसके पास क्या पहुंच है, और आंतरिक AWS सेवाएं और बाह्य सेवाएं कैसे जुड़ी हैं।

रेड टीम के दृष्टिकोण से, AWS माहौल को कंप्रमाइज करने का पहला कदम कुछ क्रेडेंशियल्स प्राप्त करना है। यहाँ आपके पास इसे कैसे करने के कुछ विचार हैं:

  • github में लीक (या समान) - OSINT

  • सोशल इंजीनियरिंग

  • पासवर्ड पुनः उपयोग (पासवर्ड लीक)

  • AWS-होस्टेड एप्लिकेशन में वंशवाद

  • सर्वर साइड रिक्वेस्ट फॉर्जरी मेटाडेटा एंडपॉइंट तक पहुंच

  • स्थानीय फ़ाइल पढ़ें

  • /home/USERNAME/.aws/credentials

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

  • 3rd पार्टी उल्लंघित

  • आंतरिक कर्मचारी

  • कोग्निटो क्रेडेंशियल्स

या अप्रमाणित सेवा को कंप्रमाइज करके:

या यदि आप समीक्षा कर रहे हैं तो आप सिर्फ इन भूमिकाओं के लिए क्रेडेंशियल्स मांग सकते हैं:

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

मौलिक गणना

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

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

संगठन जाँच

IAM जाँच

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

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

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

सेवाओं का नामीकरण, पोस्ट-एक्सप्लोइटेशन और स्थिरता

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

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

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

विशेषाधिकार उन्नति

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

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

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

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

संगठन को कमजोर करना

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

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

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

  • प्रबंधन खाते को कंप्रमाइज़ करें और बच्चों के खातों की आईडी और भूमिकाओं के नाम (डिफ़ॉल्ट रूप से OrganizationAccountAccessRole) का पता लगाएं जो प्रबंधन खाते को प्रशासक के रूप में पहुंचने की अनुमति देती है।

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

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

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

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

जासूसी

  • 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 एक मल्टी-क्लाउड टूल है जो एसेट्स (होस्टनेम्स, आईपी पते) को क्लाउड प्रदाताओं से प्राप्त करने में मदद करता है।

  • cloudmapper: CloudMapper आपको अपने अमेज़न वेब सेवाओं (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 एक उपयोगकर्ता ग्राफ़ दृश्य द्वारा समर्थित Neo4j डेटाबेस द्वारा एकत्रित करता है और संबंधों को सेवाओं और सिस्टम सहित जैसे क्लाउड बुनियादी ढांचा, SaaS एप्लिकेशन, सुरक्षा नियंत्रण, और अधिक से।

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

  • aws_public_ips: यह एक उपकरण है जो एक AWS खाते से संबंधित सभी सार्वजनिक आईपी पतों (IPv4/IPv6 दोनों) को प्राप्त करने के लिए है।

Privesc & Exploiting

  • SkyArk: स्कैन किए गए AWS वातावरण में सबसे विशेषाधिकारी उपयोगकर्ताओं का पता लगाएं, सहित AWS शैडो एडमिन्स। यह पावरशेल का उपयोग करता है। आप 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 डिक्शनरी के अंदर विशेषाधिकारी अनुमतियों की परिभाषा पा सकते हैं।

  • ध्यान दें कि 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 उपयोगकर्ताओं और भूमिकाएँ मॉडल करता है, जो विशेषाधिकार उन्नति की जांच और एक हमलावर जो संसाधन या कार्रवाई तक पहुंच प्राप्त करने के लिए एक विकल्पी पथ के लिए जांच करने की संभावना देता है। आप https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing में _edges.py समाप्त होने वाले फ़ाइलों में प्रिवेस्क पथ खोजने के लिए उपयोग किए गए अनुमतियों की जांच कर सकते हैं।

# 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 रिपोर्ट उत्पन्न करता है। यह आपको संभावित रूप से **अधिकाधिकाधिकाधिकाधिकाधिकाध

# 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 एक ओपन-सोर्स परियोजना है जो बादल बुनियादी संरचनाओं में सुरक्षा जोखिमों का पता लगाने की अनुमति देने के लिए डिज़ाइन की गई है, जिसमें शामिल हैं: अमेज़न वेब सेवाएं (AWS), माइक्रोसॉफ्ट एज़्यूर, गूगल क्लाउड प्लेटफ़ॉर्म (GCP), ओरेकल क्लाउड इंफ्रास्ट्रक्चर (OCI), और गिटहब (यह शैडोएडमिन्स की तलाश नहीं करता)।

./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: क्लाउड सुरक्षा सुइट (पायथन2.7 का उपयोग करता है और अनुरक्षित लगता है)

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

निरंतर मंजूरी

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

  • pacbot: नीति के रूप में कोड बॉट (पैकबॉट) एक प्लेटफ़ॉर्म है जो निरंतर अनुपालन मॉनिटरिंग, अनुपालन रिपोर्टिंग और सुरक्षा स्वचालन के लिए है। पैकबॉट में, सुरक्षा और अनुपालन नीत

# 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 ...

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated