
Enumere as permissões associadas ao conjunto de credenciais da AWS
Encontrou um conjunto de credenciais AWS e não tem ideia de quais permissões ele pode ter?
$ ./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!
Agora você tem!
enumerate-iam.py tenta forçar todas as chamadas de API permitidas pela política IAM.
As chamadas realizadas por esta ferramenta são todas não destrutivas (apenas chamadas get* e list*
são realizadas).
git clone [email protected]:andresriancho/enumerate-iam.git
cd enumerate-iam/
pip install -r requirements.txt
Este software foi escrito para ser fácil de integrar com outras ferramentas, basta importar a função principal e fornecer os argumentos necessários:
from enumerate_iam.main import enumerate_iam
enumerate_iam(access_key,
secret_key,
session_token,
region)
A saída conterá todas as informações de permissões enumeradas em um dicionário Python.
Antes de escrever enumerate-iam.py eu tentei algumas que realizavam a mesma tarefa.
Decidi escrever a minha própria porque as outras:
As chamadas de API a serem realizadas durante a enumeração de permissões são armazenadas em
enumerate_iam/bruteforce_tests.py, um dict() Python que é gerado por
enumerate_iam/generate_bruteforce_tests.py usando a documentação da API
disponível na biblioteca aws-sdk-js.
A AWS lança novos serviços a cada trimestre, para garantir que esta ferramenta está encontrando todas as permissões existentes execute:
cd enumerate_iam/
git clone https://github.com/aws/aws-sdk-js.git
python generate_bruteforce_tests.py
rm -rf aws-sdk-js
Esta ferramenta foi lançada como parte da pesquisa Internet-Scale Analysis of AWS Cognito Security. Durante esta pesquisa a ferramenta cc-lambda também foi usada para extrair informações dos dados do Common Crawl.
O código inicial foi lançado neste gist e melhorado de várias maneiras: