Negli ultimi anni, il malware (e alcuni strumenti di pen-test come il payload del metrometro di Metasploit) hanno iniziato a usare injection DLL riflettente (PDF) per caricare una DLL nella memoria di un processo. Il vantaggio è che il file non viene mai scritto su disco ed è difficile da rilevare. Molti esempi che ho visto si basano su lavoro di Joachim Bauch .
Tuttavia, in DEF CON 20 Andrew King ha dimostrato di essere in grado di rilevare La DLL viene iniettata mediante l'iniezione di una DLL riflettente . La sua presentazione è stata chiamata " Rilevazione dell'iniezione riflessa ". Sfortunatamente, non ha rilasciato il codice sorgente (che non è assolutamente obbligato a fare).
UPDATE: Apparently I missed it, but Andrew did open-source this work a couple years ago: https://github.com/aking1012/dc20
Inoltre, uno strumento chiamato " Antimeter " è in grado di rilevare il motore meterpreter quando viene caricato mediante iniezione di dll riflettente. Di nuovo, closed source.
Capisco che lo strumento di Andrew King e Antimeter sono entrambi scritti in Python e usano pydbg / pydasm per enumerare la memoria degli eseguibili in esecuzione.
Qualcuno ha qualche codice sorgente generale (in Python o in altro modo) che è disposto a condividere e dimostra come rilevare l'iniezione di una DLL riflessiva? Esistono strumenti forensi di memoria che possono analizzare un dump di memoria e trovarlo, ma sto cercando di eseguire un'applicazione su un sistema in esecuzione (come fa l'antimeter) e trovare processi con DLL riflessivamente iniettate.
Se sei interessato a capire come funziona l'iniezione riflessiva di DLL, c'è qualche codice open source scritto in Delphi che mostra come fare questo.
UPDATE : ho testato e posso in modo riflessivo iniettare DLL senza diritti di amministratore (e come utente normale), ma naturalmente come utente posso solo iniettare in processi eseguiti allo stesso livello di integrità ( e nella mia sessione) ... ma copre ancora applicazioni come la suite Office, Internet Explorer, ecc.