AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail आपके AWS वातावरण के भीतर गतिविधि को रिकॉर्ड और मॉनिटर करता है। यह विस्तृत इवेंट लॉग्स कैप्चर करता है, जिसमें कौन, कब, और कहाँ से AWS संसाधनों के साथ सभी इंटरैक्शन किए गए थे। यह परिवर्तनों और क्रियाओं का एक ऑडिट ट्रेल प्रदान करता है, जो सुरक्षा विश्लेषण, अनुपालन ऑडिटिंग, और संसाधन परिवर्तन ट्रैकिंग में सहायता करता है। CloudTrail उपयोगकर्ता और संसाधन व्यवहार को समझने, सुरक्षा स्थिति को बढ़ाने, और नियामक अनुपालन सुनिश्चित करने के लिए आवश्यक है।
प्रत्येक लॉग किए गए इवेंट में शामिल होते हैं:
कॉल किए गए API का नाम:
eventName
कॉल की गई सेवा:
eventSource
समय:
eventTime
IP पता:
SourceIPAddress
एजेंट विधि:
userAgent
. उदाहरण:Signing.amazonaws.com - AWS Management Console से
console.amazonaws.com - खाते का रूट उपयोगकर्ता
lambda.amazonaws.com - AWS Lambda
अनुरोध पैरामीटर:
requestParameters
प्रतिक्रिया तत्व:
responseElements
इवेंट्स को लगभग हर 5 मिनट में एक नए लॉग फ़ाइल में JSON फ़ाइल में लिखा जाता है, इन्हें CloudTrail द्वारा रखा जाता है और अंततः, लॉग फ़ाइलें लगभग 15 मिनट बाद S3 में वितरित की जाती हैं। CloudTrails लॉग्स को अकाउंट्स और क्षेत्रों में एकत्रित किया जा सकता है। CloudTrail लॉग फ़ाइल की अखंडता का उपयोग करने की अनुमति देता है ताकि यह सुनिश्चित किया जा सके कि आपकी लॉग फ़ाइलें CloudTrail द्वारा आपको वितरित किए जाने के बाद अपरिवर्तित रही हैं। यह लॉग्स के अंदर एक SHA-256 हैश बनाता है। नए लॉग्स का एक sha-256 हैश हर घंटे बनाया जाता है। जब एक Trail बनाया जाता है, तो इवेंट चयनकर्ता आपको ट्रेल को लॉग करने के लिए इंगित करने की अनुमति देंगे: प्रबंधन, डेटा या अंतर्दृष्टि इवेंट्स।
लॉग्स को एक S3 बकेट में सहेजा जाता है। डिफ़ॉल्ट रूप से सर्वर साइड एन्क्रिप्शन (SSE-S3) का उपयोग किया जाता है ताकि AWS उन लोगों के लिए सामग्री को डिक्रिप्ट कर सके जिनके पास इसे एक्सेस करने की अनुमति है, लेकिन अतिरिक्त सुरक्षा के लिए आप SSE को KMS और अपनी खुद की कुंजियों के साथ उपयोग कर सकते हैं।
लॉग्स को एक S3 बकेट में इस नाम प्रारूप के साथ संग्रहीत किया जाता है:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
बकेट का नाम:
aws-cloudtrail-logs-<accountid>-<random>
उदाहरण:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
प्रत्येक फ़ोल्डर के अंदर प्रत्येक लॉग का नाम इस प्रारूप का पालन करेगा: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
लॉग फ़ाइल नामकरण सम्मेलन
इसके अलावा, डाइजेस्ट फ़ाइलें (फ़ाइल अखंडता की जांच करने के लिए) उसी बकेट में होंगी:
कई अकाउंट्स से लॉग्स को एकत्रित करना
उस AWS अकाउंट में एक ट्रायल बनाएं जहां आप लॉग फ़ाइलों को वितरित करना चाहते हैं
गंतव्य S3 बकेट पर अनुमतियाँ लागू करें जो CloudTrail के लिए क्रॉस-अकाउंट एक्सेस की अनुमति देती हैं और प्रत्येक AWS अकाउंट को अनुमति देती हैं जिसे एक्सेस की आवश्यकता है
अन्य AWS अकाउंट्स में एक नया ट्रेल बनाएं और चरण 1 में बनाए गए बकेट का उपयोग करने का चयन करें
हालांकि, भले ही आप सभी लॉग्स को एक ही S3 बकेट में सहेज सकते हैं, आप एकल AWS अकाउंट से संबंधित CloudWatch लॉग्स में कई अकाउंट्स से CloudTrail लॉग्स को एकत्रित नहीं कर सकते।
याद रखें कि एक अकाउंट में विभिन्न Trails हो सकते हैं जो CloudTrail से सक्षम हैं और विभिन्न बकेट्स में समान (या अलग) लॉग्स संग्रहीत कर सकते हैं।
सभी संगठन अकाउंट्स से 1 में Cloudtrail
जब एक CloudTrail बनाया जाता है, तो यह संकेत देना संभव है कि सभी संगठन अकाउंट्स के लिए CloudTrail को सक्रिय करें और लॉग्स को केवल 1 बकेट में प्राप्त करें:
इस तरह आप सभी अकाउंट्स के सभी क्षेत्रों में आसानी से CloudTrail को कॉन्फ़िगर कर सकते हैं और लॉग्स को 1 अकाउंट में केंद्रीकृत कर सकते हैं (जिसे आपको सुरक्षित रखना चाहिए)।
लॉग फ़ाइलों की जाँच
आप यह जांच सकते हैं कि लॉग्स को बदला नहीं गया है, इसे चलाकर
Logs to CloudWatch
CloudTrail स्वचालित रूप से लॉग्स को CloudWatch पर भेज सकता है ताकि आप अलर्ट सेट कर सकें जो आपको चेतावनी देते हैं जब संदिग्ध गतिविधियाँ की जाती हैं। ध्यान दें कि CloudTrail को लॉग्स को CloudWatch पर भेजने की अनुमति देने के लिए एक role बनानी होगी जो उस क्रिया की अनुमति देती है। यदि संभव हो, तो इन क्रियाओं को करने के लिए AWS डिफ़ॉल्ट role का उपयोग करने की सिफारिश की जाती है। यह role CloudTrail को अनुमति देगा:
CreateLogStream: यह CloudWatch Logs लॉग स्ट्रीम्स बनाने की अनुमति देता है
PutLogEvents: CloudTrail लॉग्स को CloudWatch Logs लॉग स्ट्रीम में भेजने की अनुमति देता है
Event History
CloudTrail Event History आपको एक तालिका में रिकॉर्ड किए गए लॉग्स का निरीक्षण करने की अनुमति देता है:
Insights
CloudTrail Insights स्वचालित रूप से CloudTrail ट्रेल्स से लिखने वाले प्रबंधन घटनाओं का विश्लेषण करता है और आपको असामान्य गतिविधि के बारे में चेतावनी देता है। उदाहरण के लिए, यदि TerminateInstance
घटनाओं में वृद्धि होती है जो स्थापित बेसलाइनों से भिन्न होती है, तो आप इसे एक Insight घटना के रूप में देखेंगे। ये घटनाएँ असामान्य API गतिविधि को ढूंढना और प्रतिक्रिया देना पहले से कहीं अधिक आसान बनाती हैं।
Insights उसी बकेट में संग्रहीत होते हैं जैसे CloudTrail लॉग्स: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Security
CloudTrail Log File Integrity |
|
Stop unauthorized access |
|
Prevent log files from being deleted |
|
Access Advisor
AWS Access Advisor पिछले 400 दिनों के AWS CloudTrail लॉग्स पर निर्भर करता है। CloudTrail AWS खाते में किए गए AWS API कॉल्स और संबंधित घटनाओं का इतिहास कैप्चर करता है। Access Advisor इस डेटा का उपयोग दिखाने के लिए करता है कि सेवाओं को आखिरी बार कब एक्सेस किया गया था। CloudTrail लॉग्स का विश्लेषण करके, Access Advisor यह निर्धारित कर सकता है कि किसी IAM उपयोगकर्ता या role ने किन AWS सेवाओं का एक्सेस किया और वह एक्सेस कब हुआ। इससे AWS प्रशासकों को अनुमतियों को परिष्कृत करने के बारे में सूचित निर्णय लेने में मदद मिलती है, क्योंकि वे उन सेवाओं की पहचान कर सकते हैं जिन्हें लंबे समय से एक्सेस नहीं किया गया है और वास्तविक उपयोग पैटर्न के आधार पर अत्यधिक व्यापक अनुमतियों को संभावित रूप से कम कर सकते हैं।
इसलिए, Access Advisor उपयोगकर्ताओं को दी जा रही अनावश्यक अनुमतियों के बारे में सूचित करता है ताकि व्यवस्थापक उन्हें हटा सकें
Actions
Enumeration
CSV Injection
CloudTrail के अंदर एक CVS injection करना संभव है जो मनमाना कोड निष्पादित करेगा यदि लॉग्स को CSV में निर्यात किया जाता है और Excel के साथ खोला जाता है। निम्नलिखित कोड एक खराब Trail नाम के साथ लॉग प्रविष्टि उत्पन्न करेगा जिसमें payload शामिल है:
CSV इंजेक्शन के बारे में अधिक जानकारी के लिए पेज देखें:
इस विशेष तकनीक के बारे में अधिक जानकारी के लिए देखें https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
डिटेक्शन बायपास करें
HoneyTokens बायपास
Honeyokens को संवेदनशील जानकारी के एक्सफिल्ट्रेशन का पता लगाने के लिए बनाया गया है। AWS के मामले में, ये AWS कुंजियाँ हैं जिनके उपयोग की निगरानी की जाती है, यदि कोई उस कुंजी के साथ कोई कार्रवाई करता है, तो किसी ने उस कुंजी को चुरा लिया होगा।
हालांकि, Canarytokens, SpaceCrab, SpaceSiren द्वारा बनाए गए Honeytokens या तो पहचानने योग्य खाता नाम का उपयोग कर रहे हैं या अपने सभी ग्राहकों के लिए एक ही AWS खाता ID का उपयोग कर रहे हैं। इसलिए, यदि आप खाता नाम और/या खाता ID को प्राप्त कर सकते हैं बिना Cloudtrail को कोई लॉग बनाने के लिए, तो आप जान सकते हैं कि कुंजी एक honeytoken है या नहीं।
Pacu के पास कुछ नियम हैं यह पता लगाने के लिए कि कुंजी Canarytokens, SpaceCrab, SpaceSiren** से संबंधित है या नहीं:**
यदि
canarytokens.org
भूमिका नाम में दिखाई देता है या खाता ID534261010715
त्रुटि संदेश में दिखाई देती है।हाल ही में परीक्षण करते समय, वे खाता
717712589309
का उपयोग कर रहे हैं और अभी भी नाम मेंcanarytokens.com
स्ट्रिंग है।यदि
SpaceCrab
त्रुटि संदेश में भूमिका नाम में दिखाई देता हैSpaceSiren उपयोगकर्ता नाम उत्पन्न करने के लिए uuids का उपयोग करता है:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
यदि नाम यादृच्छिक रूप से उत्पन्न जैसा दिखता है, तो उच्च संभावनाएँ हैं कि यह एक HoneyToken है।
कुंजी ID से खाता ID प्राप्त करें
आप एक्सेस कुंजी के अंदर एन्कोडेड से खाता ID प्राप्त कर सकते हैं जैसा कि यहां समझाया गया है और अपने Honeytokens AWS खातों की सूची के साथ खाता ID की जांच करें:
Check more information in the orginal research.
लॉग उत्पन्न न करें
इसका सबसे प्रभावी तरीका वास्तव में एक सरल है। बस उस कुंजी का उपयोग करें जो आपने अभी-अभी किसी सेवा तक पहुंचने के लिए अपने हमलावर खाते के अंदर पाई है। यह CloudTrail को आपके अपने AWS खाते के अंदर लॉग उत्पन्न करेगा और पीड़ित के अंदर नहीं।
बात यह है कि आउटपुट आपको एक त्रुटि दिखाएगा जिसमें खाता आईडी और खाता नाम का संकेत मिलेगा ताकि आप देख सकें कि यह एक हनीटोकन है या नहीं।
लॉग के बिना AWS सेवाएं
अतीत में कुछ AWS सेवाएं थीं जो CloudTrail को लॉग नहीं भेजती थीं (एक सूची यहां पाएं)। उन सेवाओं में से कुछ त्रुटि के साथ प्रतिक्रिया देंगी जिसमें कुंजी भूमिका का ARN शामिल होगा यदि कोई अनधिकृत व्यक्ति (हनीटोकन कुंजी) इसे एक्सेस करने का प्रयास करता है।
इस तरह, एक हमलावर बिना किसी लॉग को ट्रिगर किए कुंजी का ARN प्राप्त कर सकता है। ARN में हमलावर AWS खाता आईडी और नाम देख सकता है, हनीटोकन की कंपनियों के खाते की आईडी और नाम जानना आसान है, इसलिए इस तरह हमलावर पहचान सकता है कि टोकन हनीटोकन है या नहीं।
ध्यान दें कि सभी सार्वजनिक एपीआई जो CloudTrail लॉग नहीं बना रहे थे, अब ठीक कर दिए गए हैं, इसलिए हो सकता है कि आपको अपना खुद का खोजना पड़े...
अधिक जानकारी के लिए मूल शोध देखें।
तृतीयक इन्फ्रास्ट्रक्चर तक पहुंचना
कुछ AWS सेवाएं कुछ इन्फ्रास्ट्रक्चर उत्पन्न करेंगी जैसे डेटाबेस या कुबेरनेट्स क्लस्टर (EKS)। एक उपयोगकर्ता जो उन सेवाओं से सीधे बात कर रहा है (जैसे कुबेरनेट्स एपीआई) AWS एपीआई का उपयोग नहीं करेगा, इसलिए CloudTrail इस संचार को नहीं देख पाएगा।
इसलिए, EKS तक पहुंच रखने वाला उपयोगकर्ता जिसने EKS API का URL खोज लिया है, वह स्थानीय रूप से एक टोकन उत्पन्न कर सकता है और CloudTrail द्वारा पता लगाए बिना सीधे एपीआई सेवा से बात कर सकता है।
अधिक जानकारी में:
AWS - EKS Post ExploitationCloudTrail कॉन्फ़िगरेशन को संशोधित करना
ट्रेल्स हटाएं
Stop trails
CloudTrail को रोकने के लिए, निम्नलिखित कमांड का उपयोग करें:
यह कमांड CloudTrail लॉगिंग को रोक देगा।
मल्टी-रीजन लॉगिंग को अक्षम करें
इवेंट सेलेक्टर्स द्वारा लॉगिंग को अक्षम करें
पहले उदाहरण में, एकल इवेंट सेलेक्टर को एक JSON array के रूप में एकल ऑब्जेक्ट के साथ प्रदान किया गया है। "ReadWriteType": "ReadOnly"
इंगित करता है कि इवेंट सेलेक्टर को केवल read-only इवेंट्स को ही कैप्चर करना चाहिए (इसलिए CloudTrail insights write इवेंट्स की जांच नहीं करेगा उदाहरण के लिए)।
आप अपनी विशिष्ट आवश्यकताओं के आधार पर इवेंट सेलेक्टर को कस्टमाइज़ कर सकते हैं।
S3 lifecycle policy के माध्यम से लॉग्स डिलीशन
बकेट कॉन्फ़िगरेशन को संशोधित करना
S3 बकेट को हटाएं
बकेट नीति को बदलें ताकि CloudTrail सेवा से कोई भी लेखन अस्वीकार हो जाए
S3 बकेट में ऑब्जेक्ट्स को हटाने के लिए जीवनचक्र नीति जोड़ें
CloudTrail लॉग्स को एन्क्रिप्ट करने के लिए उपयोग की गई kms कुंजी को अक्षम करें
Cloudtrail रैंसमवेयर
S3 रैंसमवेयर
आप एक असममित कुंजी उत्पन्न कर सकते हैं और CloudTrail को उस कुंजी के साथ डेटा एन्क्रिप्ट करने के लिए बना सकते हैं और निजी कुंजी को हटा सकते हैं ताकि CloudTrail सामग्री को पुनर्प्राप्त नहीं किया जा सके। यह मूल रूप से एक S3-KMS रैंसमवेयर है जिसे इस प्रकार समझाया गया है:
AWS - S3 Post ExploitationKMS रैंसमवेयर
यह पिछले हमले को अलग-अलग अनुमतियों की आवश्यकताओं के साथ करने का सबसे आसान तरीका है:
AWS - KMS Post Exploitationसंदर्भ
Last updated