Ethical Hacking en AWS - [CPNA]
YoutubeTwitterLinkedIn
  • La Biblia del Hacking en AWS
    • ADVERTENCIA
    • AWS Community Builder
    • Conoce a tu academia
    • Conoce a tu instructor
    • Aprende con nuestro curso
    • Aprende con Spartan-CPNA
  • Introduccion al cloud computing
    • ¿Que es Cloud Computing?
    • Amazon Web Services
    • La historia detras de la transicion de On-Premises a la nube
      • Caracteristicas de On-Premises y Transición a la Nube
    • Importancia del cloud computing
    • ¿Vale la pena aprender cloud?
    • Modelos de informática en la nube
    • Infraestructura y Modelos de Despliegue en la Nube
    • Quiero aprender mas sobre la nube de AWS
    • Proveedores Principales de Cloud Computing
      • Amazon Web Services (AWS)
      • Microsoft Azure (Az)
      • Google Cloud Platform (GCP)
      • Comparación entre Proveedores
  • Componentes Clave y Tecnologías en la Nube
    • Introduccion a los componentes principales de la nube
    • Clasificación de los componentes de AWS
    • Virtualización: Conceptos Básicos y su Papel en la Nube
    • Introduccion a la Computación sin Servidor (Serverless)
      • Diferencias entre Monolítica y Serverless
  • Seguridad y Cumplimiento en la Nube
    • Seguridad en la nube
    • Modelo de responsabilidad compartida
    • Mejores Prácticas de Seguridad en la Nube
    • Cumplimiento y Normativas
    • CIS Benchmarks
  • Fundamentos Ofensivos
    • Introduccion al Curso Profesional de Pentesting para Juniors - [CPPJ]
    • ¿Por qué los atacantes van tras la nube?
    • ¿Qué es un Red Team?
      • Assume breach
    • ¿Qué es un Pentesting?
      • Diferencias entre un pentest tradicional y un pentest cloud
    • Instalacion de Kali Linux en local
    • Crea tu cuenta de AWS
    • MITRE
    • Tecnicas de OSINT en AWS
      • Herramientas y Estrategias de OSINT
  • Introduccion a AWS
    • Accediendo a los servicios de AWS
    • ¿Que es AWS CLI?
      • Estructura de comandos en el CLI de AWS
    • El whoami de AWS
    • Almacenamiento de credenciales en archivo plano
      • Prefijo de ID con IAM
    • Incidentes de seguridad relacionados a AWS
    • Limitaciones en un pentest dentro de AWS
  • Introduccion a IAM
    • Tu primer Red Team contra AWS
    • ¿Que es Identity and Access Management o IAM?
    • Politica de IAM
      • La importancia de las politicas de IAM en la seguridad de AWS
      • Politicas predefinidas
    • Usuario de IAM
    • Grupo de IAM
    • Rol de IAM
      • Casos de uso
    • ARN
  • Tecnicas de Enumeracion en IAM
    • ¿Que permisos debo solicitar para realizar las pruebas?
    • Enumeracion Manual con AWSCLI
      • Enumerando usuarios
      • Enumerando grupos
      • Enumerando roles
      • Enumerando politicas
    • Enumeracion automatizada por medio de fuerza bruta
      • Enumerate-IAM.py
      • CLIAM
      • IAMFinder
    • Analisis de vulnerabilidades con herramientas automatizadas
      • Utilizando Prowler
      • Utilizando Cloudsplaining
  • Escalacion de privilegios en IAM
    • ¿Que es la escalacion de privilegios basada en IAM?
    • Metodos para la escalacion de privilegios
    • Permisos de IAM en otros usuarios
      • CreateAccessKey
      • CreateLoginProfile
      • UpdateLoginProfile
      • AddUserToGroup
    • Permisos sobre politicas
      • CreatePolicyVersion
      • SetDefaultPolicyVersion
      • AttachUserPolicy
      • AttachGroupPolicy
      • AttachRolePolicy
      • PutUserPolicy
      • PutGroupPolicy
      • PutRolePolicy
    • La actualización de una AssumeRolePolicy
      • UpdateAssumeRolePolicy
    • Permiso IAM:PassRole*
  • Introduccion a S3
    • ¿Que es Simple Storage Service o S3?
    • Politica de buckets
    • El riesgo de un bucket configurado como publico
    • Enumeracion manual con AWSCLI
    • Identificando vulnerabilidades en S3
    • Backdorizando un Bucket S3 utilizando la politica del Bucket
    • Exfiltracion de datos utilizando la replicacion en S3
  • Introduccion a EC2
    • ¿Que es Elastic Compute Cloud o EC2?
    • Networking en EC2
    • Fundamentos ofensivos para el servicio de IMDSv1
      • ¿Porque utilizar IMDSv2?
    • Ejecuccion de comandos en EC2 utilizando User Data
    • Recuperacion de la contraseña de un EC2
    • AWS Security Token
  • Introduccion a VPC
    • ¿Que es Virtual Private Cloud o VPC?
    • Grupos de seguridad VS lista de control de acceso
    • Pivoting en AWS VPC
    • Realizando Pivoting sobre un EC2
  • Tecnicas ofensivas contra EC2
    • Enumeracion manual con AWSCLI
    • Vectores de escalacion de privilegios
      • CreateEC2WithExistingIP
      • PassExistingRoleToNewGlueDevEndpoint
      • Resolviendo iam_privesc_by_rollback de CloudGoat
    • Abusando del servicio de metadatos IMDSv1 por medio de un SSRF
    • Caso de estudio - Capital One
    • Despliegue de Kali Linux en AWS para operaciones ofensivas
      • Bypass Rate Limit con IP Rotator de BurpSuite
    • Exfiltracion de datos utilizando un Snapshots de EBS
    • Exfiltracion de datos utilizando un Snapshots de una AMI
  • Introduccion a Lambda
    • ¿Que es un Lambda?
    • Desarrollo Serverless con Lambda
    • Arquitectura Monolítica vs Arquitectura Serverless
    • Damn Vulnerable Serverless Application
  • Tecnicas ofensivas contra Lambda
    • Enumeracion manual con AWSCLI
    • Remote Code Execution en Lambda
    • Vectores de escalacion de privilegios
      • PassExistingRoleToNewLambdaThenInvoke
      • PassRoleToNewLambdaThenTriggerWithNewDynamo
      • EditExistingLambdaFunctionWithRole
    • Resolviendo lambda_privesc de CloudGoat
    • Secuestro de Credenciales IAM y Datos de Eventos en AWS Lambda
  • Introduccion a API Gateway
    • ¿Que es API Gateway?
    • Vulnerabilidades Potenciales en API Gateway
    • Enumeracion manual con AWSCLI
    • Divulgacion de informacion sensible por medio de un mal manejo de errores
  • Introduccion a Cognito
    • ¿Que es Cognito?
    • Enumeracion manual con AWSCLI
    • Fundamentos de Lambda Autorizadora
    • Falta de Verificación de la Firma del JWT
    • Vulnerable Cognito
    • Tecnicas y tacticas ofensivas en Cognito
      • cognito-identity:SetIdentityPoolRoles + iam:PassRole
      • cognito-identity:update-identity-pool
      • cognito-idp:AdminAddUserToGroup
      • [cognito-idp:CreateGroup + cognito-idp:UpdateGroup], iam:PassRole
      • cognito-idp:AdminConfirmSignUp
      • cognito-idp:AdminCreateUser
      • cognito-idp:AdminEnableUser
      • cognito-idp:AdminSetUserPassword
      • AdminSetUserSettings | SetUserMFAPreference | SetUserPoolMfaConfig | UpdateUserPool
      • cognito-idp:AdminUpdateUserAttributes
      • cognito-idp:CreateUserPoolClient | cognito-idp:UpdateUserPoolClient
      • cognito-idp:CreateUserImportJob | cognito-idp:StartUserImportJob
      • cognito-idp:CreateIdentityProvider | cognito-idp:UpdateIdentityProvider
  • Introduccion a Lightsail
    • ¿Que es Lightsail?
    • Vulnerabilidades Potenciales en Lightsail
    • Wordpress Vulnerable
  • Introduccion a DynamoDB
    • ¿Que es DynamoDB?
    • Enumeracion manual con AWSCLI
    • Vulnerabilidades Potenciales en DynamoDB
  • Introduccion a RDS
    • ¿Que es RDS?
    • Vulnerabilidades Potenciales en RDS
    • Cambiando contraseña para un RDS
    • Remote Code Execution sobre un EC2 para comprometer una BD alojada en RDS
    • Exfiltracion de un RDS por medio de un snapshot
  • Introduccion a ECS - EKS - ECR
    • Introducción a los Contenedores y la Orquestación
    • ¿Que es ECS, EKS, ECR?
    • Vulnerabilidades Potenciales en ECS
    • Cluster Hijacking
    • Cloud Container Attack Tool - (CCAT)
    • Enumeracion manual con AWSCLI
  • Tecnicas ofensivas contra arquitectos de AWS
    • AWS SSO Phishing
    • Phishing sobre Login de AWS con Bypass de MFA
    • Gaining AWS Console Access via API Keys - aws_consoler
    • Leaked Credentials
    • Using Modern Malware
  • Introduccion a Secrets Manager
    • ¿Que es AWS Secrets Manager?
    • Enumeración manual de aws secrets manager
  • Movimiento lateral Cloud to Cloud
    • Fundamentos del movimiento lateral en Cloud
    • Técnica 1: Creación de Snapshot de EBS
    • Técnica 2: EC2 Instance Connect
    • Técnica 3: Serial Console Access
    • Technique 4: AWS: Systems Manager
  • Pivoting en AWS Organizations
    • Las cuentas de AWS como límite de seguridad
    • AWS Organizations
    • Abusando de las relaciones de confianza al crear un cuenta (OrganizationAccountAccessRole)
    • Trusted Access and Delegated Administration
    • Realizando un pivoting habilitando IAM Access Analyzer por medio de Trusted Access
  • Material Extra
    • Laboratorios desplegables para practicar hacking en AWS
    • Explotacion de CVEs en la nube - (Log4Shell)
    • PassExistingRoleToCloudFormation
    • PassExistingRoleToNewDataPipeline
    • Utilizando Cartography
    • Utilizando PACU
  • Fundamentos del Blue Team en AWS
    • Introducción a Blue Team en AWS
    • Amazon Cloudtrail
      • Apagando esta defensa
    • Amazon CloudWatch
    • Amazon GuardDuty
      • Apagando esta defensa
    • Amazon Detective
    • Amazon Security Hub
      • ¿Como se habilita?
    • Amazon Inspector
    • Amazon WAF
  • Muchas gracias
    • 🛡️ ¡Muchísimas Gracias por Participar! 🛡️
    • Importante
Con tecnología de GitBook
En esta página
  • Configuraciones y Permisos Requeridos
  • Pre-requisitos
  • Rol de IAM
  • Política de Confianza (Trust Policy)
  • Permisos de IAM (IAM Permissions)
  • Cuenta de Origen
  • Permisos Mínimos Requeridos de IAM
  • Configuración del Atacante (Cuenta de Destino)
  • Permisos Mínimos Requeridos de IAM
  • Política del Bucket de Destino
  • Configurando la replicacion
  • Permisos Mínimos Requeridos en la Cuenta de Origen
  • Pasos para Configurar la Replicación

¿Te fue útil?

  1. Introduccion a S3

Exfiltracion de datos utilizando la replicacion en S3

AnteriorBackdorizando un Bucket S3 utilizando la politica del BucketSiguiente¿Que es Elastic Compute Cloud o EC2?

Última actualización hace 1 año

¿Te fue útil?

¿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 . 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.

La replicación de datos en S3 es una funcionalidad de AWS que permite copiar objetos automáticamente de un bucket de S3 a otro. Esto puede ser particularmente útil para propósitos de registro empresarial, integraciones o desde una perspectiva de seguridad. La configuración de replicación puede establecerse tanto entre buckets en la misma cuenta como en cuentas no relacionadas. Sin embargo, esta característica podría ser mal utilizada por actores maliciosos para configurar una política de replicación que copie objetos a un bucket controlado por un atacante, resultando en una posible exfiltración de datos. Los objetos continuarán siendo replicados según la política establecida, aplicándose a todos los objetos futuros colocados en el bucket. Además, mediante operaciones por lotes de S3, los atacantes pueden replicar objetos ya presentes en el bucket, facilitando un método conveniente para extraer todos los objetos actuales y futuros subidos al bucket afectado.

Configuraciones y Permisos Requeridos

Pre-requisitos

Para habilitar la replicación de un bucket, se deben cumplir los siguientes pre-requisitos:

  • El propietario del bucket fuente debe tener habilitadas las regiones de AWS tanto de origen como de destino para su cuenta. Para la cuenta de destino, solo necesita estar habilitada la región de destino.

  • Tanto el bucket de origen como el de destino deben tener habilitado el versionado.

  • Si el bucket fuente tiene habilitado el bloqueo de objetos de S3 (S3 Object Lock), los buckets de destino también deben tener habilitado el bloqueo de objetos de S3.

Rol de IAM

Permisos mínimos requeridos de IAM - Cuenta de Origen

  • iam:CreateRole (para crear un nuevo rol)

  • iam:CreatePolicy & iam:AttachRolePolicy (para crear una nueva política y adjuntarla a un rol) o iam:PutRolePolicy (para modificar una política existente)

  • iam:UpdateAssumeRolePolicy

Estos permisos permiten al propietario del bucket fuente establecer y configurar los roles y políticas necesarios para la replicación, incluyendo la capacidad del bucket de destino para asumir un rol que le permita replicar los objetos desde el bucket de origen.

Para llevar a cabo una replicación de datos eficiente y segura en AWS, es necesario definir un rol con una política de confianza y permisos de IAM adecuados que permitan tanto la replicación de objetos existentes como de futuros objetos entre buckets. A continuación, se describe cómo se estructuran estas políticas y cómo complementan el proceso de replicación de S3.

Política de Confianza (Trust Policy)

Esta política establece quién puede asumir el rol. En el contexto de la replicación de S3, permite que los servicios de S3 y las operaciones por lotes de S3 asuman este rol para llevar a cabo la replicación.

jsonCopy code{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "s3.amazonaws.com",
                    "batchoperations.s3.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Permisos de IAM (IAM Permissions)

Los permisos detallados a continuación otorgan las capacidades necesarias para realizar la replicación de datos, incluyendo la replicación de objetos, la gestión de versiones de objetos y la replicación de etiquetas. Además, se incluyen permisos para el manejo de objetos cifrados, lo que es crucial para asegurar que la replicación mantenga las políticas de seguridad aplicables a los datos sensibles.

jsonCopy code{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutInventoryConfiguration",
                "s3:InitiateReplication"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTagging"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags"
            ],
            "Resource": "*"
        },
        {
            "Sid": "OnlyRequiredIfReplicatingEncryptedObjects",
            "Effect":"Allow",
            "Action":[
                "kms:Decrypt"
            ],
            "Condition":{
                "StringLike":{
                    "kms:EncryptionContext:aws:s3:arn":[
                        "arn:aws:s3:::SOURCEBUCKET/*"
                    ]
                }
            },
            "Resource":[
                "KEY ID IN SOURCE ACCOUNT CURRENTLY ENCRYPTING OBJECTS" 
            ]
        },
        {
            "Sid": "OnlyRequiredIfReplicatingEncryptedObjectsToo",
            "Effect":"Allow",
            "Action":[
                "kms:Encrypt"
            ],
            "Condition":{
                "StringLike":{
                    "kms:EncryptionContext:aws:s3:arn":[
                        "arn:aws:s3:::DESTINATIONBUCKET/*"
                    ]
                }
            },
            "Resource":[
                "KEY ID IN DESTINATION ACCOUNT TO BE SPECIFIED IN REPLICATION POLICY" 
            ]
        }
    ]
}

Estas políticas son fundamentales para asegurar que la replicación de datos en S3 se realice bajo estrictas medidas de seguridad, protegiendo la integridad y la confidencialidad de los datos replicados. Es importante revisar y adaptar estos permisos según los requisitos específicos de cada caso de uso, especialmente cuando se trata de objetos cifrados, para garantizar que se cumplen todas las políticas de cifrado y seguridad de la información.

Para garantizar una replicación segura y eficaz de objetos de S3 cifrados entre cuentas en AWS, es fundamental configurar correctamente los permisos de IAM y las políticas de KMS. Aquí se detalla cómo se deben configurar estas políticas y permisos tanto en la cuenta de origen como en la de destino para facilitar la replicación de objetos cifrados, protegiendo al mismo tiempo la integridad y la confidencialidad de los datos.

Cuenta de Origen

Permisos Mínimos Requeridos de IAM

Para actualizar políticas de claves de KMS que permiten el acceso a objetos de S3 cifrados, el rol o usuario necesita el permiso:

  • kms:PutKeyPolicy

Esto permite que la política de la clave de KMS sea actualizada para incluir el rol de replicación, asegurando que dicho rol tenga permisos para desencriptar los objetos de S3 durante el proceso de replicación.

Configuración del Atacante (Cuenta de Destino)

Permisos Mínimos Requeridos de IAM

En la cuenta de destino (o cuenta controlada por el atacante, en este escenario), se requieren los siguientes permisos para configurar la recepción de objetos replicados:

  • s3:PutBucketPolicy

  • kms:CreateKey, kms:PutKeyPolicy

  • s3:PutBucketVersioning

Estos permisos permiten configurar la política del bucket para aceptar la replicación, crear y configurar una clave de KMS para cifrar objetos replicados y habilitar el versionado del bucket en el bucket de destino.

Política del Bucket de Destino

La política del bucket de destino debe ser configurada explícitamente para permitir la replicación de objetos desde la cuenta de origen. Un ejemplo de esta política es el siguiente:

jsonCopy code{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Set permissions for objects",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3_REPLICATION_ROLE"
         },
         "Action": [
            "s3:ReplicateObject", 
            "s3:ReplicateDelete"
         ],
         "Resource": "arn:aws:s3:::DESTINATION_BUCKET/*"
      },
      {
         "Sid": "Set permissions on bucket",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3_REPLICATION_ROLE"
         },
         "Action": [
            "s3:List*", 
            "s3:GetBucketVersioning", 
            "s3:PutBucketVersioning"
         ],
         "Resource": "arn:aws:s3:::DESTINATION_BUCKET"
      }
   ]
}

Esta política permite que el rol de replicación en la cuenta de origen replique objetos al bucket de destino y gestione el versionado del bucket.

Configurando la replicacion

Configurar la replicación entre buckets de Amazon S3 es un proceso esencial para garantizar que los datos críticos estén disponibles en múltiples ubicaciones, ya sea por razones de redundancia, cumplimiento o eficiencia en el acceso a datos. A continuación, se detallan los permisos mínimos de IAM necesarios en la cuenta de origen para configurar adecuadamente la replicación, así como recomendaciones para llevar a cabo el proceso tanto mediante la interfaz de línea de comandos (CLI) como a través de la consola de AWS.

Permisos Mínimos Requeridos en la Cuenta de Origen

Para implementar una configuración de replicación eficaz, se requieren los siguientes permisos de IAM en la cuenta de origen:

  • s3:PutBucketReplication: Permite configurar las reglas de replicación en el bucket de S3.

  • iam:PassRole: Necesario para permitir que el servicio de S3 asuma el rol de replicación de S3 especificado, que facilita la replicación de datos entre los buckets de origen y destino.

  • s3:CreateJob & s3:UpdateJobStatus: Permiten la creación y gestión de trabajos por lotes de S3 para la replicación de objetos existentes.

  • s3:PutBucketVersioning: Requerido solo si el versionado del bucket no está ya habilitado, un requisito previo para la replicación.

Pasos para Configurar la Replicación

Al configurar la replicación, ya sea a través de la CLI o de la consola de AWS, es crucial:

  1. Especificar el Rol de Replicación de S3 Creado: Identifique y proporcione el ARN del rol de replicación de S3 que ha creado, el cual tiene los permisos necesarios para llevar a cabo la replicación entre los buckets especificados.

  2. Replicar Objetos Existentes: Por defecto, la replicación solo se aplica a los nuevos objetos agregados al bucket de origen después de que se establece la regla de replicación. Si desea replicar objetos existentes, debe iniciar explícitamente un trabajo por lotes de S3 para este propósito.

  3. Seleccionar la Replicación de Objetos Cifrados con KMS si es Necesario: Si los objetos que están siendo replicados están cifrados con AWS KMS, debe habilitar explícitamente la opción para replicar objetos cifrados y especificar el ID de la clave de KMS en la cuenta de destino que se utilizará para cifrar los objetos replicados.

  4. ID de la Clave KMS en la Cuenta de Destino: Para objetos cifrados, asegúrese de proporcionar el ID de la clave KMS correcta en la cuenta de destino que se utilizará para cifrar los objetos replicados. Esta clave debe tener políticas que permitan su uso por el rol de replicación.

CPNA - Curso Profesional de Pentesting Contra AWS