今天,我们来讲一下内核安全!
本文章仅提供学习,切勿将其用于不法手段!
目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。在PWN的二进制领域,免杀技术,一直是后渗透利用阶段的重要安全技术之一。
想要免杀,需要了解的安全技术知识包括软件加壳、代码混淆(例如,使用花指令)、隐匿技术(例如,Rootkit技术)、动态加密等内容。
接上一篇文章,我们来继续讲述下 Rootkit技术 的相关基础知识点内容!
在《 渗透测试之内核安全系列课程:Rootkit技术初探 》之前的文章中,我们讲述了 GDT 全局描述符表、LDT 局部描述符表、GDTR 全局描述符表 寄存器、LDTR 局部描述符表 寄存器 、一致性代码、非一致性代码、实模式、保护模式、线性地址 、PDPT 页目录指针表、PDT 页目录表、PTT 页表、P 页 、PDE 页目录表项 、PTE 页表项 、CR0 控制寄存器、CR2 页故障线性地址寄存器、 CR3 页目录基址寄存器 等非常重要的 基础知识 点 内容 !
这些内容,是学习 Rootkit 技术 的基础 !
今天,我们来继续来重点讲解下 线性地址 到 物理地址 的 转换过程 !
首先,让我们来复习一下,相关的技术知识点。
CR0 控制寄存器,最重要的两个比特位,分别是第 1 位 和 第 32 位 !
CR0控制寄存器的第1位 PE ,控制着 保护模式 的 开启 与 关闭 !当 PE 位 是 1 时,保护模式 处于 开启 状态 ,当 PE 位 是 0 时,保护模式 处于 关闭 状态,此时 计算机 运行于 实模式 !
CR0控制寄存器的第32位 PG ,控制着 内存分页机制 的 开启 与 关闭 !当 PG 位 是 1 时,内存分页机制 处于 开启 状态 ,当 PG 位 是 0 时,内存分页机制 处于 关闭 状态,此时 计算机 运行于 实模式 !
如果需要 启用 内存分页机制,那么 第 1 位 PE 位 和 第 32 位 PG 位 的值,均要为 1 !
CR2 页故障线性地址寄存器,主要用于 在页异常情况发生时,存储 产生异常的 线性地址 !
当发生页异常时(例如,指定的内存分页,并不存在 !这时,会触发 缺页中断 )CPU 会把引起 缺页中断 的 线性地址 保存在 CR2 页故障线性地址寄存器 之中!
操作系统中的页异常处理程序(其实就是 缺页中断 所对应的 中断服务程序)可以通过检查 CR2 页故障线性地址寄存器 的 内容值 的方式,去筛查出 缺页中断 这个异常 是 由 虚拟地址空间(线性地址空间)中的哪个 线性地址访问 所引起的(CR2 页故障线性地址寄存器,主要用于定位错误,以及通过分页交换文件去辅助载入内存分页)!
我们需要知道,针对 缺页中断 ,从 硬盘 中 去载入 相对应的 页表资源 或 页资源,是由 缺页中断 对应的 中断服务程序 去自动完成的 !CR2 页故障线性地址寄存器,在 从 硬盘空间 向 内存空间 载入 指定页表资源 或 指定页资源 时,发挥了非常重要的作用 !
CR3 页目录基址寄存器,主要用于 PDT 页目录表 或 PDPT 页目录指针表 的 物理寻址 !
CR3 页目录基址寄存器,存储了 PDT 页目录表 或 PDPT 页目录指针表 的 物理内存地址 !
在启用了 PAE 物理地址扩展的基础上,CR3 页目录基址寄存器 的 高 27 位,被用于 进行 PDPT 页目录指针表 的 物理地址寻址 !
什么是 PAE 呢?
PAE ,指的是 物理地址扩展 !
物理地址扩展(PAE) 是 中央处理器 CPU 的一项功能,它的作用是:使 x86 系列的处理器 能够在支持 PAE 物理地址扩展 技术 的 部分 Windows 操作系统环境(是否支持 PAE 物理地址扩展,与系统版本有关。例如, Windows 7 (32 位) 、Windows Server 2008 仅 (32 位) 、Windows Vista 仅 (32 位) 、Windows Server 2003 仅 (32 位) 、Windows XP (32 位) )中 访问 4 GB 以上 的 物理内存地址。 能够访问的内存物理地址大小,取决于中央处理器CPU能够支持的最大内存物理地址上限(例如,64位 CPU,所能支持的最大物理内存)!
在未启用 PAE 物理地址扩展机制 之前,32位 线性地址 寻址,线性地址 的 结构 由 高 10 位 的 页目录 表项索引 、中 10 位 的 页表 表项索引、低 12 位 的 页内偏移量 共同组成 !
在