AWS - KMS Enum

Support HackTricks

KMS - Servizio di Gestione delle Chiavi

Il Servizio di Gestione delle Chiavi di AWS (AWS KMS) è presentato come un servizio gestito, semplificando il processo per gli utenti di creare e gestire le chiavi master dei clienti (CMK). Queste CMK sono fondamentali per la crittografia dei dati degli utenti. Una caratteristica notevole di AWS KMS è che le CMK sono prevalentemente protette da moduli di sicurezza hardware (HSM), migliorando la protezione delle chiavi di crittografia.

KMS utilizza crittografia simmetrica. Questa viene utilizzata per crittografare le informazioni a riposo (ad esempio, all'interno di un S3). Se hai bisogno di crittografare le informazioni in transito, devi utilizzare qualcosa come TLS.

KMS è un servizio specifico per regione.

Gli amministratori di Amazon non hanno accesso alle tue chiavi. Non possono recuperare le tue chiavi e non ti aiutano con la crittografia delle tue chiavi. AWS semplicemente amministra il sistema operativo e l'applicazione sottostante; spetta a noi amministrare le nostre chiavi di crittografia e gestire come vengono utilizzate.

Chiavi Master dei Clienti (CMK): Possono crittografare dati fino a 4KB di dimensione. Vengono tipicamente utilizzate per creare, crittografare e decrittografare le DEK (Data Encryption Keys). Poi le DEK vengono utilizzate per crittografare i dati.

Una chiave master dei clienti (CMK) è una rappresentazione logica di una chiave master in AWS KMS. Oltre agli identificatori della chiave master e ad altri metadati, inclusi la data di creazione, la descrizione e lo stato della chiave, una CMK contiene il materiale della chiave utilizzato per crittografare e decrittografare i dati. Quando crei una CMK, per impostazione predefinita, AWS KMS genera il materiale della chiave per quella CMK. Tuttavia, puoi scegliere di creare una CMK senza materiale della chiave e poi importare il tuo materiale della chiave in quella CMK.

Ci sono 2 tipi di chiavi master:

  • CMK gestite da AWS: Utilizzate da altri servizi per crittografare i dati. Viene utilizzata dal servizio che l'ha creata in una regione. Vengono create la prima volta che implementi la crittografia in quel servizio. Ruotano ogni 3 anni e non è possibile modificarle.

  • CMK gestite dal cliente: Flessibilità, rotazione, accesso configurabile e politica delle chiavi. Abilitano e disabilitano le chiavi.

Crittografia a Involucro nel contesto del Servizio di Gestione delle Chiavi (KMS): Sistema gerarchico a due livelli per crittografare i dati con la chiave dei dati e poi crittografare la chiave dei dati con la chiave master.

Politiche delle Chiavi

Queste definiscono chi può utilizzare e accedere a una chiave in KMS.

Per impostazione predefinita:

  • Fornisce all'account AWS che possiede la chiave KMS accesso completo alla chiave KMS.

A differenza di altre politiche delle risorse AWS, una politica della chiave KMS di AWS non fornisce automaticamente permessi all'account o a uno dei suoi utenti. Per fornire permessi agli amministratori dell'account, la politica della chiave deve includere una dichiarazione esplicita che fornisca questo permesso, come questa.

  • Senza consentire all'account("AWS": "arn:aws:iam::111122223333:root") i permessi IAM non funzioneranno.

  • Consente all'account di utilizzare le politiche IAM per consentire l'accesso alla chiave KMS, oltre alla politica della chiave.

Senza questo permesso, le politiche IAM che consentono l'accesso alla chiave sono inefficaci, sebbene le politiche IAM che negano l'accesso alla chiave siano ancora efficaci.

  • Riduce il rischio che la chiave diventi ingestibile dando permessi di controllo accesso agli amministratori dell'account, incluso l'utente root dell'account, che non può essere eliminato.

Esempio di politica predefinita:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

Se l'account è autorizzato ("arn:aws:iam::111122223333:root"), un principale dell'account avrà comunque bisogno di permessi IAM per utilizzare la chiave KMS. Tuttavia, se l'ARN di un ruolo, ad esempio, è specificamente autorizzato nella Politica della Chiave, quel ruolo non ha bisogno di permessi IAM.

Dettagli della Politica

Proprietà di una politica:

  • Documento basato su JSON

  • Risorsa --> Risorse interessate (può essere "*")

  • Azione --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (permessi)

  • Effetto --> Consenti/Nega

  • Principale --> arn interessato

  • Condizioni (opzionale) --> Condizione per concedere i permessi

Concessioni:

  • Consente di delegare i propri permessi a un altro principale AWS all'interno del proprio account AWS. È necessario crearli utilizzando le API AWS KMS. Può essere indicato l'identificatore CMK, il principale beneficiario e il livello richiesto di operazione (Decrypt, Encrypt, GenerateDataKey...)

  • Dopo che la concessione è stata creata, vengono emessi un GrantToken e un GrantID

Accesso:

  • Tramite politica della chiave -- Se esiste, questa ha precedenza sulla politica IAM

  • Tramite politica IAM

  • Tramite concessioni

Amministratori delle Chiavi

Amministratore delle chiavi per impostazione predefinita:

  • Ha accesso per gestire KMS ma non per crittografare o decrittografare dati

  • Solo gli utenti e i ruoli IAM possono essere aggiunti all'elenco degli Amministratori delle Chiavi (non i gruppi)

  • Se viene utilizzato un CMK esterno, gli Amministratori delle Chiavi hanno il permesso di importare materiale di chiave

Rotazione dei CMK

  • Più a lungo la stessa chiave rimane in uso, più dati vengono crittografati con quella chiave, e se quella chiave viene compromessa, allora più ampia sarà l'area di esplosione dei dati a rischio. Inoltre, più a lungo la chiave è attiva, maggiore è la probabilità che venga compromessa.

  • KMS ruota le chiavi dei clienti ogni 365 giorni (o puoi eseguire il processo manualmente quando vuoi) e le chiavi gestite da AWS ogni 3 anni e questo tempo non può essere cambiato.

  • Le chiavi più vecchie vengono mantenute per decrittografare i dati che sono stati crittografati prima della rotazione

  • In caso di compromissione, ruotare la chiave non rimuoverà la minaccia poiché sarà possibile decrittografare tutti i dati crittografati con la chiave compromessa. Tuttavia, i nuovi dati saranno crittografati con la nuova chiave.

  • Se il CMK è in stato di disabilitato o in attesa di cancellazione, KMS non eseguirà una rotazione della chiave fino a quando il CMK non sarà riattivato o la cancellazione non sarà annullata.

Rotazione manuale

  • È necessario creare un nuovo CMK, quindi viene creato un nuovo CMK-ID, quindi dovrai aggiornare qualsiasi applicazione per riferirsi al nuovo CMK-ID.

  • Per semplificare questo processo, puoi utilizzare alias per riferirti a un key-id e poi semplicemente aggiornare la chiave a cui si riferisce l'alias.

  • Devi mantenere le vecchie chiavi per decrittografare i vecchi file crittografati con esse.

Puoi importare chiavi dalla tua infrastruttura di chiavi on-premises.

Altre informazioni rilevanti su KMS

KMS è tariffato in base al numero di richieste di crittografia/decrittografia ricevute da tutti i servizi al mese.

KMS ha piena integrazione di audit e conformità con CloudTrail; qui puoi auditare tutte le modifiche effettuate su KMS.

Con la politica KMS puoi fare quanto segue:

  • Limitare chi può creare chiavi dati e quali servizi hanno accesso a utilizzare queste chiavi

  • Limitare l'accesso ai sistemi per crittografare solo, decrittografare solo o entrambi

  • Definire per abilitare i sistemi ad accedere alle chiavi attraverso le regioni (anche se non è raccomandato poiché un guasto nella regione che ospita KMS influenzerà la disponibilità dei sistemi in altre regioni).

Non puoi sincronizzare o spostare/copiare chiavi tra le regioni; puoi solo definire regole per consentire l'accesso tra le regioni.

Enumerazione

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

Privesc

AWS - KMS Privesc

Post Exploitation

AWS - KMS Post Exploitation

Persistence

AWS - KMS Persistence

Riferimenti

Supporta HackTricks

Last updated