Vista RC vs. pagefile攻击

来源:互联网 发布:ibm软件测试招聘 编辑:程序博客网 时间:2024/06/06 07:39

这几篇都是之前看过的波兰女黑客Joanna Rutkowska(博客地址http://blog.invisiblethings.org/)的几篇博客的一点整理。翻译可能比较生硬,内容有出错或者不足的地方敬请指正。
本篇介绍Vista RC vs. pagefile攻击。

关于pagefile攻击
pagefile攻击利用了windows将内存交换到pagefile这一特性,找到pagefile中的指定内存,修改它,然后让windows不加验证地重新加载这块内存。需要注意的是,你无法直接访问pagefile,C:\pagefile.sys是锁定的,不能通过CreateFile打开。(取自http://www.stoned-vienna.com/pagefile-attack.html)

Vista RC1

Vista RC1签名验证能被攻击绕过,Vista需要所有的内核驱动都有数字签名,而恶意软件可以将代码载入内核。MS目前没有修复这个漏洞,最简单的解决办法是禁用内核模式内存分页。这会导致浪费大概80M的内存。另一个解决方案是,计算每个将要换出的页面的哈希值,在重新加载到内存之前检查其哈希值。

Vista RC2

RC2不受pagefile攻击,因为Vista RC2拦截了用户模式应用对raw硬盘扇区的写访问,即使它们以管理员权限执行。

pagegile攻击的几种可能的解决方案:

  1. 拦截用户模式对raw硬盘的访问;
  2. 加密pagefile(选择性地使用哈希来保证换出页面的完整性);
  3. 禁用内核模式分页(最坏情况牺牲约80M的内存)。

方法1禁用对raw硬盘扇区的写访问,这可能会导致不兼容问题,而且并不能解决问题。例如某公司想发布磁盘编辑器,他们必须为访问磁盘扇区的应用(磁盘编辑器)提供内核驱动,辅助的驱动也需要签名。但是攻击者可以借用签名的驱动执行pagefile攻击。

内核保护和内核补丁保护(Patch guard)

PG由64位Winxp和2003引入,促使软件开发者在产品中不使用未公开的(undocumented)钩子。

pagefile攻击将没有签名的代码加载进内核,所以绕过了Vista内核保护。而绕过内核补丁保护是不同的概念,比如Blue pill绕过的是内核补丁保护(PG),虽然它并没有显式地禁用或绕过PG,但它位于整个操作系统包括PG的上方。

所有类型II(类型定义见BH Federal演讲)的恶意软件都能绕过PG。因为PG设计时不是用来检测II类型恶意软件引起的变化的。deepdoor和backdoor不会被PG检测到,类型III(蓝色药丸)也不会。只需要将恶意软件设计成类型II或III,就可以绕过PG。

PG的主要任务是避免合法的程序表现得像rootkit,避免恶意软件不是它主要任务。但是通过保证合法的应用不引入像rootkit的伎俩,PG使得恶意软件检测工具更加健壮。

rootkit检测工具最大的问题,在于区分恶意软件引入的钩子和某些A/V产品如个人防火墙和Host IDS/IPS程序引入的钩子,A/V产品采用rootkit相似的钩子技术可能会影响系统稳定性,而且会干扰恶意软件检测工具。(可以采用其他的公开了的攻防实现)

补充

恶意软件分类

  • type 0:不以任何未公开的方式或任何其他进程修改操作系统,non-intrusive。
  • type I:修改不该修改的东西(内核代码、HASH存在TPM中的BIOS,MSR寄存器)。
  • type II:修改可被用来修改的东西(designed to be modified)。

PG阻止的行为

  • 修改系统服务表;
  • 修改IDT;
  • 修改GDT;
  • 使用kernel不分配的内核栈;
  • 给内核任何部分打补丁。
0 0