Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:16:44 +00:00
parent 9f75e84afc
commit ecf5b2bb87
44 changed files with 1890 additions and 318 deletions

View File

@@ -24,7 +24,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute
Como DocumentDB es una base de datos compatible con MongoDB, puedes imaginar que también es vulnerable a ataques comunes de inyección NoSQL:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/nosql-injection
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
{{#endref}}
### DocumentDB

View File

@@ -18,7 +18,7 @@ Por defecto, DynamoDB utiliza una clave KMS que **pertenece a Amazon DynamoDB,**
### Copias de Seguridad y Exportación a S3
Es posible **programar** la generación de **copias de seguridad de tablas** o crearlas **a demanda**. Además, también es posible habilitar **la recuperación en el tiempo (PITR) para una tabla.** La recuperación en el tiempo proporciona **copias de seguridad** continuas de tus datos de DynamoDB durante **35 días** para ayudarte a protegerte contra operaciones de escritura o eliminación accidentales.
Es posible **programar** la generación de **copias de seguridad de la tabla** o crearlas **a demanda**. Además, también es posible habilitar **la recuperación en el tiempo (PITR) para una tabla.** La recuperación en el tiempo proporciona **copias de seguridad** continuas de tus datos de DynamoDB durante **35 días** para ayudarte a protegerte contra operaciones de escritura o eliminación accidentales.
También es posible exportar **los datos de una tabla a S3**, pero la tabla debe tener **PITR habilitado**.
@@ -84,7 +84,7 @@ aws dynamodb describe-endpoints #Dynamodb endpoints
Hay formas de acceder a los datos de DynamoDB con **sintaxis SQL**, por lo tanto, **inyecciones SQL típicas también son posibles**.
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/sql-injection
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
{{#endref}}
### Inyección NoSQL
@@ -95,7 +95,7 @@ Puedes encontrar aquí las condiciones soportadas por DynamoDB: [https://docs.aw
Ten en cuenta que se soportan **diferentes condiciones** si los datos se acceden a través de **`query`** o a través de **`scan`**.
> [!NOTE]
> De hecho, las acciones de **Query** necesitan especificar la **condición "EQ" (igual)** en la clave **primaria** para funcionar, lo que las hace mucho **menos propensas a inyecciones NoSQL** (y también limita mucho la operación).
> De hecho, las acciones de **Query** necesitan especificar la **condición "EQ" (igual)** en la **clave primaria** para funcionar, lo que las hace mucho **menos propensas a inyecciones NoSQL** (y también limita mucho la operación).
Si puedes **cambiar la comparación** realizada o agregar nuevas, podrías recuperar más datos.
```bash
@@ -105,7 +105,7 @@ Si puedes **cambiar la comparación** realizada o agregar nuevas, podrías recup
"GT": " " #All strings are greater than a space
```
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/nosql-injection
https://book.hacktricks.wiki/en/pentesting-web/nosql-injection.html
{{#endref}}
### Inyección de Json en bruto
@@ -152,9 +152,9 @@ Algunos SDK permiten usar una cadena que indica el filtrado que se debe realizar
```java
new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap)
```
Necesitas saber que al buscar en DynamoDB para **sustituir** un **valor** de atributo en **expresiones de filtro** mientras se escanean los elementos, los tokens deben **comenzar** con el carácter **`:`**. Tales tokens serán **reemplazados** con el **valor de atributo real en tiempo de ejecución**.
Es importante saber que al buscar en DynamoDB para **sustituir** un **valor** de atributo en **expresiones de filtro** mientras se escanean los elementos, los tokens deben **comenzar** con el carácter **`:`**. Tales tokens serán **reemplazados** con el **valor de atributo real en tiempo de ejecución**.
Por lo tanto, un inicio de sesión como el anterior puede ser eludido con algo como:
Por lo tanto, un inicio de sesión como el anterior se puede eludir con algo como:
```bash
:username = :username or :username
# This will generate the query:

View File

@@ -1,8 +1,8 @@
# AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
# AWS - EC2, EBS, ELB, SSM, VPC y VPN Enum
{{#include ../../../../banners/hacktricks-training.md}}
## VPC & Networking
## VPC y Redes
Aprende qué es una VPC y sobre sus componentes en:
@@ -12,7 +12,7 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2 se utiliza para iniciar **servidores virtuales**. Permite la configuración de **seguridad** y **redes** y la gestión de **almacenamiento**. La flexibilidad de Amazon EC2 es evidente en su capacidad para escalar recursos tanto hacia arriba como hacia abajo, adaptándose efectivamente a los cambios en los requisitos o aumentos en la popularidad. Esta característica disminuye la necesidad de predicciones precisas de tráfico.
Amazon EC2 se utiliza para iniciar **servidores virtuales**. Permite la configuración de **seguridad** y **redes** y la gestión de **almacenamiento**. La flexibilidad de Amazon EC2 es evidente en su capacidad para escalar recursos tanto hacia arriba como hacia abajo, adaptándose efectivamente a los cambios en los requisitos o picos de popularidad. Esta característica disminuye la necesidad de predicciones de tráfico precisas.
Cosas interesantes para enumerar en EC2:
@@ -26,21 +26,21 @@ Cosas interesantes para enumerar en EC2:
- Puertos abiertos
- Conexiones integradas con otras redes fuera de AWS
### Instance Profiles
### Perfiles de Instancia
Usar **roles** para otorgar permisos a aplicaciones que se ejecutan en **instancias EC2** requiere un poco de configuración adicional. Una aplicación que se ejecuta en una instancia EC2 está abstraída de AWS por el sistema operativo virtualizado. Debido a esta separación adicional, necesitas un paso adicional para asignar un rol de AWS y sus permisos asociados a una instancia EC2 y hacerlos disponibles para sus aplicaciones.
Usar **roles** para otorgar permisos a aplicaciones que se ejecutan en **instancias de EC2** requiere un poco de configuración adicional. Una aplicación que se ejecuta en una instancia de EC2 está abstraída de AWS por el sistema operativo virtualizado. Debido a esta separación adicional, necesitas un paso adicional para asignar un rol de AWS y sus permisos asociados a una instancia de EC2 y hacerlos disponibles para sus aplicaciones.
Este paso adicional es la **creación de un** [_**perfil de instancia**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) adjunto a la instancia. El **perfil de instancia contiene el rol y** puede proporcionar las credenciales temporales del rol a una aplicación que se ejecuta en la instancia. Esas credenciales temporales pueden ser utilizadas en las llamadas API de la aplicación para acceder a recursos y limitar el acceso solo a aquellos recursos que el rol especifica. Ten en cuenta que **solo se puede asignar un rol a una instancia EC2** a la vez, y todas las aplicaciones en la instancia comparten el mismo rol y permisos.
Este paso adicional es la **creación de un** [_**perfil de instancia**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) adjunto a la instancia. El **perfil de instancia contiene el rol y** puede proporcionar las credenciales temporales del rol a una aplicación que se ejecuta en la instancia. Esas credenciales temporales pueden ser utilizadas en las llamadas API de la aplicación para acceder a recursos y limitar el acceso solo a aquellos recursos que el rol especifica. Ten en cuenta que **solo se puede asignar un rol a una instancia de EC2** a la vez, y todas las aplicaciones en la instancia comparten el mismo rol y permisos.
### Metadata Endpoint
### Punto de Metadata
Los metadatos de AWS EC2 son información sobre una instancia de Amazon Elastic Compute Cloud (EC2) que está disponible para la instancia en tiempo de ejecución. Estos metadatos se utilizan para proporcionar información sobre la instancia, como su ID de instancia, la zona de disponibilidad en la que se está ejecutando, el rol IAM asociado con la instancia y el nombre de host de la instancia.
La metadata de AWS EC2 es información sobre una instancia de Amazon Elastic Compute Cloud (EC2) que está disponible para la instancia en tiempo de ejecución. Esta metadata se utiliza para proporcionar información sobre la instancia, como su ID de instancia, la zona de disponibilidad en la que se está ejecutando, el rol de IAM asociado con la instancia y el nombre de host de la instancia.
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### Enumeration
### Enumeración
```bash
# Get EC2 instances
aws ec2 describe-instances
@@ -150,11 +150,11 @@ En la siguiente página puedes verificar cómo **abusar de los permisos de EC2 p
Amazon **EBS** (Elastic Block Store) **snapshots** son básicamente **copias de seguridad** estáticas de volúmenes de AWS EBS. En otras palabras, son **copias** de los **discos** adjuntos a una **instancia EC2** en un momento específico. Los snapshots de EBS pueden ser copiados entre regiones y cuentas, o incluso descargados y ejecutados localmente.
Los snapshots pueden contener **información sensible** como **código fuente o claves de API**, por lo tanto, si tienes la oportunidad, se recomienda revisarlo.
Los snapshots pueden contener **información sensible** como **código fuente o claves de API**, por lo tanto, si tienes la oportunidad, se recomienda revisarlos.
### Diferencia AMI & EBS
Una **AMI** se utiliza para **lanzar una instancia EC2**, mientras que un **Snapshot** de EC2 se utiliza para **respaldar y recuperar datos almacenados en un volumen EBS**. Aunque un Snapshot de EC2 puede ser utilizado para crear una nueva AMI, no es lo mismo que una AMI, y no incluye información sobre el sistema operativo, servidor de aplicaciones u otro software requerido para ejecutar una aplicación.
Una **AMI** se utiliza para **lanzar una instancia EC2**, mientras que un **snapshot** de EC2 se utiliza para **respaldar y recuperar datos almacenados en un volumen EBS**. Aunque un snapshot de EC2 puede ser utilizado para crear una nueva AMI, no es lo mismo que una AMI, y no incluye información sobre el sistema operativo, servidor de aplicaciones u otro software requerido para ejecutar una aplicación.
### Escalación de Privilegios
@@ -166,9 +166,9 @@ En la siguiente página puedes verificar cómo **abusar de los permisos de EBS p
## SSM
**Amazon Simple Systems Manager (SSM)** permite gestionar de forma remota grupos de instancias EC2 para facilitar su administración. Cada una de estas instancias necesita estar ejecutando el **servicio SSM Agent, ya que este será el encargado de recibir las acciones y ejecutarlas** desde la API de AWS.
**Amazon Simple Systems Manager (SSM)** permite gestionar de forma remota grupos de instancias EC2 para facilitar mucho más su administración. Cada una de estas instancias necesita estar ejecutando el **servicio SSM Agent, ya que este será el encargado de recibir las acciones y ejecutarlas** desde la API de AWS.
**SSM Agent** permite que Systems Manager actualice, gestione y configure estos recursos. El agente **procesa solicitudes del servicio Systems Manager en la nube de AWS**, y luego las ejecuta según lo especificado en la solicitud.
El **SSM Agent** permite que Systems Manager actualice, gestione y configure estos recursos. El agente **procesa solicitudes del servicio Systems Manager en la nube de AWS**, y luego las ejecuta según lo especificado en la solicitud.
El **SSM Agent viene**[ **preinstalado en algunas AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) o necesitas [**instalarlos manualmente**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) en las instancias. Además, el rol de IAM utilizado dentro de la instancia necesita tener la política **AmazonEC2RoleforSSM** adjunta para poder comunicarse.
@@ -195,7 +195,7 @@ En la siguiente página puedes verificar cómo **abusar de los permisos de SSM p
## ELB
**Elastic Load Balancing** (ELB) es un **servicio de balanceo de carga para implementaciones de Amazon Web Services** (AWS). ELB **distribuye automáticamente el tráfico de aplicación entrante** y escala los recursos para satisfacer las demandas de tráfico.
**Elastic Load Balancing** (ELB) es un **servicio de balanceo de carga para implementaciones de Amazon Web Services** (AWS). ELB automáticamente **distribuye el tráfico de aplicación entrante** y escala recursos para satisfacer las demandas de tráfico.
### Enumeration
```bash
@@ -237,7 +237,7 @@ aws-nitro-enum.md
## VPN
Una VPN permite conectar tu **red local (VPN sitio a sitio)** o las **laptops de los trabajadores (VPN de cliente)** con un **AWS VPC** para que los servicios puedan ser accedidos sin necesidad de exponerlos a Internet.
Una VPN permite conectar tu **red local (VPN sitio a sitio)** o las **laptops de los trabajadores (VPN de cliente)** con una **AWS VPC** para que los servicios puedan ser accedidos sin necesidad de exponerlos a Internet.
#### Componentes Básicos de AWS VPN
@@ -252,7 +252,7 @@ Una VPN permite conectar tu **red local (VPN sitio a sitio)** o las **laptops de
- VPG es el punto final del lado de AWS para la conexión VPN.
- Maneja la comunicación segura entre tu VPC y tu red local.
3. **Site-to-Site VPN Connection**:
- Una conexión VPN sitio a sitio conecta tu red local a un VPC a través de un túnel VPN IPsec seguro.
- Una conexión VPN sitio a sitio conecta tu red local a una VPC a través de un túnel VPN IPsec seguro.
- Este tipo de conexión requiere un Customer Gateway y un Virtual Private Gateway.
- Se utiliza para una comunicación segura, estable y consistente entre tu centro de datos o red y tu entorno AWS.
- Típicamente se utiliza para conexiones regulares y a largo plazo y se factura según la cantidad de datos transferidos a través de la conexión.

View File

@@ -4,7 +4,7 @@
## Información Básica
El **Servicio de Base de Datos Relacional (RDS)** ofrecido por AWS está diseñado para simplificar el despliegue, operación y escalado de una **base de datos relacional en la nube**. Este servicio ofrece las ventajas de eficiencia de costos y escalabilidad mientras automatiza tareas laboriosas como la provisión de hardware, configuración de bases de datos, parches y copias de seguridad.
El **Servicio de Base de Datos Relacional (RDS)** ofrecido por AWS está diseñado para simplificar el despliegue, operación y escalado de una **base de datos relacional en la nube**. Este servicio ofrece las ventajas de eficiencia de costos y escalabilidad mientras automatiza tareas que requieren mucho trabajo, como la provisión de hardware, configuración de bases de datos, parches y copias de seguridad.
AWS RDS soporta varios motores de bases de datos relacionales ampliamente utilizados, incluyendo MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server y Amazon Aurora, con compatibilidad para MySQL y PostgreSQL.
@@ -15,7 +15,7 @@ Las características clave de RDS incluyen:
- Configuración de **despliegues en múltiples Zonas de Disponibilidad (AZ)** para asegurar alta disponibilidad y mecanismos de conmutación por error.
- **Integración** con otros servicios de AWS, como:
- AWS Identity and Access Management (**IAM**) para un control de acceso robusto.
- AWS **CloudWatch** para monitoreo y métricas integrales.
- AWS **CloudWatch** para monitoreo y métricas completas.
- AWS Key Management Service (**KMS**) para asegurar la encriptación en reposo.
## Credenciales
@@ -53,7 +53,7 @@ Sin embargo, hay un **método alternativo que te permite encriptar una base de d
#### Encriptación de Datos Transparente (TDE)
Junto con las capacidades de encriptación inherentes a RDS a nivel de aplicación, RDS también soporta **mecanismos de encriptación a nivel de plataforma adicionales** para salvaguardar los datos en reposo. Esto incluye **Encriptación de Datos Transparente (TDE)** para Oracle y SQL Server. Sin embargo, es crucial notar que aunque TDE mejora la seguridad al encriptar datos en reposo, también puede **afectar el rendimiento de la base de datos**. Este impacto en el rendimiento es especialmente notable cuando se utiliza en conjunto con funciones criptográficas de MySQL o funciones criptográficas de Microsoft Transact-SQL.
Junto con las capacidades de encriptación inherentes a RDS a nivel de aplicación, RDS también soporta **mecanismos de encriptación a nivel de plataforma adicionales** para proteger los datos en reposo. Esto incluye **Encriptación de Datos Transparente (TDE)** para Oracle y SQL Server. Sin embargo, es crucial notar que aunque TDE mejora la seguridad al encriptar datos en reposo, también puede **afectar el rendimiento de la base de datos**. Este impacto en el rendimiento es especialmente notable cuando se utiliza en conjunto con funciones criptográficas de MySQL o funciones criptográficas de Microsoft Transact-SQL.
Para utilizar TDE, se requieren ciertos pasos preliminares:
@@ -61,7 +61,7 @@ Para utilizar TDE, se requieren ciertos pasos preliminares:
- La base de datos debe estar asociada con un grupo de opciones. Los grupos de opciones sirven como contenedores para configuraciones y características, facilitando la gestión de bases de datos, incluyendo mejoras de seguridad.
- Sin embargo, es importante notar que los grupos de opciones solo están disponibles para motores de bases de datos y versiones específicas.
2. **Inclusión de TDE en el Grupo de Opciones**:
- Una vez asociado con un grupo de opciones, la opción de Encriptación de Datos Transparente de Oracle necesita ser incluida en ese grupo.
- Una vez asociada con un grupo de opciones, la opción de Encriptación de Datos Transparente de Oracle debe ser incluida en ese grupo.
- Es esencial reconocer que una vez que la opción TDE se añade a un grupo de opciones, se convierte en una característica permanente y no puede ser eliminada.
3. **Modos de Encriptación TDE**:
- TDE ofrece dos modos de encriptación distintos:
@@ -134,7 +134,7 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
Hay formas de acceder a los datos de DynamoDB con **sintaxis SQL**, por lo tanto, **inyecciones SQL típicas también son posibles**.
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/sql-injection
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## **CloudTrail**
AWS CloudTrail **registra y monitorea la actividad dentro de su entorno AWS**. Captura **registros de eventos** detallados, incluyendo quién hizo qué, cuándo y desde dónde, para todas las interacciones con los recursos de AWS. Esto proporciona un rastro de auditoría de cambios y acciones, ayudando en el análisis de seguridad, auditoría de cumplimiento y seguimiento de cambios en los recursos. CloudTrail es esencial para entender el comportamiento de usuarios y recursos, mejorar las posturas de seguridad y asegurar el cumplimiento regulatorio.
AWS CloudTrail **registra y monitorea la actividad dentro de tu entorno AWS**. Captura **registros de eventos** detallados, incluyendo quién hizo qué, cuándo y desde dónde, para todas las interacciones con los recursos de AWS. Esto proporciona un rastro de auditoría de cambios y acciones, ayudando en el análisis de seguridad, auditoría de cumplimiento y seguimiento de cambios en los recursos. CloudTrail es esencial para entender el comportamiento de usuarios y recursos, mejorar las posturas de seguridad y asegurar el cumplimiento regulatorio.
Cada evento registrado contiene:
@@ -21,10 +21,10 @@ Cada evento registrado contiene:
Los eventos se escriben en un nuevo archivo de registro **aproximadamente cada 5 minutos en un archivo JSON**, son retenidos por CloudTrail y finalmente, los archivos de registro son **entregados a S3 aproximadamente 15 minutos después**.\
Los registros de CloudTrail pueden ser **agregados a través de cuentas y regiones.**\
CloudTrail permite usar **la integridad del archivo de registro para poder verificar que sus archivos de registro no han cambiado** desde que CloudTrail se los entregó. Crea un hash SHA-256 de los registros dentro de un archivo de resumen. Un hash sha-256 de los nuevos registros se crea cada hora.\
Al crear un Trail, los selectores de eventos le permitirán indicar el tipo de registro: eventos de gestión, datos o de información.
CloudTrail permite usar **la integridad del archivo de registro para poder verificar que tus archivos de registro no han cambiado** desde que CloudTrail te los entregó. Crea un hash SHA-256 de los registros dentro de un archivo de resumen. Un hash sha-256 de los nuevos registros se crea cada hora.\
Al crear un Trail, los selectores de eventos te permitirán indicar el tipo de registro: eventos de gestión, de datos o de información.
Los registros se guardan en un bucket de S3. Por defecto, se utiliza el cifrado del lado del servidor (SSE-S3), por lo que AWS descifrará el contenido para las personas que tienen acceso a él, pero para mayor seguridad puede usar SSE con KMS y sus propias claves.
Los registros se guardan en un bucket de S3. Por defecto, se utiliza el cifrado del lado del servidor (SSE-S3), por lo que AWS descifrará el contenido para las personas que tengan acceso a él, pero para mayor seguridad puedes usar SSE con KMS y tus propias claves.
Los registros se almacenan en un **bucket de S3 con este formato de nombre**:
@@ -32,7 +32,7 @@ Los registros se almacenan en un **bucket de S3 con este formato de nombre**:
- Siendo el BucketName: **`aws-cloudtrail-logs-<accountid>-<random>`**
- Ejemplo: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
Dentro de cada carpeta, cada registro tendrá un **nombre que sigue este formato**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
Dentro de cada carpeta, cada registro tendrá un **nombre siguiendo este formato**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
Convención de Nombres de Archivos de Registro
@@ -44,30 +44,30 @@ Además, **los archivos de resumen (para verificar la integridad del archivo)**
### Agregar Registros de Múltiples Cuentas
- Cree un Trail en la cuenta de AWS donde desea que se entreguen los archivos de registro
- Aplique permisos al bucket de S3 de destino permitiendo el acceso entre cuentas para CloudTrail y permita a cada cuenta de AWS que necesite acceso
- Cree un nuevo Trail en las otras cuentas de AWS y seleccione usar el bucket creado en el paso 1
- Crea un Trail en la cuenta de AWS donde deseas que se entreguen los archivos de registro
- Aplica permisos al bucket de S3 de destino permitiendo el acceso entre cuentas para CloudTrail y permite a cada cuenta de AWS que necesite acceso
- Crea un nuevo Trail en las otras cuentas de AWS y selecciona usar el bucket creado en el paso 1
Sin embargo, incluso si puede guardar todos los registros en el mismo bucket de S3, no puede agregar los registros de CloudTrail de múltiples cuentas en un CloudWatch Logs perteneciente a una sola cuenta de AWS.
Sin embargo, incluso si puedes guardar todos los registros en el mismo bucket de S3, no puedes agregar registros de CloudTrail de múltiples cuentas en un CloudWatch Logs perteneciente a una sola cuenta de AWS.
> [!CAUTION]
> Recuerde que una cuenta puede tener **diferentes Trails** de CloudTrail **habilitados** almacenando los mismos (o diferentes) registros en diferentes buckets.
> Recuerda que una cuenta puede tener **diferentes Trails** de CloudTrail **habilitados** almacenando los mismos (o diferentes) registros en diferentes buckets.
### Cloudtrail de todas las cuentas de la organización en 1
### CloudTrail de todas las cuentas de la organización en 1
Al crear un CloudTrail, es posible indicar que se active CloudTrail para todas las cuentas en la organización y obtener los registros en solo 1 bucket:
<figure><img src="../../../../images/image (200).png" alt=""><figcaption></figcaption></figure>
De esta manera, puede configurar fácilmente CloudTrail en todas las regiones de todas las cuentas y centralizar los registros en 1 cuenta (que debe proteger).
De esta manera, puedes configurar fácilmente CloudTrail en todas las regiones de todas las cuentas y centralizar los registros en 1 cuenta (que debes proteger).
### Verificación de Archivos de Registro
Puede verificar que los registros no han sido alterados ejecutando
Puedes verificar que los registros no han sido alterados ejecutando
```javascript
aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <bucket-name>] [--s3-prefix <prefix>] [--verbose]
```
### Registros a CloudWatch
### Logs to CloudWatch
**CloudTrail puede enviar automáticamente registros a CloudWatch para que puedas establecer alertas que te adviertan cuando se realicen actividades sospechosas.**\
Ten en cuenta que para permitir que CloudTrail envíe los registros a CloudWatch, se necesita crear un **rol** que permita esa acción. Si es posible, se recomienda usar el rol predeterminado de AWS para realizar estas acciones. Este rol permitirá a CloudTrail:
@@ -75,37 +75,37 @@ Ten en cuenta que para permitir que CloudTrail envíe los registros a CloudWatch
- CreateLogStream: Esto permite crear flujos de registro de CloudWatch Logs
- PutLogEvents: Entregar registros de CloudTrail al flujo de registro de CloudWatch Logs
### Historial de Eventos
### Event History
El Historial de Eventos de CloudTrail te permite inspeccionar en una tabla los registros que han sido grabados:
![](<../../../../images/image (89).png>)
### Perspectivas
### Insights
**CloudTrail Insights** analiza automáticamente los eventos de gestión de escritura de los senderos de CloudTrail y te **alerta** sobre **actividades inusuales**. Por ejemplo, si hay un aumento en los eventos de `TerminateInstance` que difiere de las líneas base establecidas, lo verás como un evento de Insight. Estos eventos hacen que **encontrar y responder a actividades inusuales de API sea más fácil** que nunca.
Las perspectivas se almacenan en el mismo bucket que los registros de CloudTrail en: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
Los insights se almacenan en el mismo bucket que los registros de CloudTrail en: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
### Seguridad
### Security
| Integridad del Archivo de Registro de CloudTrail | <ul><li>Validar si los registros han sido manipulados (modificados o eliminados)</li><li><p>Utiliza archivos de resumen (crea un hash para cada archivo)</p><ul><li>Hashing SHA-256</li><li>SHA-256 con RSA para firma digital</li><li>clave privada propiedad de Amazon</li></ul></li><li>Toma 1 hora crear un archivo de resumen (hecho en la hora cada hora)</li></ul> |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Detener el acceso no autorizado | <ul><li><p>Usar políticas de IAM y políticas de bucket de S3</p><ul><li>equipo de seguridad —> acceso de administrador</li><li>auditores —> acceso solo de lectura</li></ul></li><li>Usar SSE-S3/SSE-KMS para cifrar los registros</li></ul> |
| Prevenir que los archivos de registro sean eliminados | <ul><li>Restringir el acceso de eliminación con políticas de IAM y de bucket</li><li>Configurar la eliminación MFA de S3</li><li>Validar con la Validación de Archivos de Registro</li></ul> |
| Prevenir que los archivos de registro sean eliminados | <ul><li>Restringir el acceso de eliminación con políticas de IAM y bucket</li><li>Configurar la eliminación MFA de S3</li><li>Validar con la Validación de Archivos de Registro</li></ul> |
## Asesor de Acceso
## Access Advisor
AWS Access Advisor se basa en los últimos 400 días de registros de **CloudTrail de AWS para recopilar sus perspectivas**. CloudTrail captura un historial de llamadas a la API de AWS y eventos relacionados realizados en una cuenta de AWS. Access Advisor utiliza estos datos para **mostrar cuándo se accedió por última vez a los servicios**. Al analizar los registros de CloudTrail, Access Advisor puede determinar qué servicios de AWS ha accedido un usuario o rol de IAM y cuándo ocurrió ese acceso. Esto ayuda a los administradores de AWS a tomar decisiones informadas sobre **refinar permisos**, ya que pueden identificar servicios que no se han accedido durante períodos prolongados y potencialmente reducir permisos excesivamente amplios basados en patrones de uso reales.
AWS Access Advisor se basa en los últimos 400 días de registros de **CloudTrail de AWS para recopilar sus insights**. CloudTrail captura un historial de llamadas a la API de AWS y eventos relacionados realizados en una cuenta de AWS. Access Advisor utiliza estos datos para **mostrar cuándo se accedió por última vez a los servicios**. Al analizar los registros de CloudTrail, Access Advisor puede determinar qué servicios de AWS ha accedido un usuario o rol de IAM y cuándo ocurrió ese acceso. Esto ayuda a los administradores de AWS a tomar decisiones informadas sobre **refinar permisos**, ya que pueden identificar servicios que no se han accedido durante períodos prolongados y potencialmente reducir permisos excesivamente amplios basados en patrones de uso reales.
> [!TIP]
> Por lo tanto, Access Advisor informa sobre **los permisos innecesarios que se están otorgando a los usuarios** para que el administrador pueda eliminarlos
<figure><img src="../../../../images/image (78).png" alt=""><figcaption></figcaption></figure>
## Acciones
## Actions
### Enumeración
### Enumeration
```bash
# Get trails info
aws cloudtrail list-trails
@@ -124,7 +124,7 @@ aws cloudtrail get-query-results --event-data-store <data-source> --query-id <id
```
### **Inyección CSV**
Es posible realizar una inyección CSV dentro de CloudTrail que ejecutará código arbitrario si los registros se exportan en CSV y se abren con Excel.\
Es posible realizar una inyección CVS dentro de CloudTrail que ejecutará código arbitrario si los registros se exportan en CSV y se abren con Excel.\
El siguiente código generará una entrada de registro con un nombre de Trail incorrecto que contiene la carga útil:
```python
import boto3
@@ -139,16 +139,16 @@ print(response)
Para más información sobre inyecciones CSV, consulta la página:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/formula-injection
https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript-injection.html
{{#endref}}
Para más información sobre esta técnica específica, consulta [https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/](https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/)
## **Evasión de Detección**
### Evasión de HoneyTokens
### Evasión de **HoneyTokens**
Los Honeytokens se crean para **detectar la exfiltración de información sensible**. En el caso de AWS, son **claves de AWS cuyo uso es monitoreado**, si algo activa una acción con esa clave, entonces alguien debe haber robado esa clave.
Los Honeytokens se crean para **detectar la exfiltración de información sensible**. En el caso de AWS, son **claves de AWS cuyo uso se monitorea**, si algo activa una acción con esa clave, entonces alguien debe haber robado esa clave.
Sin embargo, los Honeytokens como los creados por [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) están utilizando un nombre de cuenta reconocible o usando el mismo ID de cuenta de AWS para todos sus clientes. Por lo tanto, si puedes obtener el nombre de la cuenta y/o el ID de la cuenta sin hacer que Cloudtrail genere ningún registro, **podrías saber si la clave es un honeytoken o no**.
@@ -183,22 +183,22 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J
```
Consulta más información en la [**investigación original**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489).
#### No generar un registro
#### No generar un log
La técnica más efectiva para esto es en realidad una simple. Solo usa la clave que acabas de encontrar para acceder a algún servicio dentro de tu propia cuenta de atacante. Esto hará que **CloudTrail genere un registro dentro de TU PROPIA cuenta de AWS y no dentro de las víctimas**.
La técnica más efectiva para esto es en realidad una simple. Solo usa la clave que acabas de encontrar para acceder a algún servicio dentro de tu propia cuenta de atacante. Esto hará que **CloudTrail genere un log dentro de TU PROPIA cuenta de AWS y no dentro de las víctimas**.
La cuestión es que la salida te mostrará un error indicando el ID de la cuenta y el nombre de la cuenta, así que **podrás ver si es un Honeytoken**.
#### Servicios de AWS sin registros
#### Servicios de AWS sin logs
En el pasado, había algunos **servicios de AWS que no envían registros a CloudTrail** (encuentra una [lista aquí](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Algunos de esos servicios **responderán** con un **error** que contiene el **ARN del rol de la clave** si alguien no autorizado (la clave honeytoken) intenta acceder a él.
En el pasado, había algunos **servicios de AWS que no enviaban logs a CloudTrail** (encuentra una [lista aquí](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Algunos de esos servicios **responderán** con un **error** que contiene el **ARN del rol de la clave** si alguien no autorizado (la clave honeytoken) intenta acceder a él.
De esta manera, un **atacante puede obtener el ARN de la clave sin activar ningún registro**. En el ARN, el atacante puede ver el **ID de la cuenta de AWS y el nombre**, es fácil conocer el ID y los nombres de las cuentas de las empresas de HoneyToken, así que de esta manera un atacante puede identificar si el token es un HoneyToken.
De esta manera, un **atacante puede obtener el ARN de la clave sin activar ningún log**. En el ARN, el atacante puede ver el **ID de la cuenta de AWS y el nombre**, es fácil conocer el ID y los nombres de las cuentas de las empresas del HoneyToken, así que de esta manera un atacante puede identificar si el token es un HoneyToken.
![](<../../../../images/image (93).png>)
> [!CAUTION]
> Ten en cuenta que todas las API públicas descubiertas que no estaban creando registros de CloudTrail ahora están corregidas, así que tal vez necesites encontrar las tuyas...
> Ten en cuenta que todas las API públicas descubiertas que no estaban creando logs de CloudTrail ahora están corregidas, así que tal vez necesites encontrar las tuyas...
>
> Para más información, consulta la [**investigación original**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
@@ -216,7 +216,7 @@ Más información en:
### Modificando la Configuración de CloudTrail
#### Eliminar senderos
#### Eliminar trails
```bash
aws cloudtrail delete-trail --name [trail-name]
```