
أداة لتقييم سريع لأذونات 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%. يُرجى التنسيق من خلال القضايا قبل البدء واستهداف طلبات السحب إلى فرع التطوير الحالي (عادةً من النموذج vX.Y.Z-dev).
حقوق الطبع والنشر © NCC Group وErik Steringer 2019. هذا الملف جزء من Principal Mapper.
Principal Mapper هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله
بموجب شروط رخصة GNU Affero General Public License كما نشرتها
Free Software Foundation، إما الإصدار 3 من الترخيص، أو
(حسب اختيارك) أي إصدار لاحق.
يتم توزيع Principal Mapper على أمل أن يكون مفيدًا،
ولكن دون أي ضمان؛ حتى دون الضمان الضمني لـ
القابلية للتسويق أو الملاءمة لغرض معين. راجع
GNU Affero General Public License لمزيد من التفاصيل.
يجب أن تكون قد تلقيت نسخة من رخصة GNU Affero General Public License
مع Principal Mapper. إذا لم يكن الأمر كذلك، فراجع <https://www.gnu.org/licenses/>.