8.3 Return-Oriented Rootkits: Bypassing Kernel Code Integrity Protection Mechanisms

    本论文设计并实现了一个能够自动化构建 ROP 指令序列的攻击系统。由于系统使用的指令序列来自内核已有的代码,而不需要进行代码注入,所以能够绕过内核代码完整性保护机制。

    这一机制要求所有内核模块都需要经过数字签名的验证,并拒绝加载验证失败的代码,所以它的有效性在模块加载时体现,可以一定程度上防御代码注入攻击。但这种方法并不能保证已有的内核代码中没有可以利用的漏洞或指令序列。

    W⊕X

    基于 ROP 技术,就可以绕过上面的内核完整性保护机制。

    内核 ROP 如下图所示:

    自动化攻击系统的结构如下图所示:

    • Compiler:提供了一种专门用于 ROP 的语言,它将 Constructor 的输出和用该语言编写的源文件一起编译,生成程序的最终内存映像
    • Loader:由于 Compiler 的输出是位置无关的,Loader 用于将相对地址解析为绝对地址