gcpwn était un outil créé par moi-même en essayant d'apprendre GCP et d'exploiter les nouvelles bibliothèques client GRPC. Il se compose de nombreux modules d'énumération que j'ai écrits ainsi que de modules d'exploitation tirant parti des recherches effectuées par d'autres dans le domaine (ex. Rhino Security) ainsi que de certains outils autonomes connus existants comme GCPBucketBrute dans le but de faire de l'outil un guichet unique pour les tests GCP. . Alors que d'autres scripts d'exploit sont généralement à usage unique, GCPwn stocke à la fois les données et les autorisations pendant que vous exécutez des modules organisant les données pour vous et les réutilisant pour vous faciliter la vie en termes d'autorisations de test d'intrusion/suivi.
Auteur : Scott Weston (@webbinroot), NetSPI
Dépendances requises : voir Requirements.txt + Guide d'installation du wiki
Remarque sur les dépendances : testé principalement sur Kali Linux ; Installation Docker disponible via Dockerfile
Cet outil s'adresse principalement aux pentesters, à ceux qui viennent d'apprendre la sécurité GCP et aux chercheurs en sécurité en général.
Pour les pentesters, comme illustré ci-dessus, l'outil automatise de nombreux scripts que vous exécuteriez normalement et stocke les données pour rendre les modules d'exploitation faciles à exécuter.
Pour ceux qui apprennent tout juste la sécurité GCP, l'outil est configuré de telle manière qu'il devrait être facile d'ajouter votre propre module via une requête Pull lorsque vous plongez dans le service individuel.
Pour les chercheurs en sécurité, l'outil vous permet d'exécuter un grand nombre d'appels d'API GCP et je documente comment proxy l'outil en arrière-plan via un outil local comme Burp Suite. Ainsi, exécuter enum_all
avec burp suite enregistrant toutes les requêtes vous donnera une visibilité sur tous les différents points de terminaison de l'API dans toutes les différentes bibliothèques Python avec une seule commande. C'est au moins l'espoir, je l'ai fait fonctionner partiellement avec des variables d'environnement, si quelqu'un peut finir de déchiffrer le code :)
Consultez le wiki sur https://github.com/NetSPI/gcpwn/wiki pour :
Instructions d'installation et configuration des dossiers : Comment configurer l'outil pour la première utilisation et les dossiers par défaut utilisés
Gestion de l'authentification et Tokeninfo : chargez les informations d'identification de l'utilisateur et/ou du service pour obtenir la configuration des informations d'identification.
Gestion des projets et récupération des données de ressources : Comment gérer les ID de projet et comment récupérer les données énumérées à partir des tables SQLite.
Guide des modules : Comment appeler un module + plongée approfondie sur chaque module
Création de module : Comment ajouter votre propre module via une pull request (en cours - date cible 15/09/2024)
Research Head Scratchers : Sujets de recherche/questions ouvertes (En cours - Date cible 22/09/2024)
L'outil utilisera automatiquement par défaut la sortie standard "table". L'outil prend en charge les tableaux, txt et csv. Si vous rencontrez des problèmes avec les tables, vous pouvez modifier les configurations globales comme suit :
# See global configs global_configs # Set global configs for preferred output global_configs set std-output txt
Ou vous pouvez transmettre --txt
, --table
et/ou --csv
avec chaque modules run
la commande pour modifier la sortie standard
modules run enum_buckets --txt
Les données énumérées sont stockées dans des tables locales dans GCPwn. Pour voir la sortie du tableau exécutée
# 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]
Exécutez le module enum_all
suivi creds info
pour afficher les autorisations nouvellement énumérées. Le module process_iam_bindings
vous donnera alors un résumé TXT/CSV des liaisons de stratégie si elles peuvent être énumérées, et analyze_vulns
tentera de signaler les mauvais rôles/autorisations. Voir les drapeaux courants ci-dessous.
Énumérez tout (choisissez celui qui vous convient le mieux)
# 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
Prenez toutes les liaisons de stratégie IAM d'enum_all ou d'autres modules ci-dessus et renvoyez un résumé/analyse de vulnérabilité
# 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 : un outil de pentesting pour GCP - Scott Weston")
Village cloud Defcon 32 : https://www.youtube.com/watch?v=rxXyYo1n9cw
https://www.netspi.com/blog/technical-blog/cloud-pentesting/introduction-to-gcpwn-part-1/
Je surveillerai les numéros/pulls pour toutes les nouveautés sympas, cela étant dit, j'ai un travail de jour, alors donnez-moi au moins 24 heures ou quelque chose du genre :)
S'il s'agit d'un petit problème, je préférerais un problème via l'onglet Problèmes pour une solution rapide.
Construit sur l'épaule de géants, le crédit pour certains codes et idées/recherches a été inspiré par :
Sécurité de Rhino (https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/)
GCPBucketBrute (https://github.com/RhinoSecurityLabs/GCPBucketBrute)
BEAUCOUP de documentation Google (https://cloud.google.com/python/docs/reference)