AWS - KMS Enum

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

KMS - Sleutelbestuurdensdiens

AWS Sleutelbestuurdensdiens (AWS KMS) word aangebied as 'n bestuurde diens, wat die proses vir gebruikers vereenvoudig om kliënthoofsleutels (CMK's) te skep en te bestuur. Hierdie CMK's is integraal in die versleuteling van gebruikersdata. 'n Noemenswaardige kenmerk van AWS KMS is dat CMK's hoofsaaklik beveilig word deur hardeware-sekuriteitsmodules (HSM's), wat die beskerming van die versleutelingssleutels verbeter.

KMS gebruik simmetriese kriptografie. Dit word gebruik om inligting as rus te versleutel (byvoorbeeld, binne 'n S3). As jy inligting in oordrag wil versleutel, moet jy iets soos TLS gebruik.

KMS is 'n streekspesifieke diens.

Administrateurs by Amazon het nie toegang tot jou sleutels nie. Hulle kan nie jou sleutels herwin nie en hulle help jou nie met die versleuteling van jou sleutels nie. AWS administreer eenvoudig die bedryfstelsel en die onderliggende toepassing, dit is aan ons om ons versleutelingssleutels te administreer en te administreer hoe daardie sleutels gebruik word.

Kliënthoofsleutels (CMK): Kan data tot 4KB grootte versleutel. Hulle word tipies gebruik om die DEK's (Data Versleutelingssleutels) te skep, te versleutel en te ontsluit. Dan word die DEK's gebruik om die data te versleutel.

'n Kliënthoofsleutel (CMK) is 'n logiese voorstelling van 'n hoofsleutel in AWS KMS. Benewens die identifiseerders van die hoofsleutel en ander metadata, insluitend sy skeppingsdatum, beskrywing en sleuteltoestand, bevat 'n CMK die sleutelmateriaal wat gebruik word om data te versleutel en te ontsluit. Wanneer jy 'n CMK skep, genereer AWS KMS standaard die sleutelmateriaal vir daardie CMK. Jy kan egter kies om 'n CMK sonder sleutelmateriaal te skep en dan jou eie sleutelmateriaal in daardie CMK in te voer.

Daar is 2 tipes hoofsleutels:

  • AWS-bestuurde CMK's: Gebruik deur ander dienste om data te versleutel. Dit word deur die diens wat dit geskep het in 'n streek gebruik. Dit word elke 3 jaar geroteer en dit is nie moontlik om dit te verander nie.

  • Kliëntbestuurde CMK's: Buigsaamheid, rotasie, konfigureerbare toegang en sleutelbeleid. Aktiveer en deaktiveer sleutels.

Omslagversleuteling in die konteks van Sleutelbestuurdensdiens (KMS): Twee-vlak-hierargiestelsel om data met data sleutel te versleutel en dan data sleutel met hoofsleutel te versleutel.

Sleutelbeleide

Hierdie definieer wie 'n sleutel in KMS kan gebruik en toegang daartoe het.

Standaard:

  • Dit gee die AWS-rekening wat die KMS-sleutel besit, volle toegang tot die KMS-sleutel.

In teenstelling met ander AWS-hulpbronbeleide, gee 'n AWS KMS-sleutelbeleid nie outomaties toestemming aan die rekening of enige van sy gebruikers nie. Om toestemming aan rekeningadministrateurs te gee, moet die sleutelbeleid 'n uitdruklike verklaring insluit wat hierdie toestemming gee, soos hierdie een.

  • Sonder die rekening toe te laat ("AWS": "arn:aws:iam::111122223333:root") sal IAM-permissies nie werk nie.

  • Dit laat die rekening toe om IAM-beleide te gebruik om toegang tot die KMS-sleutel toe te laat, bo en behalwe die sleutelbeleid.

**Son

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

Indien die rekening toegelaat is ("arn:aws:iam::111122223333:root") sal 'n hoofsaaklikheid van die rekening steeds IAM-toestemmings nodig hê om die KMS-sleutel te gebruik. Maar as die ARN van 'n rol byvoorbeeld spesifiek toegelaat is in die Sleutelbeleid, hoef daardie rol nie IAM-toestemmings te hê nie.

Beleidsbesonderhede

Eienskappe van 'n beleid:

  • JSON-gebaseerde dokument

  • Bron --> Betrokke bronne (kan "*" wees)

  • Aksie --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (toestemmings)

  • Effek --> Toelaat/Weier

  • Hoofsaaklikheid --> arn wat geraak word

  • Voorwaardes (opsioneel) --> Voorwaarde om die toestemmings te gee

Toekennings:

  • Toelaat om jou toestemmings aan 'n ander AWS-hoofsaaklikheid binne jou AWS-rekening te delegeer. Jy moet hulle skep met behulp van die AWS KMS-API's. Dit kan aangedui word deur die CMK-identifiseerder, die begiftigde hoofsaaklikheid en die vereiste vlak van bedrywings (Decrypt, Encrypt, GenerateDataKey...)

  • Nadat die toekenning geskep is, word 'n Toekenningsleutel en 'n Toekennings-ID uitgereik

Toegang:

  • Via sleutelbeleid -- As dit bestaan, het dit voorrang bo die IAM-beleid

  • Via IAM-beleid

  • Via toekennings

Sleuteladministrateurs

Standaard sleuteladministrateur:

  • Het toegang om KMS te bestuur, maar nie om data te enkripteer of dekripteer nie

  • Slegs IAM-gebruikers en rolle kan by die lys Sleuteladministrateurs gevoeg word (nie groepe nie)

  • As 'n eksterne CMK gebruik word, het Sleuteladministrateurs die toestemming om sleutelmateriaal in te voer

Rotasie van CMK's

  • Hoe langer dieselfde sleutel op sy plek bly, hoe meer data word daarmee enkripteer, en as daardie sleutel oortree word, dan is die wyer die area van data wat in gevaar is. Boonop, hoe langer die sleutel aktief is, hoe groter die waarskynlikheid dat dit oortree word.

  • KMS roteer kliëntsleutels elke 365 dae (of jy kan die proses handmatig uitvoer wanneer jy wil) en sleutels wat deur AWS bestuur word elke 3 jaar en hierdie tyd kan nie verander word nie.

  • Ouer sleutels word behou om data te dekripteer wat voor die rotasie enkripteer is

  • In 'n inbreuk, sal die rotasie van die sleutel nie die dreiging verwyder nie, aangesien dit moontlik sal wees om al die data wat met die gekompromitteerde sleutel enkripteer is, te dekripteer. Die nuwe data sal egter met die nuwe sleutel enkripteer word.

  • As die CMK in 'n toestand van uitgeskakel of hangende skrapping is, sal KMS nie 'n sleutelrotasie uitvoer totdat die CMK weer geaktiveer word of die skrapping gekanselleer word.

Handmatige rotasie

  • 'n Nuwe CMK moet geskep word, dan word 'n nuwe CMK-ID geskep, sodat jy enige toepassing moet bywerk om na die nuwe CMK-ID te verwys.

  • Om hierdie proses makliker te maak, kan jy aliases gebruik om na 'n sleutel-ID te verwys en dan net die sleutel bywerk waarna die alias verwys.

  • Jy moet ou sleutels behou om ou lêers te dekripteer wat daarmee enkripteer is.

Jy kan sleutels van jou plaaslike sleutelinfrastruktuur invoer.

Ander relevante KMS-inligting

KMS word geprys per aantal enkripteer-/dekripteeraanvrae wat van alle dienste per maand ontvang word.

KMS het volledige oudit- en nakomings integrering met CloudTrail; hierdie is waar jy alle veranderinge wat op KMS uitgevoer is, kan oudit.

Met KMS-beleid kan jy die volgende doen:

  • Beperk wie data sleutels kan skep en watter dienste toegang het om hierdie sleutels te gebruik

  • Beperk stelselstoegang om slegs te enkripteer, slegs te dekripteer of beide

  • Definieer om stelsels toegang tot sleutels oor streke toe te laat (alhoewel dit nie aanbeveel word nie, aangesien 'n fout in die streek wat KMS huisves, die beskikbaarheid van stelsels in ander streke sal affekteer).

Jy kan nie sleutels synchroniseer of beweeg/kopieer oor streke nie; jy kan net reëls definieer om toegang oor streke toe te laat.

Enumerasie

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

pageAWS - KMS Privesc

Post Exploitation

pageAWS - KMS Post Exploitation

Volharding

pageAWS - KMS Persistence

Verwysings

Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated