Ver intentos de inicio de sesión local exitosos y fallidos en Windows
Al investigar varios incidentes, un administrador necesita saber quién inició sesión en una computadora con Windows en particular y cuándo. Puede obtener un historial de inicios de sesión de usuarios en una red de dominio desde los registros del controlador de dominio. Sin embargo, a veces es más fácil obtener información directamente de los registros de eventos de la computadora local. En este artículo, mostraremos cómo obtener y analizar los eventos de inicio de sesión del usuario en una computadora/servidor que ejecuta Windows. Estas estadísticas lo ayudarán a responder las preguntas "¿Cómo ver quién ha usado una computadora con Windows y cuándo?" y "¿Cómo verificar el historial de inicio de sesión del usuario en Windows?".
Habilitar la política de auditoría de inicio de sesión de usuario en Windows
En primer lugar, habilite la política de auditoría de inicio de sesión de usuario. Para configurar los ajustes de la directiva de grupo local en una computadora independiente, use el complemento gpedit.msc. Si desea habilitar la política para equipos en un dominio de Active Directory, use el editor de GPO de dominio (
gpmc.msc).
Abra la consola de administración de directivas de grupo, cree un nuevo GPO y asígnelo a las unidades organizativas (OU) que contengan computadoras y/o servidores para los que desea habilitar la directiva de auditoría de eventos de inicio de sesión;
Abra el GPO y vaya a Configuración de la computadora -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Configuración de política de auditoría avanzada -> Políticas de auditoría -> Inicio/Cierre de sesión;
-
Habilite dos opciones de política de auditoría: Inicio de sesión de auditoría y Cierre de sesión de auditoría. Ayudará a realizar un seguimiento de los eventos de inicio y cierre de sesión del usuario. Si solo desea realizar un seguimiento de los intentos de inicio de sesión exitosos, marque la opción Éxito en la configuración de la política;
La misma sección contiene configuraciones de políticas para auditar eventos de bloqueo de cuentas, cambios en grupos de Active Directory, etc.
Cierre el editor de GPO y actualice la configuración de la directiva de grupo en los clientes.
¿Cómo encontrar eventos de inicio de sesión de usuario en el Visor de eventos de Windows?
Una vez que haya habilitado las políticas de auditoría de inicio de sesión, aparecerá una entrada de evento de inicio de sesión en el registro del Visor de eventos cada vez que un usuario inicie sesión en Windows. Veamos qué aspecto tiene.
Abra el Visor de eventos (
eventvwr.msc);
Expanda Registros de Windows y seleccione Seguridad;
Haga clic con el botón derecho y seleccione Filtrar registro actual;
Introduzca el ID de evento 4624 en el cuadro y haga clic en Aceptar.
Solo los eventos de inicio de sesión del usuario y del servicio del sistema se mostrarán con la descripción:
An account was successfully logged on.La descripción del evento contiene el nombre y el dominio del usuario que inició sesión en la computadora:
New Logon: Security ID: WOSHUB\a.muller Account Name: a.muller Account Domain: WOSHUB
Encuentre otros ID de eventos útiles a continuación:
| Event ID | Description |
| 4624 | A successful account logon event |
| 4625 | An account failed to log on |
| 4648 | A logon was attempted using explicit credentials |
| 4634 | An account was logged off |
| 4647 | User-initiated logoff |
El registro de eventos filtrado contendrá más que solo eventos de inicio de sesión de usuarios locales. También hay eventos para el acceso de red a esta computadora (cuando abre archivos compartidos o usa impresoras compartidas), eventos para ejecutar diferentes servicios y tareas programadas, etc. En otras palabras, hay muchos eventos que no están relacionados con el inicio de sesión de un usuario local.
El código Tipo de inicio de sesión se puede usar para filtrar solo los eventos de inicios de sesión de usuario interactivos en una consola de computadora (local). La siguiente tabla muestra los códigos de tipo de inicio de sesión.
| Logon Type Code | Description |
|---|---|
| 0 | System |
| 2 | Interactive |
| 3 | Network |
| 4 | Batch |
| 5 | Service |
| 6 | Proxy |
| 7 | Unlock |
| 8 | NetworkCleartext |
| 9 | NewCredentials |
| 10 | RemoteInteractive |
| 11 | CachedInteractive |
| 12 | CachedRemoteInteractive |
| 13 | CachedUnlock |
Las entradas con tipo de inicio de sesión 10 o 3 aparecen en el registro de eventos cuando se conecta de forma remota al escritorio de la computadora mediante RDP. Obtenga más información sobre cómo analizar los registros de conexión RDP en Windows.
De acuerdo con esta tabla, un evento de inicio de sesión de un usuario local debe contener Tipo de inicio de sesión: 2.
Este ID de evento también aparecerá si está utilizando el inicio de sesión automático de Windows.
Para filtrar los eventos de inicio de sesión por tipo de inicio de sesión, es mejor usar PowerShell.
Análisis de eventos de inicio de sesión de usuario con PowerShell
Suponga que su tarea es averiguar qué usuarios han iniciado sesión recientemente en esta computadora. Solo estamos interesados en los eventos de inicio de sesión interactivos (usando la consola de la computadora) con el
LogonType =2. Usaremos el cmdlet Get-WinEvent para seleccionar los eventos de los registros del Visor de eventos.
El siguiente script de PowerShell muestra el historial de inicio de sesión de los usuarios en la computadora actual y lo presenta como una tabla gráfica Out-GridView.
$query = @'
<QueryList>
<Query Id='0' Path='Security'>
<Select Path='Security'>
*[System[EventID='4624']
and(
EventData[Data[@Name='VirtualAccount']='%%1843']
and
EventData[Data[@Name='LogonType']='2']
)
]
</Select>
</Query>
</QueryList>
'@
$properties = @(
@{n='User';e={$_.Properties[5].Value}},
@{n='Domain';e={$_.Properties[6].Value}},
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LogonType';e={$_.Properties[8].Value}}
)
Get-WinEvent -FilterXml $query | Select-Object $properties|Out-GridViewSi desea seleccionar eventos de inicio de sesión de los últimos días, puede agregar una canalización con la siguiente condición:
|Where-Object {$_.TimeStamp -gt '27/04/23'}Puede usar el cmdlet Get-WinEvent para obtener información de equipos remotos. Por ejemplo, para obtener el historial de inicio de sesión del usuario desde dos equipos remotos, ejecute este script:
'mun-rds1', 'mun-rds2' |
ForEach-Object {
Get-WinEvent -ComputerName $_ -FilterXml $query | Select-Object $properties
}Si el protocolo RPC no está permitido, puede usar el cmdlet Invoke-Command PowerShell para obtener datos de equipos remotos:
Invoke-Command -ComputerName 'mun-rds1', 'mun-rds2' {Get-WinEvent -FilterXml $query | Select-Object $properties}


