🏢Active DirectoryAccountsPrivileged Access

Revisión AD logonCount por DC: calificar totales antes de retirar la cuenta

Revise AD logonCount por DC, conserve las lecturas desconocidas y verifique los accesos actuales y el propietario antes de retirar una cuenta administrativa.

Younes AZABARPor Younes AZABAR11 min de lectura
Revisión AD logonCount por DC: calificar totales antes de retirar la cuenta

Qué establece una revisión AD logonCount por DC

Una revisión AD logonCount por DC examina de dónde procede un contador del directorio antes de utilizarlo para retirar una cuenta administrativa. Un valor pequeño en un controlador de dominio puede iniciar una revisión. No establece la actividad de la cuenta en todo el dominio, sus permisos actuales ni si su propietario todavía la necesita.

El resultado útil es un registro de revisión: la identidad de la cuenta, todos los DC del alcance, cada valor devuelto, las lecturas sin resolver, los accesos actuales y la decisión del propietario. Conserve esas observaciones juntas para que un administrador pueda explicar por qué se mantuvo una cuenta, se investigó más o entró en un proceso de retirada aprobado.

Esta guía propone un procedimiento de recopilación de solo lectura y de decisión. Los ejemplos de PowerShell adaptan parámetros documentados en Microsoft Learn a identidades y servidores ilustrativos; no se ejecutaron en el dominio de un cliente. Sustituya los valores de ejemplo por valores verificados y utilice el módulo ActiveDirectory con una identidad autorizada para leer el directorio.

Cómo funciona el contador

La referencia del atributo Logon-Count de Microsoft describe un contador de inicios de sesión correctos mantenido de forma independiente en cada DC, sin replicación. Recomienda consultar todos los DC y sumar sus valores. Cero significa desconocido. Los DC retirados pueden dejar lagunas en el historial, y el límite documentado de 65535 hace que un contador saturado no sea adecuado para seguir la actividad en ese DC.

Trate el atributo como un recuento acumulativo con limitaciones de cobertura e historial, en lugar de como una marca de tiempo. Un recuento de 1–4 no contiene ninguna fecha a partir de la cual calcular inactividad reciente. Ni siquiera un conjunto completo de lecturas actuales puede reconstruir las contribuciones de los controladores retirados. Registre esas limitaciones junto a cualquier subtotal en vez de describirlo como el historial de toda la vida de la cuenta.

No sustituya logonCount por badPwdCount cuando el primero no esté disponible. El procedimiento relacionado de triaje badPwdCount califica los contadores de errores antes de un veredicto de ataque. Su disciplina de conservar el servidor, la hora y la calidad de la recopilación también se aplica aquí, pero un contador de errores no responde a la pregunta sobre los inicios de sesión correctos.

Detección: construir una matriz de evidencias cuenta/DC

Paso 1 — Fijar la identidad y el alcance

Parta del hallazgo original y conserve su identificador de cuenta, el punto de conexión del colector, la hora de recopilación, la revisión del colector y los errores. Confirme el dominio de la cuenta y el inventario de DC con el equipo de operaciones del directorio. Los dos nombres de host siguientes ilustran lecturas separadas; no son una lista completa de DC para un dominio real.

Elija un identificador estable de cuenta y compruébelo frente al hallazgo antes de repetir la lectura. Conserve el DN o GUID junto al nombre mostrado en el registro de revisión. Si la cuenta no se puede resolver en un servidor, conserve el error de búsqueda e investigue la identidad, el alcance o la disponibilidad del directorio. No cree una entrada numérica para un objeto que no se haya devuelto.

Microsoft documenta la selección de identidad, la selección explícita del servidor y los atributos adicionales en Get-ADUser. Estas adaptaciones solicitan logonCount explícitamente a un DC identificado por su nombre, en vez de depender de la selección predeterminada del servidor:

Get-ADUser -Identity 'CN=ReviewAdmin,OU=Staff,DC=corp,DC=example' -Server 'dc01.corp.example' -Properties logonCount,adminCount -ErrorAction Stop
Get-ADUser -Identity 'CN=ReviewAdmin,OU=Staff,DC=corp,DC=example' -Server 'dc02.corp.example' -Properties logonCount,adminCount -ErrorAction Stop

