我正在集思广益检测进程空心化和其他形式的代码注入的方法,这个方法看起来相当健壮。
“进程挖空扫描器”是否有可能枚举进程内存中的所有可执行页面,枚举进程相关映像文件的所有可执行部分,并查看内存中是否有任何页面没有图像文件中是否有任何对应的页面,例如通过模糊散列图像文件、散列每个内存页面以及比较两组?
这似乎可以很好地检测进程空心——任何注入进程的代码都不会出现在图像文件中,除非攻击者能够找到针对哈希算法的碰撞攻击,否则他们将无法欺骗检测器(并且无论如何都可以使用多种算法)。而且由于检测器依赖于在进程内存中寻找异常的额外段,而不是直接对内存进行哈希处理并将其与文件进行比较,因此即使整个图像文件没有映射到内存中,它也可以工作。
那么这是检测进程空洞的有效方法吗?我不相信我在任何地方都看到过这种方法用于检测代码注入(我见过的最接近的是当 rootkit 扫描程序将进程的整个内存部分的哈希值与整个图像文件的哈希值进行比较时,它只有效如果文件完全映射到内存中)。
这是检测代码注入/进程空心的可行方法吗?