20070415 rootkit 资料
http://www.yippeesoft.com
Rootkit最早出现可追溯到1986年,当时是指一些可以以管理员身份登录的Unix应用工具,与恶意软件并没有什么瓜葛。
现在,Rootkit指的是恶意代码作者用来隐藏他们的代码不被发现的工具,它通过监听系统的功能、用合法的数值取代返回的数据。Rootkit类病毒通过隐藏自身进程(有时甚至连添加的注册表键值也隐藏起来),以增加电脑用户的识别难度并逃避杀毒软件的查杀。
对付Rootkit的最好办法是首先防止感染。除了维护传统的安全防线(包括防火墙、防病毒软件和补丁)外,专家们还建议锁定桌面系统来控制软件的安装和操作系统的改动。
Rootkit是安装到电脑上的一组程序,用于以管理员(即“根账户”)身份访问该系统。如果对根账户拥有访问权,攻击者就可以完全控制这台电脑,随时添加或者更改删除、监控进程、收发网络流量以及进入后门。
Rootkit还能够隐藏自己及其他程序,不被系统状态、诊断工具(如Windows任务管理器)和安全软件所发现。Rootkit的隐藏手段就是暗中破坏报告电脑进程、文件和注册表的机制。
Rootkit并不依靠安全漏洞进入电脑,而是往往由其他恶意软件装入到已被人利用的系统中。Rootkit往往与诱使用户安装程序的特洛伊木马软件捆绑在一起。Rootkit会利用用户拥有的各项执行权限,所以在大多数用户以管理员权限使用电脑的Windows环境下, Rootkit会自然获得不受限制的访问权。
通常来说,Windows Rootkit有两种形式:用户模式Rootkit和内核模式Rootkit。这是因为Windows操作系统会创建两层功能:用户空间和内核空间。应用程序在用户空间里面运行,必须通过系统调用向内核请求访问计算资源(如系统内存、磁盘读取、设备驱动程序和CPU)。内核管理这些资源,并在必要时把资源分配给应用程序。
你可能已经猜到,用户模式Rootkit在用户空间里面运行,它们可能会作为单个应用程序运行,也可能会改动某个现有程序;内核模式Rootkit则在操作系统内核里面运行,它们往往作为设备驱动程序被插入。
这两种Rootkit隐藏自己的办法通常是,对诊断工具或者安全软件请求的系统状态信息进行过滤,这一手法又叫“钩住(hooking)”。譬如说,如果用户查看目录内容,Rootkit就会截获对目录查看进程的调查,然后向用户返回虚假信息。
用户模式Rootkit过滤信息的方式是,“钩住”与请求信息的软件程序相关的Windows API。专家说,用户模式Rootkit比较容易创建,因为合法程序也需要接入Windows API。同时,用户模式Rootkit还可能更广泛地被攻击者所使用,因为它们比较容易在不同的Windows操作系统之间移植,其中包括Windows XP和Windows 2000。
对用户有利的方面是,用户模式Rootkit比内核模式Rootkit更容易被发现。扫描操作系统内核的安全软件能够检测到对API所作的改动。某些情况下,防病毒和防间谍软件技术根据其现有特征,能够检测到公开的、已知用户模式的Rootkit。软件研究人员和传统软件厂商也在不断提供专门的Rootkit检测软件。
内核模式Rootkit位于操作系统内核里面,因而可对驻留在用户空间里面的应用程序行使相当大的控制权,其中包括系统监控工具和安全软件。内核模式Rootkit通过截获来自用户空间里面的应用程序的系统调用来过滤信息。内核模式Rootkit创建起来比较困难,因为它们在电脑内极重要的层面工作,要是编程有所失误,就会导致整个系统崩溃。
遗憾的是,内核模式Rootkit也更难被检测出来。因为它们在操作系统的最底层运行,所以会暗中破坏试图把它们检测出来的诊断或者安全软件。而且,内核模式Rootkit也更难清除,管理员可能必须分析被感染的电脑上的每个文件。这个过程很费时间,还可能会出现许多错误,譬如漏过某个文件或者清除无害文件。
来势迅猛
如今,Rootkit并不是许多软件设计师们关注的首要问题。一个原因就是,还没有出现恶意Rootkit大规模感染的现象,虽然索尼的Rootkit事件几乎引发了一场灾难。
思科系统公司的思科安全代理产品经理Joshua Huston说:“关于Rootkit有许多报道,不过被感染的机器所占比率还比较小。”
另一个原因就是,蠕虫和病毒的发作会对网络可用性会带来极为明显的影响,所以避免网络停用成了IT管理人员关注的首要问题。相比之下,偷偷实施的入侵不大被人注意,因为后果不会立即显现出来。
历史
Rootkit这个术语来自于Unix系统。最初,在Unix系统上, ls,ps,netstat等命令,大家从来就没有怀疑过结果的可靠性。例如,用last就可以知道最近的login历史,那么如果那位同志非法登陆了你的机器,就可以轻易监测到。不过,hacker的技术是日新月异,很快,就出现了工具可以隐藏login历史,接下来,一批工具可以修改ls,ps等等命令的结果。这些工具,当时被叫做trojan horses。后来,这些各类trojan horses工具被绑定在一起成了一个工具包(kit),就成为了Rootkit。最早的一个版本是出现在SunOS 4上。
现状
既然Rootkit出现已经不值一天两天,为什么说是一个新的威胁呢?这是因为随着互联网的普及,Windows系统上出现了越来越多的 virus,spyware,worm。而最新的趋势是这些软件和Windows上的Rootkit绑定在一起。试想一想,如果一个spyware将自己的进程和registry信息用Rootkit给隐藏起来,普通用户可能就无法发现还有这么一个软件在运行。而且,各种anti-spyware软件恐怕也就不那么有效了。如果连系统中有什么在运行都无法确定,检测和清除有从何谈起呢?
Windows系统上的Rootkit分为User mode和Kernel mode两种,取决于它是采用何种方式修改操作系统的。
举个例子,对于一个典型的WIN32 API调用,例如CreateFile
User Mode:
Application –> Kernel32.dll –> NT.dll
接着通过调用 INT 2EH进入
Kernel Mode:
–> KiServiceTable –> NTExecutives
在这一调用系列中,Rootkit可以修改任何一处,最终目的都是一样的,控制特定的系统调用的返回结果。例如,如果修改了 FindFirstFile/FindNextFile调用的结果,那么不管你用DIR命令,还是Explorer,都看不到Rootkit想要隐藏的文件。
以往,不管是User Mode的Rootkit,还是Kernel Mode的Rootkit,主要是hook/intercept API调用。最近的发展是,Kernel Mode的Rootkit直接修改关键的Kernel Mode的数据结构,例如把自己的PCB从系统的活动进程表中直接删除。这种Rootkit,要检测起来是非常难办的。
介绍了Rootkit的工作原理,我们看看Rootkit主要用来隐藏什么系统资源:
运行进程
服务
TCP/IP端口
文件
注册信息Registry
用户帐号
其中最常见的是运行进程,文件,和Registry。
介绍完Rootkit是什么,那自然而然的一个问题是:如何检测Rootkit?
最保险的检测Rootkit的办法是Offline OS检测。举个例子,系统自身启动,列出所有的文件,registry项,等等。然后用winPE从CD启动,再列出所有的文件,registry项。对比两个列表。在正常情况下应该是一样的。如果出现不一样的地方,就可以发现那些文件在用自身系统启动的情况下看不到。对这些文件可要注意了。
这个办法的例子是Strider/Ghostbuster,MS Research开发的。
另一种更方便的检测方法是API副作用检测。大家知道,Rootkit都或多或少的修改系统调用。那么,先通过正常的高层win32系统调用来列出系统的文件,进程,registry等等,然后再通过最底层的方式列出系统的文件,进程等等。对比两个列表,如果有不同的地方就要注意了。
这个办法的例子是RootkitRevealer,Sysinternals开发的。有兴趣的可以从Sysinternals上下载。最近闹得沸沸扬扬的Sony的Rootkit就是用它发现的。这个办法使用起来要更方便一些,但不如第一个办法保险。
至于删除Rootkit,可就比较麻烦了。User Mode的Rootkit还好办一些。Kernal Mode就难了。 如果有官方的工具和信息的话,就直接使用。如果没有的话,那只有重新安装系统才能真正确保删除Rootkit。
RootkitRevealer 扫描你计算机和注册表列表以及可以显示用户模式或者核心模式启动工具存在的文件系统 API 冲突.该软件可以侦测到大多数流行的企图隐藏它们的文件和注册表键的工具,包括 AFX, Vanquish, HackerDefender 以及其它软件.高级用户可以检查所有的冲突并且可以测定潜在的启动工具的存在.
note:RootkitRevealer is an advanced root kit detection utility. Its output lists Registry and file system API discrepancies that may indicate the presence of a user-mode or kernel-mode rootkit. It successfully detects all persistent rootkits including AFX, Vanquish and HackerDefender (note: RootkitRevealer is not intended to detect memory-based rootkits like Fu that don\’t survive reboots).
历史博文
- SourceForge eyeos - 2009
- 20071129 HTTP 401.1 Windows2003 asp.net - 2008
- 0419 拼图 儿子 霸道 - 2006
- TortoiseSVN 帮助 仓库 网址 - 2005