1 / 7
文档名称:

最新精品最新精品利用调试机制,实现终极隐藏.pdf

格式:pdf   页数:7
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

最新精品最新精品利用调试机制,实现终极隐藏.pdf

上传人:908163988 2014/12/31 文件大小:0 KB

下载得到文件列表

最新精品最新精品利用调试机制,实现终极隐藏.pdf

文档介绍

文档介绍:Mistifying the debugger, ultimate stealthness
Author:halfdead@
利用调试机制,实现终极隐藏
译者:******@.
--[简介
多年来,黑客们探寻了大量技术方法以求在被黑掉的系统上隐藏rootkit的存在。很多方法直接修改了系统调用
表,另一些需要修改中断服务程序表,还有一些要在VFS层上进行操作。但是所有方法均需显式修改操作系统,因
此很容易被检测出来。
本文将展示一种使用x86的通用特性------调试机制,在内核级rootkit中达到终极隐秘的技术。这种方法可以在任
何IA-32兼容平台上工作,但是在这里我们只针对Linux操作系统做详细描述。您将看到如何绕过经典的hook机
制,中断正常的执行流。事实上,这种技术非常棒,并且基本上没有人会察觉到潜入行为的存在。
文中提到的“debugger”,实际上指的是IA-32的调试机制,它只能够通过ring 0访问,而且除了应用于一些内核
调试器外,用户空间的调试器并不使用。
--[调试器:
IA-32架构为调试代码、监控代码执行和处理器性能提供了多种调试设备。这些设备对于调试应用程序、系统软件
和多任务操作系统都是有价值的。
为了简化开发者的工作,Intel提供了一种管理调试过程的方法。这种机制通过一系列特定寄存器管理调试过程(叫
做调试寄存器DR0...DR7)。这些寄存器允许用户在内存地址上设置硬件断点。一旦执行流触发了一个硬件断点标
记的地址,就会将控制权交给调试中断处理程序(INT 1),继而调用do_debug()函数(定义
在../i386/kernel/)处理引起的异常情况。
调试机制可以通过访问调试寄存器(DB0到DB7)和两个模型相关寄存器(model-specific register)(MSRs)
来提供支持。基于这篇文章的写作目的,这里只讨论调试寄存器。
调试寄存器保存内存和IO的地址,称为断点。断点是用户在一个程序、内存中一块数据存储区域、或是特定IO端
口中选定的一个位置。程序员、系统设计者可以在断点位置调用调试软件停止程序运行,并检测处理器状态。在
对这些断点地址进行内存和IO访问时,将产生一个调试异常(#DB)。一个断点针对一次特定的内存或者是IO访
问,例如一次内存读写操作或者是IO读写操作。调试寄存器同时支持指令断点和数据断点。MSR寄存器(在P6家族
的处理器中引入IA-32架构)检测分支、中断和异常;并记录最后一个分支、中断或异常发生时刻的地址,以及发
生之前的那个分支。
--[调试寄存器
Intel处理器设有8个调试寄存器,控制处理器的调试操作。这些寄存器可以通过MOV指令在调试寄存器中移动数
据进行读写。一个调试寄存器可以作为指令的源操作数,或目的操作数。由于调试寄存器是特权资源,访问这些寄
存器的MOV指令只能够在实地址模式下、SMM或者CPL为0的保护模式下执行。任何其他特权级对调试寄存器的读
写操作都会触发保护异常。
调试寄存器能够设置并监控0-3号四个断点。调试机制允许我们通过两个特定寄存器DR6和DR7管理这些断点,
这部分内容将在后面进行详细描述。调试寄存器设置或检