Automatización de la destrucción de inquilinos de Entra ID con IA
May 21, 2026
La automatización del navegador asistida por IA puede convertir Microsoft Graph Explorer en una interfaz destructiva de administración de Entra ID cuando una cuenta iniciada ya tiene acceso privilegiado. Usando Claude para Chrome, JavaScript del lado del navegador y solicitudes por lotes de Microsoft Graph, se pueden automatizar acciones destructivas como la eliminación de usuarios, deshabilitación de cuentas, restablecimiento de contraseñas, revocación de sesiones y eliminación de políticas de Acceso Condicional directamente desde la sesión del navegador.
Cómo la IA puede automatizar la destrucción de un tenant de Entra ID mediante Microsoft Graph, Graph Explorer y automatización del lado del navegador
Este artículo demuestra cómo la automatización del navegador asistida por IA puede utilizarse para ejecutar operaciones destructivas de Microsoft Graph contra un tenant de Entra ID cuando la cuenta con sesión iniciada tiene los permisos requeridos.
Cómo la IA automatiza Graph Explorer para destruir un tenant de Entra ID
Microsoft Graph Explorer es una herramienta basada en navegador para enviar solicitudes a la API de Microsoft Graph contra un tenant de Entra ID. Normalmente, los administradores y desarrolladores la usan para probar llamadas a la API, revisar respuestas y entender qué permisos se requieren.
En este artículo, la uso para demostrar cómo el acceso a Microsoft Graph puede utilizarse para automatizar operaciones destructivas en un tenant y por qué esos mismos flujos de trabajo se vuelven peligrosos cuando se combinan con un asistente de IA capaz de controlar el navegador.
Ejemplos reales de destrucción de tenants
La destrucción de tenants ya no se limita al cifrado de servidores mediante ransomware. En marzo de 2026, Stryker reveló un ciberataque que afectó su entorno de Microsoft, y posteriormente Sygnia informó que el atacante utilizó Microsoft Intune para borrar infraestructura virtual interna, incluidos laptops, dispositivos móviles y servidores virtuales.
En agosto de 2025, Microsoft documentó que Storm-0501 utilizó técnicas de ransomware basadas en la nube después de desplazarse desde un entorno Active Directory on-premises hacia Entra ID. El actor obtuvo privilegios de Global Administrator, elevó el acceso a suscripciones de Azure y eliminó datos y recursos de respaldo en la nube para impedir la recuperación antes de exigir un rescate.
Uso de Claude para Chrome, Developer Tools y JavaScript del lado del navegador para automatizar acciones en Microsoft Graph
Claude para Chrome integra Claude directamente en el navegador, donde puede interactuar con páginas web, inspeccionar elementos de la interfaz y ayudar a ejecutar acciones mediante la misma experiencia que normalmente usaría un usuario de forma manual.
Cuando se combina con Chrome Developer Tools y JavaScript del lado del navegador, esto va más allá de simples prompts y permite automatizar flujos de trabajo dentro de Graph Explorer, incluidas operaciones destructivas de Microsoft Graph contra un tenant de Entra ID.
Requisitos previos
Reproduzca esto únicamente en un tenant de pruebas que le pertenezca y que esté dispuesto a perder. No ejecute operaciones destructivas de Graph en un tenant de producción ni en ningún entorno donde no tenga autorización explícita.
En este artículo, explico cómo utilicé Claude para Chrome para automatizar operaciones destructivas de Entra ID directamente dentro de Microsoft Graph Explorer, utilizando JavaScript del lado del navegador para hacer que el flujo de trabajo fuera rápido y manos libres.
Antes de comenzar, abra Microsoft Graph Explorer en un navegador con una sesión activa de Global Administrator en su tenant de pruebas y mantenga Claude para Chrome abierto.
Ejecución de una destrucción controlada de tenant en un entorno de pruebas
Antes de modificar nada, le pedí a Claude que enumerara cuatro elementos al mismo tiempo: todos los miembros de roles de directorio, todos los registros de aplicaciones de Entra ID, todas las políticas de Conditional Access y todos los dispositivos registrados.
Lo que hizo esto tan rápido fue la forma en que Claude obtuvo el token de la API de Graph. En lugar de pedirme que lo copiara desde las herramientas de desarrollo del navegador, modificó la función nativa fetch del navegador mediante un pequeño interceptor.
window._originalFetch = window.fetch;
window.fetch = function (...args) {
const url = args[0];
const options = args[1] || {};
if (url.includes("graph.microsoft.com")) {
const auth = (options.headers || {})["Authorization"];
if (auth) {
window._capturedToken = auth;
}
}
return window._originalFetch.apply(this, args);
};
La siguiente vez que Graph Explorer realizó una llamada a la API, este interceptor capturó silenciosamente el token Bearer directamente desde los encabezados de la solicitud. Claude luego utilizó ese token para ejecutar simultáneamente las cuatro consultas de enumeración mediante Promise.all(), de modo que, en lugar de esperar a que cuatro llamadas independientes terminaran una tras otra, todas se ejecutaron en paralelo y los resultados regresaron casi de inmediato.
Para los roles de directorio específicamente, primero obtuvo la lista de roles activos y después recuperó simultáneamente los miembros de cada uno de los roles, en lugar de recorrerlos uno por uno. El resultado final fue un inventario completo del tenant en cuestión de segundos.
El token capturado inicialmente solo tenía scopes de lectura, por lo que cualquier operación de escritura o eliminación devolvía un error 403. Claude gestionó todo mediante la pestaña integrada Modify Permissions de Graph Explorer.
Para cada operación que requería un scope de permisos más elevado, Claude navegó en Graph Explorer hacia el endpoint correspondiente utilizando el método HTTP correcto, cambió a la pestaña Modify Permissions, que mostraba automáticamente los scopes requeridos, y seleccionó Consent.
Después de cada consentimiento, ejecutó nuevamente la acción Run Query para que Graph Explorer emitiera un nuevo token con los scopes actualizados, y luego volvió a capturarlo mediante el mismo interceptor. Los permisos autorizados fueron:
Application.ReadWrite.Allpara eliminar registros de aplicacionesPolicy.ReadWrite.ConditionalAccesspara eliminar políticas de Conditional AccessRoleManagement.ReadWrite.Directorypara eliminar cuentas de roles de directorioUser.DeleteRestore.Allpara eliminar cuentas de usuario
Con los permisos requeridos ya presentes en el token de acceso, Claude ejecutó un único bloque de JavaScript que realizó las acciones destructivas en paralelo. El mismo patrón se utilizó para cada tipo de objeto: obtener la lista completa, asignar cada objeto a una solicitud DELETE, ejecutar las solicitudes mediante Promise.all() y registrar el estado HTTP de cada respuesta.
Estos registros de auditoría de Entra ID muestran el proceso de limpieza ocurriendo en tiempo real. A las 8:06:19 AM, múltiples operaciones de eliminación se registraron como exitosas, incluidas la eliminación de dispositivos, aplicaciones y service principals.
Esta captura de pantalla muestra a Claude para Chrome generando el bloque de JavaScript del lado derecho, mientras que la misma lógica se ejecuta en Chrome Developer Tools dentro de la sesión de Graph Explorer. La salida de la consola muestra que el script encontró 2,551 usuarios, marcó 2,550 para eliminación, protegió 1 cuenta y luego comenzó a devolver respuestas 204 exitosas para las operaciones de eliminación.
Aquí se muestra la fase de eliminación de usuarios del flujo de trabajo. A las 8:14:05 AM, múltiples eventos Delete user fueron registrados bajo Core Directory y marcados como Success.
Como ejemplo, restauré parcialmente algunos de los usuarios eliminados, mientras que otros permanecieron en el contenedor de elementos eliminados. Luego utilicé Claude para automatizar la limpieza generando JavaScript del lado del navegador capaz de eliminar permanentemente los usuarios eliminados restantes directamente desde la sesión del navegador.
Estos registros de auditoría muestran la etapa de eliminación permanente. Entra ID registró múltiples eventos Hard Delete user bajo Core Directory y UserManagement, todos marcados como Success. Esto es diferente de la etapa anterior de eliminación lógica (soft-delete). Estos usuarios fueron eliminados del contenedor de elementos eliminados, lo que significa que ya no podían recuperarse mediante el flujo normal de restauración de Entra ID.
Bloqueo total del tenant
Un bloqueo total de tenant ocurre cuando una organización pierde el acceso administrativo a su tenant de Microsoft 365 o Entra ID. Esto puede suceder cuando todas las cuentas de Global Administrator o equivalentes son eliminadas, deshabilitadas, bloqueadas por una política defectuosa de Conditional Access o protegidas por configuraciones MFA que ya nadie puede satisfacer. En ese punto, el tenant puede seguir existiendo, pero la organización ya no puede administrar usuarios, aplicaciones, políticas, dispositivos ni configuraciones de recuperación.
En lugar de eliminar objetos del tenant, este siguiente flujo de trabajo se enfoca en bloquear el tenant mediante el restablecimiento de contraseñas de usuarios, la revocación de sesiones activas y la deshabilitación de todas las cuentas.
Internamente, Claude utilizó el mismo token de acceso del lado del navegador obtenido desde la sesión de Graph Explorer y construyó solicitudes $batch de Microsoft Graph directamente desde el navegador. En lugar de enviar manualmente una solicitud por usuario, agrupó usuarios en lotes de 20 y ejecutó tres operaciones batch por grupo: una para restablecer la contraseña, otra para revocar sesiones activas de inicio de sesión y otra para deshabilitar la cuenta.
Cada lote se envió a https://graph.microsoft.com/v1.0/$batch utilizando el token capturado en el encabezado Authorization. Esto permitió que el flujo de trabajo se ejecutara de forma rápida y repetitiva desde el navegador, mientras Graph procesaba masivamente las acciones de bloqueo de cuentas.
Los registros de auditoría muestran la etapa de deshabilitación de cuentas reflejada en Entra ID. Múltiples usuarios fueron deshabilitados dentro de una misma ventana de tiempo muy corta, y cada evento fue registrado bajo Core Directory con estado Success. Esto confirma que el flujo de bloqueo realizó cambios reales en el tenant de pruebas.
Esto muestra una actualización masiva del timestamp StsRefreshTokenValidFrom en múltiples cuentas de usuario dentro de una ventana de tiempo muy corta. Esta actividad se actualiza cuando se ejecuta la acción Revoke Refresh Tokens, que invalida todos los refresh tokens existentes para los usuarios afectados y fuerza una nueva autenticación.
Conclusión
Este ejemplo demuestra lo poco que se necesita una vez que los permisos adecuados ya están disponibles. Con únicamente un navegador, Graph Explorer, un asistente de IA basado en navegador y JavaScript del lado del navegador, fue posible automatizar operaciones destructivas de Entra ID sin desarrollar una herramienta independiente, compilar código ni ejecutar scripts externos.
Lo importante no es que la IA haya creado una nueva vía de ataque por sí sola. El verdadero riesgo es que la IA hace que los flujos de trabajo administrativos existentes sean más rápidos, más fáciles de encadenar y más sencillos de ejecutar desde el navegador.
El JavaScript del lado del navegador actuó como la capa de automatización, transformando acciones manuales de Graph Explorer en llamadas repetibles a la API que podían ejecutarse en paralelo. El descubrimiento de permisos, el consentimiento, la actualización de tokens, las solicitudes a Graph, el procesamiento por lotes, la eliminación de objetos, el restablecimiento de contraseñas, la revocación de sesiones y la deshabilitación de cuentas podían ejecutarse desde la misma sesión del navegador.
Compartir en
Aprende más
Acerca del autor
Huy Kha
Director de Investigación de Seguridad
Aprende más sobre este tema
ESC9 vs. ESC16: misma falla, diferente radio de impacto
De la auditoría reactiva a la gobernanza proactiva: la importancia de una verdadera plataforma de seguridad de datos
ESC8 sigue siendo el hallazgo más común de AD CS que vemos
¿Qué es la exfiltración de datos? Cómo la IA acelera el robo de datos y cómo reducir lo expuesto
Microsoft RAMP se detiene en el límite de su autoridad certificadora