
Una herramienta de línea de comandos para enumerar organizaciones de Azure DevOps mediante un token de acceso personal (PAT). Consulta la API REST de Azure DevOps para exponer proyectos, repositorios, conexiones de servicio, compilaciones, artefactos de compilación y ajustes de seguridad, algo útil durante evaluaciones de seguridad autorizadas de entornos ADO.
De alcance similar a ADOKit. Diferencias clave: está implementado en Python, lo que lo hace más portable; se centra en la enumeración de solo lectura y permite enumerar permisos.
Azure DevOps enumeration tool — projects, repositories, service connections, and more.
positional arguments:
{projects,repos,service-endpoints,builds,build-logs,search-code,enumerate,permissions,whoami,pipeline-vars,pipeline-secrets,variable-groups,secure-files,approvals-checks,branch-policies,build-artifacts}
projects List projects in the organisation.
repos List git repositories in the organisation.
service-endpoints Enumerate service connections.
builds List builds for projects.
build-logs Download build logs.
search-code Search for code across repositories.
enumerate Enumerate current logged in user, repos, service connections, and projects.
permissions List groups, security namespaces, and ACL permissions.
whoami Identify the authenticated user and list their group memberships.
pipeline-vars List all variables defined in build pipelines.
pipeline-secrets List secret variable names defined in build pipelines.
variable-groups List variables defined in variable groups.
secure-files List secure files registered in projects.
approvals-checks Enumerate approvals and checks for protected pipeline resources.
branch-policies Enumerate branch policies for a repository.
build-artifacts List and download build artifacts.
options:
-h, --help show this help message and exit
--org ORG Azure DevOps organisation name (e.g. myorg)
--pat PAT Personal Access Token. If omitted, reads AZURE_DEVOPS_PAT or ADO_PAT environment variable.
-k, --insecure Disable TLS verification (useful with intercepting proxies).
pip install git+https://github.com/ReversecLabs/azuredevops-enum.git
Después de la instalación, el comando ado-enum está disponible en tu PATH.
git clone https://github.com/ReversecLabs/azuredevops-enum.git
cd ado-enum
pip install .
O sin instalar (ejecutar directamente):
pip install -r requirements.txt
python ado_enum.py --help
Proporciona tu PAT mediante la bandera --pat o una variable de entorno:
export AZURE_DEVOPS_PAT=<your-pat>
# or
export ADO_PAT=<your-pat>
ado-enum --org <ORG> [--pat <PAT>] [-k] <command> [options]
projects — listar proyectosado-enum --org myorg projects
ado-enum --org myorg projects --json
repos — listar repositoriosado-enum --org myorg repos
ado-enum --org myorg repos --json
service-endpoints — enumerar conexiones de servicioado-enum --org myorg service-endpoints
ado-enum --org myorg service-endpoints --project "MyProject"
ado-enum --org myorg service-endpoints --json
builds — listar compilacionesado-enum --org myorg builds
ado-enum --org myorg builds --project "MyProject"
build-logs — descargar registros de compilación# Download all logs across all projects
ado-enum --org myorg build-logs --output-dir ./logs
# Download logs for a specific build
ado-enum --org myorg build-logs --project "MyProject" --build-id 42 --output-dir ./logs
search-code — buscar código en los repositoriosRequiere que la extensión Code Search (ms.vss-code-search) esté instalada en la organización.
ado-enum --org myorg search-code "password"
ado-enum --org myorg search-code "connectionString"
La salida es JSON con las URL de los archivos coincidentes y las líneas que coincidieron.
enumerate — enumerar políticas de rama, comprobaciones y permisosado-enum --org myorg enumerate
ado-enum --org myorg enumerate --project "MyProject"
Genera tablas para:
permissions — listar grupos, espacios de nombres de seguridad y permisos ACL# List all groups and ACL permissions
ado-enum --org myorg permissions
# List groups scoped to a specific project
ado-enum --org myorg permissions --project "MyProject"
# List org-level groups only
ado-enum --org myorg permissions --org-level
# Show groups and permissions for a specific user
ado-enum --org myorg permissions --user "[email protected]"
# Show permissions for a specific group
ado-enum --org myorg permissions --group "Project Administrators"
Requiere que el PAT tenga los ámbitos Graph (read) e Identity (read) para la resolución completa de pertenencias a grupos y entradas ACL.
whoami — identificar al usuario autenticadoado-enum --org myorg whoami
Lee la cabecera x-vss-userdata para identificar al propietario del PAT y, a continuación, consulta la API Graph para resolver su nombre para mostrar, alias de directorio y pertenencias a grupos.
Requiere que el PAT tenga el ámbito Graph (read) para la resolución de pertenencias a grupos.
pipeline-vars — listar variables de pipelineado-enum --org myorg pipeline-vars
ado-enum --org myorg pipeline-vars --project "MyProject"
ado-enum --org myorg pipeline-vars --json
Lista todas las variables no secretas definidas en las definiciones de pipeline de compilación. Las variables secretas están excluidas; usa pipeline-secrets para enumerarlas.
pipeline-secrets — listar nombres de variables secretas de pipelineado-enum --org myorg pipeline-secrets
ado-enum --org myorg pipeline-secrets --project "MyProject"
ado-enum --org myorg pipeline-secrets --json
Lista las variables marcadas como isSecret en las definiciones de pipeline de compilación. La API no expone los valores, por lo que se muestran como [HIDDEN]; el comando muestra sus nombres, a qué pipeline pertenecen y en qué proyecto están.
variable-groups — listar el contenido de los grupos de variablesado-enum --org myorg variable-groups
ado-enum --org myorg variable-groups --project "MyProject"
ado-enum --org myorg variable-groups --json
Lista todas las variables almacenadas en grupos de variables de todos los proyectos. Las variables secretas dentro de los grupos se muestran con sus nombres y [HIDDEN] como valor.
secure-files — listar archivos segurosado-enum --org myorg secure-files
ado-enum --org myorg secure-files --project "MyProject"
ado-enum --org myorg secure-files --json
Lista los archivos seguros registrados en la biblioteca de ADO Pipelines. No se descarga el contenido de los archivos; el comando devuelve metadatos: nombre del archivo, ID, quién lo creó y cuándo.
approvals-checks — enumerar aprobaciones y comprobaciones para recursos protegidos# Enumerate all resource types across all projects
ado-enum --org myorg approvals-checks
# Enumerate a specific resource type
ado-enum --org myorg approvals-checks repositories
ado-enum --org myorg approvals-checks service-connections
# Limit to a specific project
ado-enum --org myorg approvals-checks --project "MyProject"
ado-enum --org myorg approvals-checks environments --project "MyProject"
# JSON output
ado-enum --org myorg approvals-checks --json
Tipos de recursos admitidos: agent-pools, environments, repositories, secure-files, service-connections, variable-groups. Cuando no se especifica un tipo de recurso, se enumeran todos los tipos.
branch-policies — enumerar políticas de rama para un repositorio# List all branch policies for a repository
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo"
# Filter to a specific branch
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --branch main
# JSON output
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --json
--project y --repository son obligatorios. --branch es opcional; sin él se devuelven todas las políticas del repositorio.
build-artifacts — listar y descargar artefactos de compilación# List all artefacts
ado-enum --org myorg build-artifacts
# Download all artefacts
ado-enum --org myorg build-artifacts --download
# Download all artefacts for a specific build
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 --download
# Download a named artefact
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 \
--download --artifact-name "drop" --output-dir ./artefacts
Usa -k para deshabilitar la verificación TLS al enrutar a través de un proxy de intercepción:
proxychains ado-enum --org myorg -k projects
O establece las variables de entorno HTTPS_PROXY / HTTP_PROXY — requests las respetará automáticamente.
| Opción | Descripción |
|---|
--org | Nombre de la organización (p. ej. myorg de https://dev.azure.com/myorg) |
--pat | Token PAT (o establece AZURE_DEVOPS_PAT / ADO_PAT) |
-k / --insecure | Deshabilita la verificación TLS (útil con proxies de intercepción) |