
AWS में IAM अनुमतियों का त्वरित मूल्यांकन करने के लिए एक उपकरण।
प्रिंसिपल मैपर (PMapper) AWS खाते या AWS संगठन के लिए AWS पहचान और पहुंच प्रबंधन (IAM) के कॉन्फ़िगरेशन में जोखिमों की पहचान करने के लिए एक स्क्रिप्ट और लाइब्रेरी है। यह एक खाते में विभिन्न IAM उपयोगकर्ताओं और भूमिकाओं को एक निर्देशित ग्राफ के रूप में मॉडल करता है, जो विशेषाधिकार वृद्धि और हमलावर द्वारा AWS में किसी संसाधन या क्रिया तक पहुंच प्राप्त करने के लिए लिए जा सकने वाले वैकल्पिक पथों की जांच को सक्षम बनाता है।
PMapper में एक क्वेरी तंत्र शामिल है जो AWS के प्राधिकरण व्यवहार का स्थानीय अनुकरण का उपयोग करता है। यह निर्धारित करने के लिए एक क्वेरी चलाते समय कि क्या किसी प्रिंसिपल के पास किसी विशिष्ट क्रिया/संसाधन तक पहुंच है, PMapper यह भी जाँचता है कि क्या उपयोगकर्ता या भूमिका अन्य उपयोगकर्ताओं या भूमिकाओं तक पहुंच सकती है जिनके पास उस क्रिया/संसाधन तक पहुंच है। यह ऐसे परिदृश्यों को पकड़ता है जैसे जब किसी उपयोगकर्ता के पास S3 ऑब्जेक्ट पढ़ने की अनुमति नहीं है, लेकिन वह एक EC2 इंस्टेंस लॉन्च कर सकता है जो S3 ऑब्जेक्ट को पढ़ सकता है।
अतिरिक्त जानकारी प्रोजेक्ट विकी में पाई जा सकती है।
प्रिंसिपल मैपर botocore लाइब्रेरी और Python 3.5+ का उपयोग करके बनाया गया है। प्रिंसिपल मैपर को 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
आप क्रेडेंशियल्स के लिए AWS_* पर्यावरण चर पास करने के लिए docker run ... कॉल करते समय -e|--env या --env-file का उपयोग कर सकते हैं, या अपनी ~/.aws/ डायरेक्टरी को माउंट करने और AWS_CONFIG_FILE और AWS_SHARED_CREDENTIALS_FILE पर्यावरण चर का उपयोग करने के लिए -v का उपयोग कर सकते हैं। वर्तमान Dockerfile आपको एक शेल में डाल देगा जहां pmapper -h तैयार है और graphviz पहले से स्थापित है।
PMapper का उपयोग कमांड-लाइन के माध्यम से करने के तरीके के बारे में अधिक जानकारी के लिए विकी में Getting Started Page देखें। सभी कमांड-लाइन फ़ंक्शन और लाइब्रेरी कोड पर पूर्ण विवरण वाले पृष्ठ भी हैं।
यहाँ एक त्वरित उदाहरण है:
# 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 के माध्यम से समन्वय करें और पुल-रिक्वेस्ट को वर्तमान विकास शाखा (आमतौर पर vX.Y.Z-dev फॉर्म की) पर लक्षित करें।
Copyright (c) NCC Group and Erik Steringer 2019. This file is part of Principal Mapper.
Principal Mapper is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Principal Mapper is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Principal Mapper. If not, see <https://www.gnu.org/licenses/>.