
Le framework d'exploitation AWS, conçu pour tester la sécurité des environnements Amazon Web Services.
Où obtenir de l'aide : le Discord de Rhino Security Labs, ou Stack Overflow
Où signaler des problèmes : https://github.com/RhinoSecurityLabs/pacu/issues
Maintenu par : Rhino Security Labs
Pacu est un framework open-source d'exploitation AWS, conçu pour les tests de sécurité offensifs dans les environnements cloud. Créé et maintenu par Rhino Security Labs, Pacu permet aux testeurs d'intrusion d'exploiter les défauts de configuration d'un compte AWS, en utilisant des modules pour étendre facilement ses fonctionnalités. Les modules actuels permettent une gamme d'attaques, y compris l'escalade de privilèges utilisateur, le backdooring des utilisateurs IAM, l'attaque de fonctions Lambda vulnérables, et bien plus encore.
Pacu est un programme relativement léger, car il nécessite seulement Python3.7+ et pip3 pour installer une poignée de bibliothèques Python.
pip3 install -U pip
pip3 install -U pacu
pacu
Il s'agit de la méthode préférée sur Kali Linux car pip n'est plus installé par défaut. Cela installera Pacu avec les dernières mises à jour qui peuvent ne pas être incluses dans la version officielle.
pipx install git+https://github.com/RhinoSecurityLabs/pacu.git
Pour des instructions d'utilisation plus détaillées et conviviales, veuillez consulter le guide d'installation du Wiki : guide d'installation.
docker run -it rhinosecuritylabs/pacu:latest
docker run -it --entrypoint /bin/sh rhinosecuritylabs/pacu:latest
Avertissement : L'exécution de cette commande montera vos fichiers de configuration AWS locaux dans le conteneur Docker lors de son lancement. Cela signifie que tout utilisateur ayant accès au conteneur aura accès aux identifiants AWS de votre ordinateur hôte.
docker run -it -v ~/.aws:/root/.aws rhinosecuritylabs/pacu:latest
La première fois que Pacu est lancé, il vous sera demandé de démarrer et de nommer une nouvelle session. Cette session sera utilisée pour stocker les paires de clés AWS, ainsi que toutes les données obtenues en exécutant divers modules. Vous pouvez avoir un nombre quelconque de sessions différentes dans Pacu, chacune avec ses propres ensembles de clés et données AWS, et reprendre une session à tout moment (bien qu'un redémarrage soit actuellement nécessaire pour basculer entre les sessions).
Les modules nécessitent une clé AWS, qui vous accorde un accès minimal à un environnement AWS et se compose d'un ID de clé d'accès et d'une clé d'accès secrète. Pour définir les clés de votre session, utilisez la commande set_keys, puis suivez les invites pour fournir un alias de clé (surnom pour référence), un ID de clé d'accès AWS, une clé d'accès secrète AWS et un jeton de session AWS (si vous en utilisez un).
Si vous êtes bloqué, help affichera une liste des commandes disponibles.
list affiche la liste des modules disponibles pour les régions qui ont été définies dans la session en cours.help nom_module renvoie les informations d'aide applicables pour le module spécifié.run nom_module exécute le module spécifié avec ses paramètres par défaut.run nom_module --regions eu-west-1,us-west-1 exécute le module spécifié sur les régions eu-west-1 et us-west-1 (pour les modules qui prennent en charge l'argument --regions).pacu --help affiche le menu d'aidepacu --session <nom_session> définit la session à utiliser pour les commandes qui en nécessitent unepacu --list-modules liste tous les modules disponibles (ne nécessite pas de session)pacu --pacu-help affiche la fenêtre d'aide de Pacu (ne nécessite pas de session)pacu --module-name <nom_module> le nom d'un module sur lequel effectuer une action, vous pouvez exécuter ou obtenir des informations sur le modulepacu --exec exécute le module fourni dans --module-namepacu --module-info obtient des informations sur le module fourni dans --module-namepacu --data <nom_service || all> interroge la base de données SQLAlchemy locale pour récupérer les informations énuméréespacu --module-args="<arg1> <value> <arg2> <value>" fournit des arguments optionnels de module au module en cours d'exécutionPacu utilise une gamme de modules plug-in pour aider un attaquant dans le recensement, l'escalade de privilèges, l'exfiltration de données, l'exploitation de services et la manipulation de logs dans les environnements AWS. Les contributions ou les idées pour de nouveaux modules sont les bienvenues.
Pour suivre les développements continus des produits AWS, nous avons conçu Pacu dès le départ avec l'extensibilité à l'esprit. Une syntaxe et une structure de données communes rendent les modules faciles à construire et à étendre - pas besoin de spécifier les régions AWS ou de faire des vérifications de permissions redondantes entre les modules. Une base de données SQLite locale est utilisée pour gérer et manipuler les données récupérées, minimisant les appels API (et les logs associés). Le reporting et l'audit des attaques sont également intégrés au framework ; Pacu facilite le processus de documentation grâce à la journalisation et à l'exportation des commandes, aidant à construire une chronologie pour le processus de test.
Nous sommes toujours heureux de recevoir des rapports de bugs dans le framework Pacu lui-même, ainsi que des tests et des retours sur différents modules, et en général, des retours critiques pour aider à affiner le framework. Tout soutien pour Pacu par l'utilisation, les tests, l'amélioration, ou simplement en passant le mot, serait grandement apprécié.
Si vous êtes intéressé par une contribution directe au framework Pacu lui-même, veuillez lire nos directives de contribution pour les conventions de code et les notes sur le flux git.
Si vous êtes intéressé par l'écriture de vos propres modules pour Pacu, consultez notre page wiki Développement de modules. Au fur et à mesure que vous développez de nouvelles capacités, n'hésitez pas à nous contacter -- nous aimerions ajouter vos nouveaux modules à la collection de base fournie avec Pacu.
Pour des tutoriels et une documentation complète, veuillez visiter le wiki de Pacu.
pacu --set-regions <region1 region2 || all> définit les régions à utiliser dans la session, séparez les régions par un espace ou entrez all pour toutes les régionspacu --whoami obtient des informations sur l'utilisateur actuel