HookDump
Dump degli hook delle funzioni EDR
Fai riferimento al post sul blog di Zeroperil per maggiori informazioni https://zeroperil.co.uk/hookdump/
Compilazione del sorgente
- Per compilarlo avrai bisogno di Visual Studio 2019 (l'edizione community va bene) e CMake. Il file batch Configure.bat creerà due directory di build con soluzioni di Visual Studio.
- Il progetto potrebbe compilare con MinGW con la giusta riga di comando di CMake, questo non è testato, YMMV.
- C'è una dipendenza dal disassemblatore zydis, quindi assicurati di aggiornare i sottomoduli in git prima di configurare il progetto.
- C'è un progetto a 32 bit e uno a 64 bit, potresti scoprire che gli EDR hookano funzioni diverse in 32/64 bit, quindi compilare ed eseguire entrambi gli eseguibili potrebbe fornire risultati più completi.
Note
- Alcuni EDR sostituiscono lo stub WOW nella struttura TEB (in particolare Wow32Reserved) per hookare le chiamate di sistema per i binari a 32 bit. In questo caso potresti vedere zero hook poiché non ci sono istruzioni di jump in NTDLL. Molto probabilmente vedrai hook nella versione x64 poiché l'istruzione syscall viene utilizzata per le chiamate di sistema invece di uno stub WOW.
- Abbiamo notato che Windows Defender non utilizza alcun hook in modalità utente.
- Questo strumento è progettato per essere eseguito come utente standard, non è richiesta elevazione.
Tipi di Hook Rilevati
JMP
Un'istruzione di jump è stata patchata nella funzione per reindirizzare il flusso di esecuzione.
WOW
Rilevamento dello stub delle chiamate di sistema WOW64 che è stato hookato, il che consente il filtraggio di tutte le chiamate di sistema.
EAT
L'indirizzo nella tabella degli indirizzi di export non corrisponde all'indirizzo nella tabella degli indirizzi di export nella copia su disco.
GPA
Hook di GetProcAddress, una funzionalità sperimentale, viene visualizzato solo in modalità verbose, quando il risultato di GetProcAddress non corrisponde all'indirizzo della funzione risolto manualmente. I risultati possono variare con questo e bisogna prestare attenzione per verificare i risultati.
Verifica
L'unico modo per verificare realmente il corretto funzionamento del programma è controllare in un debugger se gli hook sono presenti. Se stai ottenendo un risultato di zero hook e ti aspetti di vedere qualcosa di diverso, allora verifica prima con un debugger e contattaci.