
Ein Parser und Abfragetool für AWS IAM-Richtlinienanweisungen.
IAMActionHunter ist ein Parser für IAM-Richtlinienanweisungen und ein Abfragewerkzeug, das darauf abzielt, den Prozess des Sammelns und Verstehens von Berechtigungsrichtlinienanweisungen für Benutzer und Rollen in AWS Identity and Access Management (IAM) zu vereinfachen. Obwohl seine Funktionalität einfach ist, wurde dieses Tool als Reaktion auf den Bedarf an einer effizienten Lösung für die tägliche AWS-Penetrationstests entwickelt.
https://rhinosecuritylabs.com/aws/iamactionhunter-aws-iam-permissions/
Das Werkzeug kann genutzt werden, um nach potenziellen Privilegieneskalationsmöglichkeiten in AWS-Konten zu suchen, indem verschiedene AWS-IAM-Aktionen abgefragt werden, die ausgenutzt werden könnten. Während andere Tools Scans durchführen, um Privilegieneskalationsrisiken zu identifizieren, ermöglicht dieses Tool einen eher manuellen Ansatz, der es Benutzern erlaubt, Berechtigungen zu untersuchen und schnell die Rollen, Benutzer und Ressourcen zu überprüfen, auf die sie angewendet werden, für gezielte Analysen.
Dieses Tool bietet auch die Möglichkeit, Abfrageergebnisse im CSV-Format auszugeben und zu speichern, was für Sicherheitsteams nützlich ist, die einen übergeordneten Überblick über Berechtigungen und Ressourcen von Prinzipals innerhalb eines AWS-Kontos suchen. Beispielsweise möchten Sie möglicherweise Benutzer und Rollen mit iam:put*-Berechtigungen in einem Konto identifizieren. Durch die Ausführung einer Abfrage und die Erstellung einer CSV-Datei können Sie einfach alle Benutzer und Rollen mit diesen Berechtigungen sowie die Ressourcen, auf die sie Zugriff haben, überprüfen.
Empfohlen:
pip3 install iamactionhunter
Ein Großteil dieser Funktionalität wurde auch in https://github.com/RhinoSecurityLabs/pacu als Modul, iam__enum_action_query, implementiert, falls Sie das bevorzugen.
Klonen und Poetry verwenden:
git clone https://github.com/RhinoSecurityLabs/IAMActionHunter.git
cd IAMActionHunter
# (potentially necessary: poetry env use python3.9)
poetry install
iamactionhunter --help
iamactionhunter --collect --profile <some-aws-profile>
Klonen und Pip verwenden:
git clone https://github.com/RhinoSecurityLabs/IAMActionHunter.git
cd IAMActionHunter
pip install .
iamactionhunter --help
iamactionhunter --collect --profile <some-aws-profile>
Hilfe:
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.
Laden Sie zunächst alle IAM-Informationen für Benutzer und Rollen herunter:
iamactionhunter --collect --profile my-aws-profile
Listen Sie alle Konten auf, für die Daten gesammelt wurden:
iamactionhunter --list
Dann führen Sie eine Abfrage durch:
iamactionhunter --account <account_number_of_profile_above> --query iam:create*
Dann führen Sie weitere Abfragen durch:
iamactionhunter --account <account_number_of_profile_above> --query iam:create*,iam:put*
Fragen Sie eine bestimmte Rolle ab:
iamactionhunter --account <account_number_of_profile_above> --role some_role --query iam:*
Fragen Sie einen bestimmten Benutzer ab:
iamactionhunter --account <account_number_of_profile_above> --user some_user --query iam:*
Ausgabe in eine CSV-Datei:
iamactionhunter --account <account_number_of_profile_above> --query iam:* --csv report.csv
Führen Sie eine voreingestellte Konfiguration aus:
iamactionhunter --account <account_number_of_profile_above> --config dangerous_iam
Führen Sie eine Abfrage durch, die nur Ergebnisse anzeigt, wenn ein Benutzer oder eine Rolle über alle abgefragten Berechtigungen verfügt:
iamactionhunter --account <account_number_of_profile_above> --query s3:getobject,s3:listbucket --all-or-none
Integrierte Konfigurationsoptionen sind:
dangerous_iam
write_actions
privescs
iamactionhunter --account <account_number_of_profile> --config dangerous_iam
Eine Konfigurationsdatei ist eine JSON-Datei, die bestimmte Berechtigungen angibt, nach denen Sie suchen möchten. Hier ist eine Beispieldatei, die nach Schreibaktionen in CodeBuild sucht.
[
{
"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
}
]
Sie könnten die Konfiguration dann ausführen, indem Sie einfach den Dateinamen im Argument --config angeben.
iamactionhunter --account <account_number_of_profile> --config write_code_build.json