mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-03-12 21:22:57 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
@@ -4,23 +4,23 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Per ulteriori informazioni consulta:
|
||||
Per maggiori informazioni consulta:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
### Crittografia/Decriptazione delle informazioni
|
||||
|
||||
`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files:
|
||||
`fileb://` e `file://` sono schemi URI usati nei comandi AWS CLI per specificare il percorso di file locali:
|
||||
|
||||
- `fileb://:` Legge il file in modalità binaria, comunemente usato per file non di testo.
|
||||
- `file://:` Legge il file in modalità testo, tipicamente usato per file di testo semplice, script o JSON che non hanno requisiti di codifica speciali.
|
||||
|
||||
> [!TIP]
|
||||
> Nota che se vuoi decrypt dei dati all'interno di un file, il file deve contenere i dati binari, non dati codificati in base64. (fileb://)
|
||||
> Nota che se vuoi decriptare dei dati all'interno di un file, il file deve contenere i dati binari, non dati codificati in base64. (fileb://)
|
||||
|
||||
- Using a **symmetric** key
|
||||
- Usando una chiave **simmetrica**
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -38,7 +38,7 @@ aws kms decrypt \
|
||||
--query Plaintext | base64 \
|
||||
--decode
|
||||
```
|
||||
- Usando una **asymmetric** key:
|
||||
- Usare una chiave **asimmetrica**:
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Un attaccante con accesso privilegiato a KMS potrebbe modificare la KMS policy delle chiavi e **concedere al suo account l'accesso su di esse**, rimuovendo l'accesso concesso all'account legittimo.
|
||||
Un attacker con accesso privilegiato su KMS potrebbe modificare la KMS policy delle chiavi e **concedere al suo account l'accesso a esse**, rimuovendo l'accesso concesso al legit account.
|
||||
|
||||
Gli utenti dell'account legittimo non potranno accedere alle informazioni di alcun servizio che siano state cifrate con quelle chiavi, creando un ransomware semplice ma efficace contro l'account.
|
||||
Di conseguenza, gli utenti del legit account non potranno più accedere alle informazioni di qualunque servizio che sia stato criptato con quelle chiavi, creando un ransomware semplice ma efficace sull'account.
|
||||
|
||||
> [!WARNING]
|
||||
> Nota che **AWS managed keys aren't affected** da questo attacco; sono interessate solo le **Customer managed keys**.
|
||||
> Nota che **AWS managed keys aren't affected** da questo attacco, solo **Customer managed keys**.
|
||||
|
||||
> Nota anche la necessità di usare il parametro **`--bypass-policy-lockout-safety-check`** (l'assenza di questa opzione nella web console rende questo attacco possibile solo dalla CLI).
|
||||
> Nota anche la necessità di usare il parametro **`--bypass-policy-lockout-safety-check`** (l'assenza di questa opzione nella web console rende questo attacco possibile solo da CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,28 +92,28 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Nota che se modifichi quella policy e concedi l'accesso solo a un external account, e poi da quell'external account provi a impostare una nuova policy per **restituire l'accesso all'account originale, non ci riuscirai perché l'azione Put Polocy non può essere eseguita da un cross account**.
|
||||
> Nota che se modifichi quella policy e concedi l'accesso solo a un account esterno, e poi da questo account esterno provi a impostare una nuova policy per **restituire l'accesso all'account originale, non potrai perché l'azione Put Polocy non può essere eseguita da un cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generic KMS Ransomware
|
||||
### KMS Ransomware generico
|
||||
|
||||
There is another way to perform a global KMS Ransomware, which would involve the following steps:
|
||||
Esiste un altro modo per eseguire un KMS Ransomware globale, che comporterebbe i seguenti passaggi:
|
||||
|
||||
- Crea una nuova **chiave con materiale della chiave** importato dall'attaccante
|
||||
- **Riencriptare i dati più vecchi** della vittima, originariamente crittografati con la versione precedente, con quella nuova.
|
||||
- **Elimina la KMS key**
|
||||
- Ora solo l'attaccante, che possiede il materiale originale della chiave, potrebbe essere in grado di decrittografare i dati crittografati
|
||||
- Creare una nuova **key con un key material** importato dall'attacker
|
||||
- **Re-encrypt** i dati più vecchi della vittima crittografati con la versione precedente usando quella nuova.
|
||||
- Eliminare la **KMS key**
|
||||
- Ora solo l'attacker, che possiede il key material originale, potrebbe essere in grado di decrittare i dati cifrati
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
Con il permesso `kms:DeleteImportedKeyMaterial`, un attore può cancellare il materiale della chiave importato dalle CMKs con `Origin=EXTERNAL` (CMKs che hanno importato il loro materiale della chiave), rendendole incapaci di decrittografare i dati. Questa azione è distruttiva e irreversibile a meno che non venga re-importato materiale compatibile, consentendo a un attaccante di causare di fatto una perdita di dati simile a ransomware rendendo le informazioni criptate permanentemente inaccessibili.
|
||||
Con la permissione `kms:DeleteImportedKeyMaterial`, un actor può cancellare il key material importato dalle CMKs con `Origin=EXTERNAL` (CMKs che hanno importato il loro key material), rendendole incapaci di decrittare i dati. Questa azione è distruttiva e irreversibile a meno che non venga re-importato materiale compatibile, permettendo a un attacker di causare effettivamente una perdita di dati simile a ransomware rendendo le informazioni cifrate permanentemente inaccessibili.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Distruggere keys
|
||||
### Distruggere le chiavi
|
||||
|
||||
Distruggendo keys è possibile effettuare un DoS.
|
||||
Distruggendo le chiavi è possibile eseguire un DoS.
|
||||
```bash
|
||||
# Schedule the destoy of a key (min wait time is 7 days)
|
||||
aws kms schedule-key-deletion \
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Nota che AWS ora **impedisce che le azioni precedenti vengano eseguite da un cross account:**
|
||||
> Nota che AWS ora **impedisce che le azioni precedenti possano essere eseguite da account diversi:**
|
||||
|
||||
### Modificare o eliminare Alias
|
||||
Questo attacco elimina o reindirizza gli alias di AWS KMS, interrompendo la risoluzione delle chiavi e causando malfunzionamenti immediati in qualsiasi servizio che si appoggi a quegli alias, risultando in un denial-of-service. Con permessi come `kms:DeleteAlias` o `kms:UpdateAlias`, un attaccante può rimuovere o ripuntare alias e interrompere le operazioni crittografiche (e.g., encrypt, describe). Qualsiasi servizio che faccia riferimento all'alias invece che al key ID potrebbe non funzionare finché l'alias non viene ripristinato o correttamente rimappato.
|
||||
### Cambiare o eliminare Alias
|
||||
Questo attacco elimina o reindirizza gli alias di AWS KMS, interrompendo la risoluzione delle chiavi e causando fallimenti immediati in qualsiasi servizio che si affidi a quegli alias, risultando in un denial-of-service. Con permessi come `kms:DeleteAlias` o `kms:UpdateAlias` un attaccante può rimuovere o ripuntare gli alias e interrompere le operazioni crittografiche (e.g., encrypt, describe). Qualsiasi servizio che faccia riferimento all'alias invece che al key ID può fallire fino a quando l'alias non viene ripristinato o rimappato correttamente.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -134,8 +134,8 @@ aws kms update-alias \
|
||||
--alias-name alias/<key_alias> \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Annullare l'eliminazione della chiave
|
||||
Con permessi come `kms:CancelKeyDeletion` e `kms:EnableKey`, un attore può annullare la cancellazione programmata di una customer master key di AWS KMS e successivamente riattivarla. In questo modo recupera la chiave (inizialmente nello stato Disabled) e ne ripristina la capacità di decrittare dati precedentemente protetti, consentendo l'esfiltrazione.
|
||||
### Cancel Key Deletion
|
||||
Con permessi come `kms:CancelKeyDeletion` e `kms:EnableKey`, un attore può annullare la cancellazione programmata di una customer master key di AWS KMS e successivamente riabilitarla. In questo modo si recupera la chiave (inizialmente nello stato Disabled) e si ripristina la sua capacità di decrittare dati precedentemente protetti, consentendo l'esfiltrazione.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -145,22 +145,22 @@ aws kms cancel-key-deletion \
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disabilitare la chiave
|
||||
Con il permesso `kms:DisableKey`, un attore può disabilitare una chiave master del cliente (CMK) di AWS KMS, impedendone l'uso per la crittografia o la decrittografia. Ciò interrompe l'accesso per qualsiasi servizio che dipenda da quella CMK e può causare interruzioni immediate o un denial-of-service fino a quando la chiave non viene riattivata.
|
||||
### Disabilita chiave
|
||||
Con il permesso `kms:DisableKey`, un attore può disabilitare una AWS KMS customer master key, impedendone l'utilizzo per encryption o decryption. Questo interrompe l'accesso per qualsiasi servizio che dipenda da quella CMK e può causare interruzioni immediate o un denial-of-service fino a quando la chiave non viene riattivata.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derivare un segreto condiviso
|
||||
Con il permesso `kms:DeriveSharedSecret`, un attore può usare una chiave privata detenuta in KMS insieme a una chiave pubblica fornita dall'utente per calcolare un segreto condiviso ECDH.
|
||||
### Derivare Shared Secret
|
||||
Con il permesso `kms:DeriveSharedSecret`, un attore può usare una chiave privata detenuta da KMS insieme a una chiave pubblica fornita dall'utente per calcolare un ECDH shared secret.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
Con il permesso `kms:Sign`, un attore può usare una CMK conservata in KMS per firmare crittograficamente dati senza esporre la chiave privata, generando firme valide che possono consentire impersonation o autorizzare azioni dannose.
|
||||
### Impersonazione tramite kms:Sign
|
||||
Con il permesso `kms:Sign`, un attore può usare una KMS-stored CMK per firmare criptograficamente i dati senza esporre la private key, producendo firme valide che possono permettere l'impersonazione o autorizzare azioni malevole.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -168,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS with Custom Key Stores
|
||||
Con permessi come `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un attore può modificare, scollegare o eliminare un AWS KMS Custom Key Store (CKS), rendendo le chiavi master inutilizzabili. Questo interrompe le operazioni di cifratura, decifratura e firma per qualsiasi servizio che dipenda da quelle chiavi e può causare un immediato denial-of-service. Limitare e monitorare tali permessi è quindi fondamentale.
|
||||
### DoS con Custom Key Stores
|
||||
Con permessi come `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` o `kms:UpdateCustomKeyStore`, un attore può modificare, disconnettere o eliminare un AWS KMS Custom Key Store (CKS), rendendo le sue chiavi master inoperabili. Questo interrompe le operazioni di cifratura, decifratura e firma per qualsiasi servizio che si basi su quelle chiavi e può causare un immediato denial-of-service. Limitare e monitorare tali permessi è quindi fondamentale.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user