Ejecute la misma lectura documentada contra cada DC verificado del alcance, por separado. Guarde el objeto devuelto y cualquier error con el punto de conexión seleccionado y la hora de lectura. Una conexión correcta por sí sola no establece que se haya devuelto el atributo solicitado. Inspeccione la propiedad en lugar de permitir que una conversión numérica posterior transforme un valor vacío en cero.

Paso 2 — Conservar las observaciones originales

Utilice una fila por cuenta y DC. La matriz siguiente es una estructura de evidencias recomendada, no una salida de ejemplo de un entorno de cliente ni campos suministrados automáticamente por el detector.

CampoQué registrarFinalidad de la revisión
CuentaDN o GUID verificado y nombre mostradoAsociar todas las lecturas al mismo objeto
Dominio y DCContexto del dominio y punto de conexión explícito del servidorPermitir revisar el alcance de recopilación declarado
Hora de lecturaHora de inicio y finalización en UTCMostrar una recopilación repartida entre momentos distintos
Atributo solicitadoSolicitud explícita de logonCountDistinguir una lectura deliberada de la salida predeterminada
Valor originalValor devuelto sin sustituir datos vacíosConservar la observación de origen
InterpretaciónValor positivo conocido, cero devuelto/desconocido, ausente, inválido o fallidoImpedir que las lagunas de recopilación se conviertan en conclusiones sobre actividad
ErrorError real de búsqueda, acceso o transporte, cuando existaDar al siguiente revisor una tarea concreta de recuperación

Para un cero devuelto, conserve el cero literal y marque el valor de actividad como desconocido. Para un atributo ausente, conserve la ausencia. Para un valor inválido, mantenga su representación original y clasifique la interpretación como sin resolver. Para una lectura fallida, conserve el error y deje el recuento sin establecer. Esos estados pueden requerir seguimientos diferentes, aunque ninguno proporcione un recuento de actividad conocido.

Si un servidor no está disponible, conserve su fila en el alcance declarado. Asigne el reintento o la investigación a un responsable. Un reintento correcto pasa a ser una nueva observación con su propia hora; no debe borrar el fallo de recopilación original. Del mismo modo, conserve las observaciones distintas si se repite la recopilación, en vez de elegir el valor que haga parecer completa la revisión.

Paso 3 — Resumir sin borrar la incertidumbre

Sume los valores positivos conocidos y conserve la matriz completa. Informe del resultado como subtotal conocido siempre que algún DC tenga un valor desconocido o no se haya leído correctamente. Junto a él, indique qué DC contribuyeron, cuáles no, el intervalo de recopilación y cualquier contador saturado o contribución histórica ausente.

No elimine silenciosamente del alcance los servidores no disponibles ni rellene sus celdas con cero. Una hoja de cálculo con un valor numérico en cada fila puede seguir conteniendo evidencias sin resolver. El resumen debe hacerlo visible para la persona que decide si se necesita más recopilación.

Aplique la misma regla al comparar revisiones. Mantenga coherentes la identidad de la cuenta y la cobertura de DC, describa los cambios en el inventario y conserve la matriz anterior. Un subtotal diferente puede reflejar una cobertura diferente; no proporciona automáticamente un intervalo de actividad reciente. Si la decisión requiere una cronología, obtenga evidencias de actividad calificadas por separado para un periodo definido y documente su cobertura.

Remediación: revisar los accesos y el propietario antes de la retirada (Remediation)

Paso 4 — Aclarar el marcador administrativo

El detector utiliza adminCount=1 para seleccionar candidatos. Antes de llamar administradora a la cuenta, establezca sus accesos actuales. El procedimiento de limpieza de adminCount obsoleto explica por qué el marcador puede persistir después de finalizar una pertenencia privilegiada. Siga su revisión de pertenencias y permisos en vez de suponer que el indicador es un inventario de derechos actuales.

Para la decisión de retirada, solicite una revisión de los grupos directos y anidados, el grupo principal, los permisos delegados pertinentes y los recursos que la cuenta puede administrar. Conserve en el caso el revisor, el alcance y las rutas sin resolver. Una lista de grupos directos de apariencia ordinaria no cierra la cuestión más amplia de los accesos.

