GCP - KMS Enum

Support HackTricks

KMS

Il Cloud Key Management Service funge da archiviazione sicura per chiavi crittografiche, essenziali per operazioni come la crittografia e la decrittografia di dati sensibili. Queste chiavi sono organizzate all'interno di anelli di chiavi, consentendo una gestione strutturata. Inoltre, il controllo degli accessi può essere configurato meticolosamente, sia a livello di singola chiave che per l'intero anello di chiavi, garantendo che i permessi siano precisamente allineati con i requisiti di sicurezza.

Gli anelli di chiavi KMS sono creati per impostazione predefinita come globali, il che significa che le chiavi all'interno di quell'anello di chiavi sono accessibili da qualsiasi regione. Tuttavia, è possibile creare anelli di chiavi specifici in regioni specifiche.

Livello di Protezione delle Chiavi

  • Chiavi software: Le chiavi software sono create e gestite interamente da KMS in software. Queste chiavi non sono protette da alcun modulo di sicurezza hardware (HSM) e possono essere utilizzate per test e sviluppo. Le chiavi software non sono raccomandate per l'uso in produzione perché offrono bassa sicurezza e sono suscettibili ad attacchi.

  • Chiavi ospitate nel cloud: Le chiavi ospitate nel cloud sono create e gestite da KMS nel cloud utilizzando un'infrastruttura altamente disponibile e affidabile. Queste chiavi sono protette da HSM, ma gli HSM non sono dedicati a un cliente specifico. Le chiavi ospitate nel cloud sono adatte per la maggior parte dei casi d'uso in produzione.

  • Chiavi esterne: Le chiavi esterne sono create e gestite al di fuori di KMS e vengono importate in KMS per l'uso in operazioni crittografiche. Le chiavi esterne possono essere memorizzate in un modulo di sicurezza hardware (HSM) o in una libreria software, a seconda delle preferenze del cliente.

Scopi delle Chiavi

  • Crittografia/decrittografia simmetrica: Utilizzata per crittografare e decrittografare dati utilizzando una singola chiave per entrambe le operazioni. Le chiavi simmetriche sono veloci ed efficienti per crittografare e decrittografare grandi volumi di dati.

  • Firma asimmetrica: Utilizzata per comunicazioni sicure tra due parti senza condividere la chiave. Le chiavi asimmetriche vengono fornite in coppia, costituite da una chiave pubblica e una chiave privata. La chiave pubblica viene condivisa con altri, mentre la chiave privata viene mantenuta segreta.

  • Decrittografia asimmetrica: Utilizzata per verificare l'autenticità di un messaggio o di dati. Una firma digitale viene creata utilizzando una chiave privata e può essere verificata utilizzando la corrispondente chiave pubblica.

  • Firma MAC: Utilizzata per garantire l'integrità e l'autenticità dei dati creando un codice di autenticazione del messaggio (MAC) utilizzando una chiave segreta. L'HMAC è comunemente utilizzato per l'autenticazione dei messaggi nei protocolli di rete e nelle applicazioni software.

Periodo di Rotazione & Periodo Programmato per la Distruzione

Per impostazione predefinita, ogni 90 giorni, ma può essere facilmente e completamente personalizzato.

Il periodo "Programmato per la distruzione" è il tempo trascorso da quando l'utente richiede la cancellazione della chiave fino a quando la chiave è cancellata. Non può essere modificato dopo la creazione della chiave (impostazione predefinita 1 giorno).

Versione Primaria

Ogni chiave KMS può avere diverse versioni, una di esse deve essere quella predefinita, questa sarà quella utilizzata quando non viene specificata una versione durante l'interazione con la chiave KMS.

Enumerazione

Avendo permessi per elencare le chiavi, ecco come puoi accedervi:

# 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

Elevazione dei privilegi

GCP - KMS Privesc

Post Sfruttamento

GCP - KMS Post Exploitation

Riferimenti

Supporta HackTricks

Last updated