/
/

Cómo auditar y eliminar cuentas de administrador obsoletas en varios tenants de Active Directory

por Team Ninja
How to Audit and Remove Stale Admin Accounts Across Tenants in Active Directory blog banner image

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

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:

Haz clic para elegir un método💻
Mejor para usuarios individuales
💻💻💻
Mejor para empresas
Método 1: auditar administradores en el cloud con Microsoft Graph o AzureAD PowerShell✓✓
Método 2: identificar cuentas de administrador local en dispositivos Windows con PowerShell✓
Método 3: auditar con CMD y el Registro la persistencia de administradores locales✓
Método 4: usar GPO para evitar la persistencia de administradores locales✓
Método 5: automatizar y registrar el rastro de auditoría y la verificación de la limpieza✓✓

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:

  1. Abre PowerShell (como administrador).
    • Pulsa Win + X y selecciona Terminal de Windows (administrador).
  2. Ejecuta este script para conectarte a Microsoft Graph.

Connect-MgGraph -Scopes "Directory.Read.All", "AuditLog.Read.All"

    • Autentícate cuando se te solicite.
  1. Lista todas las cuentas de administrador:

$admins = Get-MgRoleManagementDirectoryRoleAssignment |
Where-Object { (Get-MgDirectoryRole -DirectoryRoleId $_.RoleDefinitionId).DisplayName -match "Admin" } |
ForEach-Object { Get-MgUser -UserId $_.PrincipalId }

  1. 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.UserPrincipalName
LastSignIn = if ($lastSignIn) { $lastSignIn.CreatedDateTime } else { "Never" }
DaysInactive= $daysInactive
RiskStatus = 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.
  1. 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:

  1. 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.
  1. Comprueba la hora del último inicio de sesión:

Get-LocalUser |
Where-Object {$_.Enabled -eq $true} |
Select-Object Name, LastLogon

  1. Desactiva o elimina las cuentas obsoletas (más de 30 días inactivas):

Disable-LocalUser -Name "LegacyAdmin" # First disable
Remove-LocalUser -Name "LegacyAdmin" # Then delete permanently

  1. Escala el proceso a todos los dispositivos con el script del RMM (por ejemplo, NinjaOne):

$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
Invoke-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:

  1. 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.
  1. 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.
  1. Comprobación manual del Registro (alternativa avanzada):

reg save HKLM\SAM sam.bak
reg 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:

  1. 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.
  1. 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\OldAdmin
DOMAIN\Contractor_2020

      • Esto impide que las cuentas indicadas inicien sesión de forma interactiva.
  1. 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 > LAPS
Habilita "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:

  1. 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.
  1. 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:

$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"

  1. 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.

RiesgosPosibles consecuenciasSoluciones
1. Datos de inicio de sesión incoherentesFalsos positivos que desactivan administradores activos1. Verifica que los registros de auditoría unificados están activados.

2. Ejecuta Get-MgAuditLogSignIn -UserId [email protected] para validar la actividad.

2. Fallo en la detección de administradores localesCuentas obsoletas que pasan desapercibidas en los endpoints1. Concede derechos de administrador al agente del RMM.

2. Usa icacls C:\Windows\System32\config\SAM /grant "NETWORK SERVICE":RX para acceder al Registro.

3. Eliminación de una cuenta protegidaInterrupción de servicios críticos1. Comprueba el indicador msDS-ProtectedFromAccidentalDeletion.

2. Valida la aplicación de la GPO con gpresult /H gpreport.html.

4. Errores de autenticación de la API de GraphFallos de los scripts durante la automatización1. Valida los ámbitos con Get-MgContext.

2. Usa Connect-MgGraph -Scopes "Directory.ReadWrite.All" para las operaciones de escritura.

5. Corrupción del RegistroEl 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 GPOBloqueo del acceso a todos los dispositivos1. Conserva la cuenta de emergencia en la GPO.

2. Revierte los cambios con dcgpofix /target:DC en los controladores de dominio.

7. Automatización demasiado agresivaDesactivación masiva accidental de usuarios activos1. 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.

💻 Prueba NinjaOne RMM gratis o mira una demo.

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

FAQs

Una cuenta obsoleta es cualquier cuenta de usuario o de equipo que no se ha autenticado, no ha iniciado sesión ni ha cambiado de contraseña dentro de un periodo definido (normalmente 30, 60 o 90 días). Esa inactividad puede indicar que la cuenta ya no se utiliza.

Las cuentas de administrador obsoletas suponen un riesgo de seguridad elevado, porque los atacantes suelen aprovechar las cuentas con privilegios inactivas o sin monitorización para mantener el acceso, moverse lateralmente y escalar privilegios dentro de un dominio.

Sí. Puedes automatizarla con scripts de PowerShell programados, informes de directivas de grupo, herramientas de salud de AD o plataformas RMM que analizan continuamente las cuentas inactivas y avisan a los equipos de TI cuando se superan los umbrales de inactividad.

La buena práctica consiste en desactivar primero la cuenta, vigilar si se produce algún fallo inesperado en los servicios, comprobar que ninguna aplicación depende de esas credenciales y eliminarla solo después de confirmar que el usuario o el dispositivo ya no son necesarios.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?