Translated ['', 'src/pentesting-cloud/aws-security/aws-post-exploitation

This commit is contained in:
Translator
2026-02-14 19:50:42 +00:00
parent 886882b95e
commit a18d3f6cd2
@@ -10,32 +10,71 @@ Za više informacija pogledajte:
../../aws-services/aws-s3-athena-and-glacier-enum.md
{{#endref}}
### Osetljive informacije
### Sensitive Information
Ponekad ćete moći da pronađete osetljive informacije koje su čitljive u bucket-ovima. Na primer, terraform state secrets.
Ponekad ćete uspeti da pronađete osetljive informacije koje su čitljive direktno u buckets. Na primer, terraform state secrets.
### Pivoting
Različite platforme mogu koristiti S3 za čuvanje osetljivih resursa.\
Na primer, **airflow** može tamo čuvati **DAGs** kod, ili se **web pages** mogu direktno služiti iz S3. Napadač sa write permissions može **modify the code** from the bucket to **pivot** to other platforms, or **takeover accounts** modifying JS files.
Na primer, **airflow** može skladištiti **DAGs** **code** tamo, ili se **web pages** mogu direktno servirati iz S3. Napadač sa write permissions može **modify the code** iz bucket-a kako bi **pivot**-ovao na druge platforme, ili **takeover accounts** menjajući JS fajlove.
### S3 Ransomware
In this scenario, the **attacker creates a KMS (Key Management Service) key in their own AWS account** or another compromised account. They then make this **key accessible to anyone in the world**, allowing any AWS user, role, or account to encrypt objects using this key. However, the objects cannot be decrypted.
U ovom scenariju, napadač kreira **KMS (Key Management Service) key u svom AWS account** ili u drugom kompromitovanom nalogu. Zatim učini ovaj **key accessible to anyone in the world**, dozvoljavajući bilo kojem AWS useru, roli ili account-u da enkriptuje objekte koristeći taj ključ. Međutim, objekti ne mogu biti dekriptovani.
Napadač identifikuje ciljani **S3 bucket and gains write-level access** to it using various methods. Ovo može biti posledica loše konfiguracije bucket-a koja ga izlaže javnosti ili zato što napadač dobije pristup samom AWS okruženju. Napadač obično cilja bucket-e koji sadrže osetljive informacije kao što su personally identifiable information (PII), protected health information (PHI), logovi, backup-i i slično.
Napadač identifikuje ciljnu **S3 bucket i gains write-level access** do nje koristeći razne metode. To može biti zbog loše konfiguracije bucket-a koja ga izlaže javnosti ili zato što je napadač stekao pristup samom AWS okruženju. Napadač obično cilja bucket-e koji sadrže osetljive informacije kao što su personally identifiable information (PII), protected health information (PHI), logovi, backup-ovi i slično.
Da bi utvrdio da li bucket može biti meta ransomware napada, napadač proverava njegovu konfiguraciju. To uključuje proveru da li je **S3 Object Versioning** enabled i da li je **multi-factor authentication delete (MFA delete) enabled**. Ako Object Versioning nije enabled, napadač može nastaviti. Ako je Object Versioning enabled ali je MFA delete disabled, napadač može **disable Object Versioning**. Ako su i Object Versioning i MFA delete enabled, postaje teže za napadača da izvrši ransomware na tom bucket-u.
Da bi utvrdio da li bucket može biti meta ransomware-a, napadač proverava njegovu konfiguraciju. To uključuje verifikaciju da li je **S3 Object Versioning** omogućen i da li je **multi-factor authentication delete (MFA delete) enabled**. Ako Object Versioning nije omogućen, napadač može nastaviti. Ako je Object Versioning omogućen ali je MFA delete onemogućen, napadač može **disable Object Versioning**. Ako su i Object Versioning i MFA delete omogućeni, postaje teže za napadača da izvrši ransomware nad tim bucket-om.
Korišćenjem AWS API-ja, napadač **replaces each object in the bucket with an encrypted copy using their KMS key**. Ovo efikasno enkriptuje podatke u bucket-u, čineći ih nedostupnim bez tog key-a.
Korišćenjem AWS API-ja, napadač **replaces each object in the bucket with an encrypted copy using their KMS key**. Ovo efektivno enkriptuje podatke u bucket-u, čineći ih nedostupnim bez ključa.
Da bi dodatno izvršio pritisak, napadač zakaže brisanje KMS key-a koji je korišćen u napadu. To daje meti 7-dnevni rok da povrati podatke pre nego što se key obriše i podaci postanu trajno izgubljeni.
Da bi dodatno izvršio pritisak, napadač zakaže brisanje KMS ključa koji je korišćen u napadu. To daje žrtvi 7-dnevni rok da oporavi svoje podatke pre nego što ključ bude obrisan i podaci postanu trajno izgubljeni.
Na kraju, napadač može otpremiti konačni fajl, obično nazvan "ransom-note.txt", koji sadrži instrukcije za metu kako da povrati svoje fajlove. Ovaj fajl se otprema bez enkripcije, verovatno da bi privukao pažnju mete i obavestio ih o ransomware napadu.
Na kraju, napadač može postaviti završni fajl, obično nazvan "ransom-note.txt", koji sadrži instrukcije za metu kako da povrati svoje fajlove. Ovaj fajl se upload-uje bez enkripcije, verovatno da bi privukao pažnju mete i obavestio je o ransomware napadu.
#### SSE-C (Customer-Provided Key) Ransomware (Codefinger-like)
Druga varijanta zloupotrebljava **SSE-C** (S3 server-side encryption with **customer-provided keys**). Sa SSE-C, **client provides the encryption key on every request** i **AWS does not store the key**. To znači da ako napadač prepiše objekte koristeći **their own SSE-C key**, podaci žrtve postaju nečitljivi osim ako žrtva ne može da obezbedi taj napadačem kontrolisani ključ.
- **Preconditions:** Kompromitovani AWS credentials (ili bilo koji principal sa odgovarajućim permisijama) i mogućnost da **rewrite objects** (npr. `s3:PutObject` na ciljanim keys/prefixes). Ovo se često kombinuje sa mogućnošću postavljanja destruktivnih lifecycle politika (vidi dole), npr. `s3:PutLifecycleConfiguration`.
- **Attack chain:**
1. Napadač generiše nasumičan 256-bit ključ (AES-256) i zadržava ga.
2. Napadač **rewrites** postojeće objekte (isti object keys) koristeći SSE-C headers tako da je čuvani objekat sada enkriptovan sa napadačevim ključem.
3. Žrtva ne može da download-uje/dekriptujete bez pružanja SSE-C ključa (čak i ako su IAM permisije ispravne).
4. Napadač može obrisati ključ (ili jednostavno nikada ne obezbediti isti) kako bi podaci postali neoporavljivi.
Example (conceptual) CLI usage:
```bash
# 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>
```
##### Adding Pressure: Lifecycle "Timer" Abuse
Da bi uklonili opcije za oporavak (poput starih verzija), napadači mogu kombinovati SSE-C prepisivanja sa **pravila životnog ciklusa** koja ističu objekte i/ili brišu neaktuelne verzije nakon kratkog perioda:
- `s3:PutLifecycleConfiguration` na bucket-u omogućava napadaču da zakaže brisanja bez izvršavanja eksplicitnih operacija brisanja za svaki objekat/verziju.
- Ovo je naročito ozbiljno kada je **verzionisanje omogućeno**, jer može ukloniti "prethodnu dobru verziju" koja bi inače omogućila oporavak.
##### Detection & Mitigations
- Preferirajte **SSE-KMS** (ili SSE-S3) umesto SSE-C osim ako nemate snažan operativni razlog da dozvolite SSE-C.
- Pratite/pokrećite alarm za `PutObject` zahteve koji koriste SSE-C zaglavlja (CloudTrail data events za S3).
- Pratite/pokrećite alarm za neočekivane `PutBucketLifecycleConfiguration` (promene pravila životnog ciklusa).
- Pratite/pokrećite alarm za nagle skokove aktivnosti prepisivanja (isti ključevi brzo ažurirani) i brisanja delete-markera/brisanja verzija.
- Ograničite rizične permisije: Ograničite `s3:PutObject` na neophodne prefikse; strogo ograničite `s3:PutLifecycleConfiguration` i `s3:PutBucketVersioning`; razmotrite zahtevanje MFA za osetljive administratorske akcije (gde je primenljivo) i koristite odvojene admin role sa odobrenjima.
- Postura oporavka: Koristite **verzionisanje**, **rezervne kopije**, i nepromenljive/izvanmrežne kopije (S3 replication to protected account, backup vaults, itd.); zaštitite neaktuelne verzije od agresivnog brisanja i osigurajte promene lifecycle-a pomoću SCPs / guardrails.
### `s3:RestoreObject`
Napadač sa dozvolom s3:RestoreObject može reaktivirati objekte arhivirane u Glacier ili Deep Archive, čineći ih privremeno dostupnim. Ovo omogućava oporavak i exfiltraciju istorijski arhiviranih podataka (backup-i, snapshots, logovi, sertifikati, stari tajni podaci) koji bi inače bili nedostupni. Ako napadač kombinuje ovu dozvolu sa dozvolama za čitanje (npr. s3:GetObject), može dobiti potpune kopije osetljivih podataka.
Napadač sa permisijom `s3:RestoreObject` može reaktivirati objekte arhivirane u Glacier ili Deep Archive, čineći ih privremeno dostupnim. Ovo omogućava oporavak i eksfiltraciju istorijski arhiviranih podataka (rezervne kopije, snapshot-i, logovi, sertifikati, stari tajni podaci) koji bi inače bili nedostupni. Ako napadač kombinuje ovu dozvolu sa dozvolama za čitanje (npr. `s3:GetObject`), može dobiti pune kopije osetljivih podataka.
```bash
aws s3api restore-object \
--bucket <BUCKET_NAME> \
@@ -47,7 +86,7 @@ aws s3api restore-object \
```
### `s3:Delete*`
Napadač sa dozvolom s3:Delete* može izbrisati objects, versions i čitave buckets, poremetiti backups i prouzrokovati trenutni i nepovratni data loss, uništavanje dokaza i kompromitovanje backup ili recovery artifacts.
Napadač koji ima s3:Delete* dozvolu može izbrisati objekte, verzije i cele buckets, ometati rezervne kopije i prouzrokovati neposredni i nepovratan gubitak podataka, uništenje dokaza i kompromitovanje artefakata rezervne kopije ili oporavka.
```bash
# Delete an object from a bucket
aws s3api delete-object \