Quali sono i metodi per trovare funzioni e API agganciate?

4

Molti eseguibili di malware utilizzano l'hooking per essere invisibili. Ho familiarità con alcuni metodi di aggancio, non sono sicuro di quali metodi esistono per rilevarli. C'è un modo per dire quando una chiamata di funzione è stata modificata per eseguire altre attività tramite hook?

    
posta Heeru West 31.07.2012 - 13:18
fonte

1 risposta

13

Gli hook sono implementati in molti modi:

  • Modifica delle istruzioni di salto legittime in modo che puntino agli hook anziché al codice normale.
  • Aggancio tabella chiamate utente (IAT) - modifica degli indirizzi delle API in modalità utente in un processo.
  • Aggancio tabella chiamate Kernel (ad esempio SSDT / GDT) - sostituendo un puntatore della tabella chiamate con l'indirizzo del proprio hook.
  • Ami WndProc (ad esempio PeekMessage ) - si agganciano ai messaggi di notifica della finestra.
  • Richiami legittimi come PsSetCreateProcessNotifyRoutine .

Suppongo che tu sia più interessato ai primi due tipi.

I jump hook possono essere creati in un numero quasi infinito di modi. Ciò rende quasi impossibile scrivere uno strumento per identificare i ganci. Tuttavia, puoi utilizzare trucchi per il controllo dell'integrità, ad es. confronto del codice nel file binario (ad esempio exe o dll ) al codice in memoria. Puoi anche agganciare WriteProcessMemory e altre API di questo tipo per rilevare la modifica della memoria del processo, sebbene funzioni solo contro gli attacchi in modalità utente.

I ganci IAT sono un po 'più facili da controllare. Scatta un'istantanea dello IAT di un processo quando inizia (ad esempio, dal binario statico) e confronta lo IAT in memoria con gli indirizzi reali delle funzioni che dovrebbero essere lì. Ad esempio, se si conosce la voce IAT 4 punti su user32.MessageBoxA , è possibile utilizzare GetProcAddress per trovare l'indirizzo reale di tale funzione e confrontare l'indirizzo nell'IAT con quello. Se non corrispondono, sai che è stato agganciato.

Per ulteriori approfondimenti, c'è un ottimo paper sull'argomento, e consiglio vivamente di leggere "< a href="http://rads.stackoverflow.com/amzn/click/144962636X"> The Rootkit Arsenal "di Bill Blunden.

    
risposta data 31.07.2012 - 13:39
fonte

Leggi altre domande sui tag