AWS - Redshift Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Amazon Redshift

Redshift es un servicio completamente administrado que puede escalar hasta más de un petabyte de tamaño, que se utiliza como un almacén de datos para soluciones de big data. Utilizando clústeres de Redshift, puedes ejecutar análisis contra tus conjuntos de datos utilizando herramientas de consulta rápidas basadas en SQL y aplicaciones de inteligencia empresarial para obtener una mayor comprensión de la visión de tu negocio.

Redshift ofrece cifrado en reposo utilizando una jerarquía de cuatro niveles de claves de cifrado utilizando KMS o CloudHSM para administrar el nivel superior de claves. Cuando el cifrado está habilitado para tu clúster, no se puede deshabilitar y viceversa. Cuando tienes un clúster no cifrado, no se puede cifrar.

El cifrado para tu clúster solo puede ocurrir durante su creación, y una vez cifrado, los datos, metadatos y cualquier instantánea también están cifrados. Los niveles de jerarquía de claves de cifrado son los siguientes, el nivel uno es la clave maestra, el nivel dos es la clave de cifrado del clúster, el CEK, el nivel tres, la clave de cifrado de la base de datos, el DEK, y finalmente el nivel cuatro, las claves de cifrado de los datos en sí.

KMS

Durante la creación de tu clúster, puedes seleccionar la clave KMS predeterminada para Redshift o seleccionar tu propio CMK, lo que te brinda más flexibilidad sobre el control de la clave, específicamente desde una perspectiva auditiva.

La clave KMS predeterminada para Redshift se crea automáticamente por Redshift la primera vez que se selecciona y se utiliza la opción de clave, y es completamente administrada por AWS.

Esta clave KMS se cifra con la clave maestra CMK, nivel uno. Esta clave de datos KMS cifrada se utiliza como la clave de cifrado del clúster, el CEK, nivel dos. Este CEK se envía luego por KMS a Redshift donde se almacena por separado del clúster. Redshift luego envía este CEK cifrado al clúster a través de un canal seguro donde se almacena en memoria.

Redshift luego solicita a KMS descifrar el CEK, nivel dos. Este CEK descifrado también se almacena en memoria. Luego, Redshift crea una clave de cifrado de base de datos aleatoria, el DEK, nivel tres, y carga eso en la memoria del clúster. El CEK descifrado en memoria cifra el DEK, que también se almacena en memoria.

Este DEK cifrado se envía luego por un canal seguro y se almacena en Redshift por separado del clúster. Tanto el CEK como el DEK ahora se almacenan en la memoria del clúster tanto en forma cifrada como descifrada. El DEK descifrado se utiliza luego para cifrar claves de datos, nivel cuatro, que son generadas aleatoriamente por Redshift para cada bloque de datos en la base de datos.

Puedes utilizar AWS Trusted Advisor para monitorear la configuración de tus buckets de Amazon S3 y asegurarte de que el registro de buckets esté habilitado, lo que puede ser útil para realizar auditorías de seguridad y rastrear patrones de uso en S3.

CloudHSM

Usando Redshift con CloudHSM

Al trabajar con CloudHSM para realizar tu cifrado, primero debes configurar una conexión de confianza entre tu cliente HSM y Redshift mientras usas certificados de cliente y servidor.

Esta conexión es necesaria para proporcionar comunicaciones seguras, permitiendo que las claves de cifrado se envíen entre tu cliente HSM y tus clústeres de Redshift. Utilizando un par de claves privada y pública generadas aleatoriamente, Redshift crea un certificado de cliente público, que se cifra y se almacena por Redshift. Este debe ser descargado y registrado en tu cliente HSM, y asignado a la partición HSM correcta.

Luego debes configurar Redshift con los siguientes detalles de tu cliente HSM: la dirección IP del HSM, el nombre de la partición HSM, la contraseña de la partición HSM y el certificado público del servidor HSM, que está cifrado por CloudHSM utilizando una clave maestra interna. Una vez que se haya proporcionado esta información, Redshift confirmará y verificará que puede conectarse y acceder a la partición de desarrollo.

Si tus políticas de seguridad internas o controles de gobernanza dictan que debes aplicar rotación de claves, entonces esto es posible con Redshift permitiéndote rotar claves de cifrado para clústeres cifrados, sin embargo, debes tener en cuenta que durante el proceso de rotación de claves, hará que un clúster no esté disponible por un período muy corto de tiempo, por lo que es mejor rotar claves solo cuando sea necesario, o si sientes que pueden haber sido comprometidas.

Durante la rotación, Redshift rotará el CEK para tu clúster y para cualquier respaldo de ese clúster. Rotará un DEK para el clúster pero no es posible rotar un DEK para las instantáneas almacenadas en S3 que han sido cifradas usando el DEK. Pondrá el clúster en un estado de 'rotación de claves' hasta que se complete el proceso, momento en el que el estado volverá a 'disponible'.

Enumeración

# 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

Escalada de privilegios

pageAWS - Redshift Privesc

Persistencia

Las siguientes acciones permiten otorgar acceso a otros cuentas de AWS al clúster:

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización