Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
AzureADEnumeration — Enumeración no autenticada de Microsoft Entra ID (Azure AD) | Kitploit
Herramientas/GitHubGitHub/logisek/azureadenumeration
Seguridad de Infraestructura en la NubeOSINT (Inteligencia de Fuentes Abiertas)ReconocimientoRecopilación de InformaciónPruebas de PenetraciónSeguridad en la NubeEnumeración de SubdominiosSeguridad de Correo ElectrónicoAnálisis de DNS
GitHublogisek/azureadenumeration

AzureADEnumeration

79526hace 7 mesesRevisado por Kitploit

Enumeración no autenticada de Microsoft Entra ID (Azure AD)

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
# Enumeración no autenticada de Microsoft Entra ID (Azure AD)

**Fuente:** EvilMist Toolkit - `Invoke-EntraEnum.ps1` - https://github.com/Logisek/EvilMist

---

## 1. Descubrimiento de tenant (-TenantInfo)

Descubre información del tenant mediante API públicas.

### 1.1 API azmap.dev

Recupera los detalles del tenant del servicio azmap.dev.

```bash
# Replace DOMAIN with target domain (e.g., example.com)
curl -s "https://azmap.dev/api/tenant?domain=DOMAIN&extract=true"
```

**La respuesta contiene:** `tenantId`, `displayName`, `countryCode`

### 1.2 Configuración de OpenID

Recupera la configuración de OpenID Connect, incluidos los extremos de token.

```bash
# Replace DOMAIN with target domain
curl -s "https://login.microsoftonline.com/DOMAIN/v2.0/.well-known/openid-configuration"
```

**La respuesta contiene:** `token_endpoint`, `authorization_endpoint`, `jwks_uri`, `issuer`

---

## 2. Información del realm del dominio (-DomainRealm)

Recupera el espacio de nombres del dominio y la configuración de federación.

```bash
# Replace DOMAIN with target domain
curl -s "https://login.microsoftonline.com/getuserrealm.srf?login=enum@DOMAIN&json=1"
```

**La respuesta contiene:**
- `NameSpaceType` - "Managed" o "Federated"
- `AuthURL` - URL de autenticación de federación (si está federado)
- `CloudInstanceName` - Instancia de nube (p. ej., "microsoftonline.com")
- `FederationBrandName` - Nombre de marca de la organización
- `DomainName` - Dominio verificado

---

## 3. Enumeración de usuarios mediante GetCredentialType (-UserEnum)

Comprueba si un usuario existe en Azure AD. Devuelve diferentes códigos según la existencia del usuario.

```bash
# Replace EMAIL with target email address
curl -s -X POST "https://login.microsoftonline.com/common/GetCredentialType" \
  -H "Content-Type: application/json" \
  -d '{
    "Username": "EMAIL",
    "isOtherIdpSupported": true,
    "checkPhones": false,
    "isRemoteNGCSupported": true,
    "isCookieBannerShown": false,
    "isFidoSupported": true,
    "originalRequest": "",
    "country": "US",
    "forceotclogin": false,
    "isExternalFederationDisallowed": false,
    "isRemoteConnectSupported": false,
    "federationFlags": 0,
    "isSignup": false,
    "flowToken": "",
    "isAccessPassSupported": true
  }'
```

**Códigos de IfExistsResult:**
- `0` = El usuario existe (IdP de Azure)
- `1` = El usuario no existe
- `2` = Solicitud no válida
- `4` = Error del servidor
- `5` = El usuario existe (IdP federado)
- `6` = El usuario existe (IdP externo no MS)

---

## 4. Reconocimiento DNS (-DnsEnum)

Consultas DNS de registros relacionados con Azure/M365. Use los comandos dig, nslookup u host.

### 4.1 Registros CNAME

```bash
# Main domain CNAME
dig CNAME DOMAIN

# Autodiscover CNAME
dig CNAME autodiscover.DOMAIN
dig CNAME lyncdiscover.DOMAIN
dig CNAME sip.DOMAIN
```

### 4.2 Registros TXT/SPF

```bash
dig TXT DOMAIN
```

### 4.3 Registros SRV

```bash
dig SRV _ldap._tcp.DOMAIN
dig SRV _kerberos._tcp.DOMAIN
dig SRV _autodiscover._tcp.DOMAIN
dig SRV _sip._tls.DOMAIN
dig SRV _sipfederationtls._tcp.DOMAIN
```

### 4.4 Registros MX

```bash
dig MX DOMAIN
```

---

## 5. Enumeración de usuarios de OneDrive (-OneDriveEnum)

**Completamente indetectable** - No se generan registros de auditoría.

Comprueba si un usuario existe sondeando la URL de su sitio personal de OneDrive.

```bash
# Replace TENANT with tenant name (e.g., example)
# Replace USERPATH with email formatted as: user_domain_com (@ and . replaced with _)
# Example: [email protected] becomes john_doe_example_com

curl -s -o /dev/null -w "%{http_code}" -I \
  "https://TENANT-my.sharepoint.com/personal/USERPATH/_layouts/15/onedrive.aspx"
```

**Códigos de estado:**
- `200` = El usuario existe, OneDrive accesible
- `401/403` = El usuario existe, acceso denegado
- `404` = El usuario no existe

### Ejemplo para el usuario [email protected]:

```bash
curl -s -o /dev/null -w "%{http_code}" -I \
  "https://example-my.sharepoint.com/personal/john_doe_example_com/_layouts/15/onedrive.aspx"
```

---

## 6. Metadatos de federación (-FederationMeta)

Recupera los metadatos de federación, incluidos los certificados de firma y los extremos de token.

```bash
# Replace DOMAIN with target domain
curl -s "https://login.microsoftonline.com/DOMAIN/FederationMetadata/2007-06/FederationMetadata.xml"
```

**La respuesta contiene (XML):**
- Identificador de entidad
- Certificados de firma X509
- Extremos de token
- Formatos NameID
- Tipos de claim
- Información del servidor ADFS (si está federado)

---

## 7. Detección de Seamless SSO (-SeamlessSSO)

Detecta si el SSO de escritorio (Seamless Single Sign-On) está habilitado.

### 7.1 Comprobar la configuración de SSO

```bash
# Replace DOMAIN with target domain
curl -s "https://login.microsoftonline.com/getuserrealm.srf?login=user@DOMAIN&json=1"
```

**Busque:** `DesktopSsoEnabled: true`

### 7.2 Probar el extremo Autologon (si el SSO está habilitado)

```bash
# Replace TENANT_ID with the tenant GUID
curl -s -o /dev/null -w "%{http_code}" \
  "https://autologon.microsoftazuread-sso.com/TENANT_ID/winauth/trust/2005/usernamemixed"
```

---

## 8. Enumeración de subdominios de Azure (-SubdomainEnum)

Descubre recursos de Azure asociados con un tenant. Usa resolución DNS.

### Subdominios principales de Azure para comprobar:

```bash
# Replace TENANT with tenant name

# Primary tenant domain
dig A TENANT.onmicrosoft.com

# SharePoint
dig A TENANT.sharepoint.com

# OneDrive
dig A TENANT-my.sharepoint.com

# Azure Blob Storage
dig A TENANT.blob.core.windows.net

# Azure Files
dig A TENANT.file.core.windows.net

# Azure Queue
dig A TENANT.queue.core.windows.net

# Azure Table
dig A TENANT.table.core.windows.net

# Key Vault
dig A TENANT.vault.azure.net

# Azure SQL
dig A TENANT.database.windows.net

# App Service
dig A TENANT.azurewebsites.net

# Kudu/Git Deployment
dig A TENANT.scm.azurewebsites.net

# Cloud Services
dig A TENANT.cloudapp.net
dig A TENANT.cloudapp.azure.com

# Exchange Online Protection
dig A TENANT.mail.protection.outlook.com

# Container Registry
dig A TENANT.azurecr.io

# Redis Cache
dig A TENANT.redis.cache.windows.net

# Service Bus
dig A TENANT.servicebus.windows.net

# Front Door
dig A TENANT.azurefd.net

# Azure AD B2C
dig A TENANT.b2clogin.com

# API Management
dig A TENANT.azure-api.net

# Traffic Manager
dig A TENANT.trafficmanager.net

# HDInsight
dig A TENANT.azurehdinsight.net

# Cosmos DB
dig A TENANT.documents.azure.com

# Cognitive Search
dig A TENANT.search.windows.net

# Cognitive Services
dig A TENANT.cognitiveservices.azure.com
```

### Ejemplos de permutaciones:

```bash
# Common suffixes: dev, prod, staging, test, uat, qa, backup, dr, api, app, web, data
dig A TENANTdev.blob.core.windows.net
dig A TENANTprod.azurewebsites.net
dig A TENANTstaging.vault.azure.net
```

---

## 9. Enumeración de Autodiscover V2 (-AutodiscoverEnum)

Comprueba la existencia del usuario mediante el extremo JSON de Autodiscover V2.

```bash
# Replace EMAIL with target email address
curl -s -o /dev/null -w "%{http_code}" -L --max-redirs 0 \
  "https://autodiscover-s.outlook.com/autodiscover/autodiscover.json?Email=EMAIL&Protocol=Autodiscoverv1"
```

**Códigos de estado:**
- `200` = El usuario existe
- `302` (redirección) = El usuario no existe
- `401/403` = El usuario existe (autenticación requerida)

---

## 10. Enumeración de Autodiscover V1 (-AutodiscoverV1Enum)

Extremo de Autodiscover heredado basado en XML para la enumeración de usuarios.

```bash
# Replace DOMAIN with target domain
# Replace EMAIL with target email address

curl -s -X POST "https://autodiscover.DOMAIN/autodiscover/autodiscover.xml" \
  -H "Content-Type: text/xml; charset=utf-8" \
  -d '<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
  <Request>
    <EMailAddress>EMAIL</EMailAddress>
    <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
  </Request>
</Autodiscover>'
```

**Indicadores de respuesta:**
- `RedirectAddr` en la respuesta = El usuario existe
- `RedirectUrl` en la respuesta = Puede indicar existencia
- `ErrorCode: InvalidUser` = El usuario no existe
- `ErrorCode: NoError` = El usuario existe

---

## 11. Sonda de Exchange Web Services (EWS) (-EwsProbe)

Sondea los extremos EWS en busca de exposición.

```bash
# Office 365 EWS endpoints
curl -s -o /dev/null -w "%{http_code}" \
  "https://outlook.office365.com/EWS/Exchange.asmx"

curl -s -o /dev/null -w "%{http_code}" \
  "https://outlook.office.com/EWS/Exchange.asmx"

# On-premises/custom domain endpoints
# Replace DOMAIN with target domain
curl -s -o /dev/null -w "%{http_code}" \
  "https://DOMAIN/EWS/Exchange.asmx"

curl -s -o /dev/null -w "%{http_code}" \
  "https://mail.DOMAIN/EWS/Exchange.asmx"

curl -s -o /dev/null -w "%{http_code}" \
  "https://ews.DOMAIN/EWS/Exchange.asmx"
```

**Códigos de estado que indican disponibilidad:**
- `200`, `301`, `302`, `307`, `308` = Disponible
- `401`, `403` = Disponible (autenticación requerida)
- `404` = No disponible

---

## 12. Descubrimiento de SharePoint/Teams (-SharePointEnum)

Descubre sitios de SharePoint y Teams.

```bash
# Replace TENANT with tenant name

# Tenant root
curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com"

# OneDrive root
curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT-my.sharepoint.com"

# Common site names to check
# Sites: intranet, portal, hr, finance, it, projects, marketing, sales, support, admin, security, dev

curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com/sites/intranet"

curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com/sites/portal"

curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com/sites/hr"

# Teams sites
curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com/teams/intranet"

curl -s -o /dev/null -w "%{http_code}" \
  "https://TENANT.sharepoint.com/teams/it"
```

**Códigos de estado:**
- `200` = El sitio existe y es accesible públicamente
- `401`, `403` = El sitio existe, autenticación requerida
- `301`, `302`, `307`, `308` = El sitio existe, redirigiendo
- `404` = El sitio no existe

---

## 13. Descubrimiento de Lync (-LyncProbe)

Sondea los extremos de descubrimiento de Lync.

```bash
# Replace DOMAIN with target domain

curl -s -o /dev/null -w "%{http_code}" \
  "https://lyncdiscover.DOMAIN"

curl -s -o /dev/null -w "%{http_code}" \
  "https://lyncdiscoverinternal.DOMAIN"

curl -s -o /dev/null -w "%{http_code}" \
  "https://sip.DOMAIN"
```

---

## 14. Enumeración mejorada de seguridad de correo (-MailEnum)

### 14.1 Registros DNS (use dig/nslookup)

```bash
# MX Records
dig MX DOMAIN

# SPF (TXT record)
dig TXT DOMAIN

# DMARC
dig TXT _dmarc.DOMAIN

# DKIM (common selectors)
dig TXT selector1._domainkey.DOMAIN  # Microsoft 365
dig TXT selector2._domainkey.DOMAIN  # Microsoft 365
dig TXT google._domainkey.DOMAIN     # Google Workspace
dig TXT default._domainkey.DOMAIN
dig TXT dkim._domainkey.DOMAIN
dig TXT mail._domainkey.DOMAIN
dig TXT k1._domainkey.DOMAIN         # Mailchimp
dig TXT s1._domainkey.DOMAIN
dig TXT s2._domainkey.DOMAIN

# MTA-STS
dig TXT _mta-sts.DOMAIN

# BIMI
dig TXT default._bimi.DOMAIN

# TLS-RPT
dig TXT _smtp._tls.DOMAIN
```

### 14.2 Política MTA-STS (HTTP)

```bash
# Replace DOMAIN with target domain
curl -s "https://mta-sts.DOMAIN/.well-known/mta-sts.txt"
```

---

## 15. Descubrimiento de recursos por ID de tenant (-TenantReverse)

Dado un ID de tenant, descubre los recursos asociados.

```bash
# Replace TENANT_ID with the tenant GUID

# OpenID Configuration (v2.0)
curl -s "https://login.microsoftonline.com/TENANT_ID/v2.0/.well-known/openid-configuration"

# OpenID Configuration (v1.0)
curl -s "https://login.microsoftonline.com/TENANT_ID/.well-known/openid-configuration"

# Graph Tenant Information (requires auth but reveals info in error)
curl -s "https://graph.microsoft.com/v1.0/tenantRelationships/findTenantInformationByTenantId(tenantId='TENANT_ID')"

# Device Code Endpoint
curl -s "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/devicecode"

# OAuth Authorize (reveals tenant branding)
curl -s "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize?client_id=00000000-0000-0000-0000-000000000000&response_type=code&scope=openid"
```

---

## 16. Sonda de configuración OAuth (-OAuthProbe)

Enumera la configuración OAuth mediante el análisis de los mensajes de error de IDs de aplicación conocidos.

```bash
# Replace TENANT with tenant ID or domain

# Well-known Microsoft Application IDs to test:

# Microsoft Graph
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000003-0000-0000-c000-000000000000&response_type=code&scope=openid"

# Azure AD Graph (Deprecated)
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000002-0000-0000-c000-000000000000&response_type=code&scope=openid"

# Office 365 Exchange Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000002-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"

# Office 365 SharePoint Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000003-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"

# Skype for Business Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000004-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"

# Azure Service Management API
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=797f4846-ba00-4fd7-ba43-dac1f8f63013&response_type=code&scope=openid"

# Microsoft Azure PowerShell
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=1950a258-227b-4e31-a9cf-717495945fc2&response_type=code&scope=openid"

# Microsoft Azure CLI
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&response_type=code&scope=openid"

# Microsoft Office
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=d3590ed6-52b3-4102-aeff-aad2292ab01c&response_type=code&scope=openid"

# Microsoft Teams
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=1fec8e78-bce4-4aaf-ab1b-5451cc387264&response_type=code&scope=openid"

# Microsoft Planner
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=9bc3ab49-b65d-410a-85ad-de819febfddc&response_type=code&scope=openid"

# Microsoft Graph Command Line Tools
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=de8bc8b5-d9f9-48b1-a8ad-b748da725064&response_type=code&scope=openid"

# Azure Portal
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c&response_type=code&scope=openid"

# Microsoft App Access Panel
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=0000000c-0000-0000-c000-000000000000&response_type=code&scope=openid"

# Microsoft Outlook
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=5d661950-3475-41cd-a2c3-d671a3162bc1&response_type=code&scope=openid"

# Microsoft OneDrive
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=eb1cec80-a830-486e-b45b-f57094f163f9&response_type=code&scope=openid"

# SharePoint Online Client
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=57fb890c-0dab-4253-a5e0-7188c88b2bb4&response_type=code&scope=openid"
```

**Códigos de error AADSTS a analizar:**
- `AADSTS700016` = Aplicación no encontrada en el directorio
- `AADSTS650057` = Recurso no válido (la aplicación existe, pero hay un problema de configuración)
- `AADSTS65001` = Se requiere consentimiento del usuario o administrador (la aplicación existe)
- `AADSTS50011` = La URL de respuesta no coincide (la aplicación existe)
- `AADSTS90002` = Tenant no encontrado

---

## Referencia rápida: resumen de todos los extremos

| Método | Extremo | Método HTTP |
|--------|----------|-------------|
| Información del tenant | `https://azmap.dev/api/tenant?domain={domain}&extract=true` | GET |
| Configuración de OpenID | `https://login.microsoftonline.com/{domain}/v2.0/.well-known/openid-configuration` | GET |
| Realm del dominio | `https://login.microsoftonline.com/getuserrealm.srf?login=user@{domain}&json=1` | GET |
| Enumeración de usuarios | `https://login.microsoftonline.com/common/GetCredentialType` | POST |
| Enumeración de OneDrive | `https://{tenant}-my.sharepoint.com/personal/{user_path}/_layouts/15/onedrive.aspx` | HEAD |
| Metadatos de federación | `https://login.microsoftonline.com/{domain}/FederationMetadata/2007-06/FederationMetadata.xml` | GET |
| Autologon | `https://autologon.microsoftazuread-sso.com/{tenant_id}/winauth/trust/2005/usernamemixed` | GET |
| Autodiscover V2 | `https://autodiscover-s.outlook.com/autodiscover/autodiscover.json?Email={email}&Protocol=Autodiscoverv1` | GET |
| Autodiscover V1 | `https://autodiscover.{domain}/autodiscover/autodiscover.xml` | POST |
| EWS | `https://outlook.office365.com/EWS/Exchange.asmx` | GET |
| SharePoint | `https://{tenant}.sharepoint.com/sites/{site}` | GET |
| Lync | `https://lyncdiscover.{domain}` | GET |
| Política MTA-STS | `https://mta-sts.{domain}/.well-known/mta-sts.txt` | GET |
| Sonda OAuth | `https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?client_id={app_id}&response_type=code&scope=openid` | GET |

---

## Notas

- **No se requiere autenticación** para ninguna de estas solicitudes
- La enumeración de OneDrive es **completamente indetectable** (no se generan registros de auditoría)
- Utilice una limitación/retardos adecuados para evitar la limitación de frecuencia
- Algunos métodos pueden activar alertas en los sistemas de monitoreo de seguridad
- Asegúrese siempre de contar con la autorización adecuada antes de realizar la enumeración

---
Descargar herramienta