AWS - CloudTrail Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS CloudTrail καταγράφει και παρακολουθεί τη δραστηριότητα μέσα στο περιβάλλον AWS σας. Καταγράφει λεπτομερή αρχεία γεγονότων, συμπεριλαμβανομένου του ποιος έκανε τι, πότε και από πού, για όλες τις αλληλεπιδράσεις με τους πόρους AWS. Αυτό παρέχει ένα ίχνος ελέγχου των αλλαγών και των ενεργειών, βοηθώντας στην ανάλυση ασφάλειας, την επιθεώρηση συμμόρφωσης και την παρακολούθηση αλλαγών πόρων. Το CloudTrail είναι απαραίτητο για την κατανόηση της συμπεριφοράς χρηστών και πόρων, την ενίσχυση των θέσεων ασφάλειας και τη διασφάλιση της κανονιστικής συμμόρφωσης.
Κάθε καταγεγραμμένο γεγονός περιέχει:
Το όνομα της καλούμενης API: eventName
Η καλούμενη υπηρεσία: eventSource
Ο χρόνος: eventTime
Η διεύθυνση IP: SourceIPAddress
Η μέθοδος του πράκτορα: userAgent
. Παραδείγματα:
Signing.amazonaws.com - Από το AWS Management Console
console.amazonaws.com - Χρήστης root του λογαριασμού
lambda.amazonaws.com - AWS Lambda
Οι παράμετροι αιτήματος: requestParameters
Τα στοιχεία απόκρισης: responseElements
Τα γεγονότα γράφονται σε ένα νέο αρχείο καταγραφής περίπου κάθε 5 λεπτά σε ένα αρχείο JSON, κρατούνται από το CloudTrail και τελικά, τα αρχεία καταγραφής παραδίδονται στο S3 περίπου 15 λεπτά μετά. Τα αρχεία καταγραφής του CloudTrail μπορούν να συγκεντρωθούν σε λογαριασμούς και σε περιοχές. Το CloudTrail επιτρέπει τη χρήση ακεραιότητας αρχείων καταγραφής προκειμένου να μπορείτε να επαληθεύσετε ότι τα αρχεία καταγραφής σας έχουν παραμείνει αμετάβλητα από τότε που σας τα παρέδωσε το CloudTrail. Δημιουργεί ένα SHA-256 hash των αρχείων καταγραφής μέσα σε ένα αρχείο digest. Ένα sha-256 hash των νέων αρχείων καταγραφής δημιουργείται κάθε ώρα. Κατά τη δημιουργία ενός Trail, οι επιλεγείς γεγονότων θα σας επιτρέψουν να υποδείξετε το trail για καταγραφή: Διαχείριση, δεδομένα ή γεγονότα πληροφοριών.
Τα αρχεία καταγραφής αποθηκεύονται σε έναν κάδο S3. Από προεπιλογή χρησιμοποιείται Κρυπτογράφηση Server Side (SSE-S3) έτσι ώστε το AWS να αποκρυπτογραφεί το περιεχόμενο για τους ανθρώπους που έχουν πρόσβαση σε αυτό, αλλά για επιπλέον ασφάλεια μπορείτε να χρησιμοποιήσετε SSE με KMS και τα δικά σας κλειδιά.
Τα αρχεία καταγραφής αποθηκεύονται σε έναν κάδο S3 με αυτή τη μορφή ονόματος:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Όντας το BucketName: 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
Log File Naming Convention
Επιπλέον, τα αρχεία digest (για έλεγχο ακεραιότητας αρχείου) θα βρίσκονται μέσα στον ίδιο κάδο σε:
Δημιουργήστε ένα Trail στον λογαριασμό AWS όπου θέλετε να παραδίδονται τα αρχεία καταγραφής
Εφαρμόστε άδειες στον προορισμό S3 κάδο επιτρέποντας διασυνοριακή πρόσβαση για το CloudTrail και επιτρέψτε σε κάθε λογαριασμό AWS που χρειάζεται πρόσβαση
Δημιουργήστε ένα νέο Trail στους άλλους λογαριασμούς AWS και επιλέξτε να χρησιμοποιήσετε τον δημιουργημένο κάδο στο βήμα 1
Ωστόσο, ακόμη και αν μπορείτε να αποθηκεύσετε όλα τα αρχεία καταγραφής στον ίδιο κάδο S3, δεν μπορείτε να συγκεντρώσετε τα αρχεία καταγραφής του CloudTrail από πολλούς λογαριασμούς σε ένα CloudWatch Logs που ανήκει σε έναν μόνο λογαριασμό AWS.
Θυμηθείτε ότι ένας λογαριασμός μπορεί να έχει διαφορετικά Trails από το CloudTrail ενεργοποιημένα αποθηκεύοντας τα ίδια (ή διαφορετικά) αρχεία καταγραφής σε διαφορετικούς κάδους.
Όταν δημιουργείτε ένα CloudTrail, είναι δυνατόν να υποδείξετε να ενεργοποιηθεί το cloudtrail για όλους τους λογαριασμούς στην οργάνωση και να αποκτήσετε τα αρχεία καταγραφής σε μόνο 1 κάδο:
Με αυτόν τον τρόπο μπορείτε εύκολα να διαμορφώσετε το CloudTrail σε όλες τις περιοχές όλων των λογαριασμών και να κεντρικοποιήσετε τα αρχεία καταγραφής σε 1 λογαριασμό (που θα πρέπει να προστατεύσετε).
Μπορείτε να ελέγξετε ότι τα αρχεία καταγραφής δεν έχουν τροποποιηθεί εκτελώντας
Το CloudTrail μπορεί αυτόματα να στέλνει τα logs στο CloudWatch ώστε να μπορείτε να ρυθμίσετε ειδοποιήσεις που σας προειδοποιούν όταν εκτελούνται ύποπτες δραστηριότητες. Σημειώστε ότι για να επιτραπεί στο CloudTrail να στείλει τα logs στο CloudWatch, χρειάζεται να δημιουργηθεί ένας ρόλος που να επιτρέπει αυτή την ενέργεια. Εάν είναι δυνατόν, συνιστάται να χρησιμοποιήσετε τον προεπιλεγμένο ρόλο του AWS για να εκτελέσετε αυτές τις ενέργειες. Αυτός ο ρόλος θα επιτρέπει στο CloudTrail να:
CreateLogStream: Αυτό επιτρέπει τη δημιουργία ροών logs στο CloudWatch Logs
PutLogEvents: Παράδοση των logs του CloudTrail στη ροή logs του CloudWatch Logs
Η Ιστορία Εκδηλώσεων του CloudTrail σας επιτρέπει να επιθεωρείτε σε έναν πίνακα τα logs που έχουν καταγραφεί:
Τα Insights του CloudTrail αναλύουν αυτόματα τα γεγονότα διαχείρισης εγγραφής από τα μονοπάτια του CloudTrail και σας ειδοποιούν για ασυνήθιστη δραστηριότητα. Για παράδειγμα, εάν υπάρχει αύξηση στα γεγονότα TerminateInstance
που διαφέρει από τις καθορισμένες βάσεις, θα το δείτε ως γεγονός Insight. Αυτά τα γεγονότα διευκολύνουν την εύρεση και την αντίδραση σε ασυνήθιστη δραστηριότητα API περισσότερο από ποτέ.
Τα insights αποθηκεύονται στον ίδιο κάδο με τα logs του CloudTrail στο: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Ακεραιότητα Αρχείου Log του CloudTrail
Επικυρώστε αν τα logs έχουν παραποιηθεί (τροποποιηθεί ή διαγραφεί)
Χρησιμοποιεί αρχεία digest (δημιουργία hash για κάθε αρχείο)
SHA-256 hashing
SHA-256 με RSA για ψηφιακή υπογραφή
ιδιωτικό κλειδί που ανήκει στην Amazon
Χρειάζεται 1 ώρα για να δημιουργηθεί ένα αρχείο digest (γίνεται στην ώρα κάθε ώρα)
Σταματήστε την μη εξουσιοδοτημένη πρόσβαση
Χρησιμοποιήστε πολιτικές IAM και πολιτικές κάδου S3
ομάδα ασφαλείας —> πρόσβαση διαχειριστή
ελεγκτές —> μόνο ανάγνωση
Χρησιμοποιήστε SSE-S3/SSE-KMS για να κρυπτογραφήσετε τα logs
Αποτρέψτε τη διαγραφή αρχείων log
Περιορίστε την πρόσβαση διαγραφής με πολιτικές IAM και κάδου
Ρυθμίστε την MFA διαγραφή S3
Επικυρώστε με την Επικύρωση Αρχείου Log
Ο AWS Access Advisor βασίζεται στα τελευταία 400 ημέρες logs του AWS CloudTrail για να συγκεντρώσει τις πληροφορίες του. Το CloudTrail καταγράφει μια ιστορία των κλήσεων API του AWS και σχετικών γεγονότων που έγιναν σε έναν λογαριασμό AWS. Ο Access Advisor χρησιμοποιεί αυτά τα δεδομένα για να δείξει πότε οι υπηρεσίες είχαν πρόσβαση τελευταία. Αναλύοντας τα logs του CloudTrail, ο Access Advisor μπορεί να προσδιορίσει ποιες υπηρεσίες AWS έχει αποκτήσει πρόσβαση ένας χρήστης ή ρόλος IAM και πότε συνέβη αυτή η πρόσβαση. Αυτό βοηθά τους διαχειριστές AWS να λαμβάνουν ενημερωμένες αποφάσεις σχετικά με την εκλέπτυνση των δικαιωμάτων, καθώς μπορούν να εντοπίσουν υπηρεσίες που δεν έχουν αποκτηθεί πρόσβαση για παρατεταμένες περιόδους και ενδεχομένως να μειώσουν υπερβολικά ευρείες άδειες με βάση τα πραγματικά πρότυπα χρήσης.
Επομένως, ο Access Advisor ενημερώνει για τις περιττές άδειες που δίνονται στους χρήστες ώστε ο διαχειριστής να μπορεί να τις αφαιρέσει
Είναι δυνατή η εκτέλεση μιας CVS injection μέσα στο CloudTrail που θα εκτελέσει αυθαίρετο κώδικα αν τα logs εξάγονται σε CSV και ανοίγονται με το Excel. Ο παρακάτω κώδικας θα δημιουργήσει μια καταχώρηση log με ένα κακό Trail name που περιέχει το payload:
Για περισσότερες πληροφορίες σχετικά με τις επιθέσεις CSV, ελέγξτε τη σελίδα:
Για περισσότερες πληροφορίες σχετικά με αυτήν την συγκεκριμένη τεχνική, ελέγξτε https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Τα Honeytokens δημιουργούνται για να ανιχνεύσουν την εξαγωγή ευαίσθητων πληροφοριών. Στην περίπτωση του AWS, είναι κλειδιά AWS των οποίων η χρήση παρακολουθείται, αν κάτι προκαλέσει μια ενέργεια με αυτό το κλειδί, τότε κάποιος πρέπει να έχει κλέψει αυτό το κλειδί.
Ωστόσο, τα Honeytokens όπως αυτά που δημιουργούνται από Canarytokens, SpaceCrab, SpaceSiren χρησιμοποιούν είτε αναγνωρίσιμα ονόματα λογαριασμού είτε χρησιμοποιούν το ίδιο ID λογαριασμού AWS για όλους τους πελάτες τους. Επομένως, αν μπορείτε να αποκτήσετε το όνομα λογαριασμού και/ή το ID λογαριασμού χωρίς να προκαλέσετε την Cloudtrail να δημιουργήσει οποιοδήποτε log, θα μπορούσατε να γνωρίζετε αν το κλειδί είναι honeytoken ή όχι.
Pacu έχει κάποιους κανόνες για να ανιχνεύσει αν ένα κλειδί ανήκει σε Canarytokens, SpaceCrab, SpaceSiren:
Αν canarytokens.org
εμφανίζεται στο όνομα ρόλου ή το ID λογαριασμού 534261010715
εμφανίζεται στο μήνυμα σφάλματος.
Δοκιμάζοντας τα πιο πρόσφατα, χρησιμοποιούν το λογαριασμό 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 Λογαριασμού από το κωδικοποιημένο μέσα στο access key όπως εξηγείται εδώ και να ελέγξετε το ID λογαριασμού με τη λίστα σας από τους λογαριασμούς Honeytokens AWS:
Check more information in the πρωτότυπη έρευνα.
Η πιο αποτελεσματική τεχνική για αυτό είναι στην πραγματικότητα μια απλή. Απλά χρησιμοποιήστε το κλειδί που μόλις βρήκατε για να αποκτήσετε πρόσβαση σε κάποια υπηρεσία μέσα στον δικό σας λογαριασμό επιτιθέμενου. Αυτό θα κάνει το CloudTrail να δημιουργήσει ένα log μέσα στον ΔΙΚΟ ΣΑΣ λογαριασμό AWS και όχι μέσα στους θύματα.
Το θέμα είναι ότι η έξοδος θα σας δείξει ένα σφάλμα που υποδεικνύει το ID του λογαριασμού και το όνομα του λογαριασμού, έτσι θα μπορείτε να δείτε αν είναι ένα Honeytoken.
Στο παρελθόν υπήρχαν κάποιες υπηρεσίες AWS που δεν στέλνουν logs στο CloudTrail (βρείτε μια λίστα εδώ). Ορισμένες από αυτές τις υπηρεσίες θα ανταποκριθούν με ένα σφάλμα που περιέχει το ARN του ρόλου κλειδιού αν κάποιος μη εξουσιοδοτημένος (το κλειδί honeytoken) προσπαθήσει να αποκτήσει πρόσβαση σε αυτό.
Με αυτόν τον τρόπο, ένας επιτιθέμενος μπορεί να αποκτήσει το ARN του κλειδιού χωρίς να ενεργοποιήσει κανένα log. Στο ARN ο επιτιθέμενος μπορεί να δει το AWS account ID και το όνομα, είναι εύκολο να γνωρίζει τα ID και τα ονόματα των εταιρειών του HoneyToken, έτσι με αυτόν τον τρόπο ένας επιτιθέμενος μπορεί να προσδιορίσει αν το token είναι ένα HoneyToken.
Σημειώστε ότι όλες οι δημόσιες APIs που ανακαλύφθηκαν ότι δεν δημιουργούν logs CloudTrail έχουν τώρα διορθωθεί, οπότε ίσως χρειαστεί να βρείτε τις δικές σας...
Για περισσότερες πληροφορίες ελέγξτε την πρωτότυπη έρευνα.
Ορισμένες υπηρεσίες AWS θα δημιουργήσουν κάποια υποδομή όπως Βάσεις Δεδομένων ή Kubernetes clusters (EKS). Ένας χρήστης που μιλάει απευθείας σε αυτές τις υπηρεσίες (όπως το Kubernetes API) δεν θα χρησιμοποιήσει το AWS API, έτσι το CloudTrail δεν θα μπορεί να δει αυτή την επικοινωνία.
Επομένως, ένας χρήστης με πρόσβαση στο EKS που έχει ανακαλύψει τη διεύθυνση URL του EKS API θα μπορούσε να δημιουργήσει ένα token τοπικά και να μιλήσει απευθείας στην υπηρεσία API χωρίς να ανιχνευθεί από το Cloudtrail.
Περισσότερες πληροφορίες στο:
AWS - EKS Post ExploitationΣτο πρώτο παράδειγμα, παρέχεται ένας μόνο επιλεγέας γεγονότων ως πίνακας JSON με ένα μόνο αντικείμενο. Το "ReadWriteType": "ReadOnly"
υποδεικνύει ότι ο επιλεγέας γεγονότων θα πρέπει να καταγράφει μόνο γεγονότα μόνο για ανάγνωση (έτσι οι πληροφορίες του CloudTrail δεν θα ελέγχουν γεγονότα εγγραφής για παράδειγμα).
Μπορείτε να προσαρμόσετε τον επιλεγέα γεγονότων με βάση τις συγκεκριμένες απαιτήσεις σας.
Διαγράψτε το S3 bucket
Αλλάξτε την πολιτική του bucket για να αρνηθεί οποιαδήποτε εγγραφή από την υπηρεσία CloudTrail
Προσθέστε πολιτική κύκλου ζωής στο S3 bucket για να διαγράψετε αντικείμενα
Απενεργοποιήστε το κλειδί kms που χρησιμοποιείται για την κρυπτογράφηση των καταγραφών CloudTrail
Μπορείτε να δημιουργήσετε ένα ασύμμετρο κλειδί και να κάνετε το CloudTrail να κρυπτογραφεί τα δεδομένα με αυτό το κλειδί και να διαγράψετε το ιδιωτικό κλειδί ώστε τα περιεχόμενα του CloudTrail να μην μπορούν να ανακτηθούν. Αυτό είναι βασικά ένα S3-KMS ransomware που εξηγείται στο:
AWS - S3 Post ExploitationRansomware KMS
Αυτή είναι η πιο εύκολη μέθοδος για να εκτελέσετε την προηγούμενη επίθεση με διαφορετικές απαιτήσεις αδειών:
AWS - KMS Post ExploitationΜάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)