AWS - KMS Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

KMS - Upravljanje ključevima

AWS Key Management Service (AWS KMS) je predstavljen kao upravljana usluga, pojednostavljujući proces korisnicima da kreiraju i upravljaju glavnim ključevima korisnika (CMKs). Ovi CMK-ovi su ključni za enkripciju korisničkih podataka. Značajna karakteristika AWS KMS-a je da su CMK-ovi uglavnom zaštićeni hardverskim sigurnosnim modulima (HSM), poboljšavajući zaštitu enkripcijskih ključeva.

KMS koristi simetričnu kriptografiju. Ovo se koristi za enkripciju informacija u stanju mirovanja (na primer, unutar S3). Ako treba da enkriptujete informacije u tranzitu morate koristiti nešto poput TLS.

KMS je usluga specifična za region.

Administratori u Amazonu nemaju pristup vašim ključevima. Oni ne mogu povratiti vaše ključeve i ne pomažu vam pri 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 načinom na koji se ti ključevi koriste.

Glavni ključevi korisnika (CMK): Mogu enkriptovati podatke do veličine od 4KB. Obično se koriste za kreiranje, enkripciju i dekripciju DEK-ova (Data Encryption Keys). Zatim se DEK-ovi koriste za enkripciju podataka.

Glavni ključ korisnika (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 ključni materijal koji se koristi za enkripciju i dekripciju podataka. Kada kreirate CMK, prema podrazumevanim podešavanjima, AWS KMS generiše ključni materijal za taj CMK. Međutim, možete izabrati da kreirate CMK bez ključnog materijala i zatim uvezete svoj vlastiti ključni materijal u taj CMK.

Postoje 2 vrste glavnih ključeva:

  • AWS upravljani CMK-ovi: Korišćeni od strane drugih usluga za enkripciju podataka. Koristi ih usluga koja ga je kreirala u regionu. Kreiraju se prvi put kada implementirate enkripciju u toj usluzi. Rotiraju se svake 3 godine i nije moguće ih promeniti.

  • Korisnički upravljani CMK-ovi: Fleksibilnost, rotacija, konfigurabilan pristup i politika ključeva. Omogućavaju uključivanje i isključivanje ključeva.

Envelopna enkripcija u kontekstu Key Management Service (KMS): Dvoslojni hijerarhijski sistem za enkripciju podataka sa ključem podataka, a zatim enkripciju ključa podataka sa glavnim ključem.

Politike ključeva

Ove definišu ko može koristiti i pristupiti ključu u KMS-u.

Po podrazumevanim podešavanjima:

  • Daje AWS nalogu koji je vlasnik KMS ključa pun pristup ključu KMS.

Za razliku od drugih AWS politika resursa, AWS KMS ključna politika ne daje automatski dozvolu nalogu ili bilo kojem od njegovih korisnika. Da bi se dozvola dala administratorima naloga, ključna politika mora uključivati eksplicitnu izjavu koja pruža ovu dozvolu, kao što je ova.

  • Bez dozvole naloga ("AWS": "arn:aws:iam::111122223333:root") IAM dozvole neće raditi.

  • To omogućava nalogu da koristi IAM politike kako bi omogućio pristup KMS ključu, pored ključne politike.

Bez ove dozvole, IAM politike koje omogućavaju pristup ključu su neefikasne, iako IAM politike koje zabranjuju pristup ključu i dalje su efikasne.

  • To smanjuje rizik da ključ postane neupravljivim davanjem dozvole za kontrolu pristupa administratorima naloga, uključujući korisnika glavnog naloga, koji ne može biti obrisan.

Primer podrazumevane politike:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

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 Key Policy, ta uloga neće trebati IAM dozvole.

Detalji politike

Svojstva 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) --> Uslovi za davanje dozvola

Dodele:

  • Dozvoljavaju 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-a, princip koji prima dozvolu i potrebni nivo operacije (Decrypt, Encrypt, GenerateDataKey...)

  • Nakon što je dodela kreirana, izdaju se GrantToken i GrantID

Pristup:

  • Putem key policy -- Ako postoji, ova politika ima prednost nad IAM politikom

  • Putem IAM politike

  • Putem dodela

Administratori ključeva

Administrator ključeva po podrazumevanju:

  • Imaju pristup upravljanju KMS-om ali ne i šifrovanju ili dešifrovanju podataka

  • Samo IAM korisnici i uloge mogu biti dodati na listu Administratora ključeva (ne grupe)

  • Ako se koristi spoljni CMK, Administratori ključeva imaju dozvolu za uvoz ključnog materijala

Rotacija CMK-ova

  • Što se duže isti ključ zadrži na mestu, više podataka je šifrovano tim ključem, i ako taj ključ bude kompromitovan, veća je površina podataka u riziku. Pored toga, što je ključ duže aktivan, povećava se verovatnoća da bude kompromitovan.

  • KMS rotira korisničke ključeve svakih 365 dana (ili možete ručno izvršiti proces kada god želite) i ključeve koje upravlja AWS svake 3 godine i ovaj period se ne može promeniti.

  • Stari ključevi se zadržavaju da bi dešifrovali podatke koji su bili šifrovani pre rotacije

  • U slučaju kompromitovanja, rotiranje ključa neće ukloniti pretnju jer će biti moguće dešifrovati sve podatke šifrovane kompromitovanim ključem. Međutim, novi podaci će biti šifrovani novim ključem.

  • Ako je CMK u stanju onemogućen ili čeka brisanje, KMS neće izvršiti rotaciju ključa dok se CMK ponovo ne omogući ili se brisanje ne otkaže.

Ručna rotacija

  • Potrebno je kreirati novi CMK, zatim se kreira novi CMK-ID, tako da će biti potrebno ažurirati svaku aplikaciju da referencira novi CMK-ID.

  • Da biste olakšali ovaj proces, možete koristiti alijase za referenciranje ključa i zatim samo ažurirati ključ na koji se alijas odnosi.

  • Morate zadržati stare ključeve da biste dešifrovali stare datoteke šifrovane tim ključem.

Možete uvesti ključeve iz vaše infrastrukture ključeva na lokaciji.

Ostale relevantne informacije o KMS-u

KMS se naplaćuje po broju zahteva za šifrovanje/dešifrovanje primljenih od svih usluga mesečno.

KMS ima potpunu integraciju sa CloudTrail-om za reviziju i usklađenost; ovde možete pregledati sve promene izvršene na KMS-u.

Pomoću KMS politike možete uraditi sledeće:

  • Ograničiti ko može kreirati ključeve podataka i koje usluge imaju pristup korišćenju tih ključeva

  • Ograničiti pristup sistemima samo za šifrovanje, samo za dešifrovanje ili za oba

  • Definisati da omogućite sistemima pristup ključevima preko regiona (iako se ne preporučuje jer kvar u regionu koji hostuje KMS će uticati na dostupnost sistema u drugim regionima).

Ne možete sinhronizovati ili premestiti/kopirati ključeve preko regiona; možete samo definisati pravila da dozvolite pristup preko 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

Povišenje privilegija

pageAWS - KMS Privesc

Post eksploatacija

pageAWS - KMS Post Exploitation

Upornost

pageAWS - KMS Persistence

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated