gcpwn fue una herramienta que creé yo mismo mientras intentaba aprender GCP y aprovecha las bibliotecas cliente GRPC más nuevas. Consta de numerosos módulos de enumeración que escribí más módulos de explotación que aprovechan la investigación realizada por otros en el espacio (por ejemplo, Rhino Security) junto con algunas herramientas independientes conocidas como GCPBucketBrute en un esfuerzo por hacer de la herramienta una ventanilla única para las pruebas de GCP. . Mientras que otros scripts de exploits generalmente se usan una sola vez, GCPwn almacena datos y permisos a medida que ejecuta los módulos que organizan los datos por usted y los reutiliza para hacerle la vida más fácil en términos de permisos de pentesting/seguimiento.
Autor: Scott Weston (@webbinroot), NetSPI
Dependencias requeridas: consulte Requisitos.txt + Guía de instalación Wiki
Dependencias Nota: Probado principalmente en Kali Linux; Instalación de Docker disponible a través de Dockerfile
Esta herramienta es principalmente para pentesters, aquellos que recién están aprendiendo sobre seguridad de GCP e investigadores de seguridad en general.
Para los pentesters, como se ilustra arriba, la herramienta automatiza una gran cantidad de scripts que normalmente ejecutaría y almacena datos para que la ejecución de los módulos de explotación sea trivial.
Para aquellos que recién están aprendiendo sobre seguridad de GCP, la herramienta está configurada de tal manera que debería ser fácil agregar su propio módulo mediante una solicitud de extracción a medida que se sumerge en el servicio individual.
Para los investigadores de seguridad, la herramienta les permite ejecutar una gran cantidad de llamadas a la API de GCP y documento cómo hacer proxy de la herramienta en segundo plano a través de una herramienta local como Burp Suite. Entonces, ejecutar enum_all
con burp suite registrando todas las solicitudes le brindará visibilidad de todos los diferentes puntos finales de API en todas las diferentes bibliotecas de Python con un solo comando. Al menos esa es la esperanza, lo hice funcionar parcialmente con variables env, si alguien puede terminar de descifrar el código :)
Revise la wiki en https://github.com/NetSPI/gcpwn/wiki para:
Instrucciones de instalación y configuración de carpetas : cómo configurar la herramienta para usarla por primera vez y las carpetas predeterminadas utilizadas
Gestión de autenticación y Tokeninfo : cargue las credenciales de usuario y/o servicio para configurar las credenciales.
Gestión de proyectos y recuperación de datos de recursos : cómo gestionar los ID de proyectos y cómo recuperar datos enumerados de tablas SQLite.
Guía de módulos : Cómo llamar a un módulo + análisis profundo de cada módulo
Creación de módulo : cómo agregar su propio módulo mediante solicitud de extracción (en progreso - fecha prevista 15/09/2024)
Research Head Scratchers : temas de investigación/preguntas abiertas (en curso - fecha prevista 22/09/2024)
La herramienta adoptará automáticamente la salida estándar "tabla". La herramienta admite tablas, txt y csv. Si tiene problemas con las tablas, puede cambiar las configuraciones globales con lo siguiente:
# See global configs global_configs # Set global configs for preferred output global_configs set std-output txt
O puede pasar --txt
, --table
y/o --csv
con cada comando modules run
para cambiar la salida estándar
modules run enum_buckets --txt
Los datos enumerados se almacenan en tablas locales en GCPwn. Para ver la salida de la tabla, ejecute
# See all tables data tables # See all table columns data tables--columns # Get all data back and export to CSV file data --columns column1,column2 --csv [OUTPUT_FILE]
Ejecute el módulo enum_all
seguido de creds info
para ver los permisos enumerados recientemente. El módulo process_iam_bindings
luego le brindará un resumen TXT/CSV de los enlaces de políticas si se pueden enumerar, y analyze_vulns
intentará marcar roles/permisos incorrectos. Vea las banderas comunes a continuación.
Enumere todo (elija el que mejor se adapte)
# Quickest: Run all enumeration modules + testIAM Permissions modules run enum_all --iam # Longer: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org modules run enum_all --iam --all-permissions # Longer + Downloads: Run all enumeration modules + testIAM Permissions including ~9000 for projects/folder/org + download everyting modules run enum_all --iam --all-permissions --download
Tome todos los enlaces de políticas de IAM de enum_all u otros módulos anteriores y devuelva un resumen/análisis de vulnerabilidad
# Review Permissions User Has Thus Far creds info # Return Policy Summary from IAM Bindings if Applicable modules run process_iam_bindings [--txt] [--csv] # Analyze IAM Bindings + Other Items (like allUsers) if Applicable modules run analyze_vulns [--txt] [--csv]
fwd:cloudsec 2024: https://www.youtube.com/watch?v=opvv9h3Qe0s ("GCPwn: una herramienta de pentesting para GCP - Scott Weston")
Defcon 32 Aldea de las Nubes: https://www.youtube.com/watch?v=rxXyYo1n9cw
https://www.netspi.com/blog/technical-blog/cloud-pentesting/introduction-to-gcpwn-part-1/
Estaré atento a los problemas y los tirones para detectar cualquier novedad interesante. Dicho esto, tengo un trabajo diario, así que dame al menos 24 horas o algo así :)
Si se trata de un problema pequeño, preferiría un Problema a través de la pestaña Problemas para una solución rápida.
Construido sobre el hombro de gigantes, el crédito por algunos códigos, ideas e investigaciones se inspiró en:
Seguridad de Rhino (https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/)
GCPBucketBrute (https://github.com/RhinoSecurityLabs/GCPBucketBrute)
MUCHA documentación de Google (https://cloud.google.com/python/docs/reference)