Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cloudsplaining — Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de mínimo privilegio y genera un informe priorizado por riesgo. | Kitploit
Herramientas/GitHubGitHub/salesforce/cloudsplaining
Seguridad de Infraestructura en la NubeAnálisis de VulnerabilidadesAuditoría de ConfiguraciónSeguridad en la NubeGestión de Identidad y Acceso (IAM)Mala ConfiguraciónTop en Seguridad de Infraestructura en la Nube #8Top en Seguridad en la Nube #9
GitHub
2.2k21913hace 5 díasRevisado por Kitploit
salesforce/cloudsplaining

cloudsplaining

Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de mínimo privilegio y genera un informe priorizado por riesgo.

Ver RepositorioSitio web

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Cloudsplaining

Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de mínimo privilegio y genera un informe HTML priorizado por riesgo.

Tests Documentation Status Join the chat at https://gitter.im/cloudsplaining Twitter PyPI Python Version Downloads

' > custom-guidance.html ' > custom-appendices.html ``` # Generar informe con contenido personalizado cloudsplaining scan --input-file account-data.json --output reports/
  • Informe de ejemplo
  • Documentación

    Para la documentación completa, visite el proyecto en ReadTheDocs.

    • Instalación
    • Hoja de trucos
    • Informe de ejemplo

    Resumen

    Cloudsplaining identifica violaciones del principio de mínimo privilegio en políticas IAM de AWS y genera un informe HTML atractivo. Puede escanear todas las políticas en su cuenta de AWS, en múltiples cuentas de AWS, o puede escanear un único archivo de política.

    Ayuda a identificar acciones de IAM que no aprovechan las restricciones de recursos. También ayuda a priorizar el proceso de remediación al marcar las políticas IAM que presentan los siguientes riesgos para la cuenta de AWS en cuestión sin restricción:

    • Exfiltración de datos (s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)
    • Modificación de infraestructura
    • Exposición de recursos (la capacidad de modificar políticas basadas en recursos)
    • Escalada de privilegios (basada en Pathfinding.cloud)
    • Exposición de credenciales

    Cloudsplaining también identifica roles IAM que pueden ser asumidos por servicios de cómputo de AWS (como EC2, ECS, EKS o Lambda), ya que pueden presentar un mayor riesgo que los roles definidos por el usuario, especialmente si el servicio de cómputo de AWS está en una instancia que está expuesta directa o indirectamente a internet. Marcar estos roles es especialmente útil para probadores de penetración (o atacantes) en ciertos escenarios. Por ejemplo, si un atacante obtiene privilegios para ejecutar ssm:SendCommand y hay instancias EC2 privilegiadas con el agente SSM instalado, puede tener efectivamente los privilegios de esas instancias EC2. La ejecución remota de código a través del agente de AWS Systems Manager ya era una ruta de escalada/explotación conocida, pero Cloudsplaining puede facilitar el proceso de identificar estos casos. Consulte el informe de ejemplo para algunos ejemplos.

    También puede especificar un archivo de exclusiones personalizado para filtrar resultados que son falsos positivos por diversas razones. Por ejemplo, las políticas de usuario son permisivas por diseño, mientras que los roles de sistema son generalmente más restrictivos. También puede tener exclusiones específicas para la estrategia multi-cuenta de su organización o la arquitectura de aplicaciones de AWS.

    Motivación

    Policy Sentry nos reveló que es posible finalmente escribir políticas IAM siguiendo el principio de mínimo privilegio de manera escalable. Antes de que se lanzara Policy Sentry, era demasiado fácil encontrar documentos de política IAM que carecieran de restricciones de recursos. Considere la política a continuación, que permite al principal IAM (un rol o usuario) ejecutar s3:PutObject en cualquier bucket S3 en la cuenta de AWS:```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "*" } ] }

    root@kitploit:~
    Esto es malo. Idealmente, el acceso debería restringirse según los ARN de los recursos, así:```json
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject"
          ],
          "Resource": "arn:aws:s3:::my-bucket/*"
        }
      ]
    }
    

    Policy Sentry hace que esto sea realmente fácil. Una vez que los desarrolladores de Infrastructure as Code o los administradores de AWS se familiaricen con la herramienta (que es bastante fácil de usar), hemos descubierto que la adopción comienza muy rápidamente. Sin embargo, si has estado usando AWS, probablemente haya una gran acumulación de políticas de IAM que podrían beneficiarse de una mejora. Si tienes cientos de cuentas de AWS con docenas de políticas en cada una, ¿cómo podemos asegurar esas cuentas de AWS identificando programáticamente las políticas que deberían arreglarse?

    Por eso escribimos Cloudsplaining.

    Cloudsplaining identifica violaciones del principio de mínimo privilegio en políticas de IAM de AWS y genera un bonito informe HTML. Puede escanear todas las políticas en tu cuenta de AWS, a través de múltiples cuentas de AWS, o puede escanear un único archivo de política.

    Instalación

    Homebrew```bash

    brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining

    root@kitploit:~
    #### Pip3```bash
    pip3 install --user cloudsplaining
    
    • Ahora deberías poder ejecutar cloudsplaining desde la línea de comandos ejecutando cloudsplaining --help.

    Completado de shell

    Para habilitar el completado de Bash, pon esto en tu .bashrc:```bash eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"

    root@kitploit:~
    Para habilitar el autocompletado de ZSH, coloca esto en tu .zshrc:```bash
    eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
    

    Escaneando una política IAM única

    También puedes escanear un único archivo de política para identificar riesgos en lugar de una cuenta completa.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json

    root@kitploit:~
    El resultado incluirá una descripción del hallazgo y una lista de las acciones de IAM que no aprovechan las restricciones de recursos.
    
    El resultado se parecerá a lo siguiente:```console
    Issue found: Data Exfiltration
    Actions: s3:GetObject
    
    Issue found: Resource Exposure
    Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl
    
    Issue found: Unrestricted Infrastructure Modification
    Actions: ecr:BatchDeleteImage, ecr:CompleteLayerUpload, ecr:CreateRepository, ecr:DeleteLifecyclePolicy, ecr:DeleteRepository, ecr:DeleteRepositoryPolicy, ecr:InitiateLayerUpload, ecr:PutImage, ecr:PutImageScanningConfiguration, ecr:PutImageTagMutability, ecr:PutLifecyclePolicy, ecr:SetRepositoryPolicy, ecr:StartImageScan, ecr:StartLifecyclePolicyPreview, ecr:TagResource, ecr:UntagResource, ecr:UploadLayerPart, s3:AbortMultipartUpload, s3:BypassGovernanceRetention, s3:CreateAccessPoint, s3:CreateBucket, s3:DeleteAccessPoint, s3:DeleteAccessPointPolicy, s3:DeleteBucket, s3:DeleteBucketPolicy, s3:DeleteBucketWebsite, s3:DeleteObject, s3:DeleteObjectTagging, s3:DeleteObjectVersion, s3:DeleteObjectVersionTagging, s3:GetObject, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccelerateConfiguration, s3:PutAccessPointPolicy, s3:PutAnalyticsConfiguration, s3:PutBucketAcl, s3:PutBucketCORS, s3:PutBucketLogging, s3:PutBucketNotification, s3:PutBucketObjectLockConfiguration, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutBucketRequestPayment, s3:PutBucketTagging, s3:PutBucketVersioning, s3:PutBucketWebsite, s3:PutEncryptionConfiguration, s3:PutInventoryConfiguration, s3:PutLifecycleConfiguration, s3:PutMetricsConfiguration, s3:PutObject, s3:PutObjectAcl, s3:PutObjectLegalHold, s3:PutObjectRetention, s3:PutObjectTagging, s3:PutObjectVersionAcl, s3:PutObjectVersionTagging, s3:PutReplicationConfiguration, s3:ReplicateDelete, s3:ReplicateObject, s3:ReplicateTags, s3:RestoreObject, s3:UpdateJobPriority, s3:UpdateJobStatus
    
    

    Escaneando una cuenta completa de AWS

    Descargando detalles de autorización de la cuenta

    Podemos escanear una cuenta completa de AWS y generar informes. Para ello, aprovechamos la llamada a la API get-account-authorization-details de AWS IAM, que descarga un gran archivo JSON (alrededor de 100KB por cuenta) que contiene todos los detalles de IAM de la cuenta. Esto incluye datos sobre usuarios, grupos, roles, políticas administradas por el cliente y políticas administradas por AWS.

    • Debe tener credenciales de AWS configuradas que puedan ser utilizadas por la CLI.

    • Debe tener los privilegios para ejecutar iam:GetAccountAuthorizationDetails. La política arn:aws:iam::aws:policy/SecurityAudit incluye esto, al igual que muchas otras que permiten acceso de lectura al servicio IAM.

    • Para descargar los detalles de autorización de la cuenta, asegúrese de estar autenticado en AWS, luego ejecute el comando download de cloudsplaining:```bash cloudsplaining download

    root@kitploit:~
    * Si prefieres usar tu archivo `~/.aws/credentials` en lugar de las variables de entorno, puedes especificar el nombre del perfil:```bash
    cloudsplaining download --profile myprofile
    

    Descargará un archivo JSON en su directorio actual que contiene la información detallada de autorización de su cuenta.

    Crear archivo de exclusiones

    La herramienta Cloudsplaining no intenta comprender el contexto detrás de todo en su cuenta de AWS. Es posible comprender el contexto detrás de algunas de estas cosas mediante programación: si la política se aplica a un perfil de instancia, si la política está adjunta, si se están utilizando políticas IAM en línea y si se utilizan Políticas administradas de AWS. Solo usted conoce el contexto detrás del diseño de su infraestructura de AWS y la estrategia IAM.

    Por lo tanto, es importante eliminar los falsos positivos que dependen del contexto. Puede hacerlo con un archivo de exclusiones. Hemos incluido un comando que generará un archivo de exclusiones para que no tenga que recordar el formato requerido.

    Puede crear una plantilla de exclusiones mediante el siguiente comando:

    cloudsplaining create-exclusions-file```bash cloudsplaining create-exclusions-file

    root@kitploit:~
    Esto generará un archivo en su directorio actual llamado `exclusions.yml`.
    
    Ahora, cuando ejecute el comando `scan`, puede usar el archivo de exclusiones así:```bash
    cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/
    

    Escaneando el archivo de detalles de autorización

    Ahora que hemos descargado el archivo de autorización de la cuenta, podemos escanear todas las políticas de AWS IAM con cloudsplaining.

    Ejecute el siguiente comando:```bash cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

    root@kitploit:~
    Creará un informe HTML como [este](https://opensource.salesforce.com/cloudsplaining/):
    
    > ![](https://raw.githubusercontent.com/salesforce/cloudsplaining/HEAD/docs/_images/cloudsplaining-report.gif)
    
    También creará un archivo de datos JSON sin procesar:
    
    * `default-iam-results.json`: Este contiene la salida JSON sin procesar del informe. Puede usar este archivo de datos para operar sobre los resultados del escaneo para diversos propósitos. Por ejemplo, podría escribir un script de Python que analice estos datos y abra automáticamente problemas de JIRA o Work Items de Salesforce. A continuación se muestra un ejemplo de entrada. El ejemplo completo se puede ver en [examples/files/iam-results-example.json](https://github.com/salesforce/cloudsplaining/blob/master/examples/files/iam-results-example.json)```json
    {
        "example-authz-details": [
            {
                "AccountID": "012345678901",
                "ManagedBy": "Customer",
                "PolicyName": "InsecureUserPolicy",
                "Arn": "arn:aws:iam::012345678901:user/userwithlotsofpermissions",
                "ActionsCount": 2,
                "ServicesCount": 1,
                "Actions": [
                    "s3:PutObject",
                    "s3:PutObjectAcl"
                ],
                "Services": [
                    "s3"
                ]
            }
        ]
    }
    

    See the examples/files folder for sample output.

    Filtrado de falsos positivos

    Las restricciones de recursos son una buena práctica, especialmente para roles de sistema/perfiles de instancia, pero a veces están diseñados así. Por ejemplo, considera una situación en la que se utiliza una política IAM personalizada en un perfil de instancia para una instancia EC2 que aprovisiona Terraform. En este caso, los permisos amplios son requisitos de diseño, por lo que no queremos incluirlos en los resultados.

    Puedes crear una plantilla de exclusiones mediante el siguiente comando:```bash cloudsplaining create-exclusions-file

    root@kitploit:~
    Esto generará un archivo en tu directorio actual titulado `exclusions.yml`.
    
    El archivo de exclusiones predeterminado se ve así:```yaml
    # Policy names to exclude from evaluation
    # Suggestion: Add policies here that are known to be overly permissive by design, after you run the initial report.
    policies:
      - "AWSServiceRoleFor*"
      - "*ServiceRolePolicy"
      - "*ServiceLinkedRolePolicy"
      - "AdministratorAccess" # Otherwise, this will take a long time
      - "service-role*"
      - "aws-service-role*"
    # Don't evaluate these roles, users, or groups as part of the evaluation
    roles:
      - "service-role*"
      - "aws-service-role*"
    users:
      - ""
    groups:
      - ""
    # Read-only actions to include in the results, such as s3:GetObject
    # By default, it includes Actions that could lead to Data Exfiltration
    include-actions:
      - "s3:GetObject"
      - "ssm:GetParameter"
      - "ssm:GetParameters"
      - "ssm:GetParametersByPath"
      - "secretsmanager:GetSecretValue"
    # Write actions to include from the results, such as kms:Decrypt
    exclude-actions:
      - ""
    
    • Realice las adiciones o modificaciones que desee.
      • En policies, liste la ruta de los nombres de políticas que desea excluir.
      • Si desea excluir un rol titulado MyRole, liste MyRole o MyR* en la lista de roles.
      • Puede seguir el mismo enfoque para las listas de users y groups.

    Ahora, cuando ejecute el comando scan, puede usar el archivo de exclusiones de la siguiente manera:```bash cloudsplaining scan --exclusions-file exclusions.yml --input-file examples/files/example.json --output examples/files/

    root@kitploit:~
    ### Escaneo de Múltiples Cuentas de AWS
    
    Si tu usuario IAM o rol IAM tiene permisos `sts:AssumeRole` para un rol IAM común en múltiples cuentas de AWS, puedes usar el comando `scan-multi-account`.
    
    Este diagrama muestra cómo funciona el proceso:
    
    ![Diagrama para escanear múltiples cuentas de AWS con Cloudsplaining](https://assets.kitploit.com/production/public/readmes/3625/a58d8b2e6a0986fdd6adf5c583f34c8efe82a084ad41b8fa00d1e1ef29a0e4fe.png)
    
    
    > Nota: Si eres nuevo en la configuración de acceso entre cuentas, consulta [el tutorial oficial de AWS sobre delegación de acceso entre cuentas de AWS usando roles IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html). Eso puede ayudarte a configurar la arquitectura anterior.
    
    
    * Primero, necesitarás crear el archivo de configuración para múltiples cuentas. Ejecuta el siguiente comando:```bash
    cloudsplaining create-multi-account-config-file \ 
        -o multi-account-config.yml
    
    • Esto generará un archivo llamado multi-account-config.yml con el siguiente contenido:```yaml accounts: default_account: 123456789012 prod: 123456789013 test: 123456789014
    root@kitploit:~
    > Nota: Observe cómo el formato del archivo anterior incluye `account_name: accountID`. Edite el contenido del archivo para que coincida con el nombre de cuenta y el ID de cuenta deseados. Incluya tantos ID de cuenta como desee.
    
    Para el siguiente paso, digamos que:
     * Tenemos un rol en las cuentas de destino que se llama `CommonSecurityRole`.
    * Las credenciales de su usuario IAM están bajo el perfil de credenciales de AWS llamado `scanning-user`.
    * Ese usuario tiene permisos `sts:AssumeRole` para asumir el `CommonSecurityRole` en todas sus cuentas de destino especificadas en el archivo YAML que creamos anteriormente.
    * Desea guardar la salida en un bucket de S3 llamado `my-results-bucket`
    
    Usando los datos anteriores, puede ejecutar el siguiente comando:```bash
    cloudsplaining scan-multi-account \
        -c multi-account-config.yml \
        --profile scanning-user \
        --role-name CommonSecurityRole \ 
        --output-bucket my-results-bucket
    

    Tenga en cuenta que si ejecuta lo anterior sin la bandera --profile, se ejecutará en el orden de precedencia de credenciales de AWS estándar (es decir, variables de entorno, perfiles de credenciales, credenciales de contenedor ECS y finalmente credenciales de perfil de instancia EC2).

    Guía personalizada y apéndices

    Cloudsplaining admite la personalización de las secciones de Guía y Apéndices del informe HTML para incluir recomendaciones de seguridad y documentación específicas de la organización.

    Cómo funciona

    Coloque archivos HTML en el directorio raíz de su proyecto:

    • custom-guidance.html - Contenido de guía de seguridad personalizada
    • custom-appendices.html - Contenido de apéndices personalizados

    Comportamiento

    • Los archivos no existen: Muestra el asesoramiento de seguridad predeterminado de AWS
    • Los archivos existen con contenido: Muestra su contenido HTML personalizado
    • Los archivos existen pero están vacíos: Oculta las pestañas por completo
    • Configuración mixta: Cada pestaña funciona de forma independiente

    Ejemplo de uso```bash

    Create custom guidance

    echo '

    Company Security Guidelines

    Follow these organization-specific steps:

    • Review with security team
    • Document in JIRA ticket
    • Get approval before remediation

    Create custom appendices

    echo '

    Internal Resources

    Additional company resources:

    • Security Portal
    • IAM Best Practices

    Chuleta```bash

    Download authorization details

    cloudsplaining download

    Download from a specific AWS profile

    cloudsplaining download --profile someprofile

    Scan Authorization details

    cloudsplaining scan --input-file default.json

    Scan Authorization details with custom exclusions

    cloudsplaining scan --input-file default.json --exclusions-file exclusions.yml

    Scan Policy Files

    cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json cloudsplaining scan-policy-file --input-file examples/policies/wildcards.json --exclusions-file examples/example-exclusions.yml

    Scan Multiple Accounts

    Generate the multi account config file

    cloudsplaining create-multi-account-config-file -o accounts.yml cloudsplaining scan-multi-account -c accounts.yml -r TargetRole --output-directory ./

    root@kitploit:~
    ## FAQ
    
    **¿Escaneará todas las políticas por defecto?**
    
    No, solo escaneará las políticas que están adjuntas a entidades IAM.
    
    **¿El comando de descarga descargará todas las versiones de las políticas?**
    
    No por defecto. Si desea hacerlo, especifique la bandera `--include-non-default-policy-versions`. Tenga en cuenta que la herramienta `scan` actualmente no opera sobre versiones no predeterminadas.
    
    **Seguí las instrucciones de instalación pero no puedo ejecutar el programa desde la línea de comandos en absoluto. ¿Qué hago?**
    
    Este es probablemente un problema con tu PATH. Tu variable de entorno PATH no está considerando los paquetes binarios instalados por `pip3`. En una Mac, puedes solucionarlo ingresando el comando a continuación, dependiendo de las versiones que tengas instaladas. YMMV.```bash
    export PATH=$HOME/Library/Python/3.7/bin/:$PATH
    

    Seguí las instrucciones de instalación, pero recibo un ModuleNotFoundError que dice No module named policy_sentry.analysis.expand. ¿Qué debo hacer?

    Intenta actualizar a la última versión de Cloudsplaining. Este error se corrigió en la versión 0.0.10.

    Referencias

    • Policy Sentry por Kinnaird McQuade en Salesforce
    • Parliament por Scott Piper en Summit Route y Duo Labs.
    • AWS Privilege Escalation Methods por Spencer Gietzen en Rhino Security Labs
    • Understanding Access Level Summaries within Policy Summaries
    • Leveraging next-generation blockchain-based AI across multiple service meshes to transparently automate multi-cloud IAM wizardry 🧙‍♂️
    Descargar herramienta