rootkit 能够“ root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。因此Rootkit的初始含义就在于“能维持root权限的一套工具”
rootkit
Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。
外文名 rootkit
rootkit是什么
在悬念迭起的中外谍战片里,对战双方中的一派势力通常会派遣特工人员潜伏到对手阵营中。这名卧底人员良好的伪装使得对手对此长时间毫无察觉;为了能够长期潜伏他不贸然采取高风险
行为以免过早暴露自己;他赢得敌人的信任并因此身居要职,这使得他能够源源不断地获取重要情报并利用其独特渠道传送回去。
从某种意义上说这位不速之客就是Rootkit——持久并毫无察觉地驻留在目标计算机中,对系统进行操纵、并通过隐秘渠道收集数据的程序。Rootkit的三要素就是:隐藏、操纵、收集数据。
“Rootkit”中root术语来自于unix领域。由于unix主机系统管理员账号为root账号,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了这台电脑。然而能够“
root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。因此Rootkit的初始含义就在于“能维持root权限的一套工具”。
简单地说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用
。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。
NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)对rootkit的定义如下:A hacker security tool that captures passwords and
message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the
network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of
operating systems.
rootkit并不一定是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先
密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,
然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者
就会利用这些信息侵入其它的系统。
rootkit的历史
最早Rootkit用于善意用途,但后来Rootkit也被骇客用在入侵和攻击他人的电脑系统上,电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的防毒软件归类为具危
害性的恶意软件。Linux、Windows、Mac OS等操作系统都有机会成为Rootkit的受害目标。
Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全资讯就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks
,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。
Rootkit是指其主要功能为:隐藏其他程序进程的软件,可能是一个或一个以上的软件组合;广义而言,Rootkit也可视为一项技术。在今天,Rootkit一词更多地是指被作为驱动程序,加载到操作系统内核中的恶意软件。因为其代码运行在特权模式之下,从而能造成意料之外的危险。最早Rootkit用于善意用途,但后来Rootkit也被黑客用在入侵和攻击他人的电脑系统上,电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的杀毒软件归类为具危害性的恶意软件。Linux、Windows、Mac OS等操作系统都有机会成为Rootkit的受害目标。
在现代操作系统中,应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件,操作系统依赖内核空间来管理和调度这些应用。内核空间由四大部分组成,分别是:进程管理(负责分配Cpu时间)、文件访问(把设备调配成文件系统,并提供一个一致的接口供上层程序调用)、安全控制(负责强制规定各个进程的具体的权限和单独的内存范围,避免各进程之间发生冲突)和内存管理(负责进程运行时对内存资源的分配、使用、释放和回收)。内核是一种数据结构,Rootkit技术通过修改这些数据结构来隐藏其它程序的进程、文件、网络通讯和其它相关信息(比如注册表和可能因修改而产生的系统日志等)。例如,通过修改操作系统的EPROCESS链表结构可以达到隐藏进程的效果,挂钩服务调用表可以隐藏文件和目录,挂钩中断描述符表则可以监听键盘击键等等。Rootkit至今仍然是一个发展中的技术领域。
历史
Rootkit一词最早出现在Unix系统上。系统入侵者为了获取系统管理员级的root权限,或者为了清除被系统记录的入侵痕迹,会重新汇编一些软件工具(术语称为kit),例如ps、netstat、w、passwd等等,这些软件即称作Rootkit。其后类似的入侵技术或概念在其他的操作系统上也被发展出来,主要是文件、行程、系统记录的隐藏技术,以及网络数据包、键盘输入的拦截窃听技术等,许多木马程序都使用了这些技术,因此木马程序也可视为Rootkit的一种。
2005年的Sony BMG CD防拷丑闻即因Sony被人揭发暗中使用了Rootkit技术来防止盗版,有侵害用户隐私之嫌,并可能对用户系统造成威胁,因而引发轩然大波。Rootkit一词也从此事件开始更广为一般大众所知。
--------------------
rootkit的历史
最早Rootkit用于善意用途,但后来Rootkit也被骇客用在入侵和攻击他人的电脑系统上,电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的防毒软件归类为具危
害性的恶意软件。Linux、Windows、Mac OS等操作系统都有机会成为Rootkit的受害目标。
Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全资讯就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks
,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。
典型特征及危害
rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我们的计算
机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取
证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动!
Rootkit 的目的在于隐藏自己以及不被其他软件发现。它可以通过阻止用户识别和删除攻击者的软件来达到这个目的。Rootkit 几乎可以隐藏任何软件,包括文件服务器、键盘记录器、
Botnet 和 Remailer。许多 Rootkit 甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件,而您无法看到这些文件。
Rootkit攻击方式多针对类似敏感数据剽窃这样的环节,那么某企业或政府组织“中央服务器”一类设备自然是植入Rootkit的首选目标,可这样的主机设备往往防护严密,不能轻易得手。我
们知道数据并不是静止的存放在服务器中,它往往在机构的网络中流动。机构中级别较高的人员常会拥有对这些设备数据的读写权限,但他们所拥有的个人电脑的防护级别却通常比中央服务
器要低,这就会给剽窃数据的黑客以可趁之机——将Rootkit程序植入相关人员的个人电脑,并默默的安家,不时地传回重要数据。
原理
针对SunOS和Linux两种操作系统的rootkit最多。所有的rootkit基本上都是由几个独立的程序组成的,一个典型rootkit包括:
1 以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息。
2 特洛伊木马程序,例如:inetd或者login,为攻击者提供后门。
3 隐藏攻击者的目录和进程的程序,例如:ps、netstat、rshd和ls等。
4 可能还包括一些日志清理工具,例如:zap、zap2或者z2,攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。
一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。
还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。
攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。接着使用日志清理工具清理系统日志,消除自己的踪迹。然
后,攻击者会经常地通过安装的后门进入系统查看嗅探器的日志,以发起其它的攻击。如果攻击者能够正确地安装rootkit并合理地清理了日志文件,系统管理员就会很难察觉系统已经被侵入
,直到某一天其它系统的管理员和他联系或者嗅探器的日志把磁盘全部填满,他才会察觉已经大祸临头了。但是,大多数攻击者在清理系统日志时不是非常小心或者干脆把系统日志全部删除
了事,警觉的系统管理员可以根据这些异常情况判断出系统被侵入。不过,在系统恢复和清理过程中,大多数常用的命令例如ps、df和ls已经不可信了。许多rootkit中有一个叫做FIX的程序
,在安装rootkit之前,攻击者可以首先使用这个程序做一个系统二进制代码的快照,然后再安装替代程序。FIX能够根据原来的程序伪造替代程序的三个时间戳(atime、ctime、mtime)、date
、permission、所属用户和所属用户组。如果攻击者能够准确地使用这些优秀的应用程序,并且在安装rootkit时行为谨慎,就会让系统管理员很难发现。
如何发现rootkit及其应对措施
很显然,只有使你的网络非常安全让攻击者无隙可乘,才能是自己的网络免受rootkit的影响。不过,恐怕没有人
Rootkit 本身不会像病毒或蠕虫那样影响计算机的运行。攻击者可以找出目标系统上的现有漏洞。漏洞可能包括:开放的网络端口、未打补丁的系统或者具有脆弱的管理员密码的系统。在获
得存在漏洞的系统的访问权限之后,攻击者便可手动安装一个 Rootkit。这种类型的偷偷摸摸的攻击通常不会触发自动执行的网络安全控制功能,例如入侵检测系统。
找出 Rootkit 十分困难。有一些软件包可以检测 Rootkit。这些软件包可划分为以下两类:基于签名的检查程序和基于行为的检查程序。基于签名(特征码)的检查程序,例如大多数病毒扫
描程序,会检查二进制文件是否为已知的 Rootkit。基于行为的检查程序试图通过查找一些代表 Rootkit 主要行为的隐藏元素来找出 Rootkit。一个流行的基于行为的 Rootkit 检查程序是
Rootkit Revealer.
在发现系统中存在 Rootkit 之后,能够采取的补救措施也较为有限。由于 Rootkit 可以将自身隐藏起来,所以您可能无法知道它们已经在系统中存在了多长的时间。而且您也不知道
Rootkit 已经对哪些信息造成了损害。对于找出的 Rootkit,最好的应对方法便是擦除并重新安装系统。虽然这种手段很严厉,但是这是得到证明的唯一可以彻底删除 Rootkit 的方法。
防止 Rootkit 进入您的系统是能够使用的最佳办法。为了实现这个目的,可以使用与防范所有攻击计算机的恶意软件一样的深入防卫策略。深度防卫的要素包括:病毒扫描程序、定期更新软
件、在主机和网络上安装防火墙,以及强密码策略等。
========
Root-kit和完整性
危险就在你身边
我们假设一个骇客已经悄悄的进入了一个系统,并且他拥有这个系统的所有权限(administrator, root...)。这个系统变的不可信了,即使任何工具都报告系统没有任何异常。骇客清除了他
在日志里的所有足迹...事实上,他已经安逸的安装在你的系 统里了 。
他第一个目标就是尽可能慎重的不让管理员发现他的存在,接着他将装上他所需的工具。当然,如果他想毁掉所有的数据的话,他不必那么小心翼翼.
明 显,管理员不可能一直监视着他的计算机的每个连接,但是他必须最快的检测出讨厌的入侵. 这个受害的系统变成了这个骇客的程序的跳板 (IRC机器人,分布式拒绝服务攻击, ...). 例
如,用一个嗅探器,他可以截获这个网络中所有的数据包。许多协议都没有加密数据和密码的(例如 telnet, rlogin, pop3, 等等). 因此,骇客有越多的时间,他就可以获得更加多受害系统
附近的计算机的信息,从而控制更加多的系统.
一旦他被发现,另一个问题又来了:我们不知道骇客给系统做了什么手脚,他可能破坏了基本的命令和检测工具来隐藏自己。还有,我们必须非常非常细心,不能疏忽任何事情,否则这个系统
可能再次被入侵.
最后的问题涉及到需要采取的措施,这里有两个方法, 要么管理员重装整个系统,要么就替换被做了手脚的文件。如果你觉得完全重新安装需要太长的时间,你可以查找被修改过的文件,但
是不能有任何疏忽,这个是需要很细心的。
无论你首选哪个方法,建议你给被入侵的系统做一个备份,这样可以发现骇客如何隐藏自己的.另外,这个机器可能参加了其他更加大规模的,或许会触犯法律的攻击,如果不做备份的话,你
可能会被认为是知情不报。
虽然很难发现 ...但是我已经发现了!
在这里,我们讨论使用一些让自己在拥有受害系统的最高权限同时又不被发现的方法。
在我们进入正题之前,我们定义几个术语:
特洛依(trojan) :一种表面看似普通,本身却有一些其他的隐含功能的程序,比如他可以隐藏系统数据令你看不到当前的一些网络连接。
后门(backdoor) :一个非法的,可以让别人轻易的无声无息的登陆你的机器的程序。
一旦入侵者进入一个系统,他就需要上面两种程序。后门可以让他在即使管理员多次改变所有密码之后也可以轻易进入系统,而特洛依就可以让他达到隐藏他的踪迹的目的。
我们在这里不关注某个程序到底是后门还是特洛依,我们的目的是使用现有的方法去安装他们和发现他们。
几 乎所有的Linux发行版都有一个验证机制(例如使用rpm --checksig来比较当前文件和原始文件,我们强烈建议你在安装任何软件之前就做这个检测,如果你在那之前得到并安装了一个有恶
意的程序,那么入侵 者几乎可以做任何他想做的事情,包括在你做rpm检测的时候做手脚,就好象一个中了Back Orifice的windows系统一样。
替换二进制文件
很久以前,在Unix系统中发现入侵者并不是一件很困难的事情:
last命令可以显示出入侵者用什么帐号,在什么时候,使用哪个IP登陆到系统
ls命令显示文件,ps命令列出当前的进程(包括嗅探器或密码破解程序) ;
netstat命令列出当前网络连接状况;
ifconfig命令可以得知网卡是不是处于混杂模式
从 那时起,入侵者就在开发一些替换掉他们的程序,就象希腊故事中的Greeks使用一个木马来攻入特洛依城一样,这些程序看起来很熟悉并且被管理员所信任, 但事实上他们隐藏了入侵者
的足迹,并可以把某个文件的时标(timestamp)设置的和这个目录下的其他程序的时标一样,并且让检验和保持不变,这样我 们可爱的管理员就被欺骗了。
Linux Root-Kit
Linux Root-Kit(LRK)是这类程序中的经典之作(虽然他有点落伍),他最初由Lord Somer开发,现在已经更新到了第五版,虽然现在有很多类似的程序,但是我们在这里只讨论他所拥有的功
能和特点。
这些被替换的二进制程序拥有访问系统的权限,并且有密码保护(缺省是satori),并且这个密码是可以在编译的时候设置的
特洛依会隐藏入侵者的踪迹
ls, find, locate, xargs或者du不会显示他的文件;
ps, top or pidof不会显示他的进程;
netstat也不会显示入侵者不希望显示的,例如 bindshell, bnc或 eggdrop;
killall不会杀掉他的进程;
ifconfig不会显示网卡处于混杂模式(如果本来就是混杂模式的话,那就仍然显示"PROMISC");
crontab不会显示他的计划任务;
tcpd不会记录配置文件中定义的连接
syslogd和tcpd一样.
后门可以让入侵者很容易再次进入系统:
当你把root-kit密码当做用户名输入的时候,chfn就会打开一个root shell;
当你把root-kit密码当做一个新的shell输入的时候,chsh就会打开一个root shell;
当你把root-kit密码当做密码输入的时候,passwd就会打开一个root shell;
当你输入root-kit密码的时候,你就可以轻易的通过login成为root(然后取消history功能);
su和login一样 ;
这些进程守护程序为入侵者提供了最直接的远程访问方法:
inetd安装一个root shell监听一个端口,在连接之后,必须输入root-kit密码;
如果把root-kit密码当做用户名输入,rshd将以root身份执行任何命令;
sshd和login相似的远程的登陆;
这些工具帮助入侵者::
fix installs the corrupt program keeping the original timestamp and checksum;
linsniffer captures the packets, get passwords and more;
sniffchk checks that the sniffer is still working;
wted allows wtmp file editing;
z2 deletes the unwanted entries in wtmp, utmp and lastlog;
这些经典的root-kit现在已经过时了,不再被人们所使用,而新一代的root-kit直接攻击系统内核以实现更加强大的功能。
检测这类root-kit
这类root-kit很容易被发现,比如使用系统的MD5校验功能:
[lrk5/net-tools-1.32-alpha]# md5sum ifconfig
086394958255553f6f38684dad97869e ifconfig
[lrk5/net-tools-1.32-alpha]# md5sum `which ifconfig`
f06cf5241da897237245114045368267 /sbin/ifconfig
虽然我们不知道被改动了什么东西,但是我们可以很容易的在MD5校验和的结果发现原始的ifconfig程序和lrk5的ifconfig大小是不一样的。
因此在我们安装完一个系统之后,把重要文件的校验和备份到一个数据库中,并且下次当你升级你的系统的时候,你必须重新做一次备份。
这 个数据库必须放在一个物理上不可写的介质中(软盘,CD盘),因为假设入侵者得到了root权限,而这个数据库就算放在一个只读的分区中,他可以重新挂接 这个分区为可读写模式,修
改他需要修改的地方,最后再重新把这个分区挂接成只读分区。如果他够细心的话,他还会修改时标(timestamps),这样下 次你检测系统的完整性的时候,你不会发现任何异样。