GCP - KMS Enum

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

KMS

Usługa zarządzania kluczami w chmurze (Cloud Key Management Service - KMS) służy jako bezpieczne miejsce przechowywania kluczy kryptograficznych, które są niezbędne do operacji takich jak szyfrowanie i deszyfrowanie danych. Klucze te są zorganizowane w obrębie pierścieni kluczy, co umożliwia strukturalne zarządzanie nimi. Ponadto, kontrola dostępu może być precyzyjnie skonfigurowana, zarówno na poziomie indywidualnego klucza, jak i dla całego pierścienia kluczy, zapewniając, że uprawnienia są dokładnie dopasowane do wymagań bezpieczeństwa.

Pierścienie kluczy KMS są domyślnie tworzone jako globalne, co oznacza, że klucze wewnątrz tego pierścienia kluczy są dostępne z dowolnego regionu. Jednak możliwe jest tworzenie konkretnych pierścieni kluczy w konkretnych regionach.

Poziom ochrony klucza

  • Klucze programowe: Klucze programowe są tworzone i zarządzane w całości przez KMS w oprogramowaniu. Klucze te nie są chronione przez żadny moduł zabezpieczeń sprzętowych (HSM) i mogą być używane do celów testowych i rozwojowych. Klucze programowe nie są zalecane do użycia w produkcji, ponieważ zapewniają niskie bezpieczeństwo i są podatne na ataki.

  • Klucze hostowane w chmurze: Klucze hostowane w chmurze są tworzone i zarządzane przez KMS w chmurze za pomocą infrastruktury o wysokiej dostępności i niezawodności. Klucze te są chronione przez moduły zabezpieczeń sprzętowych (HSM), ale moduły HSM nie są dedykowane dla konkretnego klienta. Klucze hostowane w chmurze są odpowiednie dla większości przypadków użycia w produkcji.

  • Klucze zewnętrzne: Klucze zewnętrzne są tworzone i zarządzane poza KMS, a następnie importowane do KMS w celu użycia w operacjach kryptograficznych. Klucze zewnętrzne mogą być przechowywane w module zabezpieczeń sprzętowych (HSM) lub bibliotece oprogramowania, w zależności od preferencji klienta.

Cele klucza

  • Szyfrowanie/deszyfrowanie symetryczne: Używane do szyfrowania i deszyfrowania danych za pomocą jednego klucza dla obu operacji. Klucze symetryczne są szybkie i wydajne w szyfrowaniu i deszyfrowaniu dużych ilości danych.

  • Podpisywanie asymetryczne: Używane do bezpiecznej komunikacji między dwiema stronami bez udostępniania klucza. Klucze asymetryczne składają się z pary, składającej się z klucza publicznego i klucza prywatnego. Klucz publiczny jest udostępniany innym, podczas gdy klucz prywatny jest utrzymywany w tajemnicy.

  • Deszyfrowanie asymetryczne: Używane do weryfikacji autentyczności wiadomości lub danych. Podpis cyfrowy jest tworzony za pomocą klucza prywatnego i może być zweryfikowany za pomocą odpowiadającego mu klucza publicznego.

  • Podpisywanie MAC: Używane do zapewnienia integralności i autentyczności danych poprzez tworzenie kodu uwierzytelniającego wiadomość (MAC) za pomocą tajnego klucza. HMAC jest powszechnie stosowany do uwierzytelniania wiadomości w protokołach sieciowych i aplikacjach oprogramowania.

Okres rotacji i okres programowanego zniszczenia

Domyślnie wynosi 90 dni, ale można go łatwo i całkowicie dostosować.

Okres "Programowany do zniszczenia" to czas od momentu, gdy użytkownik poprosi o usunięcie klucza do momentu, gdy klucz zostanie usunięty. Nie można go zmienić po utworzeniu klucza (domyślnie 1 dzień).

Wersja podstawowa

Każdy klucz KMS może mieć kilka wersji, z których jedna musi być domyślna, ta zostanie użyta, gdy nie zostanie określona żadna wersja podczas interakcji z kluczem KMS.

Wyliczanie

Jeśli masz uprawnienia do listowania kluczy, to jest sposób, w jaki możesz do nich uzyskać dostęp:

# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>

# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>

# Encrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

Eskalacja uprawnień

pageGCP - KMS Privesc

Po eksploatacji

pageGCP - KMS Post Exploitation

Referencje

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated