
Сканирует конфигурации AWS IAM на наличие теневых администраторов, выявляя неправильно настроенные политики deny, которые не ограничивают действия пользователей в группах, что позволяет обнаруживать и устранять эскалацию привилегий.
Сканируйте вашу конфигурацию AWS IAM на наличие теневых администраторов (shadow admins) в AWS IAM на основе неверно настроенных политик deny, не влияющих на пользователей в группах, обнаруженных исследовательской группой безопасности Lightspin.
Инструмент обнаруживает неверные конфигурации в следующих объектах IAM:
Управляемые политики
Встраиваемые политики пользователей
Встраиваемые политики групп
Встраиваемые политики ролей
Логика оценки AWS IAM для политик deny, применяемых к группам, работает не так, как привыкли большинство инженеров по безопасности в других механизмах авторизации.
Предположим, что политика с ресурсом группы содержит явный запрет (deny). В этом случае она повлияет только на действия с группой, а не на действия пользователей, что открывает организации для неверных конфигураций и уязвимостей, если они предполагают, что процесс такой же, как, например, в Active Directory.
Пример уязвимой политики JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ProtectManagersByDeny",
"Effect": "Deny",
"Action": "*",
"Resource": "arn:aws:iam::123456789999:group/managers"
}
]
}
В этом примере политика должна запрещать любые действия IAM, выполняемые пользователями, группами или ролями, к которым эта политика прикреплена, в отношении группы с именем managers.
Дело в том, что простое действие IAM, такое как iam:ChangePassword, будет работать, поскольку политика deny неэффективна.
Ссылка на полный блог по исследованию безопасности
AWS IAM имеет четкое разделение между действиями над объектами пользователей и действиями над объектами групп.
Следующий список включает действия над объектами пользователей, которые инструмент сканирует в политиках deny, затрагивающих группы (кроме wildcard):
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
В этом выводе консоли мы видим, что наша политика deny 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: Определите всех соответствующих пользователей в поле resource вместо групп, чтобы избежать неэффективных действий 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.