
Kit di analisi e ricerca per Windows
⚠️ Parti di questo progetto sono state 'vibe coded' con assistenza IA, quindi potrebbe avere alcuni bug. Il driver del kernel (KWinSys) dovrebbe essere installato solo in una VM di test per scopi di ricerca.

![]() Processi (Modalità Utente) | ![]() Sessioni ETW | ![]() Callback del Kernel |
![]() Pool del Kernel | ![]() Simboli | ![]() Filtri |
| Componente | Ruolo |
|---|---|
| NtWarden | App GUI (ImGui + DirectX 11) |
| WinSys | Libreria statica per l'enumerazione di processi, servizi e rete |
| KWinSys | Driver del kernel per callback, SSDT, moduli del kernel, ecc. |
| WinSysServer | Server TCP headless per ispezione remota |
| Scheda | Cosa fa |
|---|---|
| Processi | Elenco processi con vista ad albero, handle, thread, regioni di memoria, moduli |
| Prestazioni | Grafici in tempo reale dell'utilizzo di CPU, RAM, GPU e rete - possono essere sovrapposti ad altre attività |
| Servizi | Enumerazione dei servizi con stato, tipo di avvio, percorso del binario |
| Rete > Connessioni | Connessioni TCP/UDP con processo proprietario ed endpoint remoti |
| Rete > Certificati radice | Archivio CA radice attendibili con soggetto, emittente, impronta digitale |
| Rete > NDIS | Info scheda di rete - driver, MAC, velocità, tipo di supporto |
| ETW | Sessioni di traccia attive e provider registrati |
| IPC | Endpoint RPC e named pipe |
| Gestione oggetti | Esplora il namespace degli oggetti del kernel - directory, symlink, dispositivi |
| Registro | Esploratore del registro con enumerazione di chiavi/valori |
| Simboli | Stato di caricamento dei simboli in modalità utente |
| Logger | Intercetta i log di debug del driver del kernel e i log GUI in modalità utente in un unico posto |
| Scheda | Cosa fa |
|---|---|
| Oggetti Processo | Enumerazione EPROCESS, rilevamento dei processi nascosti tramite riferimenti incrociati |
| Moduli | Driver del kernel caricati con base, dimensione, percorso (insieme al controllo LolDrivers) |
| Callback | Callback del kernel (processo/thread/immagine/registro/oggetto/power) + controlli di integrità |
| SSDT | Voci SSDT con proprietario e rilevamento hook |
| Simboli | Risoluzione dei simboli del kernel e caricamento PDB |
| Pool del kernel | Allocazioni di pool di grandi dimensioni, statistiche dei tag di pool |
| Memoria R/W | Lettura/scrittura della memoria del kernel per indirizzo |
| Timer | Contatori di interrupt e DPC per CPU |
| Filtri | Driver minifilter con altitude e informazioni sull'istanza |
| Tabelle descrittori | Voci GDT/IDT |
| Dispatch IRP | Tabella di dispatch IRP per qualsiasi driver - indirizzi dei handler, modulo proprietario |
| WFP | Driver callout WFP e filtri |
| Stato DSE | Stato di Driver Signature Enforcement |
| Criteri CI | Criteri di Code Integrity e livello di applicazione |
| Integrità del kernel | Verifica del kernel .text rispetto all'immagine su disco |
| Hook Hypervisor | Rilevamento hook EPT tramite analisi dei tempi |
Analisi di sicurezza per processo, accessibile dal menu contestuale del processo.
| Sezione | Cosa verifica |
|---|---|
| Memoria non supportata | Regioni eseguibili private non supportate da alcun file (indicatore di shellcode) |
| Hollowing | Mancata corrispondenza tra ImageBase del PEB e ImageBase dell'header PE |
| Module Stomping | Sezioni .text in memoria confrontate con gli originali su disco |
| Syscall dirette | Istruzioni syscall (0F 05) trovate al di fuori di ntdll |
| Stub syscall | Integrità degli stub ntdll - byte in memoria rispetto alla copia pulita su disco |
| Hook utente | Hook inline (patch JMP/CALL) in ntdll, kernel32, ecc. (richiede capstone per disassemblare i byte analizzati) |
| Token | Elevazione, livello di integrità, impersonificazione, privilegi sospetti |
| Oggetti di debug | Oggetti di debug e porte di debug sul processo |
| Hypervisor | Controllo del vendor CPUID + anomalie temporali RDTSC/CPUID |
| Oggetti job | Appartenenza al job, limiti, restrizioni UI |
| Stato CFG | Stato di applicazione di CFG/XFG e flag di mitigazione |
Requisiti: Visual Studio 2022, Windows SDK 10.0.26100.0+, WDK (per KWinSys)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.sln in Visual Studiox64/Release/KWinSys richiede il test signing o una firma valida.
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
Eseguire NtWarden come Amministratore. Passando alla scheda Modalità kernel, il driver verrà installato e avviato automaticamente se non è già caricato. È possibile gestirlo anche manualmente dal menu Driver.
WinSysServer viene eseguito su una macchina di destinazione (di solito una VM) e fornisce dati di sistema su TCP. Connettersi da NtWarden tramite Remote > Connect.
| File | Percorso | Necessario per |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | Sempre |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | Solo funzionalità kernel |
Le funzionalità in modalità utente (processi, servizi, rete) funzionano senza il driver. Le schede kernel richiedono KWinSys caricato sulla macchina di destinazione.
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
Protocollo binario personalizzato su TCP. Header di 12 byte (MessageType, DataSize, Status). Nessuna autenticazione - utilizzare solo in ambienti di laboratorio/VM isolati.
MIT - vedi LICENSE.