Monitoraggio della sequenza di chiamate dell'API di Windows

0

Ho bisogno di monitorare una sequenza di chiamate API creata da un processo in esecuzione su Microsoft Windows, per analizzare il comportamento del malware.

So che possiamo fare il modo utente o il monitoraggio della modalità kernel. Ho provato alcuni strumenti che possono intercettare le chiamate API, come Detours, EasyHook e NTHookEngine, ma tutti, a mio avviso, utilizzano il monitoraggio della modalità utente. Ciò rende impossibile per loro rilevare malware in esecuzione nella modalità kernel (come i rootkit).

Se proviamo ad agganciare la chiamata API usando Detours o EasyHook, dobbiamo definire la nostra funzione di hooking che in questo caso non è necessario. Ho solo bisogno di conoscere la funzione che viene chiamata da un processo monitorato e i suoi parametri.

C'è un modo per farlo in modo efficiente (poche righe di codice) ed efficace (modalità utente e modalità kernel monitor)?

    
posta Ramandika Pranamulia 19.07.2016 - 07:20
fonte

1 risposta

1

Per quanto riguarda i ganci in modalità utente, forse puoi scrivere una funzione stub generica che

  1. Si collega a tutte le chiamate kernel32.

  2. Passa la chiamata all'indirizzo API originale (dovrai creare un array di tutti gli indirizzi API originali per determinare l'indirizzo corretto).

  3. Confronta l'indirizzo del callee con lo IAT con l'indirizzo API originale.

Questa tecnica di sequencing delle chiamate per il rilevamento dei rootkit è in grado di rilevare in modo chiaro i ganci, ma non posso immaginare che funzioni per il patching in fase di esecuzione - hook inline AKA, poiché non creano uno stack frame.

Se sei riluttante a percorrere questa strada, potresti prendere in considerazione l'aggancio all'API nativa in modalità kernel, che ha circa 290 funzioni per Windows 7 SP1. Dovrai disabilitare o bypassare PatchGuard su sistemi x64.

    
risposta data 12.09.2016 - 15:08
fonte

Leggi altre domande sui tag