AWS - Redshift Enum

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Amazon Redshift

Redshift to w pełni zarządzana usługa, która może skalować się do ponad petabajta, która jest używana jako magazyn danych dla rozwiązań big data. Korzystając z klastrów Redshift, możesz przeprowadzać analizy na swoich zbiorach danych za pomocą szybkich narzędzi zapytań opartych na SQL i aplikacji do inteligencji biznesowej, aby zdobyć większe zrozumienie wizji dla swojego biznesu.

Redshift oferuje szyfrowanie w spoczynku za pomocą czterostopniowej hierarchii kluczy szyfrowania, używając do zarządzania najwyższym poziomem kluczy KMS lub CloudHSM. Gdy szyfrowanie jest włączone dla klastra, nie można go wyłączyć, i odwrotnie. Gdy masz niezaszyfrowany klaster, nie można go zaszyfrować.

Szyfrowanie klastra może nastąpić tylko podczas jego tworzenia, a po zaszyfrowaniu dane, metadane i wszelkie migawki są również szyfrowane. Poziomy hierarchii kluczy szyfrowania są następujące: poziom jeden to klucz główny, poziom dwa to klucz szyfrowania klastra, CEK, poziom trzy to klucz szyfrowania bazy danych, DEK, a na końcu poziom cztery to same klucze szyfrowania danych.

KMS

Podczas tworzenia klastra możesz wybrać albo domyślny klucz KMS dla Redshift, albo wybrać własny CMK, co daje większą elastyczność w kontroli klucza, szczególnie z perspektywy audytowej.

Domyślny klucz KMS dla Redshift jest automatycznie tworzony przez Redshift za pierwszym razem, gdy opcja klucza jest wybierana i używana, i jest w pełni zarządzany przez AWS.

Ten klucz KMS jest następnie szyfrowany kluczem głównym CMK, poziom jeden. Ten zaszyfrowany klucz danych KMS jest następnie używany jako klucz szyfrowania klastra, CEK, poziom dwa. Ten CEK jest następnie wysyłany przez KMS do Redshift, gdzie jest przechowywany oddzielnie od klastra. Redshift następnie wysyła ten zaszyfrowany CEK do klastra przez bezpieczny kanał, gdzie jest przechowywany w pamięci.

Redshift następnie prosi KMS o odszyfrowanie CEK, poziom dwa. Ten odszyfrowany CEK jest również przechowywany w pamięci. Redshift następnie tworzy losowy klucz szyfrowania bazy danych, DEK, poziom trzy, i wczytuje go do pamięci klastra. Odszyfrowany CEK w pamięci szyfruje DEK, który również jest przechowywany w pamięci.

Ten zaszyfrowany DEK jest następnie wysyłany przez bezpieczny kanał i przechowywany w Redshift oddzielnie od klastra. Zarówno CEK, jak i DEK są teraz przechowywane w pamięci klastra zarówno w formie zaszyfrowanej, jak i odszyfrowanej. Odszyfrowany DEK jest następnie używany do szyfrowania kluczy danych, poziom cztery, które są losowo generowane przez Redshift dla każdego bloku danych w bazie danych.

Możesz użyć AWS Trusted Advisor do monitorowania konfiguracji swoich kubełków Amazon S3 i upewnienia się, że logowanie kubełka jest włączone, co może być przydatne do przeprowadzania audytów bezpieczeństwa i śledzenia wzorców użycia w S3.

CloudHSM

Korzystanie z Redshift z CloudHSM

Pracując z CloudHSM w celu przeprowadzenia szyfrowania, najpierw musisz ustanowić zaufane połączenie między klientem HSM a Redshift, korzystając z certyfikatów klienta i serwera.

To połączenie jest wymagane do zapewnienia bezpiecznej komunikacji, umożliwiając przesyłanie kluczy szyfrowania między klientem HSM a klastrami Redshift. Korzystając z losowo generowanej pary kluczy prywatnego i publicznego, Redshift tworzy publiczny certyfikat klienta, który jest szyfrowany i przechowywany przez Redshift. Należy go pobrać i zarejestrować w kliencie HSM oraz przypisać do odpowiedniej partycji HSM.

Następnie musisz skonfigurować Redshift z następującymi szczegółami twojego klienta HSM: adres IP HSM, nazwę partycji HSM, hasło partycji HSM oraz publiczny certyfikat serwera HSM, który jest szyfrowany przez CloudHSM za pomocą wewnętrznego klucza głównego. Po dostarczeniu tych informacji Redshift potwierdzi i zweryfikuje, czy może nawiązać połączenie i uzyskać dostęp do partycji deweloperskiej.

Jeśli twoje wewnętrzne polityki bezpieczeństwa lub kontrole zarządzania wymagają, abyś stosował rotację kluczy, jest to możliwe z Redshift, umożliwiając obracanie kluczami szyfrowania dla zaszyfrowanych klastrów, jednak musisz być świadomy, że podczas procesu rotacji kluczy, klaster stanie się niedostępny przez bardzo krótki okres czasu, dlatego najlepiej obracać klucze tylko wtedy, gdy jest to konieczne, lub jeśli uważasz, że mogły zostać skompromitowane.

Podczas rotacji Redshift obraca CEK dla twojego klastra i dla wszelkich kopii zapasowych tego klastra. Obraca DEK dla klastra, ale nie jest możliwe obrócenie DEK dla migawek przechowywanych w S3, które zostały zaszyfrowane za pomocą DEK. Klastra zostanie umieszczony w stanie „rotacji kluczy” do momentu zakończenia procesu, po czym status powróci do „dostępny”.

Wyliczanie

# 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

Eskalacja uprawnień

pageAWS - Redshift Privesc

Trwałość

Następujące działania pozwalają na udzielenie dostępu do innego konta AWS do klastra:

Zacznij od zera i zostań ekspertem AWS Red Team z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated