内核概述
Intel x86系列处理器使用“环”的概念来实施访问控制,共有4个权限级别,由高到低分别为Ring0、Ring1、Ring2、Ring3,其中Ring0权限最高,Ring3权限最低。Windows(从NT开始)和Linux等多数操作系统在Intel x86处理器上只使用了Ring0和Ring3,其中内核态对应着Ring0,用户态对应着Ring3。两个特权级足以实现操作系统的访问控制,况且之前支持的有些硬件体系结构(比如Compaq Alpha和Silicon Graphics MIPS)只实现了两个特权级。本篇所讨论的内核程序漏洞特指Ring0程序中的能被利用的bug或缺陷。
一般地,操作系统的内核程序、驱动程序等都是在Ring0级别上运行的。此外,很多安全软件、游戏软件、工具软件等第三方驱动程序,也会通过系统服务的方式在Ring0级别上运行。越来越多的病毒、木马、后门、恶意软件也有自己的驱动程序,想方设法的进入Ring0,以求提高自身的运行权限,与安全软件进行对抗。
时至今日,Ring0上运行的程序已经不再是单纯的系统内核,内核漏洞也不再是操作系统专属的问题,而是很多安全软件、游戏软件、工具软件等软件厂商共同需要面对的问题。
随着操作系统和安全软件的日益完善,在普通溢出漏洞难以奏效的情况下,容易被人忽略的内核漏洞往往可以作为突破安全防线的切入点。如果病毒木马加载了驱动或进入了Ring0,是否还能够实施有效的防御呢?这是一个很有趣的问题,因为对抗的双方都处在系统最高权限,我们称之为“内核PK”,也许这种PK能成为今后的一个研究热点。
研究内核漏洞,需要首先掌握一些内核基础知识,例如内核驱动程序的开发、编译和运行,内核中重要的数据结构等,后面几节将对这些内容做简单的介绍。
本文节选自《0day安全:软件漏洞分析技术(第2版)》一书。
图书详细信息: http://www.cnblogs.com/broadview/archive/2011/07/11/2103329.html