AWS - Redshift Enum

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Amazon Redshift

Redshift è un servizio completamente gestito che può scalare fino a oltre un petabyte di dimensione, utilizzato come data warehouse per soluzioni big data. Utilizzando cluster Redshift, è possibile eseguire analisi sui tuoi set di dati utilizzando strumenti di query veloci basati su SQL e applicazioni di business intelligence per ottenere una maggiore comprensione della visione per la tua attività.

Redshift offre la crittografia a riposo utilizzando una gerarchia a quattro livelli di chiavi di crittografia utilizzando KMS o CloudHSM per gestire il livello superiore delle chiavi. Quando la crittografia è abilitata per il tuo cluster, non può essere disabilitata e viceversa. Quando hai un cluster non crittografato, non può essere crittografato.

La crittografia per il tuo cluster può avvenire solo durante la sua creazione e, una volta crittografato, i dati, i metadati e gli snapshot sono anche crittografati. I livelli di gerarchia delle chiavi di crittografia sono i seguenti, il livello uno è la chiave principale, il livello due è la chiave di crittografia del cluster, il CEK, il livello tre, la chiave di crittografia del database, il DEK, e infine il livello quattro, le chiavi di crittografia dei dati stessi.

KMS

Durante la creazione del tuo cluster, puoi selezionare la chiave KMS predefinita per Redshift o selezionare la tua CMK, che ti offre maggiore flessibilità sul controllo della chiave, specificamente da un punto di vista verificabile.

La chiave KMS predefinita per Redshift viene creata automaticamente da Redshift la prima volta che viene selezionata e utilizzata l'opzione della chiave ed è completamente gestita da AWS.

Questa chiave KMS viene quindi crittografata con la chiave principale CMK, livello uno. Questa chiave di dati KMS crittografata viene quindi utilizzata come chiave di crittografia del cluster, il CEK, livello due. Questo CEK viene quindi inviato da KMS a Redshift dove viene memorizzato separatamente dal cluster. Redshift invia quindi questo CEK crittografato al cluster su un canale sicuro dove viene memorizzato in memoria.

Redshift quindi richiede a KMS di decrittografare il CEK, livello due. Questo CEK decrittografato viene quindi anch'esso memorizzato in memoria. Redshift quindi crea una chiave di crittografia del database casuale, il DEK, livello tre, e la carica nella memoria del cluster. Il CEK decrittografato in memoria crittografa il DEK, che viene anch'esso memorizzato in memoria.

Questo DEK crittografato viene quindi inviato su un canale sicuro e memorizzato in Redshift separatamente dal cluster. Sia il CEK che il DEK sono ora memorizzati in memoria del cluster sia in forma crittografata che decrittografata. Il DEK decrittografato viene quindi utilizzato per crittografare le chiavi di dati, livello quattro, che vengono generate casualmente da Redshift per ciascun blocco di dati nel database.

Puoi utilizzare AWS Trusted Advisor per monitorare la configurazione dei tuoi bucket Amazon S3 e assicurarti che il logging del bucket sia abilitato, il che può essere utile per eseguire audit di sicurezza e tracciare i modelli di utilizzo in S3.

CloudHSM

Utilizzo di Redshift con CloudHSM

Quando si lavora con CloudHSM per eseguire la crittografia, innanzitutto è necessario configurare una connessione attendibile tra il client HSM e Redshift utilizzando certificati client e server.

Questa connessione è necessaria per fornire comunicazioni sicure, consentendo alle chiavi di crittografia di essere inviate tra il client HSM e i cluster Redshift. Utilizzando una coppia di chiavi privata e pubblica generata casualmente, Redshift crea un certificato client pubblico, che viene crittografato e memorizzato da Redshift. Questo deve essere scaricato e registrato al client HSM e assegnato alla partizione HSM corretta.

È quindi necessario configurare Redshift con i seguenti dettagli del client HSM: l'indirizzo IP HSM, il nome della partizione HSM, la password della partizione HSM e il certificato server HSM pubblico, che viene crittografato da CloudHSM utilizzando una chiave principale interna. Una volta fornite queste informazioni, Redshift confermerà e verificherà che possa connettersi e accedere alla partizione di sviluppo.

Se le politiche di sicurezza interne o i controlli di governance impongono di applicare la rotazione delle chiavi, allora è possibile con Redshift consentendo di ruotare le chiavi di crittografia per i cluster crittografati, tuttavia, è necessario essere consapevoli che durante il processo di rotazione delle chiavi, renderà un cluster non disponibile per un periodo molto breve, quindi è meglio ruotare le chiavi solo quando è necessario, o se si ritiene che possano essere compromesse.

Durante la rotazione, Redshift ruoterà il CEK per il tuo cluster e per qualsiasi backup di quel cluster. Ruoterà un DEK per il cluster ma non è possibile ruotare un DEK per gli snapshot memorizzati in S3 che sono stati crittografati utilizzando il DEK. Metterà il cluster in uno stato di 'rotazione delle chiavi' fino a quando il processo non sarà completato, momento in cui lo stato tornerà a 'disponibile'.

Enumerazione

# 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

pageAWS - Redshift Privesc

Persistenza

Le seguenti azioni consentono di concedere l'accesso ad altri account AWS al cluster:

Impara l'hacking AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated