Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Winstrument — Winstrument è un framework di script modulari per assistere nella strumentazione di software Windows utilizzando Frida per il reverse engineering e l'analisi della superficie d'attacco. | Kitploit
Strumenti/GitHubGitHub/nccgroup/winstrument
Analisi delle VulnerabilitàAnalisi Dinamica del Codice (DAST)Reverse EngineeringAnalisi di Binari
GitHubnccgroup/winstrument

Winstrument

Winstrument è un framework di script modulari per assistere nella strumentazione di software Windows utilizzando Frida per il reverse engineering e l'analisi della superficie d'attacco.

Vedi Repository
6896 anni faRevisionato da Kitploit

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

Winstrument

Winstrument è un framework di script modulari per assistere nell'instrumentazione di software Windows utilizzando Frida per il reverse engineering e l'analisi della superficie d'attacco.

Contenuti

  • Installazione
  • Utilizzo
  • Struttura del progetto
  • Moduli
  • CLI
  • Risoluzione dei problemi
  • Copyright

Installazione

Questo progetto supporta python 3.7. Supponendo che tu abbia già Python e pip installati, è sufficiente:

root@kitploit:~
pip install winstrument

e quindi per eseguire il programma, esegui:

root@kitploit:~
winstrument

Nota che lo strumento è attualmente sperimentale e può occasionalmente bloccarsi o presentare altri problemi di stabilità.

In alcuni casi, come una nuova installazione di Windows 10, potresti incontrare un errore SSL in pip durante l'installazione di Frida. Se ciò accade, consulta Risoluzione dei problemi di seguito.

Utilizzo

Per eseguire la REPL di winstrument, basta eseguire winstrument. Ecco un rapido esempio di strumentazione di notepad.exe con il modulo registry. Per informazioni complete sui comandi CLI disponibili, consulta la sezione CLI qui sotto.

root@kitploit:~
PS C:\winstrument> winstrument
> set target C:\Windows\System32\notepad.exe
> use registry
> run
Spawned 1144
instrumented process with pid: 1144 and path: C:\Windows\System32\notepad.exe

<User closes notepad from GUI>

detached from 1144 for reason process-terminated
> show registry
module    time               target                           function          hkey                subkey                                                                       value
--------  -----------------  -------------------------------  ----------------  ------------------  ---------------------------------------------------------------------------  ---------------------------------
registry  2019-08-19 07:03:07  C:\Windows\System32\notepad.exe  RegGetValueW      0x2f4               SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize                 AppsUseLightTheme
<...>

Nell'esempio precedente, l'utente indica il processo target, in questo caso notepad.exe. Indica poi di voler utilizzare il modulo registry, che enumera le chiamate di sistema relative al registro effettuate dal programma. Una volta terminato il processo (l'utente chiude Notepad), l'output salvato può essere visualizzato usando show registry.

Struttura del progetto

Il file python principale winstrument.py inizializza il dispositivo Frida e avvia un'istanza del processo target. cmdline.py fornisce un'interfaccia a riga di comando utilizzando cmd2. Questo è il punto di ingresso principale dello script quando Winstrument viene eseguito direttamente dalla riga di comando. I comandi sono documentati di seguito.

Successivamente esamina ogni modulo abilitato, lo istanzia e chiama il metodo load_scripts() del modulo per strumentare il processo. Infine, chiama get_output() e on_finish() per ogni modulo al momento del distacco dal target.

I moduli sono contenuti in file .py nella directory modules/. Un modulo consiste in una sottoclasse di base_module.BaseInstrumentation che definisce il codice da iniettare, la gestione dei messaggi per quel codice iniettato e l'output. Le API dei moduli sono definite più avanti nella sezione "Moduli" qui sotto.

Ogni modulo memorizza metadati come la sua descrizione in modules/metadata.toml. La sezione deve essere intestata con il nome del modulo (senza distinzione tra maiuscole e minuscole). Ad esempio, ecco la sezione corrispondente al modulo dlls:

root@kitploit:~
[DLLS]
description = """Hooks LoadLibrary-family system calls and outputs DLL loads where part of the search path might be
writable by the current user or a low-privileged user group."""

Il programma memorizza le impostazioni in settings.toml in %APPDATA%/winstrument. Poiché la maggior parte, se non tutti, i moduli inietteranno JavaScript nel processo target, la directory modules/js/ contiene frammenti JavaScript di Frida che vengono caricati e iniettati dai moduli. Questi file dovrebbero avere lo stesso nome del modulo, cioè il modulo dlls.py utilizzerà JS da js/dlls.js.

Moduli

Come descritto sopra, ogni modulo è una sottoclasse di BaseInstrumentation da base_module.py

Ogni modulo dovrebbe definire il proprio nome (il nome dei file python e js senza estensione) come attributo statico di classe chiamato modulename. I moduli possono utilizzare o sovrascrivere i seguenti metodi di BaseInstrumentation:

  • __init__(self,*args,**kwargs) - Oltre ad eventuale codice di inizializzazione specifico del modulo, questo costruttore dovrebbe chiamare super().__init__(*args,**kwargs).
  • load_script(self) - Questo metodo generalmente non dovrebbe essere sovrascritto, poiché l'implementazione in BaseInstrumentation dovrebbe essere sufficiente per la maggior parte dei casi d'uso. Per agganciare gli eventi Frida, sovrascrivi invece register_callbacks(). load_script dovrebbe essere usato per caricare il file javascript da strumentare, chiamare session.create_script di Frida, aggiungere eventuali callback desiderati e poi chiamare il metodo load() dell'oggetto script per strumentare.
  • register_callbacks(self) - Chiamato da BaseInstrumentation.load_script prima di caricare lo script nel processo target. Utilizzato per registrare eventi come _session.on('message') ecc. La versione di aggiunge un hook per on_message di default.

CLI

La shell di Winstrument fornisce i seguenti comandi:

  • list - Mostra tutti i moduli disponibili e caricati
  • load <modulename>/use <modulename> - Abilita il modulo con il nome indicato
  • unload <modulename> - Disabilita il modulo con il nome indicato
  • set [setting [value]] - Senza argomenti, mostra tutte le impostazioni e i loro valori. Con un argomento, mostra il valore di setting. Con due argomenti, imposta setting su value. Le impostazioni persistono tra più esecuzioni.
  • show [modulename [format]] - Mostra l'input memorizzato da modulename nel format specificato. Eseguito senza argomenti per visualizzare un elenco di formattatori.
  • info <modulename> - Stampa una descrizione del modulo con il nome indicato.

Risoluzione dei problemi

Pip fallisce con "SSL Certificate Verify Failed" durante l'installazione di Frida

Questo problema si verifica principalmente su una nuova installazione di Windows. Il setup.py di Frida tenta di scaricare un file .egg da https://files.pythonhosted.org. In alcuni casi, l'operazione fallisce perché il certificato SSL per quel dominio non viene verificato. Questo sembra essere un effetto collaterale del modo in cui Windows carica le CA radice. Windows sembra non includere tutte le CA radice in un'installazione predefinita, preferendo invece scaricarle al bisogno quando si visitano i siti web. Di conseguenza, la CA radice che ha firmato il certificato SSL di files.pythonhosted.org potrebbe non essere presente nell'archivio di certificati attendibili di sistema.

Per risolvere questo problema, visita manualmente https://files.pythonhosted.org in Edge o Chrome per fare in modo che Windows aggiunga la CA radice al proprio archivio di certificati attendibili, quindi riprova pip install. Nota che visitare la pagina in Firefox non funzionerà, perché Firefox utilizza un proprio archivio di certificati attendibili invece di quello di sistema.

Copyright

Winstrument è concesso in licenza sotto GPLv3. Per maggiori dettagli, consulta il file LICENSE.

Scarica lo strumento
BaseInstrumentation
  • write_message(message) accetta un messaggio JSON-like come dict, lo scrive nel database sqlite e lo salva per l'output successivo.
  • post_load(self) Chiamato da BaseInstrumentation.load_script dopo che lo script è stato caricato nel processo target. Potrebbe essere usato, ad esempio, per chiamare metodi rpc esportati dallo script.
  • get_output(self) - Chiamato dallo script principale quando il target viene scollegato. Questo metodo dovrebbe restituire una lista, in cui ogni voce è un oggetto MoudleMessage (da data/module_message.py). Generalmente non necessita di essere sovrascritto.
  • on_message(self,message,data) - Callback per la gestione dell'evento message di frida, che viene attivato da send nel JS iniettato
  • on_finish(self) - Callback chiamato dallo script principale quando il target si scollega. Esegui qui tutte le operazioni di pulizia necessarie.
  • run - Avvia la strumentazione.
  • q/quit/exit - Esce dalla CLI (ovviamente).