AWS - KMS Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

KMS - Anahtar Yönetimi Servisi

AWS Anahtar Yönetimi Servisi (AWS KMS), kullanıcıların müşteri anahtarlarını oluşturup yönetmelerini kolaylaştıran bir yönetilen hizmet olarak sunulur. Bu müşteri anahtarları, kullanıcı verilerinin şifrelenmesinde önemli bir rol oynar. AWS KMS'nin dikkate değer bir özelliği, müşteri anahtarlarının çoğunlukla donanım güvenlik modülleriyle (HSM'ler) korunmasıdır, bu da şifreleme anahtarlarının korunmasını artırır.

KMS, simetrik şifreleme kullanır. Bu, bilgileri dinlenme sırasında (örneğin, bir S3 içinde) şifrelemek için kullanılır. Bilgileri aktarım sırasında şifrelemek için TLS gibi bir şey kullanmanız gerekmektedir.

KMS, bölgeye özgü bir hizmettir.

Amazon yöneticileri anahtarlarınıza erişemez. Anahtarlarınızı kurtaramazlar ve anahtarlarınızın şifrelenmesine yardımcı olmazlar. AWS sadece işletim sistemini ve altta yatan uygulamayı yönetir, anahtarlarımızın şifrelemesini ve bu anahtarların nasıl kullanıldığını yönetmek bizim sorumluluğumuzdadır.

Müşteri Anahtarları (CMK): 4KB boyutunda verileri şifreleyebilir. Genellikle DEK'leri (Veri Şifreleme Anahtarları) oluşturmak, şifrelemek ve şifrelemeyi çözmek için kullanılırlar. Ardından DEK'ler veriyi şifrelemek için kullanılır.

Bir müşteri anahtarı (CMK), AWS KMS'deki bir anahtarın mantıksal temsilidir. Anahtarın tanımlayıcıları ve diğer meta verilerinin yanı sıra oluşturma tarihi, açıklama ve anahtar durumu gibi bilgilerin yanı sıra, bir CMK, verileri şifrelemek ve şifrelemek için kullanılan anahtar materyalini içerir. Bir CMK oluşturduğunuzda, varsayılan olarak AWS KMS, o CMK için anahtar materyali oluşturur. Bununla birlikte, kendi anahtar materyalinizi içe aktarabileceğiniz bir CMK oluşturmayı seçebilirsiniz.

İki tür anahtar vardır:

  • AWS tarafından yönetilen CMK'lar: Verileri şifrelemek için diğer hizmetler tarafından kullanılır. İlk kez şifrelemeyi uyguladığınız hizmet tarafından kullanılır. Her 3 yılda bir döner ve değiştirilemez.

  • Müşteri tarafından yönetilen CMK'lar: Esneklik, döndürme, yapılandırılabilir erişim ve anahtar politikası. Anahtarları etkinleştirme ve devre dışı bırakma.

Anahtar Yönetimi Servisi (KMS) bağlamında Zarf Şifreleme: Verileri veri anahtarı ile şifreleyip ardından veri anahtarını anahtar anahtarı ile şifrelemek için iki katmanlı hiyerarşi sistemi.

Anahtar Politikaları

Bu, KMS'deki bir anahtarı kimin kullanabileceğini ve erişebileceğini tanımlar.

Varsayılan olarak:

  • KMS anahtarına sahip olan AWS hesabına tam erişim verir.

Diğer AWS kaynak politikalarının aksine, bir AWS KMS anahtar politikası otomatik olarak hesaba veya kullanıcılarından herhangi birine izin vermez. Hesap yöneticilerine izin vermek için, bu izni sağlayan açık bir ifade içeren bir anahtar politikası olmalıdır, örneğin şu şekilde.

  • Hesaba izin vermeden ("AWS": "arn:aws:iam::111122223333:root") IAM izinleri çalışmaz.

  • KMS anahtarına erişimi sağlamak için IAM politikalarını kullanmasına izin verir, anahtar politikasına ek olarak.

Bu izin olmadan, anahtara erişimi sağlayan IAM politikaları etkisiz olur, ancak anahtara erişimi reddeden IAM politikaları hala etkilidir.

  • Anahtarın yönetilemez hale gelme riskini azaltır, hesap yöneticilerine, hesap kök kullanıcısı dahil olmak üzere erişim kontrol izni vererek, bu kullanıcı silinemez.

Varsayılan politika örneği:

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

Eğer hesap izin veriliyorsa ("arn:aws:iam::111122223333:root"), hesaptan bir bağlı bir öznenin KMS anahtarını kullanabilmesi için hala IAM izinlerine ihtiyacı olacaktır. Ancak, bir rolün ARN'si örneğin Anahtar Politikası'nda özel olarak izin verilmişse, bu rolün IAM izinlerine ihtiyacı olmayacaktır.

Politika Detayları

Politikanın özellikleri:

  • JSON tabanlı belge

  • Kaynak --> Etkilenen kaynaklar ("*" olabilir)

  • Eylem --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (izinler)

  • Etki --> İzin verme/Reddetme

  • Özne --> etkilenen arn

  • Koşullar (isteğe bağlı) --> İzinleri vermek için koşul

İzinler:

  • İzinlerinizi AWS hesabınızdaki başka bir AWS öznesine devretmenize izin verir. Bunları AWS KMS API'lerini kullanarak oluşturmanız gerekmektedir. CMK tanımlayıcısı, alıcı özne ve gereken işlem düzeyi (Decrypt, Encrypt, GenerateDataKey...) belirtilebilir.

  • İzin oluşturulduktan sonra bir GrantToken ve bir GrantID verilir.

Erişim:

  • Anahtar politikası aracılığıyla -- Eğer varsa, bu IAM politikasının üzerine geçerlidir

  • IAM politikası aracılığıyla

  • İzinler aracılığıyla

Anahtar Yöneticileri

Varsayılan olarak anahtar yöneticisi:

  • KMS'yi yönetme erişimine sahip olur, ancak verileri şifrelemek veya şifresini çözmek için erişimi yoktur

  • Yalnızca IAM kullanıcıları ve rolleri Anahtar Yöneticileri listesine ekleyebilir (gruplar değil)

  • Harici CMK kullanılıyorsa, Anahtar Yöneticileri anahtar materyali ithal etme iznine sahiptir

CMK'ların Döndürülmesi

  • Aynı anahtar yerinde bırakıldıkça, o anahtarla şifrelenen veri miktarı artar ve o anahtar ihlal edilirse, verinin risk altında olduğu alan da genişler. Bunun yanı sıra, anahtar ne kadar uzun süre aktif kalırsa, ihlal edilme olasılığı da artar.

  • KMS, müşteri anahtarlarını her 365 günde bir döndürür (veya istediğiniz zaman manuel olarak gerçekleştirebilirsiniz) ve AWS tarafından yönetilen anahtarları her 3 yılda bir döndürür ve bu süre değiştirilemez.

  • Eski anahtarlar, dönüşümden önce şifrelenen verileri çözmek için saklanır.

  • Bir kırılma durumunda, anahtarı döndürmek tehdidi kaldırmaz çünkü kompromize edilen anahtarla şifrelenen tüm verileri çözmek mümkün olacaktır. Bununla birlikte, yeni veriler yeni anahtarla şifrelenir.

  • CMK devre dışı veya silme bekleyen durumdaysa, KMS, CMK yeniden etkinleştirilene veya silme iptal edilene kadar anahtar döndürme işlemi gerçekleştirmez.

Manuel döndürme

  • Yeni bir CMK oluşturmanız gerekmektedir, ardından yeni bir CMK tanımlayıcısı oluşturulur, bu nedenle herhangi bir uygulamayı güncellemek için yeni CMK tanımlayıcısına başvurmanız gerekir.

  • Bu işlemi kolaylaştırmak için bir anahtar kimliğine başvurmak için takma adları kullanabilirsiniz ve ardından takma adın başvurduğu anahtarı güncelleyebilirsiniz.

  • Eski dosyalarla şifrelenmiş eski dosyaları çözmek için eski anahtarları saklamanız gerekmektedir.

Kendi yerinde anahtar altyapınızdan anahtarları içe aktarabilirsiniz.

Diğer ilgili KMS bilgileri

KMS, tüm hizmetlerden alınan şifreleme/şifre çözme isteklerinin sayısına göre fiyatlandırılır.

KMS, CloudTrail ile tam denetim ve uyum entegrasyonuna sahiptir; burada KMS üzerinde gerçekleştirilen tüm değişiklikleri denetleyebilirsiniz.

KMS politikası ile aşağıdakileri yapabilirsiniz:

  • Kimlerin veri anahtarları oluşturabileceğini ve bu anahtarları kullanma erişimine sahip olan hizmetleri sınırlayabilirsiniz

  • Sistemlerin sadece şifreleme, sadece şifre çözme veya her ikisine erişimini sınırlayabilirsiniz

  • Sistemlerin anahtarlara bölgesel olarak erişmesine izin vermek için tanımlayabilirsiniz (ancak KMS'i barındıran bölgede bir arıza, diğer bölgelerdeki sistemlerin kullanılabilirliğini etkileyeceği için önerilmez).

Anahtarları senkronize edemez veya bölgeler arasında taşıyamaz/kopyalayamazsınız; yalnızca bölgeye erişime izin vermek için kurallar belirleyebilirsiniz.

Numaralandırma

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

Kalıcılık

pageAWS - KMS Persistence

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated