
Strumento automatizzato per la scoperta di vulnerabilità di DLL hijacking che analizza i binari PE al momento del caricamento e durante l'esecuzione tramite API hooking, enumerando DLL mancanti e testando l'impersonificazione malevola.
aDLL è uno strumento di analisi binaria focalizzato sulla scoperta automatica delle vulnerabilità di DLL Hijacking. Lo strumento analizza l'immagine del binario caricato in memoria per cercare DLL caricate al momento del caricamento e utilizza la libreria Microsoft Detours per intercettare le chiamate alle funzioni LoadLibrary/LoadLibraryEx per analizzare le DLL caricate a runtime. Lo scopo è ottenere una lista di DLL che non vengono trovate dall'eseguibile nelle cartelle in cui vengono cercate.
Per iniziare a usare aDLL, è disponibile un eseguibile compilato nella cartella Binaries. Si consiglia di utilizzare la versione la cui architettura (32-bit o 64-bit) corrisponde a quella dell'eseguibile da analizzare.
Per il corretto funzionamento dello strumento, è necessario che le DLL "hook32", "hook64", "informer32" e "informer64" si trovino nella stessa directory dell'eseguibile aDLL.exe.
aDLL è stato sviluppato e testato su sistemi Windows 10. Se il sistema è vecchio e/o Visual Studio non è installato, è possibile che lo strumento restituisca un errore come "VCRUNTIME140.dll not found". In tal caso, è necessario installare l'aggiornamento di Visual C++ Redistributable. L'aggiornamento può essere trovato qui: https://www.microsoft.com/es-ES/download/details.aspx?id=49984.
Per modificare/ricompilare lo strumento, si consiglia l'uso di Visual Studio 2015 o successivo. La soluzione di Visual Studio è composta da tre progetti: aDLL, Hook e Informer. _ -aDLL: deve essere compilato come eseguibile. Se si verificano errori di collegamento, sarà necessario aggiungere la libreria shlwapi.lib utilizzando il linker di Visual Studio come dipendenza aggiuntiva._ _ -Hook: deve essere compilato come DLL con la stessa architettura dell'eseguibile da analizzare. Il file Hook risultante deve essere rinominato in hook32.dll o hook64.dll a seconda dei casi. Se si desidera analizzare eseguibili di entrambe le architetture, sarà necessario avere entrambe le DLL nella stessa directory di aDLL.exe._ _ -Informer: come Hook. Deve essere compilato come DLL e rinominato in informer32.dll o informer64.dll._
Lo strumento ha un'opzione -h per stampare una breve descrizione delle opzioni disponibili sullo schermo.
.\aDLL -h
Come esempio comune di utilizzo, aDLL deve ricevere almeno il percorso dell'eseguibile da analizzare.
.\aDLL -e "C:\System32\notepad.exe"
OPZIONI:
-h Mostra l'aiuto dello strumento con una breve descrizione di ciascuna opzione.
-e Specifica il percorso dell'eseguibile da analizzare da parte di aDLL.
-t Specifica il percorso di un file di testo con un elenco di percorsi di eseguibili.
-o Specifica il percorso di una directory in cui verrà salvato un report per ogni eseguibile scansionato.
-m Cerca il manifesto dell'eseguibile e lo visualizza sullo schermo. aDLL cerca il manifesto incorporato nel binario, non lo troverà se esiste come file esterno.
-w Definisce il numero di secondi per cui il processo dell'eseguibile verrà mantenuto aperto durante la ricerca di DLL caricate a runtime. Il tempo predefinito è 20 secondi.
-aDLL testerà automaticamente se una DLL dannosa viene eseguita impersonando la DLL legittima nell'ordine di ricerca se è stato trovato un candidato DLL.
-d Utilizzata in combinazione con l'opzione -a, questa opzione permette di selezionare il percorso di una DLL che verrà utilizzata come DLL dannosa.
-r Ogni DLL importata dall'eseguibile può a sua volta importare altre DLL come dipendenze. Verrà effettuata una ricerca ricorsiva di "n" volte su tutte quelle DLL trovate da aDLL che non sono reindirizzate (ApiSetSchema o WinSxS) e non appartengono all'elenco delle DLL Note del sistema.
La DLL Hook è basata sull'idea di DLLHSC di ctxis: https://github.com/ctxis/DLLHSC
puoi trovare maggiori informazioni sulle licenze al file: licenses.txt
IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE MA NON LIMITATE ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, EXTRACONTRATTUALE O ALTRO, DERIVANTE DA, O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI NEL SOFTWARE. OGNI QUALVOLTA TU EFFETTUI UN CONTRIBUTO A UN REPOSITORY CONTENENTE UNA NOTA DI LICENZA, CONCEDI IN LICENZA IL TUO CONTRIBUTO AGLI STESSI TERMINI, E ACCETTI DI AVERE IL DIRITTO DI CONCEDERE IN LICENZA IL TUO CONTRIBUTO A TALI TERMINI. SE HAI UN ACCORDO SEPARATO PER CONCEDERE IN LICENZA I TUOI CONTRIBUTI A TERMINI DIVERSI, COME UN ACCORDO DI LICENZA PER CONTRIBUTORI, QUESTO ACCORDO PREVARRÀ.