AWS - Redshift Enum
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Amazon Redshift
Redshift ist ein vollständig verwalteter Dienst, der auf über ein Petabyte skalieren kann und als Datenlager für Big Data-Lösungen verwendet wird. Mit Redshift-Clustern können Sie Analysen an Ihren Datensätzen mit schnellen, SQL-basierten Abfragewerkzeugen und Business-Intelligence-Anwendungen durchführen, um ein besseres Verständnis für Ihre Geschäftsvision zu gewinnen.
Redshift bietet Verschlüsselung im Ruhezustand mit einer vierstufigen Hierarchie von Verschlüsselungsschlüsseln, die entweder KMS oder CloudHSM zur Verwaltung der obersten Schicht von Schlüsseln verwenden. Wenn die Verschlüsselung für Ihren Cluster aktiviert ist, kann sie nicht deaktiviert werden und umgekehrt. Wenn Sie einen unverschlüsselten Cluster haben, kann er nicht verschlüsselt werden.
Die Verschlüsselung für Ihren Cluster kann nur während seiner Erstellung erfolgen, und sobald er verschlüsselt ist, sind die Daten, Metadaten und alle Snapshots ebenfalls verschlüsselt. Die Stufen der Verschlüsselungsschlüssel sind wie folgt: Stufe eins ist der Master-Schlüssel, Stufe zwei ist der Cluster-Verschlüsselungsschlüssel, der CEK, Stufe drei, der Datenbank-Verschlüsselungsschlüssel, der DEK, und schließlich Stufe vier, die Datenverschlüsselungsschlüssel selbst.
KMS
Während der Erstellung Ihres Clusters können Sie entweder den Standard-KMS-Schlüssel für Redshift auswählen oder Ihren eigenen CMK auswählen, was Ihnen mehr Flexibilität bei der Kontrolle des Schlüssels gibt, insbesondere aus einer prüfbaren Perspektive.
Der Standard-KMS-Schlüssel für Redshift wird automatisch von Redshift erstellt, wenn die Schlüsseloption zum ersten Mal ausgewählt und verwendet wird, und er wird vollständig von AWS verwaltet.
Dieser KMS-Schlüssel wird dann mit dem CMK-Master-Schlüssel, Stufe eins, verschlüsselt. Dieser verschlüsselte KMS-Datenschlüssel wird dann als Cluster-Verschlüsselungsschlüssel, der CEK, Stufe zwei, verwendet. Dieser CEK wird dann von KMS an Redshift gesendet, wo er getrennt vom Cluster gespeichert wird. Redshift sendet dann diesen verschlüsselten CEK über einen sicheren Kanal an den Cluster, wo er im Speicher gespeichert wird.
Redshift fordert dann KMS auf, den CEK, Stufe zwei, zu entschlüsseln. Dieser entschlüsselte CEK wird dann ebenfalls im Speicher gespeichert. Redshift erstellt dann einen zufälligen Datenbank-Verschlüsselungsschlüssel, den DEK, Stufe drei, und lädt diesen in den Speicher des Clusters. Der entschlüsselte CEK im Speicher verschlüsselt dann den DEK, der ebenfalls im Speicher gespeichert wird.
Dieser verschlüsselte DEK wird dann über einen sicheren Kanal gesendet und in Redshift getrennt vom Cluster gespeichert. Sowohl der CEK als auch der DEK sind jetzt im Speicher des Clusters sowohl in verschlüsselter als auch in entschlüsselter Form gespeichert. Der entschlüsselte DEK wird dann verwendet, um Datenverschlüsselungsschlüssel, Stufe vier, zu verschlüsseln, die von Redshift für jeden Datenblock in der Datenbank zufällig generiert werden.
Sie können AWS Trusted Advisor verwenden, um die Konfiguration Ihrer Amazon S3-Buckets zu überwachen und sicherzustellen, dass das Bucket-Logging aktiviert ist, was nützlich sein kann, um Sicherheitsprüfungen durchzuführen und Nutzungsmuster in S3 zu verfolgen.
CloudHSM
Verwendung von Redshift mit CloudHSM
Wenn Sie mit CloudHSM arbeiten, um Ihre Verschlüsselung durchzuführen, müssen Sie zunächst eine vertrauenswürdige Verbindung zwischen Ihrem HSM-Client und Redshift einrichten, während Sie Client- und Serverzertifikate verwenden.
Diese Verbindung ist erforderlich, um sichere Kommunikationen bereitzustellen, die es ermöglichen, Verschlüsselungsschlüssel zwischen Ihrem HSM-Client und Ihren Redshift-Clustern zu senden. Mit einem zufällig generierten privaten und öffentlichen Schlüsselpaar erstellt Redshift ein öffentliches Client-Zertifikat, das von Redshift verschlüsselt und gespeichert wird. Dies muss heruntergeladen und Ihrem HSM-Client zugeordnet sowie dem richtigen HSM-Partition zugewiesen werden.
Sie müssen dann Redshift mit den folgenden Details Ihres HSM-Clients konfigurieren: die HSM-IP-Adresse, den Namen der HSM-Partition, das Passwort der HSM-Partition und das öffentliche HSM-Serverzertifikat, das von CloudHSM mit einem internen Master-Schlüssel verschlüsselt wird. Sobald diese Informationen bereitgestellt wurden, wird Redshift bestätigen und überprüfen, dass es sich mit der Entwicklungspartition verbinden und darauf zugreifen kann.
Wenn Ihre internen Sicherheitsrichtlinien oder Governance-Kontrollen vorschreiben, dass Sie eine Schlüsselrotation anwenden müssen, ist dies mit Redshift möglich, sodass Sie Verschlüsselungsschlüssel für verschlüsselte Cluster rotieren können. Sie müssen jedoch beachten, dass während des Schlüsselrotationsprozesses der Cluster für einen sehr kurzen Zeitraum nicht verfügbar sein wird, und es ist am besten, Schlüssel nur dann zu rotieren, wenn Sie es benötigen oder wenn Sie das Gefühl haben, dass sie möglicherweise kompromittiert wurden.
Während der Rotation wird Redshift den CEK für Ihren Cluster und für alle Backups dieses Clusters rotieren. Es wird einen DEK für den Cluster rotieren, aber es ist nicht möglich, einen DEK für die in S3 gespeicherten Snapshots zu rotieren, die mit dem DEK verschlüsselt wurden. Es wird den Cluster in einen Zustand 'Schlüssel rotieren' versetzen, bis der Prozess abgeschlossen ist, wenn der Status wieder auf 'verfügbar' zurückkehrt.
Enumeration
# Get clusters
aws redshift describe-clusters
## Get if publicly accessible
aws redshift describe-clusters | jq -r ".Clusters[].PubliclyAccessible"
## Get DB username to login
aws redshift describe-clusters | jq -r ".Clusters[].MasterUsername"
## Get endpoint
aws redshift describe-clusters | jq -r ".Clusters[].Endpoint"
## Public addresses of the nodes
aws redshift describe-clusters | jq -r ".Clusters[].ClusterNodes[].PublicIPAddress"
## Get IAM roles of the clusters
aws redshift describe-clusters | jq -r ".Clusters[].IamRoles"
# Endpoint access & authorization
aws redshift describe-endpoint-access
aws redshift describe-endpoint-authorization
# Get credentials
aws redshift get-cluster-credentials --db-user <username> --cluster-identifier <cluster-id>
## By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes).
aws redshift get-cluster-credentials-with-iam --cluster-identifier <cluster-id>
## Gives creds to access redshift with the IAM redshift permissions given to the current AWS account
## More in https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html
# Authentication profiles
aws redshift describe-authentication-profiles
# Snapshots
aws redshift describe-cluster-snapshots
# Scheduled actions
aws redshift describe-scheduled-actions
# Connect
# The redshift instance must be publicly available (not by default), the sg need to allow inbounds connections to the port and you need creds
psql -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U admin -d dev -p 5439
Privesc
Persistenz
Die folgenden Aktionen ermöglichen den Zugriff auf den Cluster für andere AWS-Konten:
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.