# AWS Security Token

{% hint style="danger" %}
¿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](https://spartan-cybersec.com/cursos/pentesting-contra-la-nube-de-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.
{% endhint %}

{% hint style="warning" %}
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.
{% endhint %}

Para abordar la implementación y manejo de AWS Security Tokens de manera eficaz, es crucial establecer un entorno seguro y controlado que minimice los riesgos asociados con su gestión. Este entorno debe caracterizarse por una infraestructura bien configurada, políticas de seguridad robustas, y una constante vigilancia sobre las prácticas de acceso y autenticación. En este contexto, se subraya la importancia de utilizar AWS Identity and Access Management (IAM) para crear y administrar usuarios y permisos de forma segura, aprovechando las capacidades de los AWS Security Tokens para otorgar acceso temporal y restringido a los recursos de AWS.

Los AWS Security Tokens juegan un papel fundamental en el ecosistema de AWS al permitir a los usuarios, incluidos los desarrolladores que utilizan herramientas como Terraform o servicios de AWS, obtener acceso limitado para realizar tareas específicas. Estos tokens efímeros se convierten en una solución óptima para aplicaciones y servicios configurados con roles de IAM en instancias EC2, ya que facilitan la adquisición de credenciales para acceder a servicios adicionales, simplificando la autenticación cruzada entre servicios para los desarrolladores. Sin embargo, esta comodidad no está exenta de riesgos. Los tokens comprometidos pueden ser explotados por atacantes, lo que subraya la importancia de implementar medidas de seguridad adecuadas.

La obtención de estas credenciales se realiza a través del servicio de metadatos de AWS, accesible a través de URLs específicas. Las categorías de metadatos más relevantes incluyen 'iam/info', que detalla los roles de IAM asociados, y 'iam/security-credentials/role-name', que alberga las credenciales de seguridad temporales vinculadas a un rol. AWS ha incorporado tokens en su Version 2 del Instance Metadata Service (IMDSv2) para establecer acceso basado en sesiones sin requerir autenticación adicional, mitigando así las vulnerabilidades de Server Side Request Forgery (SSRF) dentro de las aplicaciones.

El proceso para manejar estos tokens es el siguiente:

* [x] <mark style="color:orange;">**Solicitud de un Token**</mark><mark style="color:orange;">:</mark> Utilizando el comando `curl`, se envía una solicitud PUT al endpoint del servicio de metadatos de AWS para obtener un token de seguridad. Este token se almacena en la variable `$TOKEN` para su uso posterior.

```bash
TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
```

* [x] <mark style="color:orange;">**Impresión del Token**</mark><mark style="color:orange;">:</mark> El comando `echo $TOKEN` permite visualizar el token obtenido, que será necesario para solicitudes subsecuentes que requieran autenticación.

```bash
echo $TOKEN
```

* [x] <mark style="color:orange;">**Recuperación del Documento de Identidad de la Instancia**</mark><mark style="color:orange;">:</mark> Con el token obtenido, es posible recuperar el documento de identidad de la instancia, que proporciona información valiosa sobre la instancia EC2, como su región, arquitectura e ID de instancia.

```bash
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
```

* [x] <mark style="color:orange;">**Listado de Información de IAM**</mark><mark style="color:orange;">:</mark> A través de `curl`, se puede obtener información sobre los roles de IAM asociados a la instancia EC2, utilizando el token de seguridad.

```bash
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/info
```

* [x] <mark style="color:orange;">**Solicitud de Credenciales de Seguridad de IAM**</mark><mark style="color:orange;">:</mark> Este paso implica solicitar credenciales de seguridad para un rol de IAM específico, lo que devuelve un Access Key ID, Secret Access Key, Token, y tiempo de expiración de las credenciales.

```bash
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/ServerManager
```

* [x] <mark style="color:orange;">**Almacenamiento de Credenciales en la Configuración de AWS CLI**</mark><mark style="color:orange;">:</mark> Finalmente, las credenciales obtenidas se pueden almacenar en el archivo de configuración de AWS CLI, permitiendo la ejecución de comandos CLI de AWS con los permisos otorgados.

```bash
[default]
aws_access_key_id = ASIAWA6NVTVY5CNUKIUO
aws_secret_access_key = wSHLoJrGVnjfo+xxKwt1cblFpiZgWF20DMxXpTXn
aws_session_token = IQoJb3JpZ2luX2VjECEaDGV1LWNlbnRhbC0x...
```

Es esencial entender y aplicar correctamente estos pasos para maximizar la seguridad y eficiencia en el acceso y manejo de recursos en AWS, garantizando así una gestión efectiva de los AWS Security Tokens en un entorno protegido.
