Come difendersi da quei 3 tecniche:
CreateRemoteThread
È possibile impedire la prima tecnica (CreateRemoteThread che chiama LoadLibrary) agganciando LoadLibrary. Nel tuo hook controlli su un elenco di nomi DLL che conosci parte del processo e che potrebbero essere caricati, oppure puoi controllare un elenco di DLL conosciute che non vuoi caricare.
Quando si trova una DLL, non si desidera caricare SetLastError (ERROR_ACCESS_DENIED), quindi restituire NULL. Ho impostato l'ultimo errore in modo che le persone che scrivono il codice alla ricerca di un codice di errore ottengano uno. Sembra funzionare, forse un codice diverso potrebbe essere più appropriato.
Ciò interromperà il caricamento della DLL.
SetWindowsHookEx
penso che la stessa tecnica per CreateRemoteThread blocco funzionerà per SetWindowsHookEx, ma solo se è possibile ottenere il vostro gancio installato prima che la tecnica SetWindowsHookEx ha iniziato il caricamento suo codice (che è in genere quando si crea la prima finestra in un'app - così presto nella sua vita).
Codice Cave
Bella tecnica. Non visto prima. Puoi difenderti da questo, ma dovrai agganciare il punto di ingresso LoadLibrary (non la tabella IAT) poiché Code Cave chiama direttamente LoadLibrary.
Come ha commentato l'autore dell'articolo: ci sono molti modi in cui puoi essere attaccato e probabilmente avrai difficoltà a sconfiggerli tutti. Ma spesso si vuole solo difendersi da determinati carichi DLL (come una particolare DLL di terze parti che è incompatibile con il proprio software perché la DLL di terze parti non è stata scritta correttamente per tenere conto del fatto che potrebbe essere presente anche un altro hook, quindi si blocca dal caricamento).
fonte
2010-04-07 09:40:37
Anche se è impossibile fermare TUTTI gli hacker, voglio solo fermare quelle tre tecniche elencate. Questi sono il più comando e la tecnica è quasi esclusivamente usata, ma la maggior parte di leechers e kiddies. Solo FYI, il codice è all'interno di una DLL iniettata, quindi tutto quello che voglio fare è assicurarmi che, una volta entrato, nessun altro possa entrare. –
Attenzione, il Loader Lock è una risorsa globale e coglierla (è | dovrebbe essere) motivi per la chiusura immediata. – MSalters
"tutti possono potenzialmente utilizzare l'iniezione DLL per aggiungere funzionalità a qualsiasi programma" - e, il più delle volte, per bloccarlo (con il programma-essere-iniettato-a, essere incolpato per l'incidente da utente ignaro). –