diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index 70f1c7201..2de5f93ca 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -4,7 +4,7 @@ ## KMS - Key Management Service -AWS Key Management Service (AWS KMS) wird als verwalteter Dienst präsentiert, der den Prozess für Benutzer vereinfacht, **Kundenmaster-Schlüssel** (CMKs) zu **erstellen und zu verwalten**. Diese CMKs sind integraler Bestandteil der Verschlüsselung von Benutzerdaten. Ein bemerkenswertes Merkmal von AWS KMS ist, dass CMKs überwiegend **durch Hardware-Sicherheitsmodule** (HSMs) **gesichert** sind, was den Schutz der Verschlüsselungsschlüssel verbessert. +AWS Key Management Service (AWS KMS) wird als verwalteter Dienst präsentiert, der den Prozess für Benutzer vereinfacht, um **Kundenmaster-Schlüssel** (CMKs) zu **erstellen und zu verwalten**. Diese CMKs sind integraler Bestandteil der Verschlüsselung von Benutzerdaten. Ein bemerkenswertes Merkmal von AWS KMS ist, dass CMKs überwiegend **durch Hardware-Sicherheitsmodule** (HSMs) **gesichert** sind, was den Schutz der Verschlüsselungsschlüssel verbessert. KMS verwendet **symmetrische Kryptographie**. Dies wird verwendet, um **Informationen im Ruhezustand zu verschlüsseln** (zum Beispiel in einem S3). Wenn Sie **Informationen während der Übertragung verschlüsseln** müssen, müssen Sie etwas wie **TLS** verwenden. @@ -21,7 +21,7 @@ Es gibt 2 Arten von Master-Schlüsseln: - **AWS verwaltete CMKs: Werden von anderen Diensten zur Verschlüsselung von Daten verwendet**. Es wird von dem Dienst verwendet, der es in einer Region erstellt hat. Sie werden beim ersten Mal erstellt, wenn Sie die Verschlüsselung in diesem Dienst implementieren. Wechselt alle 3 Jahre und es ist nicht möglich, es zu ändern. - **Kundenverwaltete CMKs**: Flexibilität, Rotation, konfigurierbarer Zugriff und Schlüsselrichtlinie. Aktivieren und Deaktivieren von Schlüsseln. -**Envelope Encryption** im Kontext des Key Management Service (KMS): Zweistufiges Hierarchiesystem zur **Verschlüsselung von Daten mit einem Datenschlüssel und dann Verschlüsselung des Datenschlüssels mit dem Master-Schlüssel**. +**Envelope-Verschlüsselung** im Kontext des Key Management Service (KMS): Zweistufiges Hierarchiesystem zur **Verschlüsselung von Daten mit einem Datenschlüssel und dann Verschlüsselung des Datenschlüssels mit dem Master-Schlüssel**. ### Schlüsselrichtlinien @@ -31,15 +31,15 @@ Diese definieren **wer einen Schlüssel in KMS verwenden und darauf zugreifen ka - Es gibt dem **IAM des** **AWS-Kontos, das den KMS-Schlüssel besitzt, Zugriff**, um den Zugriff auf den KMS-Schlüssel über IAM zu verwalten. -Im Gegensatz zu anderen AWS-Ressourcenrichtlinien gewährt eine AWS **KMS-Schlüsselrichtlinie nicht automatisch Berechtigungen an die Prinzipale des Kontos**. Um den Kontoadministratoren Berechtigungen zu gewähren, **muss die Schlüsselrichtlinie eine explizite Aussage enthalten**, die diese Berechtigung bereitstellt, wie diese hier. +Im Gegensatz zu anderen AWS-Ressourcenrichtlinien gewährt eine AWS **KMS-Schlüsselrichtlinie nicht automatisch Berechtigungen an die Prinzipale des Kontos**. Um den Kontoadministratoren Berechtigungen zu gewähren, **muss die Schlüsselrichtlinie eine explizite Erklärung enthalten**, die diese Berechtigung bereitstellt, wie diese hier. - Ohne die Erlaubnis des Kontos (`"AWS": "arn:aws:iam::111122223333:root"`) funktionieren IAM-Berechtigungen nicht. -- Es **erlaubt dem Konto, IAM-Richtlinien zu verwenden**, um den Zugriff auf den KMS-Schlüssel zusätzlich zur Schlüsselrichtlinie zu ermöglichen. +- Es **erlaubt dem Konto, IAM-Richtlinien zu verwenden**, um den Zugriff auf den KMS-Schlüssel zu ermöglichen, zusätzlich zur Schlüsselrichtlinie. **Ohne diese Berechtigung sind IAM-Richtlinien, die den Zugriff auf den Schlüssel erlauben, ineffektiv**, obwohl IAM-Richtlinien, die den Zugriff auf den Schlüssel verweigern, weiterhin wirksam sind. -- Es **verringert das Risiko, dass der Schlüssel unverwaltbar wird**, indem es den Kontoadministratoren, einschließlich des Root-Benutzers des Kontos, der nicht gelöscht werden kann, Berechtigungen zur Zugriffskontrolle gewährt. +- Es **verringert das Risiko, dass der Schlüssel unverwaltbar wird**, indem es den Kontoadministratoren, einschließlich des Kontowurzelbenutzers, der nicht gelöscht werden kann, Berechtigungen zur Zugriffskontrolle gewährt. **Beispiel für eine Standardrichtlinie:** ```json @@ -71,7 +71,7 @@ Eigenschaften einer Richtlinie: Grants: -- Erlaubt es, Ihre Berechtigungen an einen anderen AWS-Principal innerhalb Ihres AWS-Kontos zu delegieren. Sie müssen sie mit den AWS KMS-APIs erstellen. Es kann der CMK-Identifikator, der berechtigte Principal und das erforderliche Niveau der Operation (Decrypt, Encrypt, GenerateDataKey...) angegeben werden. +- Erlaubt es, Ihre Berechtigungen an einen anderen AWS-Principal innerhalb Ihres AWS-Kontos zu delegieren. Sie müssen sie mit den AWS KMS APIs erstellen. Es kann der CMK-Identifikator, der berechtigte Principal und das erforderliche Niveau der Operation (Decrypt, Encrypt, GenerateDataKey...) angegeben werden. - Nach der Erstellung des Grants werden ein GrantToken und eine GrantID ausgegeben. **Zugriff**: @@ -86,8 +86,8 @@ Grants: Schlüsseladministratoren standardmäßig: -- Haben Zugriff zur Verwaltung von KMS, aber nicht zum Verschlüsseln oder Entschlüsseln von Daten. -- Nur IAM-Benutzer und -Rollen können zur Liste der Schlüsseladministratoren hinzugefügt werden (keine Gruppen). +- Haben Zugriff zur Verwaltung von KMS, jedoch nicht zum Verschlüsseln oder Entschlüsseln von Daten. +- Nur IAM-Benutzer und -Rollen können zur Liste der Schlüsseladministratoren hinzugefügt werden (nicht Gruppen). - Wenn eine externe CMK verwendet wird, haben Schlüsseladministratoren die Berechtigung, Schlüsselmaterial zu importieren. ### Rotation von CMKs @@ -95,20 +95,20 @@ Schlüsseladministratoren standardmäßig: - Je länger derselbe Schlüssel an Ort und Stelle bleibt, desto mehr Daten werden mit diesem Schlüssel verschlüsselt, und wenn dieser Schlüssel kompromittiert wird, desto größer ist das Risiko für die Daten. Darüber hinaus steigt die Wahrscheinlichkeit, dass der Schlüssel kompromittiert wird, je länger er aktiv ist. - **KMS rotiert Kundenschlüssel alle 365 Tage** (oder Sie können den Prozess manuell durchführen, wann immer Sie möchten) und **Schlüssel, die von AWS verwaltet werden, alle 3 Jahre**, und diese Zeit kann nicht geändert werden. - **Ältere Schlüssel werden aufbewahrt**, um Daten zu entschlüsseln, die vor der Rotation verschlüsselt wurden. -- Bei einem Bruch wird die Rotation des Schlüssels die Bedrohung nicht beseitigen, da es möglich sein wird, alle Daten zu entschlüsseln, die mit dem kompromittierten Schlüssel verschlüsselt wurden. Allerdings werden **neue Daten mit dem neuen Schlüssel verschlüsselt**. -- Wenn die **CMK** im Zustand **deaktiviert** oder **in der Löschung ausstehend** ist, wird KMS **keine Schlüsselrotation durchführen**, bis die CMK wieder aktiviert oder die Löschung abgebrochen wird. +- Bei einem Bruch wird die Rotation des Schlüssels die Bedrohung nicht beseitigen, da es möglich sein wird, alle Daten zu entschlüsseln, die mit dem kompromittierten Schlüssel verschlüsselt wurden. Allerdings werden die **neuen Daten mit dem neuen Schlüssel verschlüsselt**. +- Wenn die **CMK** im Zustand **deaktiviert** oder **in der Löschung** **ausstehend** ist, wird KMS **keine Schlüsselrotation durchführen**, bis die CMK wieder aktiviert oder die Löschung abgebrochen wird. #### Manuelle Rotation -- Eine **neue CMK muss erstellt werden**, dann wird eine neue CMK-ID erstellt, sodass Sie **alle Anwendungen** **aktualisieren** müssen, um auf die neue CMK-ID zu **verweisen**. +- Eine **neue CMK muss erstellt werden**, dann wird eine neue CMK-ID erstellt, sodass Sie **alle Anwendungen aktualisieren** müssen, um die neue CMK-ID **zu referenzieren**. - Um diesen Prozess zu erleichtern, können Sie **Aliase verwenden, um auf eine Schlüssel-ID zu verweisen** und dann einfach den Schlüssel aktualisieren, auf den der Alias verweist. -- Sie müssen **alte Schlüssel aufbewahren, um alte Dateien** zu entschlüsseln, die damit verschlüsselt wurden. +- Sie müssen **alte Schlüssel aufbewahren, um alte Dateien zu entschlüsseln**, die damit verschlüsselt wurden. Sie können Schlüssel aus Ihrer lokalen Schlüssel-Infrastruktur importieren. ### Weitere relevante KMS-Informationen -KMS wird pro Anzahl der von allen Diensten pro Monat empfangenen Verschlüsselungs-/Entschlüsselungsanfragen berechnet. +KMS wird pro Anzahl der Verschlüsselungs-/Entschlüsselungsanfragen, die von allen Diensten pro Monat empfangen werden, berechnet. KMS hat eine vollständige Audit- und Compliance-**Integration mit CloudTrail**; hier können Sie alle Änderungen, die an KMS vorgenommen wurden, überprüfen. @@ -128,6 +128,11 @@ aws kms list-grants --key-id aws kms describe-key --key-id aws kms get-key-policy --key-id --policy-name # Default policy name is "default" aws kms describe-custom-key-stores + +# This script enumerates AWS KMS keys across all available regions. +for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do +echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n'; +done ``` ### Privesc @@ -147,7 +152,7 @@ aws kms describe-custom-key-stores ../aws-persistence/aws-kms-persistence.md {{#endref}} -## Referenzen +## References - [https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html)