Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
RemotePSpy — Strumento di monitoraggio in tempo reale per sessioni PowerShell remote che utilizza ETW per catturare e decodificare il protocollo WinRM/PSRP, fornendo tracce di esecuzione dei comandi e registrazione per l'analisi della sicurezza. | Kitploit
Strumenti/GitHubGitHub/withsecurelabs/remotepspy
Strumenti DifensiviSicurezza di ReteDigital ForensicsThreat IntelligenceRisposta agli IncidentiAnalisi dei Log
GitHubwithsecurelabs/remotepspy

RemotePSpy

Strumento di monitoraggio in tempo reale per sessioni PowerShell remote che utilizza ETW per catturare e decodificare il protocollo WinRM/PSRP, fornendo tracce di esecuzione dei comandi e registrazione per l'analisi della sicurezza.

Vedi Repository
198566 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

RemotePSpy

RemotePSpy fornisce il monitoraggio in tempo reale delle sessioni PowerShell remote, particolarmente utile per le versioni precedenti (pre-5.0) di PowerShell che non dispongono di funzionalità di registrazione complete integrate.

Utilizza Event Tracing for Windows (ETW) per ottenere i dati dei messaggi dal protocollo WinRM utilizzato come trasporto per PowerShell remoto, e decodifica i vari livelli del protocollo per fornire una traccia dei comandi script eseguiti e del loro input/output.

Attualmente si tratta di un prototipo di ricerca iniziale e pertanto non supporta ogni aspetto del Remote PowerShell Protocol (PSRP). Può comunque fornire informazioni utili su ciò che accade in una sessione PowerShell remota.

Installazione

Il modo più semplice per installare è tramite pip:

pip install remotepspy

Dipendenze

