
Ein Werkzeug zur schnellen Bewertung von IAM-Berechtigungen in AWS.
Principal Mapper (PMapper) ist ein Skript und eine Bibliothek zur Identifizierung von Risiken in der Konfiguration von AWS Identity and Access Management (IAM) für ein AWS-Konto oder eine AWS-Organisation. Es modelliert die verschiedenen IAM-Benutzer und -Rollen in einem Konto als gerichteten Graphen, was Prüfungen auf Privilegieneskalation und auf alternative Wege ermöglicht, die ein Angreifer nehmen könnte, um Zugriff auf eine Ressource oder Aktion in AWS zu erhalten.
PMapper enthält einen Abfragemechanismus, der eine lokale Simulation des Autorisierungsverhaltens von AWS verwendet. Bei der Ausführung einer Abfrage, um festzustellen, ob ein Prinzipal Zugriff auf eine bestimmte Aktion/Ressource hat, prüft PMapper auch, ob der Benutzer oder die Rolle auf andere Benutzer oder Rollen zugreifen kann, die Zugriff auf diese Aktion/Ressource haben. Dies erfasst Szenarien wie z.B. wenn ein Benutzer keine Berechtigung zum Lesen eines S3-Objekts hat, aber eine EC2-Instanz starten könnte, die das S3-Objekt lesen kann.
Weitere Informationen finden Sie im Projekt-Wiki.
Principal Mapper wird mit der botocore-Bibliothek und Python 3.5+ entwickelt. Principal Mapper erfordert außerdem pydot (verfügbar über pip) und graphviz (verfügbar unter Windows, macOS und Linux von https://graphviz.org/ ).
pip install principalmapper
Klonen Sie das Repository:
git clone [email protected]:nccgroup/PMapper.git
Dann installieren Sie mit Pip:
cd PMapper
pip install .
(Nach dem Klonen aus dem Quellcode)
cd PMapper
docker build -t $TAG .
docker run -it $TAG
Sie können -e|--env oder --env-file verwenden, um die AWS_*-Umgebungsvariablen für Anmeldeinformationen zu übergeben, wenn Sie docker run ... aufrufen, oder Sie können -v verwenden, um Ihr ~/.aws/-Verzeichnis einzubinden und die Umgebungsvariablen AWS_CONFIG_FILE und AWS_SHARED_CREDENTIALS_FILE zu verwenden. Das aktuelle Dockerfile sollte Sie in eine Shell mit pmapper -h versetzen, die einsatzbereit ist, und graphviz ist bereits installiert.
Siehe die Seite 'Erste Schritte' im Wiki für weitere Informationen zur Verwendung von PMapper über die Befehlszeile. Es gibt auch Seiten mit vollständigen Details zu allen Befehlszeilenfunktionen und dem Bibliothekscode.
Hier ist ein kurzes Beispiel:
# Create a graph for the account, accessed through AWS CLI profile "skywalker"
pmapper --profile skywalker graph create
# [... graph-creation output goes here ...]
# Run a query to see who can make IAM Users
$ pmapper --profile skywalker query 'who can do iam:CreateUser'
# [... query output goes here ...]
# Run a query to see who can launch a big expensive EC2 instance, aside from "admin" users
$ pmapper --account 000000000000 argquery -s --action 'ec2:RunInstances' --condition 'ec2:InstanceType=c6gd.16xlarge'
# [... query output goes here ...]
# Run the privilege escalation preset query, skip reporting current "admin" users
$ pmapper --account 000000000000 query -s 'preset privesc *'
# [... privesc report goes here ...]
# Create an SVG representation of the admins/privescs/inter-principal access
$ pmapper --account 000000000000 visualize --filetype svg
# [... information output goes here, file created ...]
Beachten Sie die Verwendung von --profile, das sich genauso verhalten sollte wie die AWS CLI. Außerdem verwenden spätere Aufrufe mit query/argquery/visualize ein --account-Argument, das nur eine Abkürzung darstellt, um zu überprüfen, mit welchem Konto gearbeitet wird (andernfalls führt PMapper einen API-Aufruf durch, um dies zu ermitteln).
Hier ist ein Beispiel der Visualisierung:

Und noch einmal bei Verwendung von --only-privesc:
100% willkommen und geschätzt. Bitte koordinieren Sie sich vorab über Issues und richten Sie Pull-Requests an den aktuellen Entwicklungsbranch (üblicherweise in der Form vX.Y.Z-dev).
Copyright (c) NCC Group and Erik Steringer 2019. Diese Datei ist Teil von Principal Mapper.
Principal Mapper ist freie Software: Sie können es weiterverbreiten und/oder modifizieren
unter den Bedingungen der GNU Affero General Public License, wie von der
Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder
(nach Ihrer Wahl) jeder späteren Version.
Principal Mapper wird in der Hoffnung verbreitet, dass es nützlich sein wird,
aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Garantie der
MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die
GNU Affero General Public License für weitere Details.
Sie sollten eine Kopie der GNU Affero General Public License zusammen mit
Principal Mapper erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.