Je viens de découvrir un outil OpenSource : PMapper (Principal Mapper), écrit en python qui permet d'évaluer les risques vis à vis des politiques et rôles d'AWS Identity and Access Management (IAM).

PMapper est un script Python permettant d'identifier les risques dans la configuration de la gestion des identités et des accès AWS (IAM) pour un compte ou une organisation donnés. Il modélise les différents utilisateurs et rôles IAM sous la forme d'un graphe, ce qui permet de vérifier l'escalade des privilèges et les chemins alternatifs qu'un attaquant pourrait emprunter pour accéder à une ressource ou à une action dans AWS.

Exemple de visualisation

PMapper comprend un mécanisme d'interrogation qui utilise une simulation locale du comportement d'autorisation d'AWS. Lorsqu'il exécute une requête pour déterminer si un principal a accès à une certaine action/ressource, PMapper vérifie également si l'utilisateur ou le rôle pourrait accéder à d'autres utilisateurs ou rôles qui ont accès à cette action/ressource. Cela permet de détecter des scénarios tels que celui où un utilisateur n'a pas l'autorisation de lire un objet S3, mais pourrait lancer une instance EC2 qui peut lire l'objet S3.

Exemple :

$ pmapper --profile skywalker graph create
2021-01-27 13:20:26-0800 | Obtaining IAM Users/Roles/Groups/Policies in the account.
2021-01-27 13:20:40-0800 | Sorting users, roles, groups, policies, and their relationships.
2021-01-27 13:20:40-0800 | Obtaining Access Keys data for IAM users
2021-01-27 13:20:45-0800 | Gathering MFA virtual device information
2021-01-27 13:20:45-0800 | Gathering MFA physical device information
2021-01-27 13:20:50-0800 | Determining which principals have administrative privileges
2021-01-27 13:20:52-0800 | Initiating edge checks.
[... Several instances of new edges found]
2021-01-27 13:21:51-0800 | Caching policy for arn:aws:s3:::670903390496-logs
2021-01-27 13:21:51-0800 | Caching policy for arn:aws:s3:::670903390496-secrets
2021-01-27 13:21:52-0800 | Caching policy for arn:aws:s3:::670903390496-source
[...]
Graph Data for Account:  670903390496
  # of Nodes:              57 (6 admins)
  # of Edges:              52
  # of Groups:             2
  # of (tracked) Policies: 48