Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
RemotePSpy — Herramienta de monitorización en vivo para sesiones remotas de PowerShell que utiliza ETW para capturar y decodificar el protocolo WinRM/PSRP, proporcionando trazas de ejecución de comandos y registro para análisis de seguridad. | Kitploit
Herramientas/GitHubGitHub/withsecurelabs/remotepspy
Herramientas DefensivasSeguridad de RedesForensia DigitalInteligencia de AmenazasRespuesta a IncidentesAnálisis de Registros
GitHubwithsecurelabs/remotepspy

RemotePSpy

Herramienta de monitorización en vivo para sesiones remotas de PowerShell que utiliza ETW para capturar y decodificar el protocolo WinRM/PSRP, proporcionando trazas de ejecución de comandos y registro para análisis de seguridad.

Ver Repositorio
19844hace 6 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

RemotePSpy

RemotePSpy proporciona monitorización en vivo de sesiones remotas de PowerShell, lo que resulta especialmente útil para versiones antiguas (anteriores a la 5.0) de PowerShell que no disponen de funciones integrales de registro integradas.

Utiliza Event Tracing for Windows (ETW) para obtener datos de mensajes del protocolo WinRM, que se emplea como transporte para PowerShell remoto, y decodifica las distintas capas del protocolo para ofrecer un rastro de los comandos de script ejecutados y su entrada/salida.

Actualmente es un prototipo de investigación temprano, por lo que no admite todos los aspectos del Protocolo Remoto de PowerShell (PSRP). Aun así, puede proporcionar información útil sobre lo que ocurre en una sesión remota de PowerShell.

Instalación

La forma más sencilla de instalarlo es mediante pip:

root@kitploit:~
pip install remotepspy

Dependencias