Le dipendenze dovrebbero essere installate automaticamente quando si installa tramite pip, ma nel caso si desideri installare dal sorgente, sono elencate qui:

  • Python 3.7
  • pywintrace (https://github.com/fireeye/pywintrace o https://pypi.org/project/pywintrace/)
  • psutils (https://pypi.org/project/pywintrace/)
  • libwim-15.dll da https://wimlib.net/ (incluso nel pacchetto RemotePSpy per comodità)

La libwim-15.dll è necessaria solo se si utilizza il provider ETW Microsoft-Windows-WinRM (consigliato e predefinito) come fonte dati. Viene utilizzata per decomprimere alcuni oggetti di flusso nel protocollo WinRM/WSMan che contengono frammenti di messaggi PSRP. Basta inserirla nella stessa directory dello script Python principale.

Utilizzo

È sufficiente eseguire RemotePSpy per avviare il monitoraggio e la registrazione, e premere Invio quando si è terminato. Il log verrà scritto nella directory di lavoro corrente, con il nome RemotePSpy.log.

Lo strumento stamperà anche una replica approssimativa di ciò che l'utente di PowerShell remoto vedrebbe sul proprio schermo su stdout, insieme alle informazioni più dettagliate nel file di log. È disponibile una registrazione più complessa, vedere "Registrazione" di seguito.

Se Python è stato installato nel PATH, gli script eseguibili di RemotePSpy saranno anch'essi nel PATH. In caso contrario, potrebbe essere necessario cercarli nella directory dei site-packages di Python.

Versione del Provider ETW di PowerShell

Il RemotePSpy predefinito utilizza il provider ETW WinRM (consigliato) come fonte dati. Se si desidera utilizzare invece il provider ETW di PowerShell, è possibile eseguire RemotePSpy_powershell_prov.

Questa versione potrebbe produrre alcuni avvisi non necessari a causa della maggiore complessità nel tracciare determinati stati in base a come i dati vengono forniti in questo particolare provider ETW.

Interni

Il codice è composto da un certo numero di classi abbastanza modulari che possono accettare input a diversi livelli dello stack del protocollo. Ciò consente di collegarle tra loro in modi leggermente diversi a seconda di dove vengono ottenuti i dati e in quale forma. La maggior parte delle classi accetta una funzione di callback che utilizzano per passare il risultato prodotto al livello successivo dello stack.

Di seguito viene fornita una descrizione delle classi principali utilizzate, seguita da alcuni flussi di elaborazione che mostrano quale classe alimenta quale in diversi scenari.

  • ETWWinRM – Ottiene gli eventi ETW dal provider WinRM.

  • ETWPowerShell – Ottiene gli eventi ETW dal provider PowerShell.

  • PowerShellETWParser – Identifica il contesto Shell per gli eventi ETW di PowerShell, passando i dati dei frammenti a PSRPDefragmenter. Fornisce anche la sincronizzazione dei thread.

  • SoapDefragmenter – Riassembla i messaggi SOAP WSMan completi dagli eventi ETW di WinRM, passando il SOAP completo a WSManPS.

  • WSManPS – Filtra i WinRM non correlati a PowerShell, traccia il contesto Shell, estrae i dati dei frammenti PSRP dal SOAP WSMan e li passa a PSRPDefragmenter.

  • PSRPDefragmenter – Riassembla i frammenti PSRP in messaggi PRSP completi. I frammenti vengono assemblati per ObjectID e l'unicità dell'ObjectID è garantita tenendo conto del contesto Shell. Passa i messaggi PSRP finali a PSRPParser.

  • PSRPParser – Decodifica il messaggio PSRP binario grezzo, estraendo i dettagli dell'intestazione come RPID, Pipeline ID e MessageType. Passa i messaggi decodificati a SimpleCommandTracer.

  • SimpleCommandTracer – Interpreta i messaggi PSRP utilizzando MessageType, estrae e stampa/registra comandi, argomenti e il loro output. Include la decodifica parziale degli oggetti PowerShell serializzati. Non è un'implementazione completa di ogni possibile funzionalità, ma tenta di coprire la maggior parte dei casi comuni per consentire la traccia dell'esecuzione.

Flusso di elaborazione quando si utilizza il provider ETW Microsoft-Windows-WinRM:

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

Flusso di elaborazione quando si utilizza il provider ETW Microsoft-Windows-PowerShell:

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

Registrazione

È disponibile una registrazione completa a ogni livello dello stack del protocollo. Ciò consente il debug a vari livelli ed è stato particolarmente utile durante lo sviluppo. Si spera che possa essere utile anche a chiunque voglia investigare PowerShell remoto in azione, poiché è possibile ottenere una traccia completa del protocollo a tutti i livelli chiave.

Attualmente, il codice sorgente alla fine dello script dove vengono configurati i logger deve essere modificato per cambiare la registrazione. Le versioni future dovrebbero fornire un metodo migliore per tale configurazione.

Ogni nome di logger è definito da una costante, LOGGER_NAME, nella classe che lo utilizza. Ogni logger è definito come figlio di "RemotePSpy" (ad es. RemotePSpy.etw). A livello di programmazione, i logger possono essere configurati utilizzando logging.getLogger() con il nome di log appropriato.

Per un rapido riferimento, i seguenti logger e livelli forniranno tracce del protocollo a diversi livelli del protocollo:

Dati chiave del logCostante del nome del loggerLivello
Traccia dei comandiSimpleCommandTracer.LOGGER_NAMEINFO
Traccia completa degli eventi ETWETWWinRM.LOGGER_NAMEDEBUG
Traccia completa dei messaggi SOAP WSManSoapDefragmenter.LOGGER_NAMEINFO
Traccia completa di ogni frammento PSRPPSRPDefragmenter.LOGGER_NAMEDEBUG
Traccia completa dei messaggi PSRPPSRPParser.LOGGER_NAMEDEBUG

Nota che SimpleCommandTracer emette anche una traccia su stdout, che tenta di replicare in qualche modo la visualizzazione come la vedrebbe l'utente di PowerShell remoto. Questo è diverso dal log di traccia dei comandi che registra ogni comando, chiamata di metodo della pipeline e output della pipeline in modo più preciso, includendo contesto aggiuntivo come RPID e Pipeline ID.

Di seguito viene fornito un riepilogo più completo di ciò che appare in ogni log a quale livello:

SimpleCommandTracer.LOGGER_NAME

ERROR:

  • Errori di parsing

WARNING:

  • Tipo o metodo di pipeline non supportato incontrato

INFO:

  • La traccia effettiva dei comandi

DEBUG:

  • Metodo di pipeline chiamato senza argomenti

PSRPParser.LOGGER_NAME

DEBUG:

  • Traccia completa dei messaggi PSRP

PSRPDefragmenter.LOGGER_NAME

ERROR:

  • Frammento fuori ordine ricevuto

WARNING:

  • Anomalie non fatali nel tracciamento della Shell

INFO:

  • Frammento finale trovato
  • ID Shell trovato nei dati dei frammenti che non era stato tracciato esplicitamente in precedenza

DEBUG:

  • Traccia completa di ogni frammento PSRP

WSManPS.LOGGER_NAME

ERROR:

  • Errori di parsing gravi
Scarica lo strumento