mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/confidential-computing/luks2-header-ma
This commit is contained in:
+141
@@ -0,0 +1,141 @@
|
||||
# LUKS2 Header Ευπλαστότητα και Κατάχρηση Null-Cipher σε Confidential VMs
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## TL;DR
|
||||
|
||||
- Πολλές Linux-based Confidential VMs (CVMs) που τρέχουν σε AMD SEV-SNP ή Intel TDX χρησιμοποιούν LUKS2 για persistent storage. Το on-disk LUKS2 header είναι ευπλαστό και δεν προστατεύεται ως προς την ακεραιότητα απέναντι σε storage-adjacent attackers.
|
||||
- Εάν η data segment encryption του header οριστεί σε null cipher (π.χ. "cipher_null-ecb"), το cryptsetup το αποδέχεται και το guest διαβάζει/γράφει διαφανώς plaintext ενώ πιστεύει ότι ο δίσκος είναι κρυπτογραφημένος.
|
||||
- Πριν και μέχρι και το cryptsetup 2.8.0, null ciphers μπορούσαν να χρησιμοποιηθούν για keyslots· από το 2.8.1 απορρίπτονται για keyslots με μη-κενά passwords, αλλά οι null ciphers παραμένουν επιτρεπτοί για volume segments.
|
||||
- Το remote attestation συνήθως μετράει VM code/config, όχι mutable external LUKS headers· χωρίς ρητή validation/measurement, ένας attacker με write access στο disk μπορεί να αναγκάσει plaintext I/O.
|
||||
|
||||
## Background: LUKS2 on-disk format (τι έχει σημασία για attackers)
|
||||
|
||||
- Μια συσκευή LUKS2 ξεκινά με ένα header ακολουθούμενο από encrypted data.
|
||||
- Το header περιέχει δύο ταυτόσημα αντίγραφα μιας binary section και μιας JSON metadata section, συν ένα ή περισσότερα keyslots.
|
||||
- Το JSON metadata ορίζει:
|
||||
- τα keyslots που είναι enabled και το wrapping KDF/cipher τους
|
||||
- τα segments που περιγράφουν την data area (cipher/mode)
|
||||
- digests (π.χ., hash του volume key για verification των passphrases)
|
||||
- Τυπικές ασφαλείς τιμές: keyslot KDF argon2id; keyslot και data segment encryption aes-xts-plain64.
|
||||
|
||||
Quickly inspect the segment cipher directly from JSON:
|
||||
```bash
|
||||
# Read JSON metadata and print the configured data segment cipher
|
||||
cryptsetup luksDump --type luks2 --dump-json-metadata /dev/VDISK \
|
||||
| jq -r '.segments["0"].encryption'
|
||||
```
|
||||
## Βασική αιτία
|
||||
|
||||
- Οι LUKS2 headers δεν είναι authenticated απέναντι σε tampering του storage. Ένας host/storage attacker μπορεί να ξαναγράψει τα JSON metadata που αποδέχεται το cryptsetup.
|
||||
- Από το cryptsetup 2.8.0, headers που ορίζουν την κρυπτογράφηση ενός segment σε cipher_null-ecb γίνονται αποδεκτά. Ο null cipher αγνοεί τα κλειδιά και επιστρέφει plaintext.
|
||||
- Μέχρι την 2.8.0, null ciphers μπορούσαν επίσης να χρησιμοποιηθούν για keyslots (το keyslot ανοίγει με οποιαδήποτε passphrase). Από την 2.8.1, οι null ciphers απορρίπτονται για keyslots με μη-κενους κωδικούς, αλλά παραμένουν επιτρεπτοί για segments. Η αλλαγή μόνο του segment cipher εξακολουθεί να δίνει plaintext I/O μετά την 2.8.1.
|
||||
|
||||
## Μοντέλο απειλής: γιατί η attestation δεν σας έσωσε από προεπιλογή
|
||||
|
||||
- CVMs στοχεύουν στην εξασφάλιση εμπιστευτικότητας, ακεραιότητας και αυθεντικότητας σε έναν μη αξιόπιστο host.
|
||||
- Η remote attestation συνήθως μετράει το VM image και τη διαμόρφωση εκκίνησης, όχι το mutable LUKS header που ζει σε μη αξιόπιστο storage.
|
||||
- Αν το CVM σας εμπιστεύεται ένα on-disk header χωρίς ισχυρό validation/measurement, ένας storage attacker μπορεί να το αλλάξει σε null cipher και το guest σας θα κάνει mount έναν plaintext τόμο χωρίς σφάλμα.
|
||||
|
||||
## Εκμετάλλευση (απαιτείται write access στο storage)
|
||||
|
||||
Προϋποθέσεις:
|
||||
- Write access στο LUKS2-encrypted block device του CVM.
|
||||
- Το guest χρησιμοποιεί το on-disk LUKS2 header χωρίς ισχυρή validation/attestation.
|
||||
|
||||
Βήματα (σε υψηλό επίπεδο):
|
||||
1) Διαβάστε το header JSON και εντοπίστε τον ορισμό του data segment. Παράδειγμα πεδίου-στόχου: segments["0"].encryption.
|
||||
2) Ορίστε την κρυπτογράφηση του data segment σε null cipher, π.χ. cipher_null-ecb. Διατηρήστε τις παραμέτρους keyslot και τη δομή του digest ανέπαφες ώστε η συνηθισμένη passphrase του guest να εξακολουθεί να “works.”
|
||||
3) Ενημερώστε και τα δύο αντίγραφα header και τα συνδεδεμένα header digests ώστε το header να είναι αυτοσυνεπές.
|
||||
4) Στο επόμενο boot, το guest τρέχει cryptsetup, ξεκλειδώνει επιτυχώς το υπάρχον keyslot με την passphrase του και κάνει mount τον τόμο. Επειδή ο segment cipher είναι null cipher, όλες οι αναγνώσεις/εγγραφές είναι plaintext.
|
||||
|
||||
Παραλλαγή (pre-2.8.1 keyslot abuse): αν το area.encryption ενός keyslot είναι null cipher, ανοίγει με οποιαδήποτε passphrase. Συνδυάστε με null segment cipher για αδιάλειπτη πρόσβαση σε plaintext χωρίς να γνωρίζετε το guest secret.
|
||||
|
||||
## Ισχυρές μετριαστικές ενέργειες (αποφύγετε TOCTOU με detached headers)
|
||||
|
||||
Πάντοτε αντιμετωπίζετε τα on-disk LUKS headers ως μη αξιόπιστη είσοδο. Χρησιμοποιήστε detached-header mode ώστε η validation και το opening να χρησιμοποιούν τα ίδια trusted bytes από προστατευμένη RAM:
|
||||
```bash
|
||||
# Copy header into protected memory (e.g., tmpfs) and open from there
|
||||
cryptsetup luksHeaderBackup --header-backup-file /tmp/luks_header /dev/VDISK
|
||||
cryptsetup open --type luks2 --header /tmp/luks_header /dev/VDISK --key-file=key.txt
|
||||
```
|
||||
Στη συνέχεια, επιβάλετε ένα (ή περισσότερα) από τα εξής:
|
||||
|
||||
1) MAC ολόκληρης της κεφαλίδας
|
||||
- Υπολογίστε/επικυρώστε ένα MAC για ολόκληρη την κεφαλίδα πριν τη χρήση.
|
||||
- Ανοίξτε τον τόμο μόνο όταν το MAC επαληθεύεται.
|
||||
- Παραδείγματα στην πράξη: Flashbots tdx-init και Fortanix Salmiac υιοθέτησαν MAC-based verification.
|
||||
|
||||
2) Αυστηρή επικύρωση JSON (συμβατό προς τα πίσω)
|
||||
- Εξάγετε (dump) τα JSON metadata και επικυρώστε μια αυστηρή λίστα επιτρεπόμενων παραμέτρων (KDF, ciphers, segment count/type, flags).
|
||||
```bash
|
||||
#!/bin/bash
|
||||
set -e
|
||||
# Store header in confidential RAM fs
|
||||
cryptsetup luksHeaderBackup --header-backup-file /tmp/luks_header $BLOCK_DEVICE
|
||||
# Dump JSON metadata header to a file
|
||||
cryptsetup luksDump --type luks2 --dump-json-metadata /tmp/luks_header > header.json
|
||||
# Validate the header
|
||||
python validate.py header.json
|
||||
# Open the cryptfs using key.txt
|
||||
cryptsetup open --type luks2 --header /tmp/luks_header $BLOCK_DEVICE --key-file=key.txt
|
||||
```
|
||||
<details>
|
||||
<summary>Παράδειγμα επικυρωτή (επιβολή ασφαλών πεδίων)</summary>
|
||||
```python
|
||||
from json import load
|
||||
import sys
|
||||
with open(sys.argv[1], "r") as f:
|
||||
header = load(f)
|
||||
if len(header["keyslots"]) != 1:
|
||||
raise ValueError("Expected 1 keyslot")
|
||||
if header["keyslots"]["0"]["type"] != "luks2":
|
||||
raise ValueError("Expected luks2 keyslot")
|
||||
if header["keyslots"]["0"]["area"]["encryption"] != "aes-xts-plain64":
|
||||
raise ValueError("Expected aes-xts-plain64 encryption")
|
||||
if header["keyslots"]["0"]["kdf"]["type"] != "argon2id":
|
||||
raise ValueError("Expected argon2id kdf")
|
||||
if len(header["tokens"]) != 0:
|
||||
raise ValueError("Expected 0 tokens")
|
||||
if len(header["segments"]) != 1:
|
||||
raise ValueError("Expected 1 segment")
|
||||
if header["segments"]["0"]["type"] != "crypt":
|
||||
raise ValueError("Expected crypt segment")
|
||||
if header["segments"]["0"]["encryption"] != "aes-xts-plain64":
|
||||
raise ValueError("Expected aes-xts-plain64 encryption")
|
||||
if "flags" in header["segments"]["0"] and header["segments"]["0"]["flags"]:
|
||||
raise ValueError("Segment contains unexpected flags")
|
||||
```
|
||||
</details>
|
||||
|
||||
3) Μετρήστε/πιστοποιήστε την κεφαλίδα
|
||||
- Αφαιρέστε τυχόν τυχαία salts/digests και μετρήστε την καθαρισμένη κεφαλίδα στους TPM/TDX/SEV PCRs ή στην κατάσταση πολιτικής του KMS.
|
||||
- Απελευθερώστε τα κλειδιά αποκρυπτογράφησης μόνο όταν η μετρημένη κεφαλίδα ταιριάζει με ένα εγκεκριμένο, ασφαλές προφίλ.
|
||||
|
||||
Operational guidance:
|
||||
- Επιβάλετε detached header + MAC ή αυστηρή επικύρωση· μην εμπιστεύεστε ποτέ απευθείας τις κεφαλίδες που βρίσκονται στο δίσκο.
|
||||
- Οι καταναλωτές της attestation πρέπει να απορρίπτουν προ-patch εκδόσεις framework από τις allow-lists.
|
||||
|
||||
## Σημειώσεις για τις εκδόσεις και τη θέση των συντηρητών
|
||||
|
||||
- Οι συντηρητές του cryptsetup διευκρίνισαν ότι το LUKS2 δεν σχεδιάστηκε για να παρέχει ακεραιότητα έναντι παραποίησης αποθηκευτικού χώρου σε αυτό το περιβάλλον· τα null ciphers διατηρούνται για συμβατότητα προς τα πίσω.
|
||||
- Το cryptsetup 2.8.1 (19 Οκτ 2025) απορρίπτει τα null ciphers για keyslots με μη-κενά passwords, αλλά εξακολουθεί να επιτρέπει null ciphers για segments.
|
||||
|
||||
## Γρήγοροι έλεγχοι και διαλογή
|
||||
|
||||
- Ελέγξτε εάν η κρυπτογράφηση οποιουδήποτε segment είναι ρυθμισμένη σε null cipher:
|
||||
```bash
|
||||
cryptsetup luksDump --type luks2 --dump-json-metadata /dev/VDISK \
|
||||
| jq -r '.segments | to_entries[] | "segment=" + .key + ", enc=" + .value.encryption'
|
||||
```
|
||||
- Επαληθεύστε τους keyslot και segment αλγόριθμους πριν ανοίξετε τον όγκο. Εάν δεν μπορείτε να MAC, επιβάλλετε αυστηρή επικύρωση JSON και ανοίξτε χρησιμοποιώντας το detached header από προστατευμένη μνήμη.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- [Vulnerabilities in LUKS2 disk encryption for confidential VMs (Trail of Bits)](https://blog.trailofbits.com/2025/10/30/vulnerabilities-in-luks2-disk-encryption-for-confidential-vms/)
|
||||
- [cryptsetup issue #954 (null cipher acceptance and integrity considerations)](https://gitlab.com/cryptsetup/cryptsetup/-/issues/954)
|
||||
- [CVE-2025-59054](https://nvd.nist.gov/vuln/detail/CVE-2025-59054)
|
||||
- [CVE-2025-58356](https://nvd.nist.gov/vuln/detail/CVE-2025-58356)
|
||||
- [Related context: CVE-2021-4122 (auto-recovery path silently decrypting disks)](https://www.cve.org/CVERecord?id=CVE-2021-4122)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
@@ -9,36 +9,36 @@
|
||||
Κάθε cloud έχει τις δικές του ιδιαιτερότητες αλλά γενικά υπάρχουν μερικά **κοινά πράγματα που ένας pentester πρέπει να ελέγξει** όταν δοκιμάζει ένα cloud περιβάλλον:
|
||||
|
||||
- **Benchmark checks**
|
||||
- Αυτό θα σε βοηθήσει να **κατανοήσεις το μέγεθος** του περιβάλλοντος και τις **υπηρεσίες που χρησιμοποιούνται**
|
||||
- Θα σου επιτρέψει επίσης να βρεις κάποιες **γρήγορες εσφαλμένες διαμορφώσεις** καθώς μπορείς να πραγματοποιήσεις τα περισσότερα από αυτά τα tests με **αυτοματοποιημένα εργαλεία**
|
||||
- Αυτό θα σας βοηθήσει να **κατανοήσετε το μέγεθος** του περιβάλλοντος και τις **υπηρεσίες που χρησιμοποιούνται**
|
||||
- Θα σας επιτρέψει επίσης να βρείτε μερικές **γρήγορες κακοδιαμορφώσεις** καθώς μπορείτε να εκτελέσετε τα περισσότερα από αυτά τα tests με **αυτοματοποιημένα εργαλεία**
|
||||
- **Services Enumeration**
|
||||
- Πιθανότατα δεν θα βρεις πολλές περισσότερες εσφαλμένες διαμορφώσεις εδώ αν εκτέλεσες σωστά τους benchmark ελέγχους, αλλά μπορεί να βρεις κάποιες που δεν αναζητήθηκαν στον benchmark έλεγχο.
|
||||
- Αυτό θα σου επιτρέψει να γνωρίζεις **τι ακριβώς χρησιμοποιείται** στο cloud env
|
||||
- Πιθανότατα δεν θα βρείτε πολλές επιπλέον κακοδιαμορφώσεις εδώ αν εκτελέσατε σωστά τα benchmark tests, αλλά μπορεί να βρείτε κάποιες που δεν αναζητήθηκαν στο benchmark test.
|
||||
- Αυτό θα σας επιτρέψει να ξέρετε **τι ακριβώς χρησιμοποιείται** στο cloud περιβάλλον
|
||||
- Αυτό θα βοηθήσει πολύ στα επόμενα βήματα
|
||||
- **Check exposed assets**
|
||||
- Αυτό μπορεί να γίνει κατά τη διάρκεια του προηγούμενου τμήματος, πρέπει να **εντοπίσεις όλα όσα ενδέχεται να είναι εκτεθειμένα** στο Internet με κάποιο τρόπο και πώς μπορεί να αποκτηθεί πρόσβαση.
|
||||
- Εδώ εννοώ **manually exposed infrastructure** όπως instances με web pages ή άλλα ports να είναι εκτεθειμένα, και επίσης άλλα **cloud managed services που μπορούν να ρυθμιστούν** να είναι εκτεθειμένα (όπως DBs ή buckets)
|
||||
- Έπειτα πρέπει να ελέγξεις **αν αυτός ο πόρος μπορεί να είναι εκτεθειμένος ή όχι** (εμπιστευτικές πληροφορίες; vulnerabilities; misconfigurations στην εκτεθειμένη υπηρεσία?)
|
||||
- Αυτό μπορεί να γίνει κατά τη διάρκεια της προηγούμενης ενότητας, πρέπει να **βρείτε τα πάντα που ενδέχεται να είναι εκτεθειμένα** στο Internet με κάποιο τρόπο και πώς μπορούν να προσπελαστούν.
|
||||
- Εδώ αναφέρομαι σε **χειροκίνητα εκτεθειμένη υποδομή** όπως instances με σελίδες web ή άλλες ανοιχτές θύρες, και επίσης σε άλλες **cloud managed services που μπορούν να ρυθμιστούν** να είναι εκτεθειμένες (όπως DBs ή buckets)
|
||||
- Έπειτα πρέπει να ελέγξετε **αν αυτός ο πόρος μπορεί να εκτεθεί ή όχι** (εμπιστευτικές πληροφορίες; ευπάθειες; κακοδιαμορφώσεις στην εκτεθειμένη υπηρεσία?)
|
||||
- **Check permissions**
|
||||
- Εδώ πρέπει να **βρεις όλα τα permissions κάθε role/user** μέσα στο cloud και πώς χρησιμοποιούνται
|
||||
- Πάρα πολλοί **highly privileged** (control everything) λογαριασμοί; Generated keys που δεν χρησιμοποιούνται;... Οι περισσότερες από αυτές τις ελέγχους θα έπρεπε ήδη να έχουν γίνει στους benchmark ελέγχους
|
||||
- Αν ο πελάτης χρησιμοποιεί OpenID ή SAML ή άλλη **federation** μπορεί να χρειαστεί να τους ζητήσεις περαιτέρω **πληροφορίες** για **πώς ανατίθεται κάθε role** (δεν είναι το ίδιο το admin role να ανατίθεται σε 1 χρήστη ή σε 100)
|
||||
- Δεν αρκεί να βρεις ποιοι χρήστες έχουν **admin** permissions "*:*". Υπάρχουν πολλά **άλλα permissions** που ανάλογα με τις υπηρεσίες που χρησιμοποιούνται μπορεί να είναι πολύ **ευαίσθητα**.
|
||||
- Επιπλέον, υπάρχουν **potential privesc** τρόποι να ακολουθηθούν καταχρώμενοι τα permissions. Όλα αυτά πρέπει να ληφθούν υπόψη και **όσοι περισσότεροι privesc paths γίνεται** πρέπει να αναφερθούν.
|
||||
- Εδώ πρέπει να **εντοπίσετε όλα τα δικαιώματα κάθε role/user** μέσα στο cloud και πώς χρησιμοποιούνται
|
||||
- Πολλοί **υπερβολικά προνομιούχοι** (control everything) λογαριασμοί; Δημιουργημένα keys που δεν χρησιμοποιούνται?... Τα περισσότερα από αυτά τα checks θα έπρεπε να έχουν γίνει ήδη στα benchmark tests
|
||||
- Αν ο πελάτης χρησιμοποιεί OpenID ή SAML ή άλλη **federation** ίσως χρειαστεί να τους ζητήσετε επιπλέον **πληροφορίες** για **πώς ανατίθεται κάθε role** (δεν είναι το ίδιο αν ο admin role ανατίθεται σε 1 user ή σε 100)
|
||||
- Δεν αρκεί να βρείτε ποιοι χρήστες έχουν **admin** permissions "\*:\*". Υπάρχουν πολλά **άλλα permissions** που ανάλογα με τις υπηρεσίες που χρησιμοποιούνται μπορεί να είναι πολύ **ευαίσθητα**.
|
||||
- Επιπλέον, υπάρχουν **πιθανοί privesc** τρόποι να ακολουθηθούν καταχρώμενοι δικαιώματα. Όλα αυτά πρέπει να ληφθούν υπόψη και **όσο το δυνατόν περισσότερα privesc paths** πρέπει να αναφερθούν.
|
||||
- **Check Integrations**
|
||||
- Είναι πολύ πιθανό ότι **integrations with other clouds or SaaS** χρησιμοποιούνται μέσα στο cloud env.
|
||||
- Για **integrations του cloud που αξιολογείς** με άλλες πλατφόρμες πρέπει να ειδοποιήσεις **ποιος έχει πρόσβαση να (κακ)χρησιμοποιήσει αυτή την integration** και να ρωτήσεις **πόσο ευαίσθητη** είναι η ενέργεια που εκτελείται.\
|
||||
Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο η GCP παίρνει δεδομένα (ρώτησε πόσο ευαίσθητη είναι η ενέργεια στην GCP κατά την επεξεργασία αυτών των δεδομένων).
|
||||
- Για **integrations μέσα στο cloud που αξιολογείς** από εξωτερικές πλατφόρμες, πρέπει να ρωτήσεις **ποιος έχει εξωτερικά πρόσβαση να (κακ)χρησιμοποιήσει αυτή την integration** και να ελέγξεις πώς χρησιμοποιούνται αυτά τα δεδομένα.\
|
||||
Για παράδειγμα, αν μια υπηρεσία χρησιμοποιεί μια Docker image που φιλοξενείται σε GCR, πρέπει να ρωτήσεις ποιος έχει πρόσβαση να την τροποποιήσει και ποιες ευαίσθητες πληροφορίες και πρόσβαση θα αποκτήσει αυτή η image όταν εκτελεστεί μέσα σε ένα AWS cloud.
|
||||
- Είναι πολύ πιθανό ότι **ενσωματώσεις με άλλα clouds ή SaaS** χρησιμοποιούνται μέσα στο cloud περιβάλλον.
|
||||
- Για **ενσωματώσεις του cloud που ελέγχετε** με άλλη πλατφόρμα πρέπει να ενημερώσετε **ποιος έχει πρόσβαση για να (κακο)χρησιμοποιήσει αυτή την ενσωμάτωση** και να ρωτήσετε **πόσο ευαίσθητη** είναι η ενέργεια που εκτελείται.\
|
||||
Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο παίρνει δεδομένα το GCP (ρωτήστε πόσο ευαίσθητη είναι η ενέργεια στο GCP που επεξεργάζεται αυτά τα δεδομένα).
|
||||
- Για **ενσωματώσεις μέσα στο cloud που ελέγχετε** από εξωτερικές πλατφόρμες, πρέπει να ρωτήσετε **ποιος έχει εξωτερική πρόσβαση για να (κακο)χρησιμοποιήσει αυτή την ενσωμάτωση** και να ελέγξετε πώς χρησιμοποιούνται αυτά τα δεδομένα.\
|
||||
Για παράδειγμα, αν μια υπηρεσία χρησιμοποιεί ένα Docker image φιλοξενούμενο στο GCR, πρέπει να ρωτήσετε ποιος έχει πρόσβαση για να τροποποιήσει αυτό και ποια ευαίσθητα info και πρόσβαση θα αποκτήσει αυτό το image όταν εκτελεστεί μέσα σε ένα AWS cloud.
|
||||
|
||||
## Εργαλεία Multi-Cloud
|
||||
|
||||
Υπάρχουν διάφορα εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά cloud περιβάλλοντα. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα αναφέρονται σε αυτή την ενότητα.
|
||||
Υπάρχουν αρκετά εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά cloud περιβάλλοντα. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα υποδειχθούν σε αυτή την ενότητα.
|
||||
|
||||
### [PurplePanda](https://github.com/carlospolop/purplepanda)
|
||||
|
||||
A tool to **identify bad configurations and privesc path in clouds and across clouds/SaaS.**
|
||||
Ένα εργαλείο για να **identify bad configurations and privesc path in clouds and across clouds/SaaS.**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -71,7 +71,7 @@ python3 main.py -e -p google #Enumerate the env
|
||||
|
||||
### [Prowler](https://github.com/prowler-cloud/prowler)
|
||||
|
||||
Υποστηρίζει **AWS, GCP & Azure**. Δείτε πώς να ρυθμίσετε κάθε πάροχο στο [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
Υποστηρίζει **AWS, GCP & Azure**. Δείτε πώς να διαμορφώσετε κάθε πάροχο στο [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws)
|
||||
```bash
|
||||
# Install
|
||||
pip install prowler
|
||||
@@ -146,7 +146,7 @@ done
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
Κατεβάστε και εγκαταστήστε το Steampipe ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Ή χρησιμοποιήστε Brew:
|
||||
Κατεβάστε και εγκαταστήστε το Steampipe ([https://steampipe.io/downloads](https://steampipe.io/downloads)). Ή χρησιμοποιήστε το Brew:
|
||||
```
|
||||
brew tap turbot/tap
|
||||
brew install steampipe
|
||||
@@ -168,9 +168,9 @@ steampipe check all
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary>Ελέγξτε όλα τα Projects</summary>
|
||||
<summary>Έλεγχος όλων των έργων</summary>
|
||||
|
||||
Για να ελέγξετε όλα τα έργα πρέπει να δημιουργήσετε το αρχείο `gcp.spc` που υποδεικνύει όλα τα έργα προς δοκιμή. Μπορείτε απλώς να ακολουθήσετε τις οδηγίες από το ακόλουθο script
|
||||
Για να ελέγξετε όλα τα έργα, χρειάζεται να δημιουργήσετε το αρχείο `gcp.spc` που δηλώνει όλα τα έργα προς έλεγχο. Μπορείτε απλά να ακολουθήσετε τις οδηγίες του παρακάτω script
|
||||
```bash
|
||||
FILEPATH="/tmp/gcp.spc"
|
||||
rm -rf "$FILEPATH" 2>/dev/null
|
||||
@@ -194,11 +194,11 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate
|
||||
```
|
||||
</details>
|
||||
|
||||
Για να δείτε άλλες πληροφορίες GCP (χρήσιμες για την καταγραφή υπηρεσιών) χρησιμοποιήστε: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
Για να ελέγξετε **άλλα GCP insights** (χρήσιμο για την απαρίθμηση υπηρεσιών) χρησιμοποιήστε: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights)
|
||||
|
||||
Για να δείτε Terraform GCP κώδικα: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
Για να ελέγξετε κώδικα Terraform για GCP: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance)
|
||||
|
||||
Περισσότερα GCP plugins του Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
Περισσότερα GCP πρόσθετα του Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp)
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AWS" }}
|
||||
@@ -225,7 +225,7 @@ cd steampipe-mod-aws-compliance
|
||||
steampipe dashboard # To see results in browser
|
||||
steampipe check all --export=/tmp/output4.json
|
||||
```
|
||||
Για έλεγχο του Terraform AWS κώδικα: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
Για έλεγχο του Terraform AWS code: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance)
|
||||
|
||||
Περισσότερα AWS plugins του Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws)
|
||||
{{#endtab }}
|
||||
@@ -233,12 +233,12 @@ steampipe check all --export=/tmp/output4.json
|
||||
|
||||
### [~~cs-suite~~](https://github.com/SecurityFTW/cs-suite)
|
||||
|
||||
Υποστηρίζει AWS, GCP, Azure, DigitalOcean.\
|
||||
Απαιτεί python2.7 και φαίνεται μη συντηρούμενο.
|
||||
AWS, GCP, Azure, DigitalOcean.\
|
||||
Απαιτεί python2.7 και φαίνεται να μην συντηρείται.
|
||||
|
||||
### Nessus
|
||||
|
||||
Το Nessus διαθέτει μια σάρωση _**Audit Cloud Infrastructure**_ που υποστηρίζει: AWS, Azure, Office 365, Rackspace, Salesforce. Απαιτούνται μερικές επιπλέον ρυθμίσεις στο **Azure** για να ληφθεί ένα **Client Id**.
|
||||
Το Nessus έχει ένα _**Audit Cloud Infrastructure**_ scan που υποστηρίζει: AWS, Azure, Office 365, Rackspace, Salesforce. Απαιτούνται μερικές επιπλέον ρυθμίσεις στο **Azure** για να αποκτηθεί ένα **Client Id**.
|
||||
|
||||
### [**cloudlist**](https://github.com/projectdiscovery/cloudlist)
|
||||
|
||||
@@ -265,7 +265,7 @@ cloudlist -config </path/to/config>
|
||||
|
||||
### [**cartography**](https://github.com/lyft/cartography)
|
||||
|
||||
Το Cartography είναι ένα εργαλείο Python που συγκεντρώνει στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική προβολή γράφου υποστηριζόμενη από βάση δεδομένων Neo4j.
|
||||
Το Cartography είναι ένα εργαλείο Python που συγκεντρώνει τα στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική προβολή γράφου που τροφοδοτείται από μια βάση δεδομένων Neo4j.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -302,7 +302,7 @@ ghcr.io/lyft/cartography \
|
||||
|
||||
### [**starbase**](https://github.com/JupiterOne/starbase)
|
||||
|
||||
Το Starbase συλλέγει στοιχεία και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένων υποδομών cloud, εφαρμογών SaaS, μηχανισμών ελέγχου ασφαλείας και άλλων, σε μια διαισθητική προβολή γράφου υποστηριζόμενη από τη βάση δεδομένων Neo4j.
|
||||
Το Starbase συλλέγει assets και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένων υποδομών cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική προβολή γράφου που υποστηρίζεται από τη βάση δεδομένων Neo4j.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Install" }}
|
||||
@@ -361,7 +361,7 @@ uri: bolt://localhost:7687
|
||||
|
||||
### [**SkyArk**](https://github.com/cyberark/SkyArk)
|
||||
|
||||
Εντοπίζει τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον AWS ή Azure, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί powershell.
|
||||
Ανακαλύπτει τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον AWS ή Azure, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί powershell.
|
||||
```bash
|
||||
Import-Module .\SkyArk.ps1 -force
|
||||
Start-AzureStealth
|
||||
@@ -372,15 +372,15 @@ Scan-AzureAdmins
|
||||
```
|
||||
### [Cloud Brute](https://github.com/0xsha/CloudBrute)
|
||||
|
||||
Ένα εργαλείο για να εντοπίζει την υποδομή, αρχεία και εφαρμογές μιας εταιρείας (target) στους κορυφαίους παρόχους cloud (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
Ένα εργαλείο για να εντοπίζει την υποδομή, αρχεία και εφαρμογές μιας εταιρείας (στόχος) στους κορυφαίους παρόχους cloud (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode).
|
||||
|
||||
### [CloudFox](https://github.com/BishopFox/cloudfox)
|
||||
|
||||
- CloudFox είναι ένα εργαλείο για να βρίσκει exploitable attack paths σε cloud infrastructure (currently only AWS & Azure supported with GCP upcoming).
|
||||
- Είναι ένα enumeration tool που προορίζεται να συμπληρώνει το manual pentesting.
|
||||
- Δεν δημιουργεί ούτε τροποποιεί δεδομένα εντός του cloud περιβάλλοντος.
|
||||
- Το CloudFox είναι ένα εργαλείο για την εύρεση εκμεταλλεύσιμων μονοπατιών επίθεσης σε υποδομές cloud (προς το παρόν υποστηρίζονται μόνο AWS & Azure, με υποστήριξη για GCP σύντομα).
|
||||
- Είναι ένα enumeration εργαλείο που προορίζεται να συμπληρώνει το χειροκίνητο pentesting.
|
||||
- Δεν δημιουργεί ή τροποποιεί δεδομένα εντός του cloud περιβάλλοντος.
|
||||
|
||||
### Περισσότερες λίστες εργαλείων ασφάλειας cloud
|
||||
### More lists of cloud security tools
|
||||
|
||||
- [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec)
|
||||
|
||||
@@ -410,13 +410,12 @@ aws-security/
|
||||
azure-security/
|
||||
{{#endref}}
|
||||
|
||||
### Attack Graph
|
||||
## Common Cloud Security Features
|
||||
|
||||
[**Stormspotter** ](https://github.com/Azure/Stormspotter) δημιουργεί ένα “attack graph” των πόρων σε μία Azure subscription. Επιτρέπει σε red teams και pentesters να οπτικοποιήσουν την attack surface και τις ευκαιρίες pivot μέσα σε έναν tenant, και επιταχύνει τους defenders να προσανατολιστούν και να ιεραρχήσουν γρήγορα το incident response.
|
||||
|
||||
### Office365
|
||||
|
||||
Χρειάζεστε **Global Admin** ή τουλάχιστον **Global Admin Reader** (αλλά να σημειωθεί ότι το Global Admin Reader είναι λίγο περιορισμένο). Ωστόσο, αυτοί οι περιορισμοί εμφανίζονται σε μερικά PS modules και μπορούν να παρακαμφθούν με πρόσβαση στις λειτουργίες **via the web application**.
|
||||
### Confidential Computing
|
||||
|
||||
{{#ref}}
|
||||
confidential-computing/luks2-header-malleability-null-cipher-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user