AWS Pentesting
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Informations de base
Avant de commencer le pentesting dâun environnement AWS, il y a quelques choses de base que vous devez savoir sur le fonctionnement dâAWS pour vous aider Ă comprendre ce que vous devez faire, comment trouver des erreurs de configuration et comment les exploiter.
Des concepts tels que la hiĂ©rarchie des organisations, IAM et dâautres concepts de base sont expliquĂ©s dans :
Laboratoires pour apprendre
- https://github.com/RhinoSecurityLabs/cloudgoat
- https://github.com/BishopFox/iam-vulnerable
- https://github.com/nccgroup/sadcloud
- https://github.com/bridgecrewio/terragoat
- https://github.com/ine-labs/AWSGoat
- http://flaws.cloud/
- http://flaws2.cloud/
Outils pour simuler des attaques :
- https://github.com/Datadog/stratus-red-team/
- https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main
Méthodologie de Pentester/Red Team AWS
Pour auditer un environnement AWS, il est trÚs important de savoir : quels services sont utilisés, ce qui est exposé, qui a accÚs à quoi, et comment les services internes AWS et les services externes sont connectés.
Du point de vue dâune Red Team, le premier pas pour compromettre un environnement AWS est dâobtenir des identifiants. Voici quelques idĂ©es sur comment faire cela :
- Fuites sur github (ou similaire) - OSINT
- Ingénierie Sociale
- Réutilisation de mots de passe (fuites de mots de passe)
- Vulnérabilités dans les applications hébergées sur AWS
- Server Side Request Forgery avec accÚs au point de terminaison des métadonnées
- Lecture de fichiers locaux
/home/USERNAME/.aws/credentialsC:\Users\USERNAME\.aws\credentials- Violations de tiers
- Employé interne
- Cognito identifiants
Ou en compromettant un service non authentifié exposé :
AWS - Unauthenticated Enum & Access
Ou si vous faites une révision, vous pourriez simplement demander des identifiants avec ces rÎles :
AWS - Permissions for a Pentest
Note
AprÚs avoir réussi à obtenir des identifiants, vous devez savoir à qui appartiennent ces identifiants, et à quoi ils ont accÚs, donc vous devez effectuer une énumération de base :
ĂnumĂ©ration de base
SSRF
Si vous avez trouvĂ© un SSRF sur une machine Ă lâintĂ©rieur dâAWS, consultez cette page pour des astuces :
Whoami
Lâune des premiĂšres choses que vous devez savoir est qui vous ĂȘtes (dans quel compte vous ĂȘtes et dâautres informations sur lâenvironnement AWS) :
# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user
# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456
# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa
# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document
Caution
Notez que les entreprises peuvent utiliser des canary tokens pour identifier quand des tokens sont volĂ©s et utilisĂ©s. Il est recommandĂ© de vĂ©rifier si un token est un canary token ou non avant de lâutiliser.
Pour plus dâinfos consultez cette page.
Org Enumeration
IAM Enumeration
Si vous avez suffisamment de permissions, vĂ©rifier les privilĂšges de chaque entitĂ© dans le compte AWS vous aidera Ă comprendre ce que vous et dâautres identitĂ©s pouvez faire et comment escalader les privilĂšges.
Si vous nâavez pas assez de permissions pour Ă©numĂ©rer IAM, vous pouvez les voler par bruteforce pour les dĂ©couvrir.
VĂ©rifiez comment faire lâĂ©numĂ©ration et le bruteforce dans :
AWS - IAM, Identity Center & SSO Enum
Note
Maintenant que vous avez des informations sur vos identifiants (et si vous ĂȘtes une Ă©quipe rouge, espĂ©rons que vous nâavez pas Ă©tĂ© dĂ©tectĂ©). Il est temps de dĂ©couvrir quels services sont utilisĂ©s dans lâenvironnement.
Dans la section suivante, vous pouvez vĂ©rifier quelques façons dâĂ©numĂ©rer certains services courants.
Services Enumeration, Post-Exploitation & Persistence
AWS a un nombre Ă©tonnant de services, dans la page suivante vous trouverez des informations de base, des cheatsheets dâĂ©numĂ©ration, comment Ă©viter la dĂ©tection, obtenir de la persistance, et dâautres astuces de post-exploitation Ă propos de certains dâentre eux :
Notez que vous nâavez pas besoin dâeffectuer tout le travail manuellement, ci-dessous dans ce post, vous pouvez trouver une section sur les outils automatiques.
De plus, Ă ce stade, vous pourriez avoir dĂ©couvert plus de services exposĂ©s aux utilisateurs non authentifiĂ©s, vous pourriez ĂȘtre en mesure de les exploiter :
AWS - Unauthenticated Enum & Access
Privilege Escalation
Si vous pouvez vĂ©rifier au moins vos propres permissions sur diffĂ©rentes ressources, vous pourriez vĂ©rifier si vous ĂȘtes capable dâobtenir des permissions supplĂ©mentaires. Vous devriez vous concentrer au moins sur les permissions indiquĂ©es dans :
Publicly Exposed Services
En Ă©numĂ©rant les services AWS, vous pourriez avoir trouvĂ© certains dâentre eux exposant des Ă©lĂ©ments Ă Internet (ports VM/Containers, bases de donnĂ©es ou services de file dâattente, instantanĂ©s ou bucketsâŠ).
En tant que pentester/équipe rouge, vous devriez toujours vérifier si vous pouvez trouver des informations sensibles / vulnérabilités sur eux, car ils pourraient vous fournir un accÚs supplémentaire au compte AWS.
Dans ce livre, vous devriez trouver des informations sur comment trouver des services AWS exposés et comment les vérifier. Concernant comment trouver des vulnérabilités dans des services réseau exposés, je vous recommanderais de chercher le service spécifique dans :
Compromising the Organization
From the root/management account
Lorsque le compte de gestion crĂ©e de nouveaux comptes dans lâorganisation, un nouveau rĂŽle est créé dans le nouveau compte, nommĂ© par dĂ©faut OrganizationAccountAccessRole et donnant la politique AdministratorAccess au compte de gestion pour accĂ©der au nouveau compte.
.png)
Ainsi, pour accĂ©der en tant quâadministrateur Ă un compte enfant, vous devez :
- Compromettre le compte de gestion et trouver lâID des comptes enfants et les noms du rĂŽle (OrganizationAccountAccessRole par dĂ©faut) permettant au compte de gestion dâaccĂ©der en tant quâadmin.
- Pour trouver les comptes enfants, allez dans la section des organisations dans la console AWS ou exécutez
aws organizations list-accounts - Vous ne pouvez pas trouver le nom des rÎles directement, donc vérifiez toutes les politiques IAM personnalisées et recherchez celles permettant
sts:AssumeRolesur les comptes enfants précédemment découverts. - Compromettre un principal dans le compte de gestion avec la permission
sts:AssumeRolesur le rĂŽle dans les comptes enfants (mĂȘme si le compte permet Ă quiconque du compte de gestion de se faire passer pour, Ă©tant un compte externe, des permissions spĂ©cifiquessts:AssumeRolesont nĂ©cessaires).
Automated Tools
Recon
- aws-recon: Un outil de collecte dâinventaire axĂ© sur la sĂ©curitĂ© AWS, multi-threadĂ©, Ă©crit en Ruby.
# Install
gem install aws_recon
# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
- cloudlist: Cloudlist est un outil multi-cloud pour obtenir des actifs (noms dâhĂŽtes, adresses IP) des fournisseurs de cloud.
- cloudmapper: CloudMapper vous aide Ă analyser vos environnements Amazon Web Services (AWS). Il contient dĂ©sormais beaucoup plus de fonctionnalitĂ©s, y compris lâaudit des problĂšmes de sĂ©curitĂ©.
# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}
# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev
# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev
# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev
# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev
# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev
# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev
python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
- cartographie: Cartographie est un outil Python qui consolide les actifs dâinfrastructure et les relations entre eux dans une vue graphique intuitive alimentĂ©e par une base de donnĂ©es Neo4j.
# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*
# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j
- starbase : Starbase collecte des actifs et des relations provenant de services et de systĂšmes, y compris lâinfrastructure cloud, les applications SaaS, les contrĂŽles de sĂ©curitĂ©, et plus encore, dans une vue graphique intuitive soutenue par la base de donnĂ©es Neo4j.
- aws-inventory : (Utilise python2) Câest un outil qui essaie de dĂ©couvrir tous les ressources AWS créées dans un compte.
- aws_public_ips : Câest un outil pour rĂ©cupĂ©rer toutes les adresses IP publiques (Ă la fois IPv4/IPv6) associĂ©es Ă un compte AWS.
Privesc & Exploitation
- SkyArk: DĂ©couvrez les utilisateurs les plus privilĂ©giĂ©s dans lâenvironnement AWS scannĂ©, y compris les AWS Shadow Admins. Il utilise powershell. Vous pouvez trouver la dĂ©finition des politiques privilĂ©giĂ©es dans la fonction
Check-PrivilegedPolicydans https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1. - pacu : Pacu est un framework dâexploitation AWS open-source, conçu pour les tests de sĂ©curitĂ© offensive contre les environnements cloud. Il peut Ă©numĂ©rer, trouver des mauvais configurations et les exploiter. Vous pouvez trouver la dĂ©finition des permissions privilĂ©giĂ©es dans https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 Ă lâintĂ©rieur du dict
user_escalation_methods. - Notez que pacu vĂ©rifie uniquement vos propres chemins de privesc (pas Ă lâĂ©chelle du compte).
# Install
## Feel free to use venvs
pip3 install pacu
# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
- PMapper : Principal Mapper (PMapper) est un script et une bibliothĂšque pour identifier les risques dans la configuration de AWS Identity and Access Management (IAM) pour un compte AWS ou une organisation AWS. Il modĂ©lise les diffĂ©rents utilisateurs et rĂŽles IAM dans un compte sous forme de graphe orientĂ©, ce qui permet de vĂ©rifier les Ă©lĂ©vations de privilĂšges et les chemins alternatifs quâun attaquant pourrait emprunter pour accĂ©der Ă une ressource ou Ă une action dans AWS. Vous pouvez vĂ©rifier les permissions utilisĂ©es pour trouver des chemins de privesc dans les fichiers se terminant par
_edges.pydans https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
# Install
pip install principalmapper
# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions
# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins
# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
- cloudsplaining : Cloudsplaining est un outil dâĂ©valuation de la sĂ©curitĂ© AWS IAM qui identifie les violations du principe du moindre privilĂšge et gĂ©nĂšre un rapport HTML priorisĂ© par risque.
Il vous montrera les clients trop privilĂ©giĂ©s, les politiques en ligne et AWS, ainsi que les principaux ayant accĂšs Ă celles-ci. (Il vĂ©rifie non seulement les Ă©lĂ©vations de privilĂšges, mais aussi dâautres types de permissions intĂ©ressantes, recommandĂ© Ă utiliser).
# Install
pip install cloudsplaining
# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev
# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
- cloudjack : CloudJack évalue les comptes AWS pour des vulnérabilités de détournement de sous-domaine en raison de configurations déconnectées de Route53 et CloudFront.
- ccat : Lister les dĂ©pĂŽts ECR -> Tirer le dĂ©pĂŽt ECR -> Installer un backdoor -> Pousser lâimage avec backdoor
- Dufflebag : Dufflebag est un outil qui cherche Ă travers les snapshots publics dâElastic Block Storage (EBS) des secrets qui ont pu ĂȘtre accidentellement laissĂ©s.
Audit
- cloudsploit: CloudSploit par Aqua est un projet open-source conçu pour permettre la dĂ©tection des risques de sĂ©curitĂ© dans les comptes dâinfrastructure cloud, y compris : Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) et GitHub (Il ne recherche pas les ShadowAdmins).
./index.js --csv=file.csv --console=table --config ./config.js
# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
- Prowler : Prowler est un outil de sécurité Open Source pour effectuer des évaluations des meilleures pratiques de sécurité AWS, des audits, des réponses aux incidents, une surveillance continue, un durcissement et une préparation à la criminalistique.
# Install python3, jq and git
# Install
pip install prowler
prowler -v
# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
- CloudFox: CloudFox vous aide Ă acquĂ©rir une conscience situationnelle dans des environnements cloud inconnus. Câest un outil en ligne de commande open source créé pour aider les testeurs de pĂ©nĂ©tration et dâautres professionnels de la sĂ©curitĂ© offensive Ă trouver des chemins dâattaque exploitables dans lâinfrastructure cloud.
cloudfox aws --profile [profile-name] all-checks
- ScoutSuite : Scout Suite est un outil dâaudit de sĂ©curitĂ© multi-cloud open source, qui permet lâĂ©valuation de la posture de sĂ©curitĂ© des environnements cloud.
# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help
# Get info
scout aws -p dev
- cs-suite : Cloud Security Suite (utilise python2.7 et semble non maintenu)
- Zeus : Zeus est un outil puissant pour les meilleures pratiques de durcissement AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (semble non maintenu). Il vérifie uniquement les identifiants configurés par défaut dans le systÚme.
Audit Constant
- cloud-custodian : Cloud Custodian est un moteur de rÚgles pour gérer les comptes et ressources de cloud public. Il permet aux utilisateurs de définir des politiques pour permettre une infrastructure cloud bien gérée, à la fois sécurisée et optimisée en coûts. Il consolide de nombreux scripts ad hoc que les organisations ont en un outil léger et flexible, avec des métriques et des rapports unifiés.
- pacbot** : Policy as Code Bot (PacBot)** est une plateforme pour la surveillance continue de la conformitĂ©, le reporting de conformitĂ© et lâautomatisation de la sĂ©curitĂ© pour le cloud. Dans PacBot, les politiques de sĂ©curitĂ© et de conformitĂ© sont mises en Ćuvre sous forme de code. Toutes les ressources dĂ©couvertes par PacBot sont Ă©valuĂ©es par rapport Ă ces politiques pour mesurer la conformitĂ© aux politiques. Le cadre auto-fix de PacBot offre la possibilitĂ© de rĂ©pondre automatiquement aux violations de politiques en prenant des actions prĂ©dĂ©finies.
- streamalert** :** StreamAlert est un cadre dâanalyse de donnĂ©es en temps rĂ©el sans serveur qui vous permet de ingĂ©rer, analyser et alerter sur des donnĂ©es provenant de nâimporte quel environnement, en utilisant des sources de donnĂ©es et une logique dâalerte que vous dĂ©finissez. Les Ă©quipes de sĂ©curitĂ© informatique utilisent StreamAlert pour scanner des tĂ©raoctets de donnĂ©es de journaux chaque jour pour la dĂ©tection et la rĂ©ponse aux incidents.
DEBUG : Capturer les requĂȘtes AWS cli
# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080
# Capture with burp nor verifying ssl
aws --no-verify-ssl ...
# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem
# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem
# Run aws cli normally trusting burp cert
aws ...
Références
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

