查看: 6287|回复: 26
收起左侧

[技术原创] ROOTKITS的原理与防御对策

[复制链接]
JY-YZX714
发表于 2009-2-1 16:15:54 | 显示全部楼层 |阅读模式
最近在研究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表则不会出现这种情况。

<3直接修改DLL中的函数

这种方法是在DLL文件装后找到函数的地址,并修改其中的代码!比如DLL A装入了内存,恶意程序B则可以找到A中的函数地址,B可以恶意的修改代码,把原函数开头加上JMP到自己的函数,最后在JMP回来。

以上的方法是运行在用户模式下的,内核rootkits也有自己的方法:

<4修改SSDT表

SSDT表记录着系统内核函数的内存地址,如果恶意程序把某一个函数地址修改了,无疑是影响很大的,所以windows下SSDT是只读的,不过仍然可以通过特殊方法解除保.护。

<5修改IRP表

IRP函数是驱动程序用来处理用户的请求的(比如读,写),各个IRP函数组合在一起组成了IRP表,恶意程序可以修改一些表项来完成隐藏(文件,进程,注册表等)

以上的无论是用户模式下的攻击还是内核模式下的都是通过修改执行路径来完成的,我们可以称之为“挂钩”,许多杀软也使用了挂钩,下面我们介绍只有最NB的恶意程序才会使用的技术。

二,修改系统内核对象

对系统熟悉的朋友都知道,windows有一个用来用户模式下与内核模式下代码进行交互的基本接口。虽然软件开发人员经常会创建,打开内核对象,但内核对象很多并没有公布,盲目的修改内核对象可能对系统造成不可逆的损害!但如果成功的修改了内核对象的话,恶意程序遍得到了系统下最高的特权,比如来一个根本没有结束可能的进程……具体的实现我也不知道,也没有教程,也根本不敢去尝试,大家知道一下就是了。


What can we do?
竟然rootkits这么N,我们改怎么防御呢?
<1预防
Rootkits的弱点是安装得有系统管理员权限,即系统必须被黑客控制之后才能安装,所以预防黑客很重要
<2检测
不过防不胜防,如果真的有黑客进来了我们怎么办??首先断开和黑客的连接,并且检测系统有没有被安装rootkits,我推荐一些ANTI-ROOTKITS软件来检测
<3应对

如果已经被安装了rootkits请赶快下载一个ANTI-ROOTKITS软件进行清除,如果你运气不错,遇到一个垃圾rootkits,那也就好办了,但如果遇到一些NB的rootkits,即使ANTI-ROOTKITS软件检测出来了,它也不推荐你清除,为什么??一清除系统就挂了!遇到这种rootkits只有两种方法,1.还原2.重装!



评分

参与人数 2技术 +1 人气 +1 收起 理由
polly5771 + 1 支持鹦鹉老三
abeyl + 1 0的突破,好久没加技术值了。

查看全部评分

LLLLL_TC
发表于 2009-2-1 16:21:34 | 显示全部楼层
KIS貌似有rootkits扫描功能的,不知道好不好用
lixiangby
发表于 2009-2-1 16:27:56 | 显示全部楼层
呵呵,简明易懂,感觉挺不错的。现在好多杀软都增加了anti-rootkits功能。但我觉得如果真那么不幸中了修改了系统内核的rootkits,那么,还是选择重装会比较省力。
zhanyuchenbobo
发表于 2009-2-1 17:15:05 | 显示全部楼层
学习了~~~
kav2046
头像被屏蔽
发表于 2009-2-1 18:03:36 | 显示全部楼层
楼主讲解很清晰,谢谢楼主分享!
fdsafdsgggs
发表于 2009-2-1 18:08:16 | 显示全部楼层
好文章,被"扫"了一下
polly5771
头像被屏蔽
发表于 2009-2-1 18:10:47 | 显示全部楼层
鹦鹉老三就是高手!
zhoucc163
发表于 2009-2-1 18:12:42 | 显示全部楼层
讲解详细!学习了!
zhousf
发表于 2009-2-1 18:27:28 | 显示全部楼层
写的不错.
月影花痕
发表于 2009-2-1 18:33:17 | 显示全部楼层
学习一下!
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 13:52 , Processed in 0.152594 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表