
AWS 자격 증명 세트와 연결된 권한을 열거합니다
AWS 자격 증명 세트를 발견했는데 어떤 권한을 가지고 있는지 전혀 모르겠다고요?
$ ./enumerate-iam.py --access-key AKIA... --secret-key StF0q...
2019-05-10 15:57:58,447 - 21345 - [INFO] Starting permission enumeration for access-key-id "AKIA..."
2019-05-10 15:58:01,532 - 21345 - [INFO] Run for the hills, get_account_authorization_details worked!
2019-05-10 15:58:01,537 - 21345 - [INFO] -- {
"RoleDetailList": [
{
"Tags": [],
"AssumeRolePolicyDocument": {
"Version": "2008-10-17",
"Statement": [
{
...
2019-05-10 15:58:26,709 - 21345 - [INFO] -- gamelift.list_builds() worked!
2019-05-10 15:58:26,850 - 21345 - [INFO] -- cloudformation.list_stack_sets() worked!
2019-05-10 15:58:26,982 - 21345 - [INFO] -- directconnect.describe_locations() worked!
2019-05-10 15:58:27,021 - 21345 - [INFO] -- gamelift.describe_matchmaking_rule_sets() worked!
2019-05-10 15:58:27,311 - 21345 - [INFO] -- sqs.list_queues() worked!
이제 알 수 있습니다!
enumerate-iam.py는 IAM 정책에서 허용하는 모든 API 호출을 무차별 대입(brute force)하려고 시도합니다.
이 도구가 수행하는 호출은 모두 비파괴적입니다(get* 및 list* 호출만 수행됩니다).
git clone [email protected]:andresriancho/enumerate-iam.git
cd enumerate-iam/
pip install -r requirements.txt
이 소프트웨어는 다른 도구와 쉽게 통합할 수 있도록 작성되었습니다. 메인 함수를 임포트하고 필요한 인수를 제공하기만 하면 됩니다:
from enumerate_iam.main import enumerate_iam
enumerate_iam(access_key,
secret_key,
session_token,
region)
출력에는 열거된 모든 권한 정보가 파이썬 딕셔너리로 포함됩니다.
enumerate-iam.py를 작성하기 전에 같은 작업을 수행하는 몇 가지 도구를 시도해 보았습니다.
직접 작성하기로 결정한 이유는 다른 도구들이 다음과 같은 문제가 있었기 때문입니다:
권한 열거 중에 수행할 API 호출은 enumerate_iam/bruteforce_tests.py에 저장되어 있으며, 이는 aws-sdk-js 라이브러리에서 사용 가능한 API 문서를 사용하여 enumerate_iam/generate_bruteforce_tests.py에 의해 생성되는 Python dict()입니다.
AWS는 분기마다 새로운 서비스를 출시하므로, 이 도구가 모든 기존 권한을 찾고 있는지 확인하려면 다음을 실행하세요:
cd enumerate_iam/
git clone https://github.com/aws/aws-sdk-js.git
python generate_bruteforce_tests.py
rm -rf aws-sdk-js
이 도구는 Internet-Scale Analysis of AWS Cognito Security 연구의 일환으로 공개되었습니다. 이 연구 중에 cc-lambda 도구도 Common Crawl 데이터에서 정보를 추출하는 데 사용되었습니다.
초기 코드는 이 gist에서 공개되었으며 여러 가지 방식으로 개선되었습니다: