AWS - KMS Enum
Reading time: 7 minutes
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 - Usluga upravljanja ključevima
AWS Usluga upravljanja ključevima (AWS KMS) se predstavlja kao upravljana usluga, pojednostavljujući proces za korisnike da kreiraju i upravljaju glavnim korisničkim ključevima (CMK). Ovi CMK-ovi su ključni u enkripciji korisničkih podataka. Značajna karakteristika AWS KMS-a je da su CMK-ovi pretežno zaštićeni hardverskim bezbednosnim modulima (HSM), što poboljšava zaštitu enkripcijskih ključeva.
KMS koristi simetričnu kriptografiju. Ovo se koristi za enkripciju informacija u mirovanju (na primer, unutar S3). Ako treba da enkriptujete informacije u prenosu, morate koristiti nešto poput TLS.
KMS je usluga specifična za region.
Administratori u Amazonu nemaju pristup vašim ključevima. Ne mogu da povrate vaše ključeve i ne pomažu vam u enkripciji vaših ključeva. AWS jednostavno upravlja operativnim sistemom i osnovnom aplikacijom, a na nama je da upravljamo našim enkripcijskim ključevima i upravljamo kako se ti ključevi koriste.
Glavni korisnički ključevi (CMK): Mogu enkriptovati podatke do 4KB veličine. Obično se koriste za kreiranje, enkripciju i dekripciju DEK-ova (Ključevi za enkripciju podataka). Zatim se DEK-ovi koriste za enkripciju podataka.
Glavni korisnički ključ (CMK) je logička reprezentacija glavnog ključa u AWS KMS-u. Pored identifikatora glavnog ključa i drugih metapodataka, uključujući datum kreiranja, opis i stanje ključa, CMK sadrži materijal ključa koji se koristi za enkripciju i dekripciju podataka. Kada kreirate CMK, po defaultu, AWS KMS generiše materijal ključa za taj CMK. Međutim, možete odabrati da kreirate CMK bez materijala ključa i zatim uvezete svoj materijal ključa u taj CMK.
Postoje 2 tipa glavnih ključeva:
- AWS upravljani CMK-ovi: Koriste ih druge usluge za enkripciju podataka. Koristi ih usluga koja ih je kreirala u regionu. Kreiraju se prvi put kada implementirate enkripciju u toj usluzi. Rotiraju se svake 3 godine i nije moguće promeniti ih.
- CMK-ovi koje upravlja korisnik: Fleksibilnost, rotacija, konfigurisani pristup i politika ključeva. Omogućavanje i onemogućavanje ključeva.
Enkripcija u omotu u kontekstu Usluge upravljanja ključevima (KMS): Dvostepeni hijerarhijski sistem za enkripciju podataka sa ključem podataka i zatim enkripciju ključa podataka sa glavnim ključem.
Politike ključeva
Ove definišu ko može koristiti i pristupati ključu u KMS-u.
Po defaultu:
- Daje IAM-u AWS naloga koji poseduje KMS ključ pristup za upravljanje pristupom KMS ključu putem IAM-a.
Za razliku od drugih politika resursa AWS-a, politika KMS ključa ne daje automatski dozvolu bilo kojem od principala naloga. Da biste dali dozvolu administratorima naloga, politika ključa mora uključivati eksplicitnu izjavu koja pruža ovu dozvolu, poput ove.
-
Bez omogućavanja naloga(
"AWS": "arn:aws:iam::111122223333:root"
) IAM dozvole neće raditi. -
Omogućava nalogu da koristi IAM politike za omogućavanje pristupa KMS ključu, pored politike ključa.
Bez ove dozvole, IAM politike koje omogućavaju pristup ključu su neefikasne, iako su IAM politike koje odbijaju pristup ključu i dalje efikasne.
- Smanjuje rizik da ključ postane neuredan dajući dozvolu za kontrolu pristupa administratorima naloga, uključujući korisnika root naloga, koji ne može biti obrisan.
Primer default politike:
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
warning
Ako je nalog dozvoljen ("arn:aws:iam::111122223333:root"
), principal iz naloga će i dalje trebati IAM dozvole da koristi KMS ključ. Međutim, ako je ARN uloge, na primer, specifično dozvoljen u Politici ključeva, ta uloga ne treba IAM dozvole.
Detalji politike
Osobine politike:
- Dokument zasnovan na JSON-u
- Resurs --> Pogođeni resursi (može biti "*")
- Akcija --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (dozvole)
- Efekat --> Dozvoli/Odbij
- Principal --> arn pogođen
- Uslovi (opciono) --> Uslov za davanje dozvola
Grantovi:
- Dozvoljava delegiranje vaših dozvola drugom AWS principalu unutar vašeg AWS naloga. Morate ih kreirati koristeći AWS KMS API-je. Može se naznačiti identifikator CMK, principal koji dobija grant i potrebni nivo operacije (Decrypt, Encrypt, GenerateDataKey...)
- Nakon što je grant kreiran, izdaju se GrantToken i GrantID
Pristup:
- Putem politike ključeva -- Ako ovo postoji, ovo ima prioritet nad IAM politikom
- Putem IAM politike
- Putem grantova
Administratori ključeva
Administrator ključeva po defaultu:
- Ima pristup za upravljanje KMS-om, ali ne i za enkripciju ili dekripciju podataka
- Samo IAM korisnici i uloge mogu biti dodati na listu administratora ključeva (ne grupe)
- Ako se koristi eksterni CMK, administratori ključeva imaju dozvolu da uvezu materijal ključa
Rotacija CMK-ova
- Što duže ostane isti ključ, to više podataka se enkriptuje tim ključem, a ako taj ključ bude kompromitovan, šira oblast podataka je u riziku. Pored toga, što duže ključ bude aktivan, verovatnoća da će biti kompromitovan raste.
- KMS rotira korisničke ključeve svake 365 dana (ili možete izvršiti proces ručno kad god želite) i ključeve koje upravlja AWS svake 3 godine i ovaj put se ne može promeniti.
- Stariji ključevi se čuvaju za dekripciju podataka koji su enkriptovani pre rotacije
- U slučaju kompromitacije, rotacija ključa neće ukloniti pretnju jer će biti moguće dekriptovati sve podatke enkriptovane kompromitovanim ključem. Međutim, novi podaci će biti enkriptovani novim ključem.
- Ako je CMK u stanju onemogućen ili na čekanju brisanja, KMS neće izvršiti rotaciju ključa dok se CMK ponovo ne omogući ili brisanje ne otkaže.
Ručna rotacija
- Novi CMK treba da bude kreiran, zatim se kreira novi CMK-ID, tako da ćete morati da ažurirate svaku aplikaciju da referencira novi CMK-ID.
- Da biste ovaj proces olakšali, možete koristiti alias da se pozovete na key-id i zatim samo ažurirati ključ na koji se alias odnosi.
- Morate čuvati stare ključeve za dekripciju starih fajlova enkriptovanih tim ključem.
Možete uvesti ključeve iz vaše lokalne infrastrukture ključeva.
Druge relevantne KMS informacije
KMS se naplaćuje po broju zahteva za enkripciju/dekripciju primljenih od svih usluga mesečno.
KMS ima potpunu reviziju i usklađenost integraciju sa CloudTrail; ovde možete revizirati sve promene izvršene na KMS-u.
Sa KMS politikom možete učiniti sledeće:
- Ograničiti ko može kreirati ključeve podataka i koje usluge imaju pristup korišćenju ovih ključeva
- Ograničiti pristup sistemima samo za enkripciju, samo za dekripciju ili oboje
- Definisati da omogućite sistemima pristup ključevima širom regiona (iako se ne preporučuje jer bi neuspeh u regionu koji hostuje KMS uticao na dostupnost sistema u drugim regionima).
Ne možete sinhronizovati ili premestiti/kopirati ključeve između regiona; možete samo definisati pravila za omogućavanje pristupa između regiona.
Enumeracija
aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores
Privesc
Post Exploitation
Persistence
References
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.