
Enumera los permisos asociados con el conjunto de credenciales de AWS
¿Encontraste un conjunto de credenciales de AWS y no tienes idea de qué permisos podría tener?
$ ./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!
¡Ahora sí!
enumerate-iam.py intenta forzar por fuerza bruta todas las llamadas a la API permitidas por la política de IAM.
Las llamadas realizadas por esta herramienta son todas no destructivas (solo se realizan llamadas get* y list*).
git clone [email protected]:andresriancho/enumerate-iam.git
cd enumerate-iam/
pip install -r requirements.txt
Este software fue escrito para ser fácil de integrar con otras herramientas, solo importa la función principal y proporciona los argumentos requeridos:
from enumerate_iam.main import enumerate_iam
enumerate_iam(access_key,
secret_key,
session_token,
region)
La salida contendrá toda la información de permisos enumerados en un diccionario de Python.
Antes de escribir enumerate-iam.py probé algunas que realizaban la misma tarea.
Decidí escribir la mía propia porque las otras:
Las llamadas a la API que se realizarán durante la enumeración de permisos se almacenan en
enumerate_iam/bruteforce_tests.py, un dict() de Python que es generado por
enumerate_iam/generate_bruteforce_tests.py usando la documentación de la API
disponible en la librería aws-sdk-js.
AWS lanza nuevos servicios cada trimestre, para asegurarte de que esta herramienta encuentra todos los permisos existentes ejecuta:
cd enumerate_iam/
git clone https://github.com/aws/aws-sdk-js.git
python generate_bruteforce_tests.py
rm -rf aws-sdk-js
Esta herramienta fue publicada como parte de la investigación Internet-Scale Analysis of AWS Cognito Security. Durante esta investigación también se usó la herramienta cc-lambda para extraer información de los datos de Common Crawl.
El código inicial fue publicado en este gist y mejorado de múltiples formas: