
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 呼び出しをブルートフォースで試行します。
このツールが実行する呼び出しはすべて非破壊的です(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)
出力には、列挙されたすべての権限情報が Python の辞書として含まれます。
enumerate-iam.py を書く前に、同じタスクを実行するいくつかのツールを試しました。
自分で書くことにしたのは、他のツールが以下の理由によるものです:
権限列挙中に実行される API 呼び出しは enumerate_iam/bruteforce_tests.py に保存されています。これは Python の dict() であり、aws-sdk-js ライブラリで利用可能な API ドキュメントを使用して enumerate_iam/generate_bruteforce_tests.py によって生成されます。
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 の研究の一環として公開されました。この研究では、Common Crawl データから情報を抽出するために cc-lambda ツールも使用されました。
初期コードはこの gist で公開され、さまざまな方法で改善されました: