AWS - S3 Post Exploitation

Tip

Jifunze na ufanye mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Saidia HackTricks

S3

Kwa taarifa zaidi angalia:

AWS - S3, Athena & Glacier Enum

Taarifa Nyeti

Wakati mwingine utaweza kupata taarifa nyeti zinazoweza kusomwa ndani ya buckets. Kwa mfano, terraform state secrets.

Pivoting

Platform mbalimbali zinaweza kutumia S3 kuhifadhi mali nyeti.
Kwa mfano, airflow inaweza kuhifadhi DAGs code hapo, au web pages zinaweza kutumika moja kwa moja kutoka S3. Mshambuliaji aliye na ruhusa za kuandika anaweza modify the code kutoka kwa bucket ili pivot kwenda platform nyingine, au takeover accounts kwa kubadilisha faili za JS.

S3 Ransomware

Katika tukio hili, mshambuliaji anaunda KMS (Key Management Service) key katika akaunti yao ya AWS au akaunti nyingine iliyoharibiwa. Kisha wanafanya key hii iwe inapatikana kwa mtu yeyote ulimwenguni, kuruhusu mtumiaji yeyote wa AWS, role, au account kusimba objects kwa kutumia key hii. Hata hivyo, objects haya hayawezi kufunguliwa (decrypted).

Mshambuliaji hutatua bucket ya S3 lengwa na kupata write-level access kwa kutumia mbinu mbalimbali. Hii inaweza kusababishwa na usanidi mbaya wa bucket unaofanya iwe hadharani au mshambuliaji kupata ufikiaji wa mazingira ya AWS yenyewe. Kawaida mshambuliaji hualenga buckets zenye taarifa nyeti kama personally identifiable information (PII), protected health information (PHI), logs, backups, na zaidi.

Ili kubaini kama bucket inaweza kulengwa kwa ransomware, mshambuliaji anakagua usanidi wake. Hii inajumuisha kuthibitisha kama S3 Object Versioning imewezeshwa na kama multi-factor authentication delete (MFA delete) imewezeshwa. Ikiwa Object Versioning haijawezeshwa, mshambuliaji anaweza kuendelea. Ikiwa Object Versioning imewezeshwa lakini MFA delete haijawezeshwa, mshambuliaji anaweza disable Object Versioning. Ikiwa Object Versioning na MFA delete zote zimewezeshwa, inakuwa ngumu zaidi kwa mshambuliaji kufanya ransomware kwa bucket hiyo.

Kwa kutumia AWS API, mshambuliaji anabadilisha kila object katika bucket na nakala iliyosimbwa kwa kutumia KMS key yao. Hii inasimba data katika bucket, ikifanya isiweze kupatikana bila key.

Ili kuongeza shinikizo, mshambuliaji anapanga kuifuta KMS key iliyotumika katika shambulio. Hii inampa lengwa dirisha la siku 7 kurejesha data zao kabla key itakapoondolewa na data kuharibika kabisa.

Mwishowe, mshambuliaji anaweza kupakia faili ya mwisho, kwa kawaida iitwayo “ransom-note.txt,” ambayo ina maelekezo kwa lengwa juu ya jinsi ya kupata faili zao. Faili hii hupakiwa bila encryption, sambamba kuonekana kwa lengwa na kuwafahamisha juu ya shambulio la ransomware.

SSE-C (Customer-Provided Key) Ransomware (Codefinger-like)

Tofauti nyingine ni kutumia mbinu mbaya ya SSE-C (S3 server-side encryption with customer-provided keys). Kwa SSE-C, mteja anatoa encryption key kwenye kila ombi na AWS haijihifadhi key. Hii inamaanisha kwamba ikiwa mshambuliaji anarekebisha objects kwa kutumia own SSE-C key, data ya mwathirika inakuwa hawezi kusomwa isipokuwa mwathirika aweze kutoa key iliyodhibitiwa na mshambuliaji huyo.

  • Preconditions: Compromised AWS credentials (au principal yeyote mwenye ruhusa sahihi) na uwezo wa rewrite objects (mfano, s3:PutObject kwenye target keys/prefixes). Hii mara nyingi huambatana na uwezo wa kuweka destructive lifecycle policies (angalia hapa chini), mfano s3:PutLifecycleConfiguration.
  • Attack chain:
  1. Mshambuliaji anazalisha key ya nasibu ya 256-bit (AES-256) na kuibakisha.
  2. Mshambuliaji anarekebisha objects zilizopo (mabati ya object yale yale) kwa kutumia SSE-C headers hivyo object iliyohifadhiwa sasa imesimbwa na attacker key.
  3. Mwathirika hawezi kupakua/ku-decrypt bila kutoa SSE-C key (hata kama IAM permissions ziko sawa).
  4. Mshambuliaji anaweza kufuta key (au kwa urahisi kamwe wasikubali kuutoa) ili kufanya data isirejeshike.

Example (conceptual) CLI usage:

# Upload/overwrite an object encrypted with attacker-provided SSE-C key
aws s3 cp ./file s3://<BUCKET>/<KEY> \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>

# Download requires providing the same key again
aws s3 cp s3://<BUCKET>/<KEY> ./file \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>
Kuongeza Shinikizo: Matumizi Mabaya ya “Timer” ya lifecycle

Ili kuondoa chaguo za urejeshaji (kama matoleo ya zamani), watapigaji wezi wanaweza kuunganisha upya SSE-C na lifecycle rules zinazofanya vitu kuisha muda na/au kufuta noncurrent versions baada ya kipindi kifupi:

  • s3:PutLifecycleConfiguration kwenye bucket inamruhusu mshambuliaji kupanga ufutaji bila kutoa amri za kufuta kwa kila object/version.
  • Hii ina athari kubwa hasa wakati versioning is enabled, kwa sababu inaweza kuondoa “previous good version” ambayo vingine ingewezesha urejeshaji.
Ugunduzi & Kupunguza
  • Tumia kipaumbele SSE-KMS (au SSE-S3) badala ya SSE-C isipokuwa ikiwa una sababu thabiti ya kiutendaji kuruhusu SSE-C.
  • Fuatilia/taarifu kuhusu maombi ya PutObject yanayotumia vichwa vya SSE-C (CloudTrail data events for S3).
  • Fuatilia/taarifu kuhusu PutBucketLifecycleConfiguration isiyotarajiwa (mabadiliko ya lifecycle).
  • Fuatilia/taarifu kuhusu mlole wa ghafla wa shughuli za kuandika juu (mifunguo ileile ikisasishwa kwa haraka) na kufutwa kwa delete-marker/version.
  • Punguza ruhusa zenye hatari kubwa: Punguza s3:PutObject kwa prefixes zinazohitajika; kizuia kwa nguvu s3:PutLifecycleConfiguration na s3:PutBucketVersioning; fikiria kuhitaji MFA kwa vitendo nyeti za usimamizi (ikihitajika) na tumia vyeo tofauti vya admin vinavyohitaji idhini.
  • Mwenendo wa urejeshaji: Tumia versioning, backups, na nakala zisizobadilika/zimelindwa (S3 replication to protected account, backup vaults, etc.); linda noncurrent versions dhidi ya ufutaji mkali na lindilia mabadiliko ya lifecycle kwa SCPs / guardrails.

s3:RestoreObject

Mshambuliaji mwenye ruhusa s3:RestoreObject anaweza kuwasha tena vitu vilivyohifadhiwa katika Glacier au Deep Archive, na kuvitengenezea upatikanaji wa muda. Hii inaruhusu urejeshaji na uondozaji wa data zilizohifadhiwa kihistoria (backups, snapshots, logs, certifications, old secrets) ambazo kawaida zingekuwa hazipatikani. Ikiwa mshambuliaji atachanganya ruhusa hii na ruhusa za kusoma (mfano, s3:GetObject), wanaweza kupata nakala kamili za data nyeti.

aws s3api restore-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--restore-request '{
"Days": <NUMBER_OF_DAYS>,
"GlacierJobParameters": { "Tier": "Standard" }
}'

s3:Delete*

Mshambulizi mwenye ruhusa ya s3:Delete* anaweza kufuta objects, versions, na buckets zote, kuingilia backups, na kusababisha upotevu wa data mara moja na usioweza kurejeshwa, uharibifu wa ushahidi, na kuweka backup au recovery artifacts hatarini.

# Delete an object from a bucket
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY>

# Delete a specific version
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--version-id <VERSION_ID>

# Delete a bucket
aws s3api delete-bucket \
--bucket <BUCKET_NAME>

Kwa maelezo zaidi check the original research.

Tip

Jifunze na ufanye mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Saidia HackTricks