AWS - S3 Post Exploitation

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

S3

For more information check:

AWS - S3, Athena & Glacier Enum

Sensitiewe Inligting

Soms sal jy sensitiewe inligting leesbaar in die buckets vind. Byvoorbeeld, terraform state secrets.

Pivoting

Verskillende platforms kan S3 gebruik om sensitiewe assets te stoor.
Byvoorbeeld, airflow kan DAGs code daar stoor, of web pages kan direk vanaf S3 bedien word. ’n aanvaller met write permissions kan die code in die bucket wysig om na ander platforms te pivot, of takeover accounts deur JS-lĂȘers te wysig.

S3 Ransomware

In hierdie scenario skep die aanvaller ’n KMS (Key Management Service) key in hul eie AWS account of in ’n ander gekompromitteerde account. Hulle maak dan hierdie key toeganklik vir enigiemand in die wĂȘreld, wat enige AWS user, role, of account toelaat om objects met hierdie key te enkripteer. Die objects kan egter nie ontsleuteld word nie.

Die aanvaller identifiseer ’n teiken-S3 bucket en verwerf write-level access daartoe deur verskeie metodes. Dit kan wees as gevolg van swak bucket-konfigurasie wat dit publiek maak of dat die aanvaller toegang tot die AWS environment self verkry. Die aanvaller mik gewoonlik na buckets wat sensitiewe inligting bevat soos personally identifiable information (PII), protected health information (PHI), logs, backups, en meer.

Om te bepaal of die bucket ’n teiken vir ransomware kan wees, kontroleer die aanvaller die konfigurasie daarvan. Dit sluit in om te verifieer of S3 Object Versioning aangeskakel is en of multi-factor authentication delete (MFA delete) aangeskakel is. As Object Versioning nie aangeskakel is nie, kan die aanvaller voortgaan. As Object Versioning aangeskakel is maar MFA delete gedeaktiveer is, kan die aanvaller Object Versioning uitskakel. As beide Object Versioning en MFA delete aangeskakel is, word dit moeiliker vir die aanvaller om daardie spesifieke bucket te ransomware.

Deur die AWS API te gebruik, vervang die aanvaller elke object in die bucket met ’n geĂ«nkripteerde kopie wat hul KMS key gebruik. Dit enkripteer effektief die data in die bucket, wat dit ontoeganklik maak sonder die key.

Om meer druk te plaas, skeduleer die aanvaller die verwydering van die KMS key wat in die aanval gebruik is. Dit gee die teiken ’n 7-dag venster om hul data te herstel voordat die key verwyder word en die data permanent verlore raak.

Laastens kan die aanvaller ’n finale lĂȘer oplaai, gewoonlik genaamd “ransom-note.txt,” wat instruksies vir die teiken bevat oor hoe om hul lĂȘers terug te kry. Hierdie lĂȘer word sonder enkripsie opgelaai, waarskynlik om die teiken se aandag te trek en hulle bewus te maak van die ransomware-aanval.

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

Nog ’n variant is die misbruik van SSE-C (S3 server-side encryption met customer-provided keys). Met SSE-C voorsien die client die enkripsie-sleutel by elke versoek en AWS stoor nie die sleutel nie. Dit beteken dat as ’n aanvaller bestaande objects herskryf met hul eie SSE-C key, raak die slagoffer se data onleesbaar tensy die slagoffer daardie aanvaller-gekontroleerde key kan verskaf.

  • Preconditions: Gekomromitteerde AWS credentials (of enige principal met die regte permissions) en die vermoĂ« om objects te herskryf (bv. s3:PutObject op die teiken keys/prefixes). Dit word dikwels gepaar met die vermoĂ« om destruktiewe lifecycle policies te stel (kyk hieronder), bv. s3:PutLifecycleConfiguration.
  • Attack chain:
  1. Aanvaller genereer ’n ewekansige 256-bit key (AES-256) en hou dit.
  2. Aanvaller herskryf bestaande objects (dieselfde object keys) met SSE-C headers sodat die gestoorde object nou geënkripteer is met die aanvaller se key.
  3. Slagoffer kan nie download/ontsleutel sonder om die SSE-C key te verskaf nie (selfs al is IAM permissions reg).
  4. Aanvaller kan die key verwyder (of eenvoudig nooit verskaf nie) om die data onherstelbaar te maak.

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>
Verhoogde Druk: Lewensiklus “Timer” Misbruik

Om herstelopsies (soos ou weergawes) te verwyder, kan aanvallers SSE-C-omskrywings kombineer met lewensiklusreĂ«ls wat objekte laat verval en/of nie-aktuele weergawes na ’n kort periode verwyder:

  • s3:PutLifecycleConfiguration op die bucket laat ’n aanvaller toe om verwyderings te skeduleer sonder om eksplisiete delete-operasies vir elke object/weergawe uit te voer.
  • Dit is veral ingrypend wanneer versioning is enabled, omdat dit die “vorige goeie weergawe” kan verwyder wat andersins herstel sou moontlik maak.
Opsporing & Mitigasies
  • Verkies SSE-KMS (of SSE-S3) bo SSE-C, tensy jy ’n sterk operasionele rede het om SSE-C toe te laat.
  • Monitor/waarsku op PutObject versoeke wat SSE-C headers gebruik (CloudTrail data events vir S3).
  • Monitor/waarsku op onverwagte PutBucketLifecycleConfiguration (lewensiklusveranderinge).
  • Monitor/waarsku op skielike styging in oorskryfaktiwiteit (dieselfde keys wat vinnig bygewerk word) en delete-marker/weergaweverwyderings.
  • Beperk hoĂ«-risiko permissies: Beperk s3:PutObject tot nodige voorvoegsels; beperk sterk s3:PutLifecycleConfiguration en s3:PutBucketVersioning; oorweeg om MFA te vereis vir sensitiewe admin-aksies (waar toepaslik) en gebruik afsonderlike admin-rolle met goedkeurings.
  • Herstelhouding: Gebruik versioning, backups, en onveranderlike/offline kopieĂ« (S3 replicasie na ’n beskermde account, backup vaults, ens.); beskerm nie-aktuele weergawes teen aggressiewe verwydering en beveilig lewensiklusveranderinge met SCPs / guardrails.

s3:RestoreObject

’n Aanvaller met die s3:RestoreObject permissie kan objekte wat in Glacier of Deep Archive gearchiveer is heraktiveer, en dit tydelik toeganklik maak. Dit maak herstel en exfiltration van histories gearchiveerde data (backups, snapshots, logs, sertifikate, ou geheime) moontlik wat normaalweg buite bereik sou wees. As die aanvaller hierdie permissie kombineer met leespermissies (bv. s3:GetObject), kan hulle volledige kopieĂ« van sensitiewe data verkry.

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

s3:Delete*

An attacker met die s3:Delete* permission kan objects, versions en entire buckets uitvee, backups ontwrig en onmiddellike, onomkeerbare dataverlies veroorsaak, bewysvernietiging teweegbring en backup- of recovery-artifacts kompromitteer.

# 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>

Vir meer info check the original research.

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks