ENTREGABLE DE MUESTRA · datos solo ilustrativos. Los nombres de organizaciones, direcciones IP, identificadores de suscripción/tenant y todos los demás identificadores son marcadores de posición ficticios (Contoso y los rangos de documentación RFC 5737) y no hacen referencia a ningún cliente ni infraestructura reales.
Fig. 01 · Exposición externa · v2 (posterior a la evaluación activa) thinsky.com

Resumen de exposición del cliente · Contoso Payments

Exposición externa, confirmada mediante pruebas directas.

v2 reemplaza a la v1 (solo pasiva) al añadir sondeo activo de las nueve IP públicas de Azure del cliente. Dos hallazgos escalaron a Crítico, cuatro servidores se confirmaron como correctamente endurecidos, y se resolvió cada resultado "ambiguo" de la v1.

Fecha de evaluación
2026-05-14
Método
Pasivo + activo
Alcance
9 IP públicas · entorno de Azure
Origen del escaneo activo
198.51.100.50
Ventana de escaneo
14:07–14:13 UTC−4
Cadena de herramientas
nmap 7.99 · dig 9.10 · openssl 3 · curl

Este informe es una evaluación de exposición — muestra al cliente lo que actualmente es visible y accesible desde la internet pública. No estima esfuerzo, no programa el trabajo de remediación ni compromete fechas. La secuencia, los responsables y el cronograma se definirán en un Statement of Work aparte.

§ 0 · Notas de cambios frente a la v1

De ambiguo a confirmado.

La v1 se construyó por completo a partir de fuentes de inteligencia de terceros (Shodan, RDAP, Mnemonic PassiveDNS, crt.sh) y se entregó con salvedades sobre lo que las fuentes pasivas no podían verificar. La v2 reemplaza a la v1 al añadir sondeo activo — paquetes enviados directamente desde la IP de origen del evaluador hacia las nueve IP del cliente dentro del alcance — resolviendo cada hallazgo "ambiguo" de la v1 en confirmado-negativo o confirmado-positivo.

ID v1 Severidad v1 Severidad v2 Por qué
INFRA-PORT-01-A
DCs puerto 53
Alto Crítico dig google.com @<DC> devolvió los flags qr rd ra + 6 registros A válidos de Google en ambos DCs. No están solo "expuestos en el puerto 53" — están respondiendo activamente a consultas DNS recursivas desde cualquier punto de la internet pública. Patrón de abuso de manual para reflectores de DDoS por amplificación de DNS.
INFRA-PORT-01-B
Puertos de diagnóstico del VPN GW
Medio Crítico El escaneo activo reveló que PIP1 (203.0.113.21) expone seis puertos — 7999, 8081, 8443, 10001, 10002, 20000 — no el único puerto 8081 que vio Shodan. Los seis responden con una página predeterminada de Windows Communication Foundation (WCF) servida por http.sys en modo kernel. PIP2 (203.0.113.22) expone solo el 8083. El par activo-activo no es equivalente.
INFRA-SHADOW-01
4 IP "sin información"
Bajo (ambiguo) Resuelto — limpio El escaneo TCP-connect de los 1000 puertos principales contra ACC-001, ADM-001, DBSvr-001, LANSvr-001 devolvió 999 filtrados + 0 abiertos. Los NSG están correctamente configurados para descartar por defecto en los cuatro. Trasladado a § 4 Lo que funciona.
INFRA-CLOUD-02
Bastion presente
Informativo Confirmado El handshake TLS activo confirmó que Bastion presta servicio en el puerto 443 con un despliegue Standard SKU de 2 instancias. Trasladado a § 4 Lo que funciona.
Aviso para el SOC
del cliente

Nueve IP escaneadas en paralelo desde una única IP de origen con la temporización nmap -T4 (~300 paquetes/seg en total). Si el cliente utiliza Microsoft Defender for Cloud, Sentinel o Azure Network Watcher con análisis de tráfico, las alertas deberían haberse disparado en la ventana 2026-05-14 14:07–14:13 UTC−4 con origen 198.51.100.50. Sin scripts de clase exploit. Sin scripts NSE de categoría de vulnerabilidades. Ningún servicio debería haberse visto interrumpido.

§ 1 · Resumen ejecutivo — para el CEO

Dos asuntos con la severidad más alta. Una notable buena noticia.

Dos problemas en Crítico. Cuatro servidores que el barrido pasivo no pudo caracterizar se confirmaron mediante pruebas directas como correctamente endurecidos — el firewall está haciendo su trabajo en los cuatro.

Crítico · #1

Sus controladores de dominio están funcionando como servidores DNS abiertos para toda la internet.

Esto ya no es una sospecha — confirmado mediante prueba directa. Le pedimos a DCSvr-001 y DCSvr-002 que resolvieran google.com por nosotros. Ambos lo hicieron y devolvieron las respuestas correctas. Este es el comportamiento exacto que los proyectos de mitigación de abuso de DNS (Spamhaus, Open Resolver Project, Shadowserver) rastrean a diario — sus IP terminarán en esas listas públicas en breve, si no lo están ya. Una vez listadas, los atacantes usarán sus servidores como un amplificador gratuito para atacar a terceros desde su dirección IP. Su factura de ancho de banda sube, la reputación de su IP se desploma y su propio correo saliente comienza a rebotar.

Crítico · #2

Su Azure VPN Gateway está filtrando una interfaz de gestión interna de Microsoft hacia la internet pública.

El escaneo activo encontró seis puertos inusuales en una de las dos IP públicas del gateway — los seis responden con una página del framework de servicios .NET de Microsoft. La otra IP pública muestra solo un puerto. Esto es muy atípico: se supone que las dos IP públicas de un par de VPN Gateway son funcionalmente idénticas. Microsoft es dueño y operador de este software (usted no puede cerrar los puertos directamente), pero puede — y debería — abrir un ticket de soporte con Microsoft presentando la evidencia y preguntando por qué el plano de gestión es accesible desde internet.

Panel de riesgos

Crítico 2 Debilidades específicas y explotables confirmadas mediante pruebas directas.
Alto 0
Medio 1 Debilidad significativa que amerita seguimiento.

Además, tres hallazgos positivos (postura de seguridad correctamente endurecida y confirmada) — véase § 4 Lo que funciona.

Lista de lectura

  1. Crítico   INFRA-PORT-01-A — Resolutor DNS recursivo abierto en ambos controladores de dominio. § 3.1
  2. Crítico   INFRA-PORT-01-B — Seis puertos de superficie WCF / .NET en la PIP1 del VPN Gateway. § 3.2
  3. Medio   INFRA-IP-01 — Dos de sus IP fueron usadas por otros clientes de Microsoft en el pasado reciente. § 3.3
  4. Lo que funciona — § 4

§ 2 · Resumen de hallazgos

Tres hallazgos — verificados contra nueve activos.

ID Severidad Título Activo
INFRA-PORT-01-A Crítico Resolutor DNS recursivo abierto — ambos controladores de dominio responden a consultas DNS desde internet 203.0.113.11 (DCSvr-001)
203.0.113.12 (DCSvr-002)
INFRA-PORT-01-B Crítico Stack de servicios Windows Communication Foundation accesible en seis puertos de la PIP1 del VPN Gateway; asimétrico respecto a PIP2 203.0.113.21 (AzureVPN-PIP1)
INFRA-IP-01 Medio Reciclaje de IP — dos IP públicas del cliente fueron usadas previamente por otros clientes de Microsoft 203.0.113.31 (ACC-001)
203.0.113.22 (AzureVPN-PIP2)

§ 3 · Hallazgos — detalle

Tres debilidades, cada una reproducible a partir de la evidencia citada.

§ 3.1 · INFRA-PORT-01-A Crítico

Resolutor DNS recursivo abierto en ambos controladores de dominio.

Estado. Escalado de Alto en la v1 (evidencia pasiva del puerto 53 abierto) a Crítico (confirmación activa del comportamiento de resolución recursiva).

Evidencia activa — DCSvr-001 (203.0.113.11)

$ dig +time=5 +tries=1 google.com A @203.0.113.11
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16318
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
google.com.   86  IN  A  172.253.122.101
google.com.   86  IN  A  172.253.122.113
google.com.   86  IN  A  172.253.122.100
google.com.   86  IN  A  172.253.122.139
google.com.   86  IN  A  172.253.122.102
google.com.   86  IN  A  172.253.122.138
;; Query time: 23 msec

