Mi stavo chiedendo se il dirottamento DLL avrebbe funzionato con tutti i tipi di collegamento o solo il collegamento in fase di esecuzione. Ho sentito che il malware lo usa e voleva sapere come funziona
Esistono due tipi di collegamento: collegamento statico e collegamento dinamico. DLL Hijacking si verifica quando un programma dannoso sfrutta il collegamento dinamico. Perché il collegamento dinamico funzioni, è necessario un elenco di percorsi per trovare la libreria condivisa collegata. In Windows ci sono vari modi per percorso di ricerca per essere influenzato. Tuttavia, generalmente esiste un ordine nel modo in cui viene eseguita la ricerca e la maggior parte delle applicazioni non fornisce un percorso completo (ad esempio C:\WINDOWS\system32\kernel32.dll
) per l'oggetto condiviso che si prevede di caricare.
Ciò che accade è che un utente malintenzionato inserirà una DLL con lo stesso nome in una posizione cercata prima del percorso della DLL legittima. Ad esempio, diciamo che il percorso di ricerca quando si tenta di caricare kernel32.dll
è prima C:\Program Files\MaliciousDir\
e poi C:\WINDOWS\system32\
. L'applicazione chiama semplicemente LoadLibraryW(L"kernel32.dll");
.
Finché l'autore dell'attacco ha la sua versione di kernel32.dll
in MaliciousDir
, la sua versione verrà caricata non nella versione legittima. Questo può essere mitigato fornendo un percorso completo alla libreria che stai caricando.
Collegamento statico significa che l'intera libreria è stata incorporata nell'applicazione. Un'intera copia viene mantenuta dall'applicazione e tutti gli indirizzi di funzione in quella libreria vengono risolti al momento della compilazione. Ciò significa che non è necessario cercare la libreria e un utente malintenzionato non può sostituire la libreria stessa. Il lato negativo di questo è che l'applicazione viene ingrandita dalla dimensione della libreria e l'aggiornamento della libreria stessa significa che l'intera applicazione deve essere aggiornata.
In questo caso il dirottamento della DLL non funziona.
Leggi altre domande sui tag malware programming