2010-09-02 6 views

risposta

43

Le basi sono semplici. Windows ha un percorso di ricerca per le DLL, nello stesso modo in cui ha un $ PATH per trovare gli eseguibili. Se riesci a capire quali DLL un'app richiede senza un percorso assoluto (attivando questo processo di ricerca), puoi posizionare la tua DLL ostile da qualche parte più in alto nel percorso di ricerca in modo che venga trovata prima della versione reale e Windows sarà felice invia il tuo codice di attacco all'applicazione.

Quindi, facciamo finta di sistema DLL percorso di ricerca simile a questa:

a) .  <--current working directory of the application, highest priority, first check 
b) \windows 
c) \windows\system32 
d) \windows\syswow64 <-- lowest priority, last check 

e alcune applicazioni foo.exe richieste "bar.dll", che si trova a vivere nel syswow64 (d) subdir. Questo ti dà l'opportunità di inserire la tua versione malevola in a), b) o c) e verrà caricata automaticamente nell'app ogni volta che l'app richiede bar.dll. E ora il tuo foo sta bene e barcollato.

Come indicato in precedenza, anche un percorso completo assoluto non può proteggere da questo, se è possibile sostituire la DLL con la propria versione.

E, naturalmente, questo non è davvero limitato a Windows sia. Teoriamente vulnerabile a qualsiasi sistema operativo che consente il collegamento dinamico di librerie esterne.

7

Il dirottamento della DLL è davvero un concetto semplice.

Applicazioni caricare codice esterno tramite DLL (Dynamic Link Libraries). Il dirottamento della DLL è un processo mediante il quale il codice dannoso viene iniettato in un'applicazione tramite una DLL dannosa con lo stesso nome di una DLL utilizzata dall'applicazione.

Un'applicazione è vulnerabile a DLL hijacking a seconda di come riferimento le loro DLL. Un esempio utilizza i percorsi relativi anziché il percorso assoluto della DLL. Un altro sta caricando le DLL usando variabili d'ambiente che potrebbero non essere impostate correttamente, nel qual caso la directory imposta automaticamente un percorso relativo dell'applicazione in esecuzione.

Problemi correlati