Evidencia activa — DCSvr-002 (203.0.113.12)

$ dig +time=5 +tries=1 google.com A @203.0.113.12
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:
google.com.   120  IN  A  172.253.62.138    ... (5 more rows)
;; Query time: 28 msec

Prueba de recursión — subdominio aleatorio

Demuestra que el DC está recursando, no solo devolviendo una entrada en caché.

$ dig +time=5 +tries=1 a3f9b1c2d0e4f5a8.example.com A @203.0.113.11
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5635
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; Query time: 35 msec

Un servidor no recursivo habría devuelto REFUSED. Este servidor devolvió NOERROR con una sección AUTHORITY que apunta a la zona padre — lo que demuestra que recorrió la jerarquía DNS en nuestro nombre.

Por qué es crítico

Este es el patrón de manual del "resolutor recursivo abierto". Las IP serán detectadas por:

  • Open Resolver Project (openresolverproject.org) — lista pública, rastreada por atacantes.
  • Shadowserver — reportes diarios distribuidos a los propietarios de redes y a los CSIRT.
  • Spamhaus DROP / EDROP — si las IP se utilizan en amplificación, terminan aquí, y cualquier servidor de correo que use Spamhaus rechazará su correo saliente.
  • Botnets de amplificación de DNS — una vez en las listas, los atacantes dirigen a su IP consultas con IP de origen falsificada (UDP) que generan respuestas ANY de gran tamaño. Desde la perspectiva de la víctima, su IP es el origen del ataque; usted asume el consumo de ancho de banda.

Guía de remediación

  1. Primero, cree un snapshot.
    az snapshot create --resource-group <rg> --name DCSvr-001-pre-fix-$(date +%Y%m%d) --source <osdisk-id>
    az snapshot create --resource-group <rg> --name DCSvr-002-pre-fix-$(date +%Y%m%d) --source <osdisk-id>
  2. Identifique y reemplace las reglas NSG infractoras.

    En Azure Portal: cada VM de DC → Networking → Inbound port rules → busque cualquier regla con puerto de destino 53 y origen * / Internet / 0.0.0.0/0. Reemplácela por una regla que permita solo sus CIDR de confianza (oficina on-premises, pool de clientes VPN, VNet interna), y luego añada un Deny explícito sobre Internet→53 debajo de ella.

    $nsg = Get-AzNetworkSecurityGroup -ResourceGroupName <rg> -Name <nsg-of-DCSvr-001>
    $nsg | Set-AzNetworkSecurityRuleConfig -Name "Allow-DNS-Internal" -Access Allow `
      -Protocol "*" -Direction Inbound -Priority 100 `
      -SourceAddressPrefix @("10.0.0.0/8","172.16.0.0/12","<on-prem-CIDR>","<VPN-pool>") `
      -SourcePortRange "*" -DestinationAddressPrefix "*" -DestinationPortRange "53"
    $nsg | Set-AzNetworkSecurityRuleConfig -Name "Deny-DNS-Internet" -Access Deny `
      -Protocol "*" -Direction Inbound -Priority 110 `
      -SourceAddressPrefix "Internet" -SourcePortRange "*" `
      -DestinationAddressPrefix "*" -DestinationPortRange "53"
    $nsg | Set-AzNetworkSecurityGroup
    # Repetir para DCSvr-002
  3. Desactive la recursión para clientes no confiables en el propio DC (vía Bastion).
    # Opción drástica — desactiva la recursión por completo (úsela si ningún cliente hacia internet la necesita)
    Set-DnsServerRecursion -Enable $false
    
    # Opción moderada — mantiene la recursión pero solo para el ámbito confiable
    Set-DnsServerRecursionScope -Name "." -EnableRecursion $false
    Add-DnsServerRecursionScope -Name "InternalOnly" -EnableRecursion $true
    Set-DnsServerQueryResolutionPolicy -Name "InternalRecursion" `
      -Action ALLOW -ServerInterfaceIP "EQ,<DC-internal-IP>" `
      -ApplyOnRecursion -RecursionScope "InternalOnly"
    
    # Active siempre la lista global de bloqueo de consultas
    Set-DnsServerGlobalQueryBlockList -Enable $true -List "wpad","isatap"
  4. Verificación de parches.
    Get-HotFix | Where-Object { $_.HotFixID -eq 'KB4569509' }   # SIGRed
    Get-HotFix | Sort-Object InstalledOn -Descending | Select -First 5
  5. Verifique externamente.

    Vuelva a ejecutar desde cualquier host conectado a internet (o solicítelo al evaluador):

    dig +time=5 +tries=1 google.com A @203.0.113.11
    dig +time=5 +tries=1 google.com A @203.0.113.12

    Nuevo comportamiento esperado: conexión agotada por tiempo o REFUSED. Si el flag qr rd ra sigue apareciendo con filas de respuesta, el cambio no surtió efecto.

