Puntos clave
Métodos para auditar y eliminar cuentas de administrador obsoletas en Active Directory
- Auditoría de administradores en el cloud: abre PowerShell como administrador, conéctate a Microsoft Graph, ejecuta el script de auditoría para listar las cuentas de administrador y sus últimos inicios de sesión, y después exporta las cuentas obsoletas (más de 30 días inactivas) y desactívalas o quítales los privilegios.
- Detección de administradores locales: usa PowerShell en los dispositivos Windows para listar todos los administradores locales, comprobar la hora del último inicio de sesión de cada usuario y desactivar o eliminar las cuentas con más de 30 días de inactividad; escala el proceso a todos los endpoints con tu RMM.
- Comprobaciones manuales de cuentas obsoletas: cuando PowerShell no esté disponible, ejecuta net localgroup administrators en CMD, revisa los últimos inicios de sesión en los registros de eventos de seguridad y utiliza herramientas de análisis del Registro o de la SAM para identificar cuentas de administrador ocultas o heredadas.
- Control de cuentas mediante GPO: usa las directivas de grupo para restringir quién puede ser administrador local, denegar el inicio de sesión a las cuentas obsoletas o de riesgo y configurar LAPS para rotar automáticamente las contraseñas de administrador local de forma periódica.
- Auditoría y limpieza automatizadas: activa el registro de transcripciones de PowerShell, programa auditorías periódicas desde tu RMM, desactiva automáticamente las cuentas obsoletas, archiva los registros de auditoría y configura alertas para la creación de administradores no autorizados.
Las cuentas de administrador obsoletas son vulnerabilidades de seguridad silenciosas: funcionan como puertas traseras abiertas para los atacantes en tu tenant de Microsoft 365 o en tu entorno híbrido. Estas cuentas privilegiadas olvidadas suelen quedar fuera de toda monitorización, aunque suponen riesgos graves de cumplimiento y de brecha de seguridad.
En esta guía aprenderás exactamente cómo encontrar cuentas obsoletas en Active Directory, auditarlas de forma eficiente e implementar una limpieza automatizada con PowerShell, Microsoft Graph y herramientas RMM para mantener un entorno seguro.
Elimina los accesos de administrador innecesarios para reforzar la seguridad y el cumplimiento.
Descubre las funciones de Gestión de Active Directory de NinjaOne.
Procedimientos para encontrar y limpiar cuentas obsoletas en Active Directory
Una cuenta de administrador obsoleta es cualquier identidad con privilegios sin actividad reciente: puede tratarse de administradores globales de Microsoft 365 o roles con privilegios que llevan más de 30 días sin inicios de sesión, de cuentas de administrador local de Windows 11 en dispositivos sin uso reciente, o de cuentas de servicio sin inicios de sesión interactivos ni documentación clara de propiedad.
Las cuentas de antiguos empleados que no se desaprovisionaron por completo también cuentan como cuentas obsoletas. Encontrar y limpiar estas cuentas de forma proactiva en Active Directory ayuda a prevenir brechas de seguridad y garantiza que tu entorno siga cumpliendo la normativa.
📌 Caso de uso: realiza esta limpieza durante las auditorías de seguridad trimestrales, después de la salida de empleados o cuando prepares informes de cumplimiento, como una revisión de 30 días de cuentas inactivas de Office 365. Lo ideal son comprobaciones mensuales para detectar riesgos a tiempo, sobre todo al generar informes de usuarios inactivos.
📌 Requisitos previos: antes de empezar, asegúrate de tener acceso de administrador a todos los tenants de Microsoft 365, los módulos de PowerShell (como Microsoft Graph y AzureAD/MSOnline), los registros de auditoría de Microsoft Entra activados y herramientas de administración local para las comprobaciones en endpoints. Para la automatización, aprovecha tu plataforma RMM (por ejemplo, NinjaOne) y centraliza los escaneos y la aplicación de políticas.
Te recomendamos revisar ⚠️ Aspectos a tener en cuenta antes de continuar.
📌 Estrategias de despliegue recomendadas:
Método 1: auditar administradores en el cloud con Microsoft Graph o AzureAD PowerShell
PowerShell te da acceso directo a los datos de actividad del cloud, por lo que es la vía más rápida para encontrar cuentas de administrador obsoletas.
📌 Casos de uso: realiza esta auditoría cada trimestre para las comprobaciones de cumplimiento, inmediatamente después del offboarding de un empleado o al preparar los informes mensuales de seguridad. Resulta especialmente útil cuando necesitas informes personalizados de 30 días de cuentas inactivas de Office 365 que las herramientas nativas no pueden generar.
Procedimiento paso a paso:
- Abre PowerShell (como administrador).
- Pulsa Win + X y selecciona Terminal de Windows (administrador).
- Ejecuta este script para conectarte a Microsoft Graph.
Connect-MgGraph -Scopes "Directory.Read.All", "AuditLog.Read.All"
- Autentícate cuando se te solicite.
- Lista todas las cuentas de administrador:
$admins = Get-MgRoleManagementDirectoryRoleAssignment |Where-Object { (Get-MgDirectoryRole -DirectoryRoleId $_.RoleDefinitionId).DisplayName -match "Admin" } |ForEach-Object { Get-MgUser -UserId $_.PrincipalId }
- Comprueba la fecha del último inicio de sesión.
$results = @()foreach ($admin in $admins) {$lastSignIn = Get-MgUserSignIn -UserId $admin.Id -All |Sort-Object CreatedDateTime -Descending |Select-Object -First 1$daysInactive = if ($lastSignIn) { (New-TimeSpan $lastSignIn.CreatedDateTime).Days } else { 999 }$results += [PSCustomObject]@{User = $admin.UserPrincipalNameLastSignIn = if ($lastSignIn) { $lastSignIn.CreatedDateTime } else { "Never" }DaysInactive= $daysInactiveRiskStatus = if ($daysInactive -ge 30) { "STALE" } else { "Active" }}}
- Una cuenta se considera obsoleta si han pasado 30 días o más desde el último inicio de sesión.
- Exporta las cuentas marcadas:
$results | Where-Object { $_.RiskStatus -eq "STALE" } |Export-Csv "C:\Audit\Stale_Admins_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
Al terminar la auditoría tendrás un archivo CSV con todas las cuentas de usuario obsoletas con privilegios de administrador que llevan inactivas 30 días o más. Desactiva de inmediato las cuentas de alto riesgo con PowerShell o el Centro de administración de Microsoft, quita los roles de administrador a los usuarios marcados, documenta los hallazgos en tu plataforma RMM y programa auditorías periódicas.
Método 2: identificar cuentas de administrador local en dispositivos Windows con PowerShell
Las cuentas de administrador local sin monitorización en dispositivos Windows son un objetivo prioritario para los atacantes. Este método permite configurar consultas directas a la base de datos SAM de Windows (sin dependencias del cloud).
📌 Casos de uso: realiza esta auditoría cada mes en todos los endpoints, especialmente tras la salida de empleados o durante los escaneos de vulnerabilidades. Es fundamental para identificar cuentas obsoletas con acceso local persistente que escapan a la monitorización del cloud.
Procedimiento paso a paso:
- En PowerShell (como administrador), ejecuta este script para listar los administradores locales de un dispositivo con Windows 11:
Get-LocalGroupMember -Group "Administrators" |Select-Object Name, PrincipalSource
- La salida debería distinguir las cuentas de dominio/cloud (AzureAD) de las locales.
- Comprueba la hora del último inicio de sesión:
Get-LocalUser |Where-Object {$_.Enabled -eq $true} |Select-Object Name, LastLogon
- Desactiva o elimina las cuentas obsoletas (más de 30 días inactivas):
Disable-LocalUser -Name "LegacyAdmin" # First disableRemove-LocalUser -Name "LegacyAdmin" # Then delete permanently
- Escala el proceso a todos los dispositivos con el script del RMM (por ejemplo, NinjaOne):
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty NameInvoke-Command -ComputerName $computers -ScriptBlock {Get-LocalUser | Where-Object {($_.LastLogon -lt (Get-Date).AddDays(-30)) -and($_.Name -ne "Administrator")} | Disable-LocalUser}
Tras la auditoría podrás identificar las cuentas de usuario locales obsoletas con derechos de administrador. Desactiva de inmediato las cuentas de alto riesgo, rota las contraseñas con LAPS (Local Administrator Password Solution), documéntalas en tu plataforma RMM con indicadores de riesgo y programa escaneos periódicos para evitar que aparezcan nuevas cuentas obsoletas.
Método 3: auditar con CMD y el Registro la persistencia de administradores locales
Cuando PowerShell no está disponible, estos métodos manuales pueden sacar a la luz cuentas obsoletas ocultas.
📌 Casos de uso: utilízalos para comprobaciones rápidas en dispositivos Windows 11 concretos durante la respuesta a incidentes o cuando el acceso a PowerShell esté restringido. Es la opción ideal para identificar cuentas obsoletas que eluden las herramientas automatizadas.
Procedimiento paso a paso:
- Lista los administradores locales desde el Símbolo del sistema (administrador).
- Busca Símbolo del sistema (administrador) en Buscar, en la barra de tareas.
- Ejecuta este comando:
net localgroup administrators
- La salida debería mostrar todos los usuarios con derechos de administrador en el dispositivo actual.
- Comprueba el último inicio de sesión de una cuenta concreta con este registro de eventos de seguridad:
wevtutil qe Security "/q:*[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='oldadmin']" /f:text /c:1
- Sustituye oldadmin por el nombre de usuario sospechoso. Este script mostrará el último inicio de sesión correcto.
- Comprobación manual del Registro (alternativa avanzada):
reg save HKLM\SAM sam.bakreg save HKLM\SYSTEM system.bak
- Usa visores SAM sin conexión (por ejemplo, SAMInsight) para analizar \SAM\Domains\Account\Users\Names.
⚠️ Advertencia: editar el Registro de forma incorrecta puede provocar una inestabilidad grave del sistema. Haz siempre una copia de seguridad del Registro o crea un punto de restauración del sistema antes de continuar. Consulta la sección ⚠️Aspectos a tener en cuenta para saber más.
Método 4: usar GPO para evitar la persistencia de administradores locales
Las GPO te dan un control centralizado para impedir que los atacantes abusen de las cuentas de administrador local obsoletas.
📌 Caso de uso: despliega esta configuración durante el endurecimiento inicial del entorno, después de identificar cuentas obsoletas o cuando te prepares para auditorías de cumplimiento (por ejemplo, SOC 2). Es clave para aplicar el mínimo privilegio a gran escala.
Procedimiento paso a paso:
- Restringe la pertenencia al grupo Administradores local.
- Abre el Editor de administración de directivas de grupo (gpedit.msc).
- Ve a Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Grupos restringidos.
- Añade el grupo Administradores y después define los miembros permitidos mediante:
DOMAIN\SecuredAdmins (Allowed admin group)
- Así evitas que usuarios no autorizados eleven privilegios.
- Deniega el inicio de sesión a las cuentas obsoletas o de riesgo.
- Ve a la misma GPO y después navega a: Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Directivas locales > Asignación de derechos de usuario.
- Modifica Denegar el inicio de sesión localmente:
DOMAIN\OldAdminDOMAIN\Contractor_2020
- Esto impide que las cuentas indicadas inicien sesión de forma interactiva.
- Aplica LAPS para la rotación de contraseñas.
- Instala LAPS en los controladores de dominio:
Install-WindowsFeature -Name "RSAT-AD-PowerShell"Install-Module LAPS -Force
- Configura la política de LAPS:
Configuración del equipo > Directivas > Plantillas administrativas > LAPSHabilita "Configuración de contraseña" y "Administración de contraseñas de cuentas locales"
Una vez implementado, en un plazo de 90 minutos (la siguiente actualización de GPO) las cuentas de usuario obsoletas perderán los derechos de administrador y el acceso de inicio de sesión, las contraseñas de administrador local se rotarán automáticamente cada 30 días mediante LAPS y la superficie de ataque se reducirá al bloquear los riesgos de pass-the-hash.
Método 5: automatizar y registrar el rastro de auditoría y la verificación de la limpieza
La automatización convierte la gestión de cuentas obsoletas en una medida de seguridad proactiva en lugar de una tarea reactiva.
📌 Casos de uso: implementa esto para mantener un cumplimiento continuo en entornos multitenant, sobre todo después de las auditorías iniciales o durante los ciclos mensuales de seguridad. Es imprescindible para los MSP que gestionan más de 100 endpoints.
Procedimiento paso a paso:
- Registra todas las acciones con PowerShell:
Start-Transcript -Path "C:\AuditLogs\$(Get-Date -Format 'yyyyMMdd').txt" -Append
- Ejecuta tu script de auditoría (por ejemplo, el del Método 1 o el 2)
Stop-Transcript
- Así se crean registros resistentes a manipulaciones para el cumplimiento.
- Programa las tareas en una plataforma RMM (por ejemplo, NinjaOne):
- Realiza auditorías mensuales de administradores.
- Usa el script de PowerShell del Método 1 para encontrar cuentas obsoletas
- Desactiva automáticamente las cuentas que lleven 30 días o más inactivas:
- Realiza auditorías mensuales de administradores.
$staleUsers = Import-Csv "C:\Audit\Stale_Admins.csv"$staleUsers | ForEach-Object {if ($_.DaysInactive -ge 30) {Set-MgUser -UserId $_.User -AccountEnabled:$false}}
- Exporta y archiva los informes:
Compress-Archive -Path "C:\AuditLogs\*.txt" -DestinationPath "\\NAS\Archives\StaleAdmins_$(Get-Date -Format 'yyyyMM').zip"
- Avisa cuando se incumplan las políticas:
- Envía un correo si se crea un nuevo administrador fuera del equipo de TI.
$newAdmin = Get-MgDirectoryRoleMember -DirectoryRoleId "role-id" |Where-Object { $_.CreatedDateTime -gt (Get-Date).AddHours(-1) }if ($newAdmin) {Send-MailMessage -To "[email protected]" -Subject "ALERT: Unauthorized Admin Created" -Body $newAdmin.UserPrincipalName}
Una vez automatizado, tu sistema marcará las cuentas de usuario obsoletas cada mes, desactivará las cuentas inactivas tras 30 días, archivará registros cifrados para el cumplimiento, avisará en tiempo real de los incumplimientos de política y generará informes para dirección desde los paneles del RMM.
⚠️ Aspectos a tener en cuenta
En esta sección se destacan los posibles problemas que conviene tener presentes al seguir esta guía.
| Riesgos | Posibles consecuencias | Soluciones |
| 1. Datos de inicio de sesión incoherentes | Falsos positivos que desactivan administradores activos | 1. Verifica que los registros de auditoría unificados están activados. 2. Ejecuta |
| 2. Fallo en la detección de administradores locales | Cuentas obsoletas que pasan desapercibidas en los endpoints | 1. Concede derechos de administrador al agente del RMM. 2. Usa |
| 3. Eliminación de una cuenta protegida | Interrupción de servicios críticos | 1. Comprueba el indicador msDS-ProtectedFromAccidentalDeletion.2. Valida la aplicación de la GPO con |
| 4. Errores de autenticación de la API de Graph | Fallos de los scripts durante la automatización | 1. Valida los ámbitos con Get-MgContext.2. Usa |
| 5. Corrupción del Registro | El sistema operativo se vuelve inestable y el arranque falla. | Haz una copia de seguridad del Registro* o crea un punto de restauración del sistema. *Abre el Editor del Registro (regedit) y selecciona Archivo > Exportar. Mira Cómo hacer una copia de seguridad del Registro de Windows y restaurarlo para más detalles. |
| 6. Aplicación excesiva de GPO | Bloqueo del acceso a todos los dispositivos | 1. Conserva la cuenta de emergencia en la GPO. 2. Revierte los cambios con |
| 7. Automatización demasiado agresiva | Desactivación masiva accidental de usuarios activos | 1. Añade un periodo de gracia de 72 horas en los scripts. 2. Restaura desde la papelera de reciclaje de Entra ID (hasta 30 días). |
Aspectos clave al auditar cuentas obsoletas
Equilibra la seguridad y la continuidad operativa con estas medidas de protección esenciales.
Cuentas de emergencia (break-glass)
Excluye siempre de la limpieza automatizada al menos una cuenta de administrador global por tenant (por ejemplo, [email protected]). Guarda las credenciales en un sobre sellado o en un gestor de contraseñas y verifícalas cada trimestre con:
Get-MgUser -UserId "[email protected]" | Select AccountEnabled
Esto evitará un bloqueo total en caso de configuraciones incorrectas o ataques de ransomware.
Privileged Identity Management (PIM)
Activa el acceso Just-in-Time en Microsoft Entra ID para eliminar los roles de administrador permanentes. Puedes hacerlo en Entra ID > Gobernanza de identidades > Acceso con privilegios, convirtiendo a los administradores en roles elegibles con límites de tiempo que requieren activación mediante MFA.
Integración de alertas
Conecta Microsoft Sentinel o Defender for Cloud Apps para detectar cuentas inactivas. Crea estas reglas de analytics:
SigninLogs| where TimeGenerated > ago(90d)| summarize LastLogin = max(TimeGenerated) by UserPrincipalName| where LastLogin < ago(30d)
Alertas por correo o SMS para los incumplimientos del informe de 30 días de cuentas inactivas de Office 365.
Cuentas de servicio
Etiqueta las cuentas no interactivas con el prefijo [SERVICE] y exclúyelas de las políticas estándar de inactividad:
Set-MgUser -UserId "svc_sqlbackup" -Department "ServiceAccount-Exempt"
La auditoría, mediante:
Get-MgUser -Filter "startsWith(Department,'ServiceAccount')"
Retención de los registros de auditoría
Amplía los registros de auditoría unificados a 365 días, lo que requiere una licencia Entra ID P2. Puedes comprobarlo en Portal de Azure > Microsoft Entra ID > Monitorización > Configuración de diagnóstico. Después, activa AuditLogs y SignInLogs con una retención de 1 año.
Cumplimiento: cumple los requisitos de FINRA y SOC 2 para localizar usuarios inactivos en O365.
Guía de inicio rápido
NinjaOne se integra con varias de las principales soluciones antivirus para mejorar la gestión de la seguridad y la detección de amenazas en los dispositivos gestionados. Estas son las principales integraciones de antivirus disponibles en NinjaOne:
1. Bitdefender GravityZone
- Ejecuta análisis antivirus directamente desde el panel de NinjaOne.
- Visualiza y soluciona amenazas como archivos en cuarentena, activos o bloqueados.
- Sincroniza los datos de amenazas entre NinjaOne y Bitdefender para tener actualizaciones en tiempo real.
2. SentinelOne
- Despliega políticas de SentinelOne a nivel de grupo para una gestión centralizada.
- Realiza análisis completos del disco y soluciona amenazas directamente desde NinjaOne.
- Monitoriza el estado del agente y consulta registros de actividad detallados.
3. Webroot
- Integra Webroot para el análisis y la remediación de amenazas en tiempo real.
- Consulta los resultados de los análisis y gestiona las amenazas desde la interfaz de NinjaOne.
4. CrowdStrike Falcon (EDR y EPP)
- Importa los datos de vulnerabilidades de CrowdStrike Spotlight para hacer un seguimiento centralizado.
- Activa la gestión de la exposición para identificar y mitigar riesgos.
Simplifica la gestión de Active Directory con la ayuda de NinjaOne
NinjaOne agiliza la auditoría de cuentas obsoletas con automatización integrada.
- Despliegue de scripts: automatiza las auditorías con PowerShell (métodos 1 y 2) en todos los tenants y endpoints.
- Detección de cuentas locales: analiza los dispositivos Windows 11 en busca de administradores no autorizados y marca las cuentas obsoletas en tiempo real.
- Informes programados: genera informes mensuales de 30 días de cuentas inactivas de Office 365 con exportaciones en un clic.
- Aplicación de políticas: aplica restricciones equivalentes a las GPO (método 4) para imponer el mínimo privilegio.
- Alertas: recibe avisos de nuevos administradores locales o de administradores globales con más de 30 días de inactividad.
- Líneas base de seguridad: aplica controles CIS/NIST para desactivar automáticamente las cuentas de alto riesgo.
Mejora la seguridad de Active Directory con un mayor control de las cuentas de administrador.
Protege tu entorno: encuentra las cuentas obsoletas en Active Directory
Auditar y eliminar las cuentas de administrador obsoletas es la base de la seguridad de las identidades, y esta guía te ofrece métodos probados para acabar con estos riesgos ocultos.
Al aplicar estas técnicas cerrarás las puertas traseras olvidadas que los atacantes pueden aprovechar y cumplirás exigencias normativas como SOC 2 o el RGPD. Empieza hoy mismo con tus auditorías mensuales para mantener un entorno seguro y listo para cualquier auditoría.
Temas relacionados
- Cómo limpiar Active Directory: buenas prácticas y consejos
- Cómo instalar e importar el módulo de Active Directory para PowerShell
- Cómo conectarse a Active Directory de forma remota y gestionar usuarios
- Copia de seguridad de Active Directory: visión general con ejemplos
- NinjaOne01 Monitorización de los cambios en los usuarios de Active Directory
