深入剖析Rootkits的原理与防御对策

互联网 | 编辑: 黄蔚 2009-02-08 00:30:00转载 一键看全文

Rootkits技术起源于应用

what?

什么是Rootkits?许多人可能回答:Rootkits是一种木马(病毒),答案肯定是不对的,Rootkits是一种技术,病毒也在使用,杀毒软件也在使用。

Rootkits技术最初为攻击unix系统开发,1999年出现了第一个Windows  Rootkits(即NT Rootkits)。发明这个的人名字叫Greg Hoglund,大家记住了!

Rootkits具有很强的两面性,它是系统开发特别是安全开发的关键技术,杀软在使用,HIPS,防火墙都在使用,甚至一些ANTI-Rootkits软件本身也使用Rootkits技术。

How?(以下Rootkits也表示使用Rootkits技术的恶意程序)

Rootkits技术的目的是持续在系统中保持控制权和隐藏。Rootkits一般分为两种,用户Rootkits和内核Rootkits。用户Rootkits修改(替换)系统的EXE或者库文件达到目的,其影响范围一般是一台计算机上的一个或者几个用户。而内核Rootkits则直接运行于内核中,修改了内核数据结果,其影响范围是整个计算机。显而易见,内核Rootkits比用户Rootkits影响范围要大,更加隐蔽,危害也越大(戏剧性的是,ANTI-Rootkits软件检测出了有害Rootkits也并不全部推荐移除,原理就是因为Rootkits的底层性)。

无论是用户Rootkits还是内核Rootkits,其目的一般只有两个,隐藏和攻击。相比较而言,Rootkits技术更加倾向与隐藏自身。下面,我们介绍一下Rootkits的一些惯用的作案方式。

一、修改执行路径

这是Rootkits最惯用的一种方法,为了以下能看懂,我先扫个盲:应用程序通过调用各种API来完成基本的操作,各种API被windows组织在各个DLL文件中(比如user32.dll),这些DLL受到调用的时候把消息传个NTDLL.DLL这个文件,由它向内核通信。

<1 修改IAT表

我们知道,每一个PE文件(最常见的PE文件:DLL,EXE)有两个表,一个是IAT表,另一个是EAT表,IAT是输入地址表,它记录了程序调用了哪些系统函数以及输出这些函数的DLL文件。在需要调用API函数的应用程序运行时系统会加载这些DLL文件,同时填写应用程序内存映象(即程序的内存拷贝)中IAT表结构的系统调用函数的实际内存地址。这样,程序调用函数时系统根据IAT表中函数的实际内存地址跳到函数实际执行代码处执行函数调用。而Rootkits可以使用自己的函数地址来替换IAT表中正确的地址,实现的方法很多常见的是DLL注入,值得的注意的是:通常用于替换的攻击者函数只是真正函数的包装,攻击者函数会在执行时调用真正函数,实现调用功能的还是原来的真正函数,攻击者函数只是实现通过过滤返回值中需要隐藏的信息。

<2 改EAT表

我们前面还说了PE文件的另一个表,EAT表,它指定其所有输出函数的函数名和函数地址,和IAT表一样,在DLL文件装入内存之后,输出函数的地址同样可能被替换成攻击者的函数地址,不过和IAT表有一个区别是,如果程序动态的加载DLL,写入IAT表的时间则会可能使修改IAT表的方法失败,而修改EAT表则不会出现这种情况。

提示:试试键盘 “← →” 可以实现快速翻页 

总共 2 页12
一键看全文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