在过去的几年里,恶意软件(以及一些渗透测试工具,如 Metasploit 的 Meterpreter 有效负载)已经开始使用反射 DLL 注入 (PDF)将 DLL 加载到进程的内存中。好处是文件永远不会写入磁盘并且很难检测到。我看到的许多例子都是基于Joachim Bauch 的工作。
然而,在DEF CON 20 上,Andrew King 证明他能够使用反射 DLL injection 检测 DLL 的注入。他的演讲名为“ Detecting Reflective Injection ”。不幸的是,他没有发布源代码(他当然没有义务这样做)。
更新:显然我错过了,但安德鲁几年前做了开源这项工作:https ://github.com/aking1012/dc20
此外,一个名为“ Antimeter ”的工具可以在使用反射dll注入加载时检测到meterpreter引擎。再次,闭源。
我知道 Andrew King 的工具和 Antimeter 都是用 Python 编写的,并且使用 pydbg/pydasm 来枚举正在运行的可执行文件的内存。
有没有人愿意分享一些通用的源代码(Python 或其他)来演示如何检测反射 DLL 注入?有内存取证工具可以分析内存转储并找到它,但我希望在正在运行的系统上执行应用程序(就像 antimeter 一样)并找到反射注入 DLL 的进程。
如果您有兴趣了解反射 DLL 注入的工作原理,有一些用 Delphi 编写的开源代码展示了如何做到这一点。
更新:我进行了测试,我可以在没有管理员权限的情况下(并且作为普通用户)反射性地注入 DLL,但当然作为用户,我只能注入以相同完整性级别运行的进程(以及在我的会话中)......但是仍然涵盖 Office 套件、Internet Explorer 等应用程序。