Las dependencias deberían instalarse automáticamente al instalar mediante pip, pero en caso de que desees instalarlas desde el código fuente, se enumeran aquí:

  • Python 3.7
  • pywintrace (https://github.com/fireeye/pywintrace o https://pypi.org/project/pywintrace/)
  • psutils (https://pypi.org/project/pywintrace/)
  • libwim-15.dll de https://wimlib.net/ (incluido en el paquete RemotePSpy por comodidad)

La libwim-15.dll solo es necesaria si se utiliza el proveedor ETW de Microsoft-Windows-WinRM (recomendado y predeterminado) como fuente de datos. Se usa para descomprimir ciertos objetos de flujo en el protocolo WinRM/WSMan que contienen fragmentos de mensajes PSRP. Solo tienes que colocarla en el mismo directorio que el script principal de Python.

Uso

Simplemente ejecuta RemotePSpy para comenzar la monitorización y el registro, y pulsa Retorno cuando hayas terminado. El registro se escribirá en el directorio de trabajo actual, con el nombre RemotePSpy.log.

La herramienta también imprimirá en stdout una réplica aproximada de lo que el usuario de PowerShell remoto vería en su pantalla, junto con la información más detallada del archivo de registro. Hay disponible un registro más complejo; consulta "Registro" más abajo.

Si has instalado Python para que esté en tu PATH, los scripts ejecutables de RemotePSpy también estarán en tu PATH. De lo contrario, puede que necesites buscarlos en tu directorio de site-packages de Python.

Versión del proveedor ETW de PowerShell

El RemotePSpy predeterminado utiliza el proveedor ETW de WinRM (recomendado) como fuente de datos. Si deseas usar el proveedor ETW de PowerShell en su lugar, puedes ejecutar RemotePSpy_powershell_prov.

Esta versión puede producir algunas advertencias innecesarias debido a la complejidad añadida de rastrear ciertos estados según cómo se proporcionan los datos en este proveedor ETW concreto.

Funcionamiento interno

El código consta de varias clases bastante modulares que pueden aceptar entrada en diferentes capas de la pila del protocolo. Esto permite conectarlas de formas ligeramente distintas según de dónde se obtengan los datos y en qué formato. La mayoría de las clases aceptan una función de devolución de llamada que utilizan para transmitir el resultado que producen a la siguiente capa de la pila.

A continuación se ofrece una descripción de las clases principales utilizadas, seguida de algunos flujos de procesamiento que muestran qué clase alimenta a cuál en diferentes escenarios.

  • ETWWinRM: obtiene eventos ETW del proveedor WinRM.

  • ETWPowerShell: obtiene eventos ETW del proveedor PowerShell.

  • PowerShellETWParser: identifica el contexto de Shell para los eventos ETW de PowerShell, transmitiendo los datos de fragmentos a PSRPDefragmenter. También proporciona sincronización de hilos.

  • SoapDefragmenter: vuelve a ensamblar mensajes SOAP WSMan completos a partir de eventos ETW de WinRM, transmitiendo el SOAP completo a WSManPS.

  • WSManPS: filtra el WinRM no relacionado con PowerShell, rastrea el contexto de Shell, extrae los datos de fragmentos PSRP del SOAP WSMan y transmite los datos de fragmentos a PSRPDefragmenter.

  • PSRPDefragmenter: vuelve a ensamblar fragmentos PSRP en mensajes PSRP completos. Los fragmentos se ensamblan por ObjectID, y la unicidad del ObjectID se garantiza teniendo en cuenta el contexto de Shell. Transmite los mensajes PSRP finales a PSRPParser.

  • PSRPParser: decodifica el mensaje PSRP binario sin procesar, extrayendo detalles del encabezado como RPID, ID de canalización y MessageType. Transmite los mensajes decodificados a SimpleCommandTracer.

  • SimpleCommandTracer: interpreta los mensajes PSRP mediante MessageType, y extrae e imprime/registra comandos, argumentos y su salida. Incluye decodificación parcial de objetos PowerShell serializados. No es una implementación completa de todas las funciones posibles, pero intenta cubrir la mayoría de los casos comunes para permitir el rastreo de ejecución.

Flujo de procesamiento al usar el proveedor ETW de Microsoft-Windows-WinRM:

ETWWinRM -> SoapDefragmenter -> WSManPS -> PSRPDefragmenter -> PSRPParser -> SimpleCommandTracer

Flujo de procesamiento al usar el proveedor ETW de Microsoft-Windows-PowerShell:

ETWPowerShell -> PowerShellETWParser -> PSRPDefragmenter -> PSRPParser -> SimpleCommandTracer

Registro

Hay un registro exhaustivo en cada capa de la pila del protocolo. Esto permite la depuración en varios niveles y fue especialmente útil durante el desarrollo. Con suerte, también puede resultar útil para cualquiera que desee investigar PowerShell remoto en acción, ya que es posible obtener un rastro completo del protocolo en todas las capas clave.

Actualmente, el código fuente al final del script donde se configuran los registradores debe editarse para cambiar el registro. Las versiones futuras deberían proporcionar, con suerte, un método mejor para dicha configuración.

Cada nombre de registrador se define mediante una constante, LOGGER_NAME, en la clase que lo utiliza. Cada registrador se define como hijo de "RemotePSpy" (p. ej., RemotePSpy.etw). Programáticamente, los registradores pueden configurarse usando logging.getLogger() con el nombre de registro adecuado.

Para referencia rápida, los siguientes registradores y niveles te proporcionarán rastros del protocolo en diferentes capas del mismo:

Datos clave del registroConstante de nombre de registradorNivel
Rastro de comandosSimpleCommandTracer.LOGGER_NAMEINFO
Rastro completo de eventos ETWETWWinRM.LOGGER_NAMEDEBUG
Rastro completo de mensajes SOAP WSManSoapDefragmenter.LOGGER_NAMEINFO
Rastro completo de cada fragmento PSRPPSRPDefragmenter.LOGGER_NAMEDEBUG
Rastro completo de mensajes PSRPPSRPParser.LOGGER_NAMEDEBUG

Ten en cuenta que SimpleCommandTracer también genera un rastro en stdout, y este intenta replicar en cierta medida la visualización tal como la vería el usuario de PowerShell remoto. Esto es diferente del registro de rastro de comandos, que registra cada comando, llamada de método de canalización y salida de canalización de una manera más precisa, incluyendo contexto adicional como RPID e ID de canalización.

A continuación se ofrece un resumen más completo de lo que aparece en cada registro y en qué nivel:

SimpleCommandTracer.LOGGER_NAME

ERROR:

  • Errores de análisis

WARNING:

  • Tipo o método de canalización no compatible encontrado

INFO:

  • El rastro de comandos real

DEBUG:

  • Método de canalización llamado sin argumentos

PSRPParser.LOGGER_NAME

DEBUG:

  • Rastro completo de mensajes PSRP

PSRPDefragmenter.LOGGER_NAME

ERROR:

  • Fragmento fuera de orden recibido

WARNING:

  • Anomalías de seguimiento de Shell no fatales

INFO:

  • Fragmento final encontrado
  • ID de Shell de seguimiento encontrado en datos de fragmentos que no se había rastreado explícitamente antes

DEBUG:

  • Rastro completo de cada fragmento PSRP

WSManPS.LOGGER_NAME

ERROR:

  • Errores graves de análisis

WARNING:

  • Errores de análisis menos graves
  • Sobrescritura de contextos de seguimiento de shell/comando existentes

INFO:

  • Información de seguimiento de shell y comando

DEBUG:

  • Rastro completo de mensajes WSMan que se ignoran por no estar relacionados con PowerShell

SoapDefragmenter.LOGGER_NAME

INFO:

  • Rastro completo de mensajes SOAP WSMan

DEBUG:

  • Fragmento SOAP procesado

PowerShellETWParser.LOGGER_NAME

DEBUG:

  • Información de seguimiento de shell

ERROR:

  • Errores de identificación del contexto de shell
  • Excepciones generales de capas inferiores

ETWWinRM.LOGGER_NAME

DEBUG:

  • Rastro completo de eventos ETW

INFO:

  • Inicio/parada de sesión ETW
Descargar herramienta