
Инструмент для быстрой оценки разрешений IAM в AWS.
Principal Mapper (PMapper) — это скрипт и библиотека для выявления рисков в конфигурации AWS Identity and Access Management (IAM) для аккаунта AWS или организации AWS. Он моделирует различных пользователей и роли IAM в аккаунте в виде ориентированного графа, что позволяет выполнять проверки на повышение привилегий и альтернативные пути, которые злоумышленник может использовать для получения доступа к ресурсу или действию в AWS.
PMapper включает механизм запросов, использующий локальную симуляцию поведения авторизации AWS. При выполнении запроса для определения, имеет ли субъект доступ к определенному действию/ресурсу, PMapper также проверяет, может ли пользователь или роль получить доступ к другим пользователям или ролям, которые имеют доступ к этому действию/ресурсу. Это позволяет выявить сценарии, например, когда у пользователя нет разрешения на чтение объекта S3, но он может запустить экземпляр EC2, который может прочитать объект S3.
Дополнительную информацию можно найти в вики проекта.
Principal Mapper построен с использованием библиотеки botocore и Python 3.5+. Principal Mapper также требует pydot (доступен через pip) и graphviz (доступен на Windows, macOS и Linux с https://graphviz.org/ ).
pip install principalmapper
Клонируйте репозиторий:
git clone [email protected]:nccgroup/PMapper.git
Затем установите с помощью Pip:
cd PMapper
pip install .
(После клонирования из исходного кода)
cd PMapper
docker build -t $TAG .
docker run -it $TAG
Вы можете использовать -e|--env или --env-file для передачи переменных окружения AWS_* для учетных данных при вызове docker run ..., или использовать -v для монтирования вашего каталога ~/.aws/ и использовать переменные окружения AWS_CONFIG_FILE и AWS_SHARED_CREDENTIALS_FILE.
Текущий Dockerfile должен поместить вас в оболочку с готовым к использованию pmapper -h, а также с уже установленным graphviz.
Смотрите страницу начала работы в вики для получения дополнительной информации о том, как использовать PMapper из командной строки. Также есть страницы с полными деталями всех функций командной строки и библиотечного кода.
Вот быстрый пример:
# 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 ...]
Обратите внимание на использование --profile, который должен работать так же, как в AWS CLI. Также последующие вызовы с query/argquery/visualize используют аргумент --account, который просто обходит проверку того, с каким аккаунтом работать (в противном случае PMapper делает API-вызов для определения этого).
Вот пример визуализации:

И снова при использовании --only-privesc:
100% приветствуется и ценится. Пожалуйста, координируйте через issues перед началом работы и направляйте pull-requests в текущую ветку разработки (обычно вида vX.Y.Z-dev).
Copyright (c) NCC Group и Erik Steringer 2019. Этот файл является частью Principal Mapper.
Principal Mapper — это свободное программное обеспечение: вы можете распространять и/или изменять
его в соответствии с условиями Стандартной общественной лицензии GNU Affero, опубликованной
Free Software Foundation, версии 3 Лицензии или (по вашему выбору) любой более поздней версии.
Principal Mapper распространяется в надежде, что он будет полезен,
но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; без подразумеваемой гарантии
КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Подробнее см.
в Стандартной общественной лицензии GNU Affero.
Вы должны были получить копию Стандартной общественной лицензии GNU Affero
вместе с Principal Mapper. Если нет, см. <https://www.gnu.org/licenses/>.