读书笔记_Rootkit技术_深入补丁

之前介绍的都是在函数的入口处进行代码补丁,因为在内存中很容易找到函数,所以这个方法很容易实现。但anti-rootkit也同样容易检测到这种补丁,因为它可以只检查函数起始的20个字节的完整性就能够发现是否被打补丁。若将代码改动置于初始的20个字节之后,那么这些软件就无法检测到。

可以通过搜索函数中特定的代码字节来进行打补丁。如果这些代码是唯一的,那么只需要在内存中搜索它们并对其打补丁。如果代码不是唯一的,可以参照其附件代码中是否有唯一的,但要注意需要准确的命中,否则就不会达到你所需要的效果或引起系统的崩溃。

身份验证函数也是进行代码修改的好位置,可以将它们完全禁用以便始终提供访问能力,更复杂的补丁能够允许后门口令或用户名。

通过内核函数的补丁可以为已安装的驱动程序和软件程序提供潜行,一个非常合适的补丁位置是启动内核自身的引导程序,可以对完整性检查函数打补丁使得它们无法再检测特洛伊木马或修改的文件。网络函数的补丁可用于嗅探报文和其他数据。固件和BIOS的补丁则是难以检测的。

在打补丁和插入代码时可能需要插入大量新的指令,从驱动程序的角度来说,最好的处理方式是为其分配不分页地址池中的内存。但对于更秘密的补丁来说,可能会希望将代码放入未用的内存中。许多内存页底端都有未用的内存段,使用现有页面的这些较低区域有时称为空穴感染(cavern infection).

你可能感兴趣的:(读书笔记)