mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-06-12 19:11:44 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
+26
-27
@@ -4,7 +4,7 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Więcej informacji:
|
||||
Aby uzyskać więcej informacji sprawdź:
|
||||
|
||||
{{#ref}}
|
||||
../../aws-services/aws-kms-enum.md
|
||||
@@ -12,15 +12,15 @@ Więcej informacji:
|
||||
|
||||
### Encrypt/Decrypt information
|
||||
|
||||
`fileb://` and `file://` są schematami URI używanymi w poleceniach AWS CLI do wskazania ścieżki do lokalnych plików:
|
||||
`fileb://` and `file://` są schematami URI używanymi w poleceniach AWS CLI do określenia ścieżki do plików lokalnych:
|
||||
|
||||
- `fileb://:` Odczytuje plik w trybie binarnym, zwykle używane dla plików binarnych.
|
||||
- `file://:` Odczytuje plik w trybie tekstowym, zwykle używane dla zwykłych plików tekstowych, skryptów lub JSON, które nie mają specjalnych wymagań dotyczących kodowania.
|
||||
- `fileb://:` Odczytuje plik w trybie binarnym, zwykle używany dla plików nie-tekstowych.
|
||||
- `file://:` Odczytuje plik w trybie tekstowym, zwykle używany dla zwykłych plików tekstowych, skryptów lub JSON, które nie mają specjalnych wymagań kodowania.
|
||||
|
||||
> [!TIP]
|
||||
> Zauważ, że jeśli chcesz decrypt danych wewnątrz pliku, plik musi zawierać surowe dane binarne, a nie dane zakodowane base64. (fileb://)
|
||||
> Zwróć uwagę, że jeśli chcesz decrypt danych znajdujących się w pliku, plik musi zawierać dane binarne, nie zakodowane w base64. (fileb://)
|
||||
|
||||
- Using a **symmetric** key
|
||||
- Używanie **symetrycznego** klucza
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -38,7 +38,7 @@ aws kms decrypt \
|
||||
--query Plaintext | base64 \
|
||||
--decode
|
||||
```
|
||||
- Użycie **asymetrycznego** klucza:
|
||||
- Użycie klucza **asymmetric**:
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -62,12 +62,12 @@ aws kms decrypt \
|
||||
|
||||
Atakujący z uprzywilejowanym dostępem do KMS może zmodyfikować politykę KMS dla kluczy i **przyznać swojemu kontu dostęp do nich**, usuwając dostęp przyznany prawowitemu kontu.
|
||||
|
||||
W rezultacie użytkownicy prawowitego konta nie będą mogli uzyskać dostępu do żadnych informacji żadnej usługi zaszyfrowanej tymi kluczami, tworząc proste, lecz skuteczne ransomware wymierzone w konto.
|
||||
W rezultacie użytkownicy prawowitego konta nie będą mogli uzyskać dostępu do żadnych informacji z usług zaszyfrowanych tymi kluczami, tworząc proste, lecz skuteczne ransomware wobec konta.
|
||||
|
||||
> [!WARNING]
|
||||
> Zwróć uwagę, że **AWS managed keys aren't affected** przez ten atak; dotyczy to tylko **Customer managed keys**.
|
||||
> Należy pamiętać, że **AWS managed keys aren't affected** przez ten atak; dotyczy to tylko **Customer managed keys**.
|
||||
|
||||
> Zwróć też uwagę na konieczność użycia parametru **`--bypass-policy-lockout-safety-check`** (brak tej opcji w konsoli webowej powoduje, że ten atak jest możliwy tylko z poziomu CLI).
|
||||
> Zwróć uwagę na konieczność użycia parametru **`--bypass-policy-lockout-safety-check`** (brak tej opcji w konsoli webowej sprawia, że ten atak jest możliwy tylko z poziomu CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,22 +92,22 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Zwróć uwagę, że jeśli zmienisz tę politykę i udzielisz dostępu tylko kontu zewnętrznemu, a następnie z tego konta zewnętrznego spróbujesz ustawić nową politykę, aby **przywrócić dostęp do oryginalnego konta, nie będziesz w stanie, ponieważ akcja Put Polocy nie może być wykonana z konta zewnętrznego**.
|
||||
> Pamiętaj, że jeśli zmienisz tę politykę i przyznasz dostęp tylko zewnętrznemu kontu, a następnie z tego konta spróbujesz ustawić nową politykę, aby **przywrócić dostęp do oryginalnego konta, nie będziesz w stanie, ponieważ akcja Put Polocy nie może być wykonana z cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Ogólny KMS Ransomware
|
||||
|
||||
Istnieje inny sposób przeprowadzenia globalnego KMS Ransomware, który obejmowałby następujące kroki:
|
||||
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** zaimportowanym przez atakującego
|
||||
- **Ponownie zaszyfruj starsze dane** ofiary, które były zaszyfrowane poprzednią wersją, przy użyciu nowego klucza
|
||||
- **Ponownie zaszyfruj starsze dane** ofiary, które były zaszyfrowane poprzednią wersją, używając nowego
|
||||
- **Usuń klucz KMS**
|
||||
- Teraz tylko atakujący, który posiada oryginalny materiał klucza, będzie w stanie odszyfrować zaszyfrowane dane
|
||||
|
||||
### Delete Keys via kms:DeleteImportedKeyMaterial
|
||||
|
||||
With the `kms:DeleteImportedKeyMaterial` permission, an actor can delete the imported key material from CMKs with `Origin=EXTERNAL` (CMKs that have imported their key material), making them unable to decrypt data. This action is destructive and irreversible unless compatible material is re-imported, allowing an attacker to effectively cause ransomware-like data loss by rendering encrypted information permanently inaccessible.
|
||||
Z uprawnieniem `kms:DeleteImportedKeyMaterial` aktor może usunąć zaimportowany materiał klucza z CMK z `Origin=EXTERNAL` (CMK, które zaimportowały swój materiał klucza), uniemożliwiając im odszyfrowanie danych. Ta akcja jest destrukcyjna i nieodwracalna, chyba że kompatybilny materiał zostanie ponownie zaimportowany, co pozwala atakującemu w praktyce spowodować utratę danych podobną do ransomware, czyniąc zaszyfrowane informacje trwale niedostępnymi.
|
||||
```bash
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
@@ -121,10 +121,10 @@ aws kms schedule-key-deletion \
|
||||
--pending-window-in-days 7
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Zwróć uwagę, że AWS teraz **uniemożliwia wykonywanie poprzednich działań z innego konta:**
|
||||
|
||||
### Zmiana lub usunięcie aliasu
|
||||
Ten atak usuwa lub przekierowuje aliasy AWS KMS, przerywając rozwiązywanie kluczy i powodując natychmiastowe awarie w usługach, które polegają na tych aliasach, co skutkuje denial-of-service. Mając uprawnienia takie jak `kms:DeleteAlias` lub `kms:UpdateAlias`, atakujący może usunąć lub ponownie wskazać aliasy i zakłócić operacje kryptograficzne (np. encrypt, describe). Każda usługa, która odwołuje się do aliasu zamiast ID klucza, może nie działać do czasu przywrócenia aliasu lub jego prawidłowego odwzorowania.
|
||||
> Zwróć uwagę, że AWS teraz **zapobiega wykonywaniu poprzednich działań z cross account:**
|
||||
>
|
||||
> ### Change or delete Alias
|
||||
> Ten atak usuwa lub przekierowuje aliasy AWS KMS, zaburzając rozwiązywanie kluczy i powodując natychmiastowe błędy w usługach, które polegają na tych aliasach, co skutkuje odmową usługi. Mając uprawnienia takie jak `kms:DeleteAlias` lub `kms:UpdateAlias`, atakujący może usunąć lub przekierować aliasy i zakłócić operacje kryptograficzne (np. encrypt, describe). Każda usługa, która odwołuje się do aliasu zamiast do ID klucza, może nie działać, dopóki alias nie zostanie przywrócony lub poprawnie zmapowany.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
@@ -134,8 +134,8 @@ aws kms update-alias \
|
||||
--alias-name alias/<key_alias> \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Cancel Key Deletion
|
||||
Posiadając uprawnienia takie jak `kms:CancelKeyDeletion` i `kms:EnableKey`, atakujący może anulować zaplanowane usunięcie AWS KMS customer master key i później ponownie je włączyć. W ten sposób klucz zostaje odzyskany (początkowo w stanie Disabled) i przywraca się jego zdolność do odszyfrowania wcześniej chronionych danych, umożliwiając exfiltration.
|
||||
### Anulowanie zaplanowanego usunięcia klucza
|
||||
Mając uprawnienia takie jak `kms:CancelKeyDeletion` i `kms:EnableKey`, atakujący może anulować zaplanowane usunięcie klucza głównego klienta AWS KMS i później ponownie go włączyć. Dzięki temu klucz zostaje odzyskany (początkowo w stanie Disabled) i przywracana jest jego zdolność do odszyfrowywania wcześniej chronionych danych, umożliwiając exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
@@ -146,14 +146,13 @@ aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Wyłączenie klucza
|
||||
|
||||
Z uprawnieniem `kms:DisableKey` aktor może wyłączyć AWS KMS customer master key (CMK), uniemożliwiając jego użycie do szyfrowania lub odszyfrowywania. To przerywa dostęp dla wszelkich usług zależnych od tego CMK i może spowodować natychmiastowe zakłócenia lub denial-of-service, dopóki klucz nie zostanie ponownie włączony.
|
||||
Posiadając uprawnienie `kms:DisableKey`, aktor może wyłączyć AWS KMS customer master key, co uniemożliwia jego użycie do szyfrowania lub odszyfrowywania. Powoduje to zerwanie dostępu dla wszystkich usług zależnych od tego CMK i może spowodować natychmiastowe zakłócenia lub denial-of-service, dopóki klucz nie zostanie ponownie włączony.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Wyprowadzenie wspólnego sekretu
|
||||
Dzięki uprawnieniu `kms:DeriveSharedSecret` podmiot może użyć klucza prywatnego przechowywanego w KMS oraz klucza publicznego dostarczonego przez użytkownika, aby obliczyć wspólny sekret ECDH.
|
||||
### Wyprowadzenie współdzielonego sekretu
|
||||
Z uprawnieniem `kms:DeriveSharedSecret` podmiot może użyć prywatnego klucza przechowywanego w KMS oraz klucza publicznego dostarczonego przez użytkownika, aby obliczyć współdzielony sekret ECDH.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
@@ -161,7 +160,7 @@ aws kms derive-shared-secret \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
Z uprawnieniem `kms:Sign` podmiot może użyć CMK przechowywanej w KMS, aby cryptographically sign danych bez ujawniania private key, tworząc prawidłowe signatures, które mogą umożliwić impersonation lub autoryzować złośliwe działania.
|
||||
Mając uprawnienie `kms:Sign`, aktor może użyć przechowywanego w KMS CMK do kryptograficznego podpisywania danych bez ujawniania klucza prywatnego, generując ważne podpisy, które mogą umożliwić impersonation lub autoryzować złośliwe działania.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
@@ -169,8 +168,8 @@ aws kms sign \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS z Custom Key Stores
|
||||
Z uprawnieniami takimi jak `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` lub `kms:UpdateCustomKeyStore`, aktor może modyfikować, odłączać lub usuwać AWS KMS Custom Key Store (CKS), powodując, że jego klucze główne przestają działać. To przerywa operacje szyfrowania, odszyfrowywania i podpisywania dla usług, które polegają na tych kluczach i może spowodować natychmiastowy denial-of-service. Ograniczanie i monitorowanie tych uprawnień jest więc krytyczne.
|
||||
### DoS with Custom Key Stores
|
||||
Dysponując uprawnieniami takimi jak `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore` lub `kms:UpdateCustomKeyStore`, podmiot może modyfikować, odłączyć lub usunąć AWS KMS Custom Key Store (CKS), czyniąc jego klucze główne nieoperacyjnymi. To przerywa operacje szyfrowania, odszyfrowywania i podpisywania dla wszystkich usług, które polegają na tych kluczach i może spowodować natychmiastowy denial-of-service. Dlatego ograniczanie i monitorowanie tych uprawnień jest kluczowe.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user