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:
+50
-11
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user