- PsList enumera procesos con métricas avanzadas (CPU, memoria, hilos, jerarquía) y funciona también en remoto con credenciales.
- La información proviene de los contadores de rendimiento de Windows; las unidades de memoria se muestran en KB.
- Parámetros clave: filtros por nombre/PID, vista árbol, modo muestreo (-s/-r) y opciones -u/-p para acceso remoto.
Si gestionas equipos Windows, tener a mano una utilidad que liste procesos con sus métricas clave es casi obligatorio. PsList, de la suite Sysinternals, encaja como un guante: te permite ver prioridad, hilos, memoria, identificadores, tiempos de CPU y relaciones padre-hijo, tanto en tu máquina como en equipos remotos a los que tengas acceso.
Más allá del listado básico, PsList ofrece vistas detalladas, modos de refresco continuo y filtros por nombre o PID. Cuando lo combinas con PsKill y PsExec pasas de observar a actuar: localizas el proceso problemático, lo detienes de forma segura y, si conviene, lo relanzas, incluso en remoto y con credenciales.
Qué es PsList y de dónde obtiene la información
PsList es una utilidad de línea de comandos firmada por Sysinternals que sirve para enumerar procesos y su telemetría con una sola orden. Su gran baza es que no requiere instalación compleja: copias el ejecutable donde prefieras (ideal si lo añades al PATH) y listo.
Por debajo, PsList se apoya en los contadores de rendimiento de Windows (los mismos que alimentan PerfMon). Eso garantiza coherencia con lo que verás en el Monitor de rendimiento y explica por qué, al apuntar a otra máquina, quizás necesites una cuenta con privilegios suficientes para leer esos contadores.
A nivel de plataformas, la suite oficial indica compatibilidad actual con Windows 8.1 y posteriores en cliente y Windows Server 2012 y posteriores en servidor. Versiones más antiguas de PsList existieron para NT/2000, pero en entornos modernos conviene ceñirse a los binarios vigentes.
Un detalle para tener en mente: todos los valores de memoria aparecen en KB. Si contrastas con herramientas que muestran MB, haz la conversión para no sacar conclusiones erróneas.
Ficha rápida y suite PsTools
PsList forma parte de PsTools, un paquete de utilidades de administración local y remota en el que también encontrarás PsExec, PsFile, PsGetSid, PsInfo, PsPing, PsKill, PsLoggedOn, PsLogList, PsPasswd, PsService, PsShutdown, PsSuspend y PsUptime (cuyas funciones hoy se integran en PsInfo). La descarga viene como un paquete ligero (~5 MB) con ayuda en HTML y no requiere instalar agentes en los equipos destino.
En algunas referencias aparecen metadatos de versiones históricas (por ejemplo, v1.4 de PsList y notas de actualización antiguas). Consulta siempre el portal de Sysinternals para obtener el binario vigente y la compatibilidad exacta en tu entorno.
Sintaxis y parámetros esenciales
La sintaxis de PsList es directa, conmutadores claros y un enfoque que facilita pasar de lo general a lo específico. Dominar unos pocos parámetros multiplica su utilidad del día a día.
Parámetro | Descripción |
---|---|
pslist exp |
Muestra estadísticas de procesos cuyo nombre empieza por “exp” (p. ej., Explorer). |
-d |
Amplía la vista con detalles de hilos del proceso. |
-m |
Centra la salida en memoria (VM, WS, Privados, etc.). |
-x |
Compuesto de procesos + memoria + hilos en una pasada. |
-t |
Visualiza el árbol de procesos (jerarquía padre-hijo). |
-s [n] |
Ejecuta en modo muestreo tipo “Administrador de tareas” durante n segundos; Escape para salir. |
-r n |
Ajusta la frecuencia de refresco (segundos) cuando usas -s (por defecto, 1). |
\\equipo |
Consulta un equipo remoto en lugar del local; útil con credenciales si tu cuenta no tiene permisos. |
-u |
Especifica usuario para iniciar sesión en el remoto (DOMINIO\Usuario o Equipo\Usuario). |
-p |
Pasa la contraseña en la línea de comandos (si no, PsList la solicita de forma interactiva). |
nombre |
Filtra procesos cuyo nombre comienza por ese patrón. |
-e |
Fuerza la coincidencia exacta del nombre de proceso. |
pid |
Restringe la salida al PID concreto indicado (p. ej., pslist 53 ). |
Al combinar filtros por nombre y PID puedes pasar de un barrido general a una inspección muy específica. Por ejemplo, limitar la salida a un único proceso acelera las comprobaciones cuando ya conoces su identificador.
pslist -x
pslist -m chrome
pslist -t -e explorer.exe
pslist 1234
Cómo interpretar la salida: abreviaturas y campos clave
La salida compacta de PsList utiliza abreviaturas estándares. Entenderlas de un vistazo te ayuda a detectar rápidamente picos de consumo o cuellos de botella.
Columna | Significado |
---|---|
Pri | Prioridad del proceso en el planificador. |
Thd | Número de hilos activos. |
Hnd | Total de identificadores (handles) abiertos. |
VM | Memoria virtual asignada. |
WS | Working Set en memoria física. |
Priv | Memoria virtual privada del proceso. |
Priv Pk | Pico de memoria virtual privada registrada. |
Faults | Recuento de fallos de página. |
NonP | Tamaño del pool no paginado. |
Page | Tamaño del pool paginado. |
Cswtch | Cambios de contexto acumulados. |
Encontrarás también CPU Time y Elapsed Time, útiles para saber cuánto tiempo de CPU ha consumido un proceso y cuánto lleva en ejecución. Estas métricas son oro para cazar procesos que se quedan “tiesos” o vampirizan recursos.
Modo monitor con refresco continuo
Si quieres observar la evolución de uno o varios procesos sin pulsar nada, activa el modo muestreo de PsList. Con -s
defines la duración total y con -r
estableces cada cuánto se actualiza la salida.
pslist -s 15 -r 2
Con el ejemplo anterior, PsList permanece en pantalla 15 segundos refrescando cada 2. Viene de perlas para detectar picos breves (CPU, memoria) que un único disparo podría pasar por alto.
Trabajo en remoto: sintaxis, credenciales y seguridad
Una ventaja diferencial es que PsList puede consultar procesos en equipos remotos si hay conectividad y permisos. Usa la notación \\EQUIPO
o IP y, si hace falta, -u
y -p
para autenticación.
pslist \\MAQUINA -u DOMINIO\Administrador -p
Si indicas usuario y omites -p
, PsList te pedirá la contraseña de forma interactiva. Es cómodo cuando tecleas a mano y evita que la clave quede en el historial de la consola; en scripts, valora cofres de secretos o mecanismos seguros para no exponerla.
Recuerda que en muchas organizaciones necesitarás pertenecer a grupos con acceso a contadores de rendimiento del equipo remoto. Con los permisos correctos y las rutas bien escritas (FQDN o IP), la consulta funciona como si fuese local.
Ejemplos prácticos y variaciones útiles
Para localizar todo lo que empiece por una cadena concreta, usa el filtro por prefijo. Sirve para agrupar procesos hermanos (como múltiples instancias de svchost, chrome, etc.).
pslist svchost
Cuando ya sabes el identificador, limitar la salida al PID concreto te ahorra ruido en pantalla y acelera el análisis. Ideal en sesiones remotas con enlaces lentos.
pslist 888
¿Quieres una foto “todo en uno” que mezcle procesos, memoria e hilos? La vista compuesta es lo tuyo. Así ahorras varias ejecuciones y ves relaciones de un vistazo.
pslist -x
Para entender relaciones padre-hijo, activa el árbol. La jerarquía ayuda a descubrir qué proceso ha lanzado a otro y, por extensión, dónde atacar si hay zombis encadenados.
pslist -t
Como la salida es texto plano, puedes “encadenar” utilidades: redirigir a fichero, filtrar con findstr
o preparar CSV con un postprocesado sencillo. La gracia es integrarlo en tus scripts sin dramas.
pslist -x > informe_pslist.txt
pslist -m | findstr /i "chrome firefox"
Combinar PsList con PsKill y PsExec para actuar
Localizar la anomalía es el primer paso; el segundo es actuar. Con PsKill puedes finalizar procesos por nombre o PID, también en remoto, y con -t
te aseguras de cerrar el proceso y su descendencia.
pslist -t \\[EquipoRemoto o IP]
pskill -t \\[EquipoRemoto o IP] -u [EQUIPO\UsuarioAdmin] -p [Password] [NombreProceso o PID]
Si necesitas “reiniciar” una aplicación tras terminarla, PsExec te permite relanzarla en el equipo remoto, pasando credenciales y la ruta completa del ejecutable.
psexec \\[EquipoRemoto o IP] -u [EQUIPO\UsuarioAdmin] -p [Password] "C:\\Ruta\\Programa\\app.exe"
Este flujo es especialmente útil en entornos empresariales sin escritorio remoto, o cuando automatizas mantenimientos y necesitas máxima trazabilidad con mínimo impacto en el usuario.
PsList en análisis forense de memoria (Volatility): mismo concepto, contexto distinto
En DFIR verás a menudo el término “pslist” dentro de Volatility (V2/V3). Aquí no estamos ante la utilidad Sysinternals en vivo, sino frente a plugins que listan procesos de un volcado de memoria. La idea se parece, pero el contexto cambia: trabajas sobre una captura, no sobre el sistema corriendo.
En Volatility 2, el trío básico para procesos incluye pslist, psscan y pstree; además, existe psxview para contrastar vistas y descubrir ocultación. Volatility 3 renueva la notación con prefijo windows.
y, por ahora, no tiene un equivalente directo a psxview.
# Volatility 2 (procesos)
vol.py -f "memdump.raw" --profile <perfil> pslist
vol.py -f "memdump.raw" --profile <perfil> psscan
vol.py -f "memdump.raw" --profile <perfil> pstree
# Volatility 3 (procesos)
vol.py -f "memdump.raw" windows.pslist
vol.py -f "memdump.raw" windows.psscan
vol.py -f "memdump.raw" windows.pstree
El ecosistema de plugins abarca mucho más. Conexiones de red (V2: netscan
; V3: windows.netscan
), y en XP/2003 herramientas específicas como connscan
, connections
, sockscan
o sockets
. Para módulos del kernel tienes modules
en V2 y windows.modules
en V3; para servicios, svcscan
en V2 y windows.svcscan
en V3.
# Redes
vol.py -f "memdump.raw" --profile <perfil> netscan
vol.py -f "memdump.raw" windows.netscan
# Módulos del kernel
vol.py -f "memdump.raw" --profile <perfil> modules
vol.py -f "memdump.raw" windows.modules
# Servicios
vol.py -f "memdump.raw" --profile <perfil> svcscan
vol.py -f "memdump.raw" windows.svcscan
En el ámbito de cuentas, con hadump (V2) y windows.hadump (V3) puedes extraer hashes presentes en memoria. Filescan y windows.filescan listan archivos abiertos y su offset.
# Cuentas y ficheros
vol.py -f "memdump.raw" --profile <perfil> hadump
vol.py -f "memdump.raw" windows.hadump
vol.py -f "memdump.raw" --profile <perfil> filescan
vol.py -f "memdump.raw" windows.filescan
Para detectar hooks en el kernel se emplea ldrmodules
(V2) y su homólogo windows.ldrmodules
(V3). En el registro, V2 cuenta con printkey
, hivescan
y hivelist
; en V3 los nombres adoptan la forma windows.printkey
y compañía.
# Kernel hooks y registro
vol.py -f "memdump.raw" --profile <perfil> ldrmodules
vol.py -f "memdump.raw" windows.ldrmodules
vol.py -f "memdump.raw" --profile <perfil> printkey
vol.py -f "memdump.raw" windows.printkey
vol.py -f "memdump.raw" --profile <perfil> hivescan
vol.py -f "memdump.raw" --profile <perfil> hivelist
La extracción de memoria por proceso en V2 se realiza con memdump -p <PID> -D <dir>
, mientras que en V3 se usa windows.memdump
. El volcado de archivos dispone de dumpfiles
(V2) y windows.dumpfiles
(V3), con capacidades extra para volcar por PID, VA o PA en la versión 3.
# Volcado de memoria/archivos
vol.py -f "memdump.raw" --profile <perfil> memdump -p <PID> -D <salida>
vol.py -f "memdump.raw" windows.memdump -p <PID> -D <salida>
vol.py -f "memdump.raw" --profile <perfil> dumpfiles --dump-dir="<salida>"
vol.py -f "memdump.raw" -o "<salida>" windows.dumpfiles --pid <PID>
También encontrarás plugins para handles (V2: handles -p
; V3: windows.handles --pid
), DLLs (V2: dlllist -p
; V3: windows.dlllist --pid
) y líneas de comando (V2: cmdline
, cmdscan
, consoles
; V3: windows.cmdline
).
# Handles, DLLs y líneas de comando
vol.py -f "memdump.raw" --profile <perfil> handles -p <PID>
vol.py -f "memdump.raw" windows.handles --pid <PID>
vol.py -f "memdump.raw" --profile <perfil> dlllist -p <PID>
vol.py -f "memdump.raw" windows.dlllist --pid <PID>
vol.py -f "memdump.raw" --profile <perfil> cmdline
vol.py -f "memdump.raw" windows.cmdline
En resumen forense, estos plugins complementan la visión “pslist” con artefactos de red, registro, módulos y archivos, ofreciendo una foto de lo que pasaba en el equipo en el momento de la captura.
PsList en guías de adquisición rápida y EULA
En listas operativas para recogida de evidencias en vivo verás a menudo comandos del estilo pslist.exe /accepteula
. Ese conmutador acepta la licencia en la primera ejecución y evita el diálogo gráfico, lo que es clave cuando automatizas la toma de datos.
pslist.exe /accepteula >> Procesos.txt
pslist.exe -t /accepteula >> procesos_arbol.txt
Estas recetas se complementan con tasklist, listdlls, handle y otras utilidades para capturar un “estado del sistema” en un único disparo. Orquestarlas en un script reduce el tiempo sobre la máquina (y el impacto).
Buenas prácticas en producción
Asegúrate de que el cortafuegos y las GPO permiten acceder a contadores de rendimiento en los equipos remotos; muchos “acceso denegado” vienen de ahí, no de PsList. Ajusta tiempos y frecuencia de refresco para no cargar sistemas críticos.
Si vas a automatizar en entornos sensibles, evita pasar contraseñas en claro. El prompt interactivo de PsList es cómodo en sesiones manuales; para pipelines, apóyate en bóvedas de secretos o mecanismos de ejecución seguros.
Para analizar a posteriori, redirige salidas a fichero y anota contexto (máquina, hora, usuario). Estas pequeñas disciplinas ahorran mucho tiempo cuando compartes resultados con otros equipos.
Fuentes, soporte y comunidad
La suite PsTools se descarga desde los sitios oficiales de Microsoft/Sysinternals. Dentro del paquete encontrarás ayuda en HTML y enlaces a foros donde la comunidad resuelve dudas a diario. Si localizas errores o quieres ampliar información, los foros oficiales de Sysinternals y páginas especializadas proporcionan soporte ágil.
Algunas traducciones y artículos amplían la documentación de PsList basándose en el trabajo original de Mark Russinovich, con notas sobre versiones, compatibilidad y ejemplos en castellano. En esas mismas fuentes verás menciones al foro oficial de Sysinternals y a recursos adicionales (incluidos PDFs docentes sobre malware conocidos). También es habitual que aparezcan enlaces cruzados a otros tutoriales de sistemas, como guías de VirtualBox o soluciones a problemas de HDMI: son referencias de contexto que no afectan a PsList, pero te pueden interesar si trabajas a diario con Windows.
Con todo lo anterior, PsList se consolida como una herramienta finísima para ver procesos al detalle, interpretar su consumo y entender su relación jerárquica, en local y en remoto; y si la emparejas con el resto de PsTools, cierras el círculo desde el diagnóstico hasta la remediación con una fricción mínima.