GCP - KMS Enum
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
KMS
Die Cloud Key Management Service dient als sicherer Speicher für kryptografische Schlüssel, die für Vorgänge wie das Verschlüsseln und Entschlüsseln sensibler Daten notwendig sind. Diese Schlüssel sind innerhalb von key rings organisiert, was ein strukturiertes Management ermöglicht. Außerdem kann die Zugriffskontrolle präzise konfiguriert werden, entweder auf einzelner Schlüssel-Ebene oder für den gesamten key ring, sodass Berechtigungen genau den Sicherheitsanforderungen entsprechen.
KMS key rings werden standardmäßig als global erstellt, das bedeutet, dass die Schlüssel innerhalb dieses key rings aus jeder Region zugänglich sind. Es ist jedoch möglich, bestimmte key rings in bestimmten Regionen zu erstellen.
Key Protection Level
- Software keys: Software keys werden vollständig von KMS in Software erstellt und verwaltet. Diese Schlüssel sind nicht durch ein hardware security module (HSM) geschützt und können für Test- und Entwicklungszwecke verwendet werden. Software keys werden nicht für den Produktionseinsatz empfohlen, da sie nur geringe Sicherheit bieten und anfällig für Angriffe sind.
- Cloud-hosted keys: Cloud-hosted keys werden von KMS in der Cloud erstellt und verwaltet und nutzen eine hochverfügbare und zuverlässige Infrastruktur. Diese Schlüssel sind durch HSMs geschützt, allerdings sind die HSMs nicht exklusiv für einen bestimmten Kunden reserviert. Cloud-hosted keys sind für die meisten Produktionsanwendungen geeignet.
- External keys: External keys werden außerhalb von KMS erstellt und verwaltet und in KMS für kryptografische Operationen importiert. External keys können je nach Präferenz des Kunden in einem hardware security module (HSM) oder einer Softwarebibliothek gespeichert werden.
Key Purposes
- Symmetric encryption/decryption: Wird verwendet, um Daten mit demselben Schlüssel für Verschlüsselung und Entschlüsselung zu ver- bzw. entschlüsseln. Symmetric keys sind schnell und effizient beim Ver- und Entschlüsseln großer Datenmengen.
- Supported: cryptoKeys.encrypt, cryptoKeys.decrypt
- Asymmetric Signing: Wird für sichere Kommunikation zwischen zwei Parteien verwendet, ohne den privaten Schlüssel zu teilen. Asymmetric keys kommen paarweise vor — aus einem public key und einem private key. Der public key wird geteilt, der private key bleibt geheim.
- Supported: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Asymmetric Decryption: Dient dazu, die Authentizität einer Nachricht oder von Daten zu überprüfen. Eine digitale Signatur wird mit einem private key erstellt und kann mit dem entsprechenden public key verifiziert werden.
- Supported: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC Signing: Dient dazu, Datenintegrität und Authentizität sicherzustellen, indem ein Message Authentication Code (MAC) mit einem geheimen Schlüssel erstellt wird. HMAC wird häufig für Message-Authentifizierung in Netzwerkprotokollen und Softwareanwendungen verwendet.
- Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
Standardmäßig beträgt die Rotation alle 90 Tage, sie kann jedoch einfach und vollständig angepasst werden.
Der “Programmed for destruction”-Zeitraum ist die Zeitspanne seit der Anfrage des Benutzers, den Schlüssel zu löschen, bis der Schlüssel gelöscht wird. Dieser Zeitraum kann nach Erstellung des Schlüssels nicht mehr geändert werden (Standard: 1 Tag).
Primary Version
Jeder KMS-Schlüssel kann mehrere Versionen haben; eine davon muss die Standard- (default) Version sein. Diese wird verwendet, wenn bei Interaktionen mit dem KMS-Schlüssel keine Version angegeben wird.
CMEK permission model
Wenn Objekte in Cloud Storage mit CMEK verschlüsselt sind, werden die Encrypt/Decrypt-Aufrufe an KMS vom Cloud Storage service agent des Projekts ausgeführt, dessen E-Mail service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com ist), und nicht direkt vom Endnutzer, der das Objekt liest.
Das bedeutet, um etwas zu lesen, das mit einer CMEK verschlüsselt wurde:
- Der Cloud Storage service agent des Projekts muss KMS-Berechtigungen für den verwendeten KMS-Schlüssel haben (typischerweise
roles/cloudkms.cryptoKeyEncrypterDecrypter). - Der Benutzer benötigt nur Objekt-Lese-Berechtigungen (z. B.
storage.objects.get). Er benötigt keine Berechtigungen für den KMS-Schlüssel.
Das heißt, um den Zugriff auf mit dem KMS-Schlüssel verschlüsselte Daten zu kontrollieren, muss man KMS-Berechtigungen für den Cloud Storage service agent des Projekts hinzufügen/entfernen.
Beachte, dass eine projektweite Bindung wie roles/cloudkms.cryptoKeyEncrypterDecrypter für den Storage service agent weiterhin das Entschlüsseln mit den Schlüsseln im selben Projekt erlaubt.
Enumeration
Wenn Sie die Berechtigung haben, die Schlüssel aufzulisten, können Sie folgendermaßen auf sie zugreifen:
# 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 encrypt --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
Privilege Escalation
Post Exploitation
Referenzen
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
HackTricks Cloud