Opción arquitectónica
a largo plazo

Migre el DNS interno a Azure DNS Private Resolver. Los DCs pierden por completo su necesidad de IP públicas, cerrando esta clase de hallazgo de forma permanente.

§ 3.2 · INFRA-PORT-01-B Crítico

La PIP1 del VPN Gateway expone un stack de servicios Windows Communication Foundation en seis puertos.

Estado. Escalado de Medio en la v1 (un puerto de diagnóstico observado vía Shodan) a Crítico (seis puertos de superficie de servicios WCF / .NET confirmados mediante sondeo activo).

Evidencia activa — AzureVPN-PIP1 (203.0.113.21)

PORT      STATE SERVICE                          NOTES
7999/tcp  open  http (Microsoft-HTTPAPI/2.0)     WCF default page, "Endpoint not found"
8081/tcp  open  https (XML response, 1565 bytes) WCF service template (HTTP 200)
8443/tcp  open  https (Microsoft-HTTPAPI/2.0)    Valid TLS cert, ALPN h2/http1.1
                                                 Subject: 3a4b5c6d-4444-4d55-af66-3007b882cd10.gwt.cloudapp.net
                                                 Issuer:  CN=CCME G1 TLS RSA 2048 SHA256 2049 CUS CA 01
                                                 Valid:   2026-02-27 → 2027-02-23
                                                 Body:    "Windows® Communication Foundation service.
                                                          Metadata publishing for this service is currently disabled."
10001/tcp open  https (HTTP 200, 6437 bytes)     Same WCF body
10002/tcp open  https (HTTP 200, 6437 bytes)     Same WCF body
20000/tcp open  https (HTTP 200, 6437 bytes)     Same WCF body

Para comparar — PIP2 (203.0.113.22) muestra un puerto

PORT     STATE SERVICE
8083/tcp open  us-srv (closes connection on direct request, no banner)

La asimetría es la prueba concluyente

Ambas PIP están asociadas al mismo recurso de Azure VPN Gateway (3a4b5c6d-4444-4d55-af66-3007b882cd10). En un despliegue activo-activo de VPN Gateway, ambas PIP deberían ser funcionalmente equivalentes — misma superficie de servicios, mismo NSG, misma imagen de gateway. El hecho de que PIP1 exponga seis puertos de gestión/.NET y PIP2 exponga uno significa que ocurre alguna de estas situaciones:

  1. la imagen de gateway de Microsoft está configurada de forma asimétrica — una PIP es la de "gestión primaria" y la otra la de "tráfico de cliente", en contra de la documentación de Azure que dice que activo-activo significa equivalente.
  2. un NSG (suyo o de Microsoft) está filtrando PIP2 pero no PIP1.
  3. un evento de failover dejó a PIP1 en un estado diferente al de PIP2 — posiblemente atascada a mitad de una reconfiguración.

Cualquiera de estos escenarios es un caso de soporte con Microsoft.

Por qué es crítico

Seis puertos de superficie de servicios WCF en una IP pública de cara al cliente con Microsoft-HTTPAPI/2.0 en modo kernel (http.sys) por debajo:

  • Clase de CVE de http.sys. MS15-034 (CVE-2015-1635) es un RCE remoto previo a la autenticación en http.sys que afectó a todos los servidores Windows con un listener HTTP en modo kernel. Han aparecido CVE posteriores en la misma ruta de código (CVE-2021-31166, CVE-2022-21907). Seis listeners de http.sys expuestos son seis superficies de ataque.
  • CVE de deserialización de WCF. WCF tiene un largo historial de deserialización insegura (CVE-2020-0646 NetDataContractSerializer, entre varios otros). El cuerpo "Metadata publishing is currently disabled" es el valor predeterminado de WCF — no significa que los endpoints SOAP/REST subyacentes estén ausentes; significa que el intercambio de metadatos (el WSDL) está oculto. El servicio sigue escuchando.
  • Usted no puede aplicar el parche desde su lado. Se trata de la imagen del sistema operativo del appliance del gateway. Microsoft controla la cadencia de parches.
  • Posible configuración incorrecta gestionada por el cliente. Incluso si la intención de Microsoft es exponer solo los puertos documentados de IKE / IPsec, la asimetría entre PIP1 y PIP2 sugiere que algo de su lado o del de ellos difiere entre ambas — y le conviene investigar esa diferencia.

Guía de remediación

  1. Documente la asimetría en un caso de soporte de Azure.

    Título sugerido:

    Azure VPN Gateway PIPs 203.0.113.21 and 203.0.113.22 show asymmetric port exposure — PIP1 exposes ports 7999, 8081, 8443, 10001, 10002, 20000 (Microsoft-HTTPAPI/2.0 + WCF “Endpoint not found”); PIP2 exposes only 8083. Both are bound to the same gateway resource 3a4b5c6d-4444-4d55-af66-3007b882cd10. Please confirm: (a) is this asymmetry intended? (b) is the WCF management plane on PIP1 reachable from public internet by design or by misconfiguration? (c) confirm patch level of http.sys against MS15-034 / CVE-2021-31166 / CVE-2022-21907; (d) if not intended, how do we suppress?

    Adjunte: la salida de nmap, los detalles del certificado TLS del 8443, el cuerpo HTML devuelto por 7999 / 8081 / 10001 / 10002 / 20000 y el ID de este informe.

    Severidad en el esquema de clasificación de casos de Microsoft: B (Moderada) como mínimo; súbala a A (Crítica) si Microsoft se resiste o no responde de forma sustancial — la desalineación activo-activo también puede afectar el failover de la VPN, lo que constituye un riesgo de producción.

  2. Confirme el SKU del gateway y la antigüedad de la imagen.
    az network vnet-gateway show --resource-group <rg> --name <vpn-gw-name> \
      --query "{sku:sku, generation:vpnGatewayGeneration, type:gatewayType, vpnType:vpnType, activeActive:activeActive, enableBgp:enableBgp}"

    Aceptable: VpnGw1 en adelante, vpnGatewayGeneration: Generation2.
    No aceptable: Basic, Generation1. Si está en Basic, planifique una migración a VpnGw1AZ o superior (con redundancia de zona) — la migración provocará una breve regeneración de la imagen del gateway que también puede limpiar el estado asimétrico.

  3. Confirme el certificado.

    El certificado TLS del 8443 tiene fecha 2026-02-27 → 2027-02-23 y encadena a CCME G1 TLS RSA 2048 SHA256 2049 CUS CA 01 (Microsoft Cloud-Managed Endpoint). Es consistente con un gateway al que se le renovaron las claves recientemente. Si el certificado es anterior a un evento de mantenimiento conocido del Azure VPN Gateway de Microsoft, ese evento pudo haber reintroducido la exposición asimétrica — anote la fecha en el ticket de soporte.

  4. Control compensatorio.

    Su NSG de cliente no puede cerrar directamente los listeners del lado del gateway, pero puede documentar la exposición y vigilar los flow logs del NSG en la subred del gateway ante cualquier intento real de conexión a esos puertos. Si algo distinto de IP conocidas de Microsoft alcanza 7999 / 8081 / 8443 / 10001 / 10002 / 20000, escale.

§ 3.3 · INFRA-IP-01 Medio

Reciclaje de IP — dos IP del cliente fueron usadas previamente por otros clientes de Microsoft.

Dos de las IP públicas del cliente fueron usadas previamente por otros clientes de Microsoft Azure, según Mnemonic PassiveDNS:

  • 203.0.113.31 (actualmente etiquetada ACC-001) — históricamente pgflexserver0748291630551207.postgres.database.azure.com (vista por última vez 2023-08-20) y azuregateway-1a2b3c4d-0a0a-4bcc-85dd-966d1ee82d76-b7788c99d0e1.vpn.azure.com (vista por última vez 2020-10-15).
  • 203.0.113.22 (actualmente etiquetada AzureVPN-PIP2) — históricamente ext.quietmeadow-2b7c1d09.eastus.azurecontainerapps.io, scm.quietmeadow-2b7c1d09…, internal.quietmeadow-2b7c1d09… (vista por última vez 2024-10-25).

Por qué esto importa

Azure recicla las IP públicas entre distintos tenants. Cualquier lista de permitidos, URI de redirección OAuth, sonda de monitoreo, URL de callback o aplicación cliente con HSTS fijado que los tenants anteriores hayan configurado para apuntar a estas IP ahora está enviando tráfico a sus servidores. El riesgo es bidireccional: el tráfico entrante obsoleto de los socios de los tenants anteriores puede aparecer como falsos positivos en su monitoreo y, cuando eventualmente libere estas IP, el siguiente tenant recibirá el tráfico que estaba destinado a usted.

Confirmación parcial del escaneo activo

La superficie histórica de Postgres en 203.0.113.31 está cerrada (el puerto 5432 devolvió filtrado); la superficie HTTP histórica de ACA en 203.0.113.22 tampoco responde ya en 80 / 443. Así que los servicios de los tenants reciclados no son actualmente accesibles a través de las IP del cliente — pero las referencias de DNS / listas de permitidos de firewall en terceros aún pueden estar activas.

Guía de remediación

  1. Audite el comportamiento actual en las IP recicladas.

    Desde una VM dentro de la misma VNet (no toca la IP pública):

    Test-NetConnection -ComputerName <internal-ip-of-ACC-001> -Port 5432
    Test-NetConnection -ComputerName <internal-ip-of-AzureVPN-PIP2-VM> -Port 80
    Test-NetConnection -ComputerName <internal-ip-of-AzureVPN-PIP2-VM> -Port 443

    Cada uno debería dar TimedOut o reportar Blocked, salvo que esos servicios formen parte intencionalmente de su entorno.

  2. Use Azure Public IP Prefix para las IP que necesitan estabilidad.

    Cuando una IP realmente necesita sobrevivir a una sola VM (p. ej., para listas de permitidos de socios), asígnela desde un recurso Microsoft.Network/publicIPPrefixes para que el prefijo quede reservado a su suscripción y rotar la VM detrás de él no cambie la IP.

    az network public-ip prefix create \
      --resource-group <rg> --name contoso-stable-ips \
      --length 28 --location <region>
    az network public-ip create --resource-group <rg> --name contoso-app-pip1 \
      --public-ip-prefix contoso-stable-ips
  3. Documente el patrón de reciclaje en el runbook de DR.

    Al investigar cualquier tráfico inusual en estas IP, el ingeniero de guardia debe saber que primero tiene que revisar los datos históricos de Mnemonic PassiveDNS para descartar "tráfico obsoleto de un tenant anterior".

§ 4 · Lo que funciona — hallazgos positivos

Lo que no encontramos es tan importante como lo que sí.

Estos elementos se confirmaron como correctos mediante pruebas activas, o se confirmó que no constituyen exposición externa. Se enumeran para que el cliente tenga un panorama completo de su postura de seguridad.

§ 4.1 · antes INFRA-SHADOW-01 Resuelto

Cuatro VM del cliente están correctamente endurecidas.

El escaneo TCP-connect de los 1000 puertos principales contra las cuatro IP "sin información" devolvió 999 filtrados + 0 abiertos:

ACC-001    203.0.113.31  : Not shown: 999 filtered tcp ports (no-response)
ADM-001    203.0.113.32  : Not shown: 999 filtered tcp ports (no-response)
DBSvr-001  203.0.113.33 : Not shown: 999 filtered tcp ports (no-response)
LANSvr-001 203.0.113.34 : Not shown: 999 filtered tcp ports (no-response)

