
Controlar quién está dentro de tus equipos Windows no es solo una cuestión de curiosidad; es una pieza clave para la seguridad y la auditoría. Con PsLoggedOn y un puñado de utilidades nativas y de Sysinternals, puedes identificar sesiones locales, conexiones por recursos compartidos y hasta rastrear accesos sospechosos con bastante precisión.
La buena noticia es que no necesitas montar un laboratorio forense para empezar. Basta con conocer cómo funciona PsLoggedOn, interpretar sus resultados (incluido el habitual IPC$) y complementar con comandos como net session, quser, NBTSTAT y el Visor de eventos para armar un mapa fiel de la actividad de usuarios.
Qué es PsLoggedOn y cómo funciona
PsLoggedOn pertenece a la suite PsTools de Sysinternals y muestra usuarios con sesión local activa y conexiones entrantes a través de recursos compartidos en el equipo local o remoto. Su truco es combinar Registro de Windows (para sesiones locales) y la API NetSessionEnum (para sesiones sobre SMB) para darte una foto rápida y fiable.
Para determinar sesiones locales, PsLoggedOn considera como “conectado” a quien tiene el perfil cargado en el Registro. Explora HKEY_USERS buscando SIDs de usuario y resuelve cada SID a su cuenta para mostrarte nombres legibles sin que tengas que bucear manualmente en el Registro.
En cuanto a las sesiones por recursos compartidos (por ejemplo, ADMIN$, C$ o IPC$), se apoya en NetSessionEnum para enumerar conexiones activas. Ojo con esto: si consultas un equipo remoto, es normal que tu propia cuenta aparezca listada como conectada por un recurso, porque se requiere autenticación para leer su Registro.
Además, PsLoggedOn admite pasar un nombre de usuario en vez de un equipo. En ese modo, recorre equipos del entorno de red para decirte dónde está conectado ese usuario, útil cuando vas a cambiar parámetros de perfil y quieres asegurarte de que nadie lo está usando.
En cuanto a compatibilidad, el binario funciona en cliente desde Windows Vista y en servidor desde Windows Server 2008. La versión referenciada ampliamente es la v1.35, con última actualización en 2016, y sigue prestando servicio con solvencia en escenarios de soporte y auditoría.
Instalación, requisitos y suite Sysinternals
Instalarlo es tan simple como copiar el ejecutable a una ruta del PATH y ejecutarlo. Coloca psloggedon.exe (y psloggedon64.exe cuando toque) en una carpeta incluida en tu PATH o ejecútalo desde la carpeta de PsTools sin mayor ceremonia.
Si prefieres instalar la suite completa de Sysinternals, puedes descargarla en paquete y extraerla donde te convenga. También es posible usar winget para instalarla de forma rápida con el comando:
winget install sysinternals --accept-package-agreements
PsLoggedOn llega dentro de PsTools junto con utilidades como PsInfo, PsFile, PsLogList, LogonSessions, Process Explorer o Process Monitor. El conjunto ronda unos pocos megas (aprox. 2,7 MB en la descarga clásica) y cubre de punta a punta la administración remota.
Uso, sintaxis y ejemplos prácticos

La sintaxis es corta y directa: con un par de modificadores cubres casi todos los casos. La ayuda muestra las opciones disponibles y el formato de salida.
psloggedon [-] [-l] [-x] [\\computername | username]
Parámetros principales: – imprime ayuda, -l limita a sesiones locales (ignorando conexiones por recursos) y -x oculta las horas de inicio de sesión. Puedes indicar un equipo remoto con su ruta UNC (\\equipo) o un nombre de usuario para buscar dónde tiene sesión.
# Listar en el equipo local
psloggedon
# Consultar un equipo remoto
psloggedon \\EQUIPO-REMOTO
# Buscar en qué equipos tiene sesión un usuario
psloggedon usuario.dominio
Recuerda: al consultar otro equipo, es normal que tu cuenta aparezca como conectada a través de un recurso dado que PsLoggedOn necesita autenticarse para leer su Registro. Si solo quieres la foto de sesiones locales, usa -l para filtrar ese ruido.
Interpretar resultados: IPC$, cuentas de equipo y casos reales
Es habitual que aparezcan conexiones de cuentas de equipo (terminadas en “$”) sobre el recurso IPC$. Ver entradas como DOMINIO\\EQUIPO-A$ en “Usuarios conectados a través de recursos” no implica automáticamente un problema y, de hecho, suele responder a actividad legítima de Windows o herramientas de gestión.
El recurso IPC$ lo proporciona el servicio Server para canalizaciones con nombre (named pipes), usado por componentes del sistema y aplicaciones/servicios instalados. Aunque a veces se asocia a la “sesión nula”, su acceso real lo marca la seguridad de cada pipe, concediendo entrada solo a identidades admitidas. Sí, en Windows 10 Pro también existe IPC$ y no es exclusivo de Windows Server.
Un ejemplo típico es ejecutar un script que llama periódicamente a psloggedon y psloggedon64 para alertar cuando se conecte alguien inesperado. Durante días tranquilos, verás tu cuenta local; en ocasiones aparecen equipos como A-COMPUTER$ o B-COMPUTER$ conectándose por IPC$. En muchos entornos eso cuadra con inventariado, antivirus/EDR, administración remota o simples comprobaciones de red.
¿Cómo distinguir actividad normal de algo raro? Estas comprobaciones te ayudarán a bajar al detalle. La idea es enlazar la sesión a un proceso, tarea o servicio reconocible:
- Administración de equipos > Carpetas compartidas > Sesiones y Archivos abiertos: mira quién está conectado y qué recurso toca.
- Comando net session: enumera conexiones activas por recurso, equipo y usuario con un tiro rápido desde consola.
- Visor de eventos: filtra el ID 4624 en Seguridad y revisa el tipo de inicio (p. ej., 3 para red), además de origen y cuenta.
- Política de auditoría: activa la auditoría de inicio de sesión (éxito y error) en gpedit.msc para no perderte nada.
- Tareas y servicios: revisa Programador de tareas, WMI, inventario, antivirus/EDR y herramientas de despliegue que puedan abrir sesiones.
Si detectas que siempre son los mismos equipos y en horario normal, seguramente sea comportamiento esperado. Si aparecen conexiones fuera de horas, desde orígenes desconocidos o con patrones extraños, entonces conviene atar cabos con registros, restringir accesos y levantar alerta si procede.
Métodos nativos alternativos para ver quién ha iniciado sesión
Además de PsLoggedOn, Windows trae varias opciones para cruzar información y ganar contexto. Combinarlas te reducirá falsos positivos y te dirá no solo quién, sino cómo se ha conectado.
QUSER / QUERY USER (consola o PowerShell). Estos comandos listan sesiones de Escritorio Remoto/Terminal. Útiles en servidores con RDS y también en equipos que aceptan RDP, dan una foto ágil de sesiones de usuario en RDP.
quser /server:EQUIPO-REMOTO
query user /server:EQUIPO-REMOTO
PowerShell (Get-CimInstance). Para saber la sesión interactiva local, puedes consultar la clase Win32_ComputerSystem. El campo username devuelve el usuario conectado en consola, aunque en ciertos escenarios RDP puede quedar vacío.
Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName EQUIPO | Select -ExpandProperty username
NBTSTAT. Ya algo veterano, pero aún puede dar pistas con NetBIOS. Vale para ver la tabla de nombres, no para identificar usuarios activos con precisión si no han tocado recursos compartidos.
nbtstat -a EQUIPO
nbtstat -A 192.0.2.25
Administrador de tareas. En la pestaña Usuarios verás sesiones activas en el equipo local, incluidas remotas. No siempre distingue con claridad el tipo de acceso, pero es útil para una comprobación rápida.
Administrador de Servicios de Escritorio Remoto (Windows Server). Agregando el complemento en la MMC puedes ver Usuarios y Sesiones a detalle. Es la consola de referencia para hosts RDSH y te da ID de sesión, estado y más.
Auditoría con Visor de eventos y utilidades Sysinternals
El Visor de eventos es tu amigo para atar evidencias. Ve a Registros de Windows > Seguridad y filtra por el ID 4624 (inicio correcto); revisa el tipo de inicio, la cuenta, equipo de origen y dirección.
Si no ves esos eventos, activa la auditoría local. En gpedit.msc, navega: Configuración del equipo > Configuración de Windows > Configuración de seguridad > Directivas locales > Directiva de auditoría y habilita “Auditar eventos de inicio de sesión” con Éxito y Error.
PsLogList (Sysinternals) te permite volcar y filtrar eventos locales o remotos desde consola. Perfecto para sacar rápidamente 4624, acotar por fechas o generar CSV sin abrir la GUI.
# Últimas 100 entradas del registro de Seguridad en un equipo remoto
psloglist \\EQUIPO -n 100 -l security
# Filtrar por origen o ID de evento
psloglist -o "Microsoft-Windows-Security-Auditing" -i 4624
# Salida compacta y separada por ;
psloglist -s -t ';' -l security
Sus opciones incluyen ventanas temporales (-h, -m, -d), rangos de fechas (-a, -b), inclusiones/exclusiones de IDs (-i, -e) y espera en tiempo real con -w en el sistema local. La versión referenciada en fuentes es la 2.81, actualizada en 2019.
PsFile es útil para saber qué archivos de un equipo remoto están abiertos y por quién. Incluso puedes cerrar un handle indicando su ID si necesitas liberar un archivo bloqueado, ideal cuando depuras por qué existe una sesión SMB.
LogonSessions (Sysinternals) enumera sesiones de inicio de sesión activas en el sistema. Complementa a PsLoggedOn enfocándose en las sesiones y sus tokens, útil para investigar persistencias o accesos heredados.
Otras utilidades Sysinternals relevantes para contexto y limpieza: Autoruns (inicios automáticos), Process Explorer y Process Monitor (procesos y actividad en tiempo real), PsInfo (inventario del sistema) y RAMMap (uso detallado de memoria). El ecosistema Sysinternals cubre desde “quién” hasta “qué está haciendo”, lo cual es oro en incidentes.
Scripts y automatización a escala
Cuando necesitas un informe por OU o por todo el dominio, los scripts marcan la diferencia. El módulo de PowerShell Get-UserLogon facilita recopilar logons por equipo, OU o dominio con un puñado de comandos.
Para usarlo como módulo, crea la carpeta y el fichero psm1 en la ruta estándar de módulos: colócalo en C:\\Program Files\\WindowsPowerShell\\Modules\\Get-UserLogon e impórtalo antes de usarlo.
# Todo el dominio
Get-UserLogon -All
# Por OU
Get-UserLogon -OU 'ou=Computers,dc=midominio,dc=local'
# Equipo concreto
Get-UserLogon -Computer EQUIPO-AD01
Si prefieres un enfoque de script directo, existe también una función publicada en la antigua Script Gallery de TechNet. El objetivo en ambos casos es el mismo: listar “quién” y “dónde” de forma rápida y exportable para auditoría o soporte.
Responder a incidentes: DFIR triage en Windows

Para ir más allá del “quién” y construir un relato forense express, Dfirtriage agrupa pequeñas herramientas para sacar un volcado ágil de evidencias. Está pensado para Windows y puede ejecutarse directamente en el equipo objetivo con privilegios de administrador.
Entre las utilidades incluidas, BrowserHistoryView y LastActivityView te listan actividad reciente de navegación y archivos usados. Con pslist verás procesos (incluidos los que se ocultan del Administrador de tareas), y con tcpvcon podrás consultar conexiones de red activas por proceso.
Dentro del mismo set encontrarás piezas Sysinternals como Autoruns, PsLoggedOn, PsFile, PsInfo y PsLogList. Esto permite desde identificar sesiones SMB hasta cerrar archivos, inventariar el sistema y extraer eventos sin abrir decenas de consolas.
Su uso es sencillo: descomprime, lanza dfirtriage.exe como administrador y deja que recopile artefactos. El resultado se guarda en ficheros de texto para revisión o entrega, con el objetivo de acelerar la primera fase de respuesta.
Buenas prácticas de seguridad para el acceso remoto
Monitorizar es vital, pero reducir superficie de ataque lo es aún más. Refuerza contraseñas, rota credenciales y aplica MFA para cortar accesos no autorizados aunque alguien robe una clave.
Aplica el principio de mínimo privilegio y segmenta. Solo las cuentas que lo necesitan deben tener permisos de administración remota, y mejor si lo haces a través de grupos bien definidos y controlados.
Usa VPN para exponer la menor cantidad posible de servicios de administración a Internet. Encapsular y cifrar minimiza el ruido y frena el reconocimiento oportunista que conduce a intentos de intrusión.
Supervisa e instrumenta. Configura alertas de actividad anómala (horarios, orígenes, cuentas), registra todo lo que puedas (4624, 4625, etc.) y revisa patrones para detectar cambios sutiles que indiquen compromiso.
Soluciones de auditoría en tiempo real
Si tu entorno crece o necesitas cumplimiento, considerar una plataforma de auditoría puede ahorrarte tiempo. Herramientas como ADAudit Plus de ManageEngine aportan auditoría de Active Directory en tiempo real y consolidan informes de logon, cambios y accesos, con opción de prueba de 30 días.
Con PsLoggedOn tienes una visión inmediata de sesiones locales y conexiones por recursos, y con net session, quser, NBTSTAT, Visor de eventos, PsLogList, PsFile, LogonSessions y módulos de PowerShell puedes completar el panorama sin dejar flecos. Entender el papel de IPC$, reconocer cuentas de equipo con “$” y activar la auditoría marca la diferencia entre una falsa alarma y un incidente real, dándote además munición para responder con rapidez.