Esto puede producir resultados distintos: una cuenta con accesos actuales justificados; una antigua cuenta privilegiada con estado residual; permisos injustificados que requieren un cambio específico; o accesos que siguen sin verificar. Registre las evidencias reales de la clasificación. No borre adminCount simplemente para eliminar este hallazgo, y no trate la limpieza del indicador como la retirada de la cuenta.

Paso 5 — Obtener la decisión del propietario

Identifique al propietario responsable y pregunte qué procesos dependen de la cuenta. Revise la finalidad declarada frente a las evidencias operativas y dependencias disponibles. Incluya los usos programados, poco frecuentes, de recuperación y de emergencia cuando sean aplicables a esa cuenta; su relevancia debe proceder del propietario y del entorno, no de una explicación supuesta para un contador pequeño.

Resultado de la revisiónDecisión que registrarAcción siguiente
Accesos justificados y propietario identificadoMantener con una finalidad documentadaRegistrar el alcance de los accesos y la próxima revisión
Los accesos exceden el rol aprobadoRevisar un cambio específico de privilegiosObtener aprobación y validar los procesos afectados
El propietario apoya la retirada y las dependencias están resueltasEntrar en el proceso de retirada aprobadoConservar las evidencias, las medidas de recuperación y la responsabilidad del cambio
Lecturas de DC, propietario o dependencias desconocidosMantener el caso sin resolverAsignar las evidencias pendientes y el seguimiento

El proceso propuesto separa la revisión del contador de la autorización para cambiar los accesos. Si se aprueba la retirada, utilice el procedimiento de ciclo de vida de cuentas de la organización para la identidad verificada. Elija el cambio y el método de recuperación a partir de ese plan aprobado. Esta guía no prescribe una deshabilitación o eliminación masiva basada en el umbral del detector.

Paso 6 — Validar el resultado registrado

Después de un cambio aprobado, vuelva a leer la misma cuenta en los servidores documentados y conserve los nuevos resultados por separado. Los parámetros de identidad, servidor y propiedades de Get-ADUser documentados anteriormente también permiten esta lectura repetible:

Get-ADUser -Identity 'CN=ReviewAdmin,OU=Staff,DC=corp,DC=example' -Server 'dc01.corp.example' -Properties logonCount,adminCount -ErrorAction Stop

Repita la revisión de accesos pertinente para el cambio y pida al propietario que confirme los procesos afectados. Registre el estado real de la cuenta, los permisos, las dependencias restantes, los errores y el seguimiento. La desaparición del hallazgo por sí sola no establece que los permisos o las dependencias de negocio se hayan gestionado correctamente.

Cómo EtcSec detecta este caso

La comprobación de etc-collector revisada es ADMIN_LOGON_COUNT_LOW, en Accounts, con gravedad Info. En la revisión del colector afca1b9f7bba6f076d6a6493371486071001452b, admin-logon-count-low.go:36 selecciona usuarios habilitados con AdminCount=true, excluye LogonCount=0 y conserva un recuento distinto de cero inferior a 5. No aplica ningún periodo de inactividad. El umbral es un predicado del producto, no una regla para retirar cuentas.

Count es el número de usuarios coincidentes, no una suma de inicios de sesión. El detector devuelve el hallazgo incluso cuando ese número es cero; se adjuntan detalles de los usuarios afectados cuando se solicitan y existen coincidencias. Una coincidencia es una pista de investigación procedente de la vista recopilada.

El proveedor LDAP limita esa vista. client.go:460 recupera usuarios mediante la conexión seleccionada sin agregar contadores de DC. parser.go:41 solicita logonCount; el analizador de usuarios lo lee mediante getIntAttr, cuyo tratamiento de valores ausentes y enteros inválidos puede producir cero. Por tanto, el detector no puede distinguir todos los estados de recopilación que conserva la matriz independiente. Excluir cero impide que un recuento desconocido se convierta en un hallazgo positivo, pero no verifica el uso en todo el dominio.

La comprobación no calcula ningún total del dominio ni establece derechos efectivos, propietario, dependencias o una cronología de actividad reciente. adminCount es su marcador de selección, no una prueba de privilegios actuales. Utilice ADMIN_LOGON_COUNT_LOW para iniciar la revisión y después califique cada observación de DC y los accesos de la cuenta antes de decidir su futuro.

Explore las páginas de identidad que apoyan este tema