Scritto in un giorno uno scanner statico per trovare driver .sys che leggono/scrivono la memoria kernel
Testo scritto con l’intelligenza artificiale a partire da una fonte citata, senza revisione umana prima della pubblicazione.
Lo sviluppatore mrcupcake ha creato driverhunter, uno strumento che analizza.sys senza caricarli per segnalare IOCTL pericolosi e risoluzioni dinamiche di API di kernel.
Lo sviluppatore con handle mrcupcake ha scritto in un giorno driverhunter, uno strumento che analizza file .sys di Windows senza caricarli e cerca driver che espongono lettura o scrittura arbitraria della memoria kernel a chiunque apra il device1.
L’idea nasce durante il fuzzing di driver del kernel. I bug più interessanti non sono i crash generati mandando byte a un IOCTL. Sono quelli progettati nel codice: percorsi che concedono accesso alla memoria del kernel. Individuarli a mano, in decine di .sys firmati, è lento1.
C’è un vincolo operativo. L’autore lavora su una VPS economica. Non può caricare driver. Defender mette in quarantena ogni binario BYOVD che vede. La scelta è l’analisi statica pura: nessuna esecuzione, nessun driver caricato1.
driverhunter fa tre cose, senza eseguire nulla. Prima, legge la tabella delle importazioni del PE e scansiona tutte le stringhe ASCII, cercando API pericolose. La scansione delle stringhe conta perché molti driver risolvono a runtime routine rischiose con MmGetSystemRoutineAddress, quindi non compaiono nella import table1.
Secondo, estrae gli IOCTL dal codice. Cammina la sezione .text con Capstone e raccoglie i confronti cmp tra registri e immediati che “sopravvivono” al layout dell’IOCTL, così ricostruisce i codici gestiti dal driver1.
Terzo, segnala i casi più sospetti: marca ogni codice IOCTL con METHOD_NEITHER che nel binario non mostra alcuna chiamata a ProbeForRead o ProbeForWrite1.
L’obiettivo è ridurre il tempo di triage. Si setacciano decine di file firmati senza caricare alcun driver e senza scontrarsi con Defender. Le verifiche si concentrano su indizi concreti presenti nel binario: nomi di API nelle stringhe, confronti su costanti di IOCTL, assenza di probe quando il driver usa METHOD_NEITHER1.
La scansione delle stringhe copre un caso comune in cui le sole importazioni non bastano. Se una routine sensibile viene risolta dinamicamente, il suo nome non appare nella import table. La presenza nel binario di una stringa che identifica l’API fornisce l’indizio necessario, perché l’accesso passa da MmGetSystemRoutineAddress1.
Il passaggio con Capstone mira al minimo indispensabile per la ricostruzione degli IOCTL: cercare cmp tra registri e immediati che rispettano il layout di questi codici. Da lì, lo strumento collega i codici trovati all’uso di METHOD_NEITHER e verifica se nel binario compaiono ProbeForRead o ProbeForWrite. Se mancano, il caso viene evidenziato1.
La scelta di evitare l’esecuzione nasce da un limite concreto dell’ambiente di analisi. Su una VPS economica, Defender interviene alla prima avvisaglia di BYOVD. L’approccio statico consente di lavorare senza caricare driver e con un perimetro operativo compatibile con queste restrizioni1.
Un dettaglio pratico: driverhunter accetta un file .sys come percorso locale oppure come URL. Si indica la posizione del driver da esaminare e lo strumento procede all’analisi statica nei tre passaggi descritti1.
Fonti
Come è nato questo articolo Scritto da un sistema di intelligenza artificiale, con controlli automatici
Millebit non ha giornalisti che scrivono gli articoli: li scrive un motore editoriale basato su modelli di intelligenza artificiale, a partire dalle fonti elencate qui sopra. Prima di uscire, ogni testo passa questi controlli:
- Rilettura. Un passaggio toglie i tic della prosa generata da un modello, come i contrasti costruiti e le frasi che annunciano invece di informare, senza toccare fatti e fonti.
- Fedeltà alle fonti. Un passaggio dedicato toglie ogni affermazione che le fonti non sostengono. Valutazione su questo pezzo: 9/10.
- Anti-cliché. Un filtro scarta frasi fatte, enfasi e tic della prosa artificiale: superato.
- Giudizio editoriale. Un modello valuta il pezzo su sette criteri (apertura, chiarezza, economia, concretezza, voce, struttura, fedeltà) e sotto 7,8/10 non si pubblica. Questo articolo ha preso 7,8/10.
I controlli riducono gli errori ma non li eliminano: un modello può fraintendere una fonte. Per le decisioni importanti, risali alla fonte originale. Se trovi un errore, segnalacelo.
Per vedere Millebit nelle notizie principali di Google, aggiungilo alle tue fonti preferite. Oppure segui l’edizione di oggi, il feed RSS o La Sintesi.