AWS - S3 Post Exploitation

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

S3

For more information check:

AWS - S3, Athena & Glacier Enum

Información sensible

A veces podrás encontrar información sensible legible en los buckets. Por ejemplo, secretos del terraform state.

Pivoting

Diferentes plataformas podrían estar usando S3 para almacenar activos sensibles.
Por ejemplo, airflow podría estar almacenando DAGs code allí, o páginas web podrían servirse directamente desde S3. Un attacker con permisos de escritura podría modify the code desde el bucket para pivot hacia otras plataformas, o takeover accounts modificando archivos JS.

S3 Ransomware

En este escenario, el attacker crea una KMS (Key Management Service) key en su propia cuenta AWS o en otra cuenta comprometida. Luego hace que esta key sea accesible para cualquiera en el mundo, permitiendo a cualquier AWS user, role, o account cifrar objetos usando esta key. Sin embargo, los objetos no pueden ser descifrados.

El attacker identifica un objetivo S3 bucket and gains write-level access mediante varios métodos. Esto puede deberse a una mala configuración del bucket que lo expone públicamente o a que el attacker obtiene acceso al propio entorno de AWS. Normalmente el attacker apunta a buckets que contienen información sensible como personally identifiable information (PII), protected health information (PHI), logs, backups, y más.

Para determinar si el bucket puede ser objetivo de ransomware, el attacker revisa su configuración. Esto incluye verificar si S3 Object Versioning está habilitado y si multi-factor authentication delete (MFA delete) está habilitado. Si Object Versioning no está habilitado, el attacker puede proceder. Si Object Versioning está habilitado pero MFA delete está deshabilitado, el attacker puede disable Object Versioning. Si tanto Object Versioning como MFA delete están habilitados, se vuelve más difícil para el attacker to ransomware that specific bucket.

Usando la AWS API, el attacker replaces each object in the bucket with an encrypted copy using their KMS key. Esto cifra efectivamente los datos en el bucket, haciéndolos inaccesibles sin la clave.

Para aumentar la presión, el attacker programa la eliminación de la clave KMS usada en el ataque. Esto le da al objetivo una ventana de 7 días para recuperar sus datos antes de que la clave sea eliminada y los datos se pierdan de forma permanente.

Finalmente, el attacker podría subir un archivo final, usualmente llamado “ransom-note.txt”, que contiene instrucciones para el objetivo sobre cómo recuperar sus archivos. Este archivo se sube sin cifrar, probablemente para llamar la atención del objetivo y hacerle saber del ataque de ransomware.

s3:RestoreObject

Un attacker con el permiso s3:RestoreObject puede reactivar objetos archivados en Glacier o Deep Archive, haciéndolos temporalmente accesibles. Esto permite la recuperación y exfiltración de datos históricamente archivados (backups, snapshots, logs, certifications, old secrets) que normalmente estarían fuera de alcance. Si el attacker combina este permiso con permisos de lectura (p. ej., s3:GetObject), puede obtener copias completas de datos sensibles.

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

s3:Delete*

Un atacante con el permiso s3:Delete* puede eliminar objetos, versiones y buckets completos, interrumpir copias de seguridad y provocar pérdida de datos inmediata e irreversible, la destrucción de pruebas y el compromiso de artefactos de copia de seguridad o recuperación.

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

Para más información consulta la investigación original.

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks