
Un analyseur et outil de requête pour les déclarations de politique IAM AWS.
IAMActionHunter est un outil d'analyse et d'interrogation des déclarations de politiques IAM, conçu pour simplifier la collecte et la compréhension des déclarations de permissions pour les utilisateurs et les rôles dans AWS Identity and Access Management (IAM). Bien que ses fonctionnalités soient simples, cet outil a été développé en réponse au besoin d'une solution efficace lors des tests de pénétration AWS quotidiens.
https://rhinosecuritylabs.com/aws/iamactionhunter-aws-iam-permissions/
L'outil peut être utilisé pour rechercher des opportunités potentielles d'escalade de privilèges dans les comptes AWS en interrogeant diverses actions IAM AWS qui pourraient être exploitées. Alors que d'autres outils effectuent des scans pour identifier les risques d'escalade de privilèges, celui-ci permet une approche plus manuelle, laissant les utilisateurs enquêter sur les permissions et examiner rapidement les rôles, utilisateurs et ressources concernés pour une analyse ciblée.
Cet outil offre également la possibilité d'afficher et de sauvegarder les résultats de requêtes au format CSV, ce qui est utile pour les équipes de sécurité souhaitant une vue d'ensemble des permissions et ressources des principaux dans un compte AWS. Par exemple, vous pouvez identifier les utilisateurs et rôles disposant des permissions iam:put* dans un compte. En exécutant une requête et en générant un CSV, vous pouvez facilement passer en revue tous les utilisateurs et rôles possédant ces permissions, ainsi que les ressources auxquelles ils ont accès.
Recommandée :
pip3 install iamactionhunter
Une grande partie de cette fonctionnalité a également été intégrée dans https://github.com/RhinoSecurityLabs/pacu sous forme de module, iam__enum_action_query, si vous préférez.
Clone et utilisation via Poetry :
git clone https://github.com/RhinoSecurityLabs/IAMActionHunter.git
cd IAMActionHunter
# (éventuellement nécessaire : poetry env use python3.9)
poetry install
iamactionhunter --help
iamactionhunter --collect --profile <some-aws-profile>
Clone et utilisation via Pip :
git clone https://github.com/RhinoSecurityLabs/IAMActionHunter.git
cd IAMActionHunter
pip install .
iamactionhunter --help
iamactionhunter --collect --profile <some-aws-profile>
Aide :
usage: iamactionhunter [-h] [--profile PROFILE] [--account ACCOUNT] [--query QUERY] [--role ROLE] [--user USER]
[--all-or-none] [--collect] [--list] [--csv CSV] [--config CONFIG]
Collect all policies for all users/roles in an AWS account and then query the policies for permissions.
optional arguments:
-h, --help show this help message and exit
--profile PROFILE The name of the AWS profile to use for authentication for user/role collection.
--account ACCOUNT Account number to query.
--query QUERY Permissions to query. A string like: s3:GetObject or s3:* or s3:GetObject,s3:PutObject
--role ROLE Filter role to query.
--user USER Filter user to query.
--all-or-none Check if all queried actions are allowed, not just some.
--collect Collect user and role policies for the account.
--list List accounts available to query.
--csv CSV File name for CSV report output.
--config CONFIG JSON config file for preset queries.
Téléchargez d'abord toutes les informations IAM pour les utilisateurs et les rôles :
iamactionhunter --collect --profile my-aws-profile
Listez les comptes pour lesquels des données ont été collectées :
iamactionhunter --list
Interrogez ensuite quelque chose :
iamactionhunter --account <account_number_of_profile_above> --query iam:create*
Interrogez ensuite davantage :
iamactionhunter --account <account_number_of_profile_above> --query iam:create*,iam:put*
Interrogez un rôle particulier :
iamactionhunter --account <account_number_of_profile_above> --role some_role --query iam:*
Interrogez un utilisateur particulier :
iamactionhunter --account <account_number_of_profile_above> --user some_user --query iam:*
Exportez vers un CSV :
iamactionhunter --account <account_number_of_profile_above> --query iam:* --csv report.csv
Exécutez une configuration prédéfinie :
iamactionhunter --account <account_number_of_profile_above> --config dangerous_iam
Exécutez une requête qui n'affiche les résultats que si un utilisateur ou un rôle possède toutes les permissions interrogées :
iamactionhunter --account <account_number_of_profile_above> --query s3:getobject,s3:listbucket --all-or-none
Les options de configuration intégrées sont :
dangerous_iam
write_actions
privescs
iamactionhunter --account <account_number_of_profile> --config dangerous_iam
Un fichier de configuration est un fichier JSON qui spécifie certaines permissions que vous souhaitez rechercher. Voici un exemple de fichier qui recherche les actions d'écriture dans CodeBuild.
[
{
"Description": "These are all actions which may allow some kind of write privilege in CodeBuild.",
"Name": "CodeBuildWriteActions",
"ActionsNeeded": [
"codebuild:Put*",
"codebuild:Create*",
"codebuild:Delete*",
"codebuild:Modify*",
"codebuild:Update*",
"codebuild:Attach*",
"codebuild:Detach*",
"codebuild:Associate*",
"codebuild:Disassociate*",
"codebuild:Add*",
"codebuild:Remove*",
"codebuild:Set*",
"codebuild:Enable*",
"codebuild:Disable*",
"codebuild:Reset*",
"codebuild:Stop*",
"codebuild:Terminate*",
"codebuild:Reboot*",
"codebuild:Start*"
],
"AllOrNone": false
}
]
Vous pouvez ensuite exécuter la configuration en précisant simplement le nom du fichier dans l'argument --config.
iamactionhunter --account <account_number_of_profile> --config write_code_build.json