filtered (no closed) significa que el NSG descartó silenciosamente el paquete SYN — no se devolvió ningún TCP RST. Esta es la firma de manual de una regla de firewall con denegación por defecto. Su equipo hizo lo correcto al enrutar el acceso administrativo a través de Azure Bastion y no abrir agujeros individuales en cada VM.

Salvedades. nmap top-1000 cubre los 1000 puertos más comunes; un servicio asociado a un puerto inusual (p. ej., 33893, 18080) no habría sido sondeado. Los servicios UDP no se escanearon.

§ 4.2 · antes INFRA-CLOUD-02 Confirmado

Azure Bastion está implementado y prestando servicio correctamente.

Evidencia activa (203.0.113.41 = vNet-001-IPv4 = Azure Bastion):

PORT    STATE SERVICE  VERSION
443/tcp open  ssl/http Apache Tomcat (language: en)
| ssl-cert: Subject: commonName=bst-5e6f7a8b-5555-4e66-b077-4118c993de21.bastion.azure.com
|           organizationName=Microsoft Corporation, stateOrProvinceName=WA, countryName=US
| Subject Alternative Name:
|   DNS:bst-5e6f7a8b-5555-4e66-b077-4118c993de21.bastion.azure.com
|   DNS:bst-5e6f7a8b-5555-4e66-b077-4118c993de21-0.bastion.azure.com
|   DNS:bst-5e6f7a8b-5555-4e66-b077-4118c993de21-1.bastion.azure.com
| Not valid before: 2026-04-24T22:58:24
| Not valid after:  2026-11-08T22:58:24

Un solo puerto expuesto (443). Sin 80, sin 22, sin 3389. Certificado emitido por Microsoft. Despliegue de dos instancias confirmado por las entradas SAN -0 y -1 (mínimo de Standard SKU). El handshake TLS tuvo éxito.

Verificación recomendada (interna)

Confirme mediante Resource Graph que ningún NSG de VM permite * / Internet / 0.0.0.0/0 hacia los puertos de RDP / SSH / WinRM — Bastion debería ser la única vía:

resources
| where type =~ 'microsoft.network/networksecuritygroups'
| mv-expand sg=properties.securityRules
| where sg.properties.destinationPortRange in ('22','3389','5985','5986')
| where sg.properties.sourceAddressPrefix in ('*','Internet','0.0.0.0/0')
| where sg.properties.access =~ 'Allow'
| project nsg=name, rule=sg.name, ports=sg.properties.destinationPortRange,
          source=sg.properties.sourceAddressPrefix

Resultado esperado: cero filas.

§ 4.3

Sin TI en la sombra fuera de Microsoft Azure.

Las nueve IP dentro del alcance se confirmaron en Microsoft AS8075 mediante RDAP y RIPEstat. Sin proveedores de hosting de terceros, sin endpoints CDN inesperados, sin infraestructura fuera del tenancy de Azure (dentro de la lista de IP suministrada).

§ 4.4

Sin filtración de dominios propiedad del cliente vía Certificate Transparency.

La búsqueda por IP en crt.sh devolvió HTTP 404 para las nueve IP. Ningún certificado público contiene estas IP en sus Subject Alternative Names. El DNS inverso externo revela únicamente hostnames gestionados por Microsoft, no las etiquetas de rol del cliente — de modo que las convenciones de nombres internas (acc-001, dcsvr-001, etc.) no se filtran externamente.

§ 5 · Lo que las pruebas activas aún no pudieron verificar

Vacíos honestos. Expuestos en vez de insinuados.

  1. Si los endpoints WCF en la PIP1 del VPN GW aceptan llamadas SOAP / REST anónimas. Confirmamos que escuchan y devuelven la plantilla WCF "Endpoint not found". No enviamos sobres SOAP ni intentamos enumerar endpoints — eso cruza del reconocimiento a la explotación activa, que no estaba autorizada en el alcance de este trabajo. Se recomienda que Microsoft lo confirme.
  2. Servicios UDP en las nueve IP. El escaneo UDP desde una IP de origen residencial es lento y poco fiable; no se ejecutó. Especialmente relevante para IKE (UDP 500 / 4500) en los VPN GW y DNS (UDP 53) en los DCs.
  3. Nivel de parches de los DCs y de la imagen del VPN Gateway. La captura de banners no reveló la versión de Windows ni el nivel de parches. Solo verificación interna.
  4. Las cuatro VM endurecidas en los puertos 1001-65535. Podrían tener servicios en puertos como 33893 o similares. nmap top-1000 solo cubre los 1000 más comunes.
  5. Divulgación de la topología de AD. dig _ldap._tcp.dc._msdcs SRV @<DC> devolvió NXDOMAIN porque no tenemos el nombre de dominio de AD. Con el nombre de dominio suministrado, esta clase de consulta revelaría la topología del bosque.
  6. Postura de correo / dominio (SPF / DKIM / DMARC / MTA-STS / HSTS / CSP / CT). Fuera de alcance — no se suministraron dominios. Requiere el/los dominio(s) apex para una evaluación de seguimiento.
  7. Fugas de credenciales (HIBP, búsqueda de código en GitHub, sitios de paste). No se ejecutó — habría requerido el/los dominio(s) de correo del cliente.

§ 6 · Verificación posterior a la remediación

Una nueva prueba, tres puntos de comprobación.

Nueva prueba externa (evaluador o cliente) para confirmar que los hallazgos Críticos están cerrados.

# Debería agotar el tiempo o dar REFUSED:
dig google.com @203.0.113.11
dig google.com @203.0.113.12

# Debería mostrar todo cerrado/filtrado, O la respuesta de Microsoft debe quedar registrada en
# el runbook explicando por qué permanecen abiertos:
nmap -Pn -sT -p7999,8081,8443,10001,10002,20000,8083 203.0.113.21 203.0.113.22

# Nuevo escaneo de Shodan de las 9 IP:
for ip in 203.0.113.31 203.0.113.32 203.0.113.21 203.0.113.22 \
         203.0.113.33 203.0.113.11 203.0.113.12 \
         203.0.113.34 203.0.113.41; do
  curl -s "https://internetdb.shodan.io/$ip"
  echo
done

Programe el mismo barrido externo como parte de las operaciones de rutina para detectar regresiones.

§ 7 · Fuentes y procedencia de la evidencia

Cada hallazgo es reproducible a partir de la evidencia citada.

Fuentes pasivas · v1
  • Shodan InternetDB (internetdb.shodan.io) — 2026-05-14 13:37 UTC
  • RDAP vía rdap.org y rdap.arin.net — 2026-05-14 13:37–13:38 UTC
  • RIPEstat (stat.ripe.net) — 2026-05-14 13:38 UTC
  • Mnemonic PassiveDNS v3 (api.mnemonic.no/pdns/v3/) — 2026-05-14 13:37 UTC
  • crt.sh (crt.sh/?q=<ip>) — 2026-05-14 13:38 UTC
Fuentes activas · v2 (nuevas)
  • nmap 7.99 — TCP top-1000 + detección de versión + scripts NSE seguros, origen 198.51.100.50, objetivo = 9 IP del cliente, ventana 2026-05-14 14:07–14:13 UTC−4
  • dig 9.10.6 — sondeos de recursión DNS / versión / AD-SRV contra 203.0.113.11 y 203.0.113.12, misma ventana
  • openssl 3 (s_client) — handshake TLS contra 203.0.113.21:8443 y 203.0.113.41:443
  • curl — GET HTTP/1.1 + HTTP/2 contra 203.0.113.21 puertos 7999, 8081, 8443, 10001, 10002, 20000

Dos hallazgos Críticos, verificados. ¿Listo para remediar?

Snapshot, reemplazo de NSG, nueva prueba — los playbooks del §3 detallan cada paso. Involúcrenos en el barrido de verificación una vez aplicados los parches, y las inclusiones en las listas de Shodan / Spamhaus / Open Resolver Project se revertirán en su próximo rastreo.

Hable con un ingeniero de seguridad →

§ 8 · Lista de verificación para la aprobación del CISO

Ocho ítems. Cada uno, un punto de comprobación verificable.