AWS - KMS Enum

Support HackTricks

KMS - Key Management Service

AWS Key Management Service (AWS KMS) inawasilishwa kama huduma inayosimamiwa, ikirahisisha mchakato kwa watumiaji kuunda na kusimamia funguo kuu za wateja (CMKs). CMKs hizi ni muhimu katika usimbaji wa data ya mtumiaji. Kipengele kinachojulikana cha AWS KMS ni kwamba CMKs zinalindwa zaidi na moduli za usalama wa vifaa (HSMs), ikiongeza ulinzi wa funguo za usimbaji.

KMS hutumia usimbaji wa symmetri. Hii hutumika kusimba taarifa wakati wa kupumzika (kwa mfano, ndani ya S3). Ikiwa unahitaji kusimba taarifa wakati wa kusafiri unahitaji kutumia kitu kama TLS.

KMS ni huduma maalum ya kanda.

Wasimamizi wa Amazon hawana ufikiaji wa funguo zako. Hawawezi kurejesha funguo zako na hawakusaidii na usimbaji wa funguo zako. AWS inasimamia tu mfumo wa uendeshaji na programu ya msingi, ni juu yetu kusimamia funguo zetu za usimbaji na kusimamia jinsi funguo hizo zinavyotumika.

Customer Master Keys (CMK): Inaweza kusimba data hadi 4KB kwa ukubwa. Kwa kawaida hutumika kuunda, kusimba, na kufungua DEKs (Data Encryption Keys). Kisha DEKs hutumika kusimba data.

Funguo kuu ya mteja (CMK) ni uwakilishi wa kimantiki wa funguo kuu katika AWS KMS. Mbali na vitambulisho vya funguo kuu na metadata nyingine, ikijumuisha tarehe ya kuundwa, maelezo, na hali ya funguo, CMK ina nyenzo za funguo ambazo hutumika kusimba na kufungua data. Unapounda CMK, kwa chaguo-msingi, AWS KMS hutengeneza nyenzo za funguo kwa CMK hiyo. Hata hivyo, unaweza kuchagua kuunda CMK bila nyenzo za funguo na kisha kuingiza nyenzo zako za funguo kwenye CMK hiyo.

Kuna aina 2 za funguo kuu:

  • AWS managed CMKs: Hutumiwa na huduma nyingine kusimba data. Inatumika na huduma iliyoiunda katika kanda. Zinaundwa mara ya kwanza unapotumia usimbaji katika huduma hiyo. Inazunguka kila baada ya miaka 3 na haiwezekani kubadilisha.

  • Customer manager CMKs: Urahisi, mzunguko, ufikiaji unaoweza kusanidiwa na sera ya funguo. Wezesha na kuzima funguo.

Envelope Encryption katika muktadha wa Key Management Service (KMS): Mfumo wa uongozi wa ngazi mbili kusimba data na funguo za data kisha kusimba funguo za data na funguo kuu.

Key Policies

Hizi zinafafanua nani anaweza kutumia na kufikia funguo katika KMS.

Kwa chaguo-msingi:

  • Inampa akaunti ya AWS inayomiliki funguo za KMS ufikiaji kamili kwa funguo za KMS.

Tofauti na sera nyingine za rasilimali za AWS, sera ya funguo ya AWS KMS haimpi ruhusa moja kwa moja akaunti au watumiaji wake wowote. Ili kutoa ruhusa kwa wasimamizi wa akaunti, sera ya funguo lazima ijumuishwe na taarifa ya wazi inayotoa ruhusa hii, kama hii.

  • Bila kuruhusu akaunti("AWS": "arn:aws:iam::111122223333:root") ruhusa za IAM hazitafanya kazi.

  • Inaruhusu akaunti kutumia sera za IAM kuruhusu ufikiaji wa funguo za KMS, pamoja na sera ya funguo.

Bila ruhusa hii, sera za IAM zinazoruhusu ufikiaji wa funguo hazifanyi kazi, ingawa sera za IAM zinazokataa ufikiaji wa funguo bado zinafanya kazi.

  • Inapunguza hatari ya funguo kuwa hazidhibitiwi kwa kutoa ruhusa ya udhibiti wa ufikiaji kwa wasimamizi wa akaunti, ikijumuisha mtumiaji mkuu wa akaunti, ambaye hawezi kufutwa.

Mfano wa sera ya chaguo-msingi:

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

Ikiwa akaunti inaruhusiwa ("arn:aws:iam::111122223333:root") principal kutoka akaunti hiyo itahitaji ruhusa za IAM kutumia ufunguo wa KMS. Hata hivyo, ikiwa ARN ya jukumu kwa mfano inaruhusiwa mahsusi katika Sera ya Ufunguo, jukumu hilo halihitaji ruhusa za IAM.

Maelezo ya Sera

Mali za sera:

  • Hati inayotegemea JSON

  • Rasilimali --> Rasilimali zilizoathiriwa (inaweza kuwa "*")

  • Kitendo --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (ruhusa)

  • Athari --> Ruhusu/Kataa

  • Principal --> arn iliyoathiriwa

  • Masharti (hiari) --> Sharti la kutoa ruhusa

Grants:

  • Ruhusu kuwakilisha ruhusa zako kwa principal nyingine ya AWS ndani ya akaunti yako ya AWS. Unahitaji kuziunda kwa kutumia APIs za AWS KMS. Inaweza kuonyeshwa kitambulisho cha CMK, principal ya grantee na kiwango kinachohitajika cha operesheni (Decrypt, Encrypt, GenerateDataKey...)

  • Baada ya grant kuundwa, GrantToken na GrantID hutolewa

Upatikanaji:

  • Kupitia sera ya ufunguo -- Ikiwa hii ipo, hii inachukua kipaumbele juu ya sera ya IAM

  • Kupitia sera ya IAM

  • Kupitia grants

Wasimamizi wa Ufunguo

Msimamizi wa ufunguo kwa chaguo-msingi:

  • Wana ruhusa ya kusimamia KMS lakini si ya kusimba au kusimbua data

  • Watumiaji wa IAM na majukumu pekee ndio wanaweza kuongezwa kwenye orodha ya Wasimamizi wa Ufunguo (si vikundi)

  • Ikiwa CMK ya nje inatumika, Wasimamizi wa Ufunguo wana ruhusa ya kuingiza nyenzo za ufunguo

Mzunguko wa CMKs

  • Kadri ufunguo unavyokaa kwa muda mrefu, ndivyo data zaidi inavyosimbwa na ufunguo huo, na ikiwa ufunguo huo utavunjwa, basi eneo la mlipuko wa data lililo hatarini ni kubwa zaidi. Zaidi ya hayo, kadri ufunguo unavyokuwa hai kwa muda mrefu, uwezekano wa kuvunjwa unaongezeka.

  • KMS huzungusha funguo za wateja kila siku 365 (au unaweza kufanya mchakato huo mwenyewe wakati wowote unapotaka) na funguo zinazodhibitiwa na AWS kila miaka 3 na muda huu hauwezi kubadilishwa.

  • Funguo za zamani huhifadhiwa ili kusimbua data iliyosimbwa kabla ya mzunguko

  • Katika tukio la kuvunjwa, kuzungusha ufunguo hakutaondoa tishio kwani itawezekana kusimbua data yote iliyosimbwa na ufunguo uliovunjwa. Hata hivyo, data mpya itasimbwa na ufunguo mpya.

  • Ikiwa CMK iko katika hali ya disabled au pending deletion, KMS haitafanya mzunguko wa ufunguo hadi CMK itakapowezeshwa tena au kufutwa kukataliwa.

Mzunguko wa mwongozo

  • CMK mpya inahitaji kuundwa, kisha, CMK-ID mpya inaundwa, hivyo utahitaji kusasisha programu yoyote ili kurejelea CMK-ID mpya.

  • Ili kufanya mchakato huu kuwa rahisi unaweza kutumia alias kurejelea key-id na kisha kusasisha tu ufunguo ambao alias inarejelea.

  • Unahitaji kuhifadhi funguo za zamani ili kusimbua faili za zamani zilizowekwa na funguo hizo.

Unaweza kuingiza funguo kutoka miundombinu yako ya funguo ya ndani.

Taarifa nyingine muhimu za KMS

KMS inatoza kwa idadi ya maombi ya usimbaji/ufunguaji yaliyopokelewa kutoka huduma zote kwa mwezi.

KMS ina ujumuishaji kamili wa ukaguzi na kufuata na CloudTrail; hapa ndipo unaweza kukagua mabadiliko yote yaliyofanywa kwenye KMS.

Kwa sera ya KMS unaweza kufanya yafuatayo:

  • Punguza ni nani anayeweza kuunda funguo za data na ni huduma zipi zinaweza kutumia funguo hizi

  • Punguza upatikanaji wa mifumo kwa kusimba tu, kufungua tu au zote mbili

  • Eleza kuwezesha mifumo kufikia funguo katika maeneo mbalimbali (ingawa haipendekezwi kwani kushindwa kwa eneo linalohifadhi KMS kutaathiri upatikanaji wa mifumo katika maeneo mengine).

Huwezi kulandanisha au kuhamisha/kukopi funguo katika maeneo mbalimbali; unaweza tu kufafanua sheria za kuruhusu upatikanaji katika maeneo mbalimbali.

Enumeration

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

AWS - KMS Privesc

Post Exploitation

AWS - KMS Post Exploitation

Persistence

AWS - KMS Persistence

Marejeo

Support HackTricks

Last updated