第3章
观察Rootkit感染
我们如何检查一个潜在受感染的系统是否有Rootkit?毕竟Rootkit的全部目的是防止管理员检查系统的真实状态,因此寻找感染的证据可能是一场智慧之战—或者更确切地说,是对系统的内部结构的理解程度的较量。分析人员一开始必须不信任他们从受感染的系统获得的任何信息,并努力寻找更深层的证据来源—即使在受感染的状态下,这些证据也是值得信任的。
从TDL3和Festi的Rootkit示例中我们知道,检测Rootkit的方法依赖于在许多固定位置检查内核完整性,这很可能会出现不足。Rootkit不断发展,所以较新的Rootkit很有可能使用防御软件所不知道的技术。的确,21世纪初是Rootkit的黄金时代,Rootkit的开发者一直在引入新的技巧,让他们的Rootkit在几个月的时间里都避免被检测到,直到防御者能够为他们的软件开发并添加新的、稳定的检测方法。
有效防御措施的延迟为一种新型软件工具antirootkit创造了一个机会,它利用自己的检测算法(有时也利用系统的稳定性)来更快地发现Rootkit。随着这些算法的成熟,它们成为更传统的主机入侵预防系统(HIPS)的一部分,并带有新的“前沿”启发式方法。
面对这些在防御方面的创新,Rootkit开发人员的反应是想出一些方法来主动破坏antirootkit工具。系统级的防御和进攻通过多个周期共同进化。通过这种共同进化(并且很大程度上取决于它),防御者显著改进了他们对系统组成、攻击表面、完整性和保护轮廓的理解。在计算机安全领域,微软高级安全研究员John Lambert的这句话是正确的:“如果你对攻击研究感到羞耻,你就错误地判断了它的贡献。进攻和防守不是同等的。防守是进攻的产物。”
因此,为了有效地捕获Rootkit,防御者必须学会像Rootkit的创建者那样思考。