Idioma:
Microsoft expone las API a través de aplicaciones en Entra ID para permitir que las aplicaciones de terceros realicen acciones en Microsoft Entra ID, Microsoft 365 (O365), la nube de Azure, etc. Los “permisos de API” protegen el acceso a estas API, que solo deben estar a disposición de las entidades de servicio que los necesitan. La aprobación de permisos se denomina “asignación del rol de aplicación” o “concesión de consentimiento”.
Ciertos permisos de algunas API de Microsoft (consulte a continuación) pueden representar una amenaza grave a la totalidad del inquilino de Microsoft Entra, ya que una entidad de servicio con estos permisos se torna muy potente, a la vez que es más discreta que un usuario con un rol de administrador potente, como un administrador global. Si un atacante se aprovecha de esto, podría saltarse la autenticación multifactor (MFA) y resistir los restablecimientos de contraseña de los usuarios.
Los permisos, cuando son legítimos, aumentan la superficie de ataque del inquilino. Cuando no son legítimos, pueden tratarse de un intento malintencionado de aplicar el método de escalamiento de privilegios o de persistencia.
Hay dos tipos de permisos de API en Microsoft Entra ID, como se describe en la documentación de Microsoft Información general sobre los permisos y el consentimiento:
Los permisos de aplicación se usan por las aplicaciones que se ejecutan sin necesidad de que un usuario inicie sesión. Por ejemplo, las aplicaciones que se ejecutan como servicios en segundo plano o los demonios. Los permisos de aplicación pueden ser aceptados solo por un administrador.
Este indicador de exposición (IoE) solo informa acerca de las entidades de servicio, ya que los permisos de API solo se aplican a las entidades de servicio, no a los usuarios.
Este IoE hace un seguimiento de los siguientes permisos peligrosos que permiten acceder a Microsoft Graph API y la versión heredada de Azure AD Graph API:
AdministrativeUnit.ReadWrite.All
: permite a los atacantes quitar un Administrador global de una unidad administrativa de administración restringida (RMAU) para luego restablecer la contraseña si se combina con otros permisos.Application.ReadWrite.All
: permite a los atacantes inyectar credenciales de autenticación en aplicaciones con privilegios más elevados, lo que permite el acceso no autorizado hasta un Administrador global a través de la suplantación de identidad.Application.ReadWrite.OwnedBy
: es igual a Application.ReadWrite.All
, pero se aplica únicamente a las entidades de servicio que son propiedad de la entidad de servicio informada.AppRoleAssignment.ReadWrite.All
: permite a los atacantes otorgarse a sí mismos el permiso RoleManagement.ReadWrite.Directory
.DeviceManagementConfiguration.ReadWrite.All
: permite a los atacantes vulnerar dispositivos administrados por Intune mediante la implementación de scripts de administración malintencionados, tal como lo describe Mandiant en (In)tuned to Takeovers: Abusing Intune Permissions for Lateral Movement and Privilege Escalation in Entra ID Native Environments (texto en inglés). Esto puede permitir el escalamiento de privilegios hasta el Administrador global si un administrador usa un dispositivo administrado por Intune.DeviceManagementRBAC.ReadWrite.All
: permite a los atacantes asignar roles privilegiados de Intune a una cuenta que controlan, lo que les permite ejecutar comandos arbitrarios en dispositivos de Intune, como se describe en DeviceManagementConfiguration.ReadWrite.All
.Directory.ReadWrite.All
: permite a los atacantes agregarse a sí mismos como miembros de grupos a los que no se les pueden asignar roles, lo que les permitiría obtener privilegios en la nube de Azure. Esto puede permitirles obtener acceso adicional a los recursos de Azure, lo que puede llevar a un escalamiento de privilegios hasta el Administrador global en Entra ID (por ejemplo, a través de identidades administradas) o incluso a Administradores de dominio en Active Directory (por ejemplo, a través de VM de controlador de dominio alojadas en Azure).EntitlementManagement.ReadWrite.All
: permite a los atacantes actualizar la política de asignación de un paquete de acceso que otorga el rol Administrador global, lo que les permite solicitar el rol sin aprobación.Group.ReadWrite.All
: es igual a Directory.ReadWrite.All
GroupMember.ReadWrite.All
: es igual a Directory.ReadWrite.All
Organization.ReadWrite.All
: permite a los atacantes agregar un certificado raíz de confianza a Entra ID y autenticarse como cualquier usuario, incluidos aquellos asignados al Administrador global. Esto exige que la autenticación basada en certificados (CBA) esté habilitada o, si no lo está, el permiso Policy.ReadWrite.AuthenticationMethod
para habilitar la CBA de antemano.Policy.ReadWrite.AuthenticationMethod
: permite a los atacantes habilitar el método de autenticación Pase de acceso temporal (TAP), que es un requisito previo para explotar el permiso UserAuthenticationMethod.ReadWrite.All
cuando se combina con este. Como alternativa, permite a los atacantes habilitar la autenticación basada en certificados (CBA) para explotar el permiso Organization.ReadWrite.All
.Policy.ReadWrite.PermissionGrant
: permite a los atacantes crear una política de concesión de permisos para una entidad de servicio controlada, lo que otorga el permiso RoleManagement.ReadWrite.Directory
y habilita la explotación.PrivilegedAccess.ReadWrite.AzureADGroup
: permite a los atacantes agregar una cuenta de usuario controlada como miembro de un grupo asignado al rol Administrador global.PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup
: es igual a PrivilegedAccess.ReadWrite.AzureADGroup
.PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup
: permite a los atacantes hacer que una cuenta de usuario controlada sea elegible para un grupo asignado al rol Administrador global y luego activar la membresía para escalar privilegios.RoleAssignmentSchedule.ReadWrite.Directory
: permite a los atacantes asignar el rol Administrador global a una cuenta de usuario controlada mediante la creación de una asignación de rol de PIM activa.RoleEligibilitySchedule.ReadWrite.Directory
: permite a los atacantes hacer que una cuenta de usuario controlada sea elegible para el rol Administrador global y luego activarla para escalar privilegios.RoleManagement.ReadWrite.Directory
: permite a los atacantes elevarse a sí mismos hasta el rol Administrador global.RoleManagementPolicy.ReadWrite.AzureADGroup
: permite a los atacantes quitar asignaciones de roles de grupo y restricciones de activación, como requisitos de MFA o aprobación de administradores, para aprovechar PrivilegedAccess.ReadWrite.AzureADGroup
, PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup
o PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup
y seguir la misma ruta que esos permisos en un inquilino con configuraciones de PIM estrictas.RoleManagementPolicy.ReadWrite.Directory
: permite a los atacantes quitar asignaciones de roles de Entra y restricciones de activación, como requisitos de MFA o aprobación de administradores, para aprovechar RoleAssignmentSchedule.ReadWrite.Directory
o RoleEligibilitySchedule.ReadWrite.Directory
y seguir la misma ruta que esos permisos en un inquilino con configuraciones de PIM estrictas.User.DeleteRestore.All
: permite a los atacantes eliminar todas las cuentas de usuario del inquilino, por lo que deja de estar disponible, para luego exigir un rescate para restaurar una de las cuentas de emergencia. Si bien no permite el escalamiento hasta Administrador global, interrumpe el acceso.User.EnableDisableAccount.All
: permite a los atacantes deshabilitar todas las cuentas de usuario del inquilino, por lo que deja de estar disponible, para luego exigir un rescate para restaurar una de las cuentas de emergencia. Si bien no permite el escalamiento hasta Administrador global, interrumpe el acceso.User.ReadWrite.All
: permite a los atacantes editar propiedades confidenciales de una cuenta de usuario controlada, como “Id. de empleado” y “Departamento”, para convertirla en miembro de un grupo dinámico (consulte el IoE correspondiente) con permisos privilegiados de Azure asignados. Luego, pueden aprovechar los recursos de Azure para finalmente escalar hasta Administrador global.User-PasswordProfile.ReadWrite.All
: es igual a Directory.ReadWrite.All
UserAuthenticationMethod.ReadWrite.All
: permite a los atacantes generar un Pase de acceso temporal (TAP) y tomar el control de cualquier cuenta de usuario del inquilino. Si el TAP aún no está habilitado, deben combinar esto con Policy.ReadWrite.AuthenticationMethod
para habilitar el TAP como método de autenticación en el inquilino (consulte el IoE correspondiente).Este IoE también hace un seguimiento de este permiso peligroso de la API del “servicio de sincronización de Microsoft Entra AD”:
ADSynchronization.ReadWrite.All
: permite que los atacantes llamen a la API de sincronización sin documentar, lo que les permite modificar cuentas de usuario híbridas y restablecer sus contraseñas.Las aplicaciones legítimas con estos permisos peligrosos solicitan un acceso que puede ser excesivamente amplio. Esto también puede indicar un ataque de phishing denominado “concesión de consentimiento ilícito”, en el que un atacante logra obtener el consentimiento de un administrador.
De manera predeterminada, este IoE ignora las entidades de servicio deshabilitadas porque los atacantes no pueden usarlas de inmediato.
Referencias externas:
Para empezar, establezca si la entidad de servicio informada que tiene el permiso es legítima. Tenga en cuenta que, desde el punto de vista técnico, un ataque de phishing puede suplantar el nombre para mostrar. Si la entidad de servicio parece pertenecer a un proveedor de software conocido, pídale que confirme que el identificador de la aplicación informada le pertenece. Si la entidad de servicio es ilegítima y falsifica un nombre de aplicación conocido, debe llevar a cabo un análisis forense.
Los * permisos de aplicación siempre requieren el consentimiento del administrador. Capacite a estos administradores en la detección de aplicaciones sospechosas y permisos confidenciales, incluidos los permisos de aplicación para todo el inquilino. Esto debe formar parte de un esfuerzo más amplio de gobierno de las aplicaciones.
Además, Microsoft publicó dos guías sobre cómo llevar a cabo una investigación de la concesión de consentimiento de la aplicación y sobre la detección y corrección de concesiones de consentimiento ilícitas.
Asegúrese de quitar el permiso peligroso de la entidad de servicio (que se encuentra en el menú “Aplicaciones empresariales” del portal), en lugar de quitarlo de la aplicación (que se encuentra en el menú “Registros de aplicaciones”). Quitarlo de la aplicación solo elimina la solicitud de permiso y no afecta la asignación real del permiso.
En particular para el permiso DeviceManagementConfiguration.ReadWrite.All
, puede usar directivas de acceso para requerir varias aprobaciones administrativas. Este enfoque garantiza que la creación o la modificación de scripts de administración requieran la validación por parte de otra cuenta, lo que reduce el riesgo de que una única aplicación introduzca cambios malintencionados.
Finalmente, habilite los registros de actividad de Graph API para capturar información detallada sobre los eventos de Graph API, lo que ayudará a su SOC o SIEM a detectar actividades sospechosas o llevar a cabo investigaciones forenses en caso de ataque. Además, supervise los inicios de sesión de las entidades de servicio y configure alertas para comportamientos sospechosos, en particular para las entidades de servicio de alto riesgo señaladas aquí.
Nombre: Permisos de aplicación peligrosos que afectan al inquilino
Nombre en clave: DANGEROUS-APPLICATION-PERMISSIONS-AFFECTING-THE-TENANT
Gravedad: High
Tipo: Microsoft Entra ID Indicator of Exposure