AWS - Redshift Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Amazon Redshift

Redshift é um serviço totalmente gerenciado que pode escalar para mais de um petabyte de tamanho, que é usado como um data warehouse para soluções de big data. Usando clusters Redshift, você pode executar análises em seus conjuntos de dados usando ferramentas de consulta rápidas baseadas em SQL e aplicativos de inteligência de negócios para obter uma compreensão maior da visão para o seu negócio.

Redshift oferece criptografia em repouso usando uma hierarquia de quatro níveis de chaves de criptografia usando KMS ou CloudHSM para gerenciar o nível superior de chaves. Quando a criptografia é habilitada para seu cluster, ela não pode ser desabilitada e vice-versa. Quando você tem um cluster não criptografado, ele não pode ser criptografado.

A criptografia para seu cluster só pode acontecer durante sua criação e, uma vez criptografado, os dados, metadados e quaisquer snapshots também são criptografados. Os níveis de hierarquia das chaves de criptografia são os seguintes, o nível um é a chave mestra, o nível dois é a chave de criptografia do cluster, o CEK, o nível três, a chave de criptografia do banco de dados, o DEK, e finalmente o nível quatro, as próprias chaves de criptografia de dados.

KMS

Durante a criação do seu cluster, você pode selecionar a chave KMS padrão para Redshift ou selecionar sua própria CMK, o que lhe dá mais flexibilidade sobre o controle da chave, especificamente de uma perspectiva auditável.

A chave KMS padrão para Redshift é criada automaticamente pelo Redshift na primeira vez que a opção de chave é selecionada e usada, e é totalmente gerenciada pela AWS.

Esta chave KMS é então criptografada com a chave mestra CMK, nível um. Esta chave de dados KMS criptografada é então usada como a chave de criptografia do cluster, o CEK, nível dois. Este CEK é então enviado pelo KMS para o Redshift, onde é armazenado separadamente do cluster. O Redshift então envia este CEK criptografado para o cluster por um canal seguro onde é armazenado na memória.

O Redshift então solicita ao KMS para descriptografar o CEK, nível dois. Este CEK descriptografado também é armazenado na memória. O Redshift então cria uma chave de criptografia de banco de dados aleatória, o DEK, nível três, e carrega isso na memória do cluster. O CEK descriptografado na memória então criptografa o DEK, que também é armazenado na memória.

Este DEK criptografado é então enviado por um canal seguro e armazenado no Redshift separadamente do cluster. Tanto o CEK quanto o DEK agora estão armazenados na memória do cluster tanto em forma criptografada quanto descriptografada. O DEK descriptografado é então usado para criptografar chaves de dados, nível quatro, que são geradas aleatoriamente pelo Redshift para cada bloco de dados no banco de dados.

Você pode usar o AWS Trusted Advisor para monitorar a configuração de seus buckets do Amazon S3 e garantir que o log do bucket esteja habilitado, o que pode ser útil para realizar auditorias de segurança e rastrear padrões de uso no S3.

CloudHSM

Usando Redshift com CloudHSM

Ao trabalhar com CloudHSM para realizar sua criptografia, primeiro você deve configurar uma conexão confiável entre seu cliente HSM e o Redshift enquanto usa certificados de cliente e servidor.

Essa conexão é necessária para fornecer comunicações seguras, permitindo que chaves de criptografia sejam enviadas entre seu cliente HSM e seus clusters Redshift. Usando um par de chaves privada e pública geradas aleatoriamente, o Redshift cria um certificado de cliente público, que é criptografado e armazenado pelo Redshift. Isso deve ser baixado e registrado em seu cliente HSM e atribuído à partição HSM correta.

Você deve então configurar o Redshift com os seguintes detalhes do seu cliente HSM: o endereço IP do HSM, o nome da partição HSM, a senha da partição HSM e o certificado público do servidor HSM, que é criptografado pelo CloudHSM usando uma chave mestra interna. Uma vez que essas informações tenham sido fornecidas, o Redshift confirmará e verificará que pode se conectar e acessar a partição de desenvolvimento.

Se suas políticas de segurança internas ou controles de governança ditarem que você deve aplicar rotação de chaves, então isso é possível com o Redshift permitindo que você rotacione chaves de criptografia para clusters criptografados, no entanto, você precisa estar ciente de que durante o processo de rotação de chaves, ele tornará um cluster indisponível por um período muito curto de tempo, então é melhor apenas rotacionar chaves conforme necessário, ou se você sentir que elas podem ter sido comprometidas.

Durante a rotação, o Redshift irá rotacionar o CEK para seu cluster e para quaisquer backups desse cluster. Ele irá rotacionar um DEK para o cluster, mas não é possível rotacionar um DEK para os snapshots armazenados no S3 que foram criptografados usando o DEK. Ele colocará o cluster em um estado de 'rotating keys' até que o processo seja concluído, quando o status retornará para 'available'.

Enumeração

# 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

Escalação de Privilégios

pageAWS - Redshift Privesc

Persistência

As seguintes ações permitem conceder acesso a outros contas da AWS ao cluster:

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización