电脑技术学习

Solaris服务器防范rootkit攻击攻略(图)

dn001
一、rootkit的定义

  rootkit这个术语已经存在10多年了。它是由有用的小型程序组成的工具包,使得攻击者能够保持访问计算机上具有最高权限的用户“root”。换句话说,rootkit是能够持久或可靠地、无法检测地存在于计算机上的一组程序和代码。在上述rootkit定义中,关键词是“无法检测”。rootkit所采用的大部分技术和技巧都用于在计算机上隐藏代码和数据。例如,许多rootkit可以隐藏文件和目录。rootkit的其它特性通常用于远程访问和窃听――例如,用于嗅探网络上的报文。当这些特性结合起来后,它们会给安全带来毁灭性的打击。

  要取得一个主机的控制权,最简单的当然就是以登录程序(如;login,;ssh,;telnet;等);加上猜测密码的程序来尝试进行登入的行为。不过,由于登入程序大部分都有登入次数的限制,因此使用密码猜测程序就不这么流行了。高级的安全为了系统网络的安全,会撰写一些程序去测试自己主机的服务漏洞,;并且在发现了某些服务的漏洞之后,会通报该服务的维护团体,或者是贡献自己的修补方式,以补足自己系统的安全性。而服务开发/维护团体在接到这样的通报之后,会在最短的时间内进行程序修改,;并且在因特网上面进行通报与释出该漏洞的修补程序。

  然而在这个漏洞通报出来之后,与修补程序释出Sun空窗期,某些恶意的安全就会针对这样的漏洞进行攻击,这些安全同样是撰写程序来攻击该漏洞,同时取得被攻击主机的控制权,或者是植入安全程序在受攻击的主机上。;这些安全与高级安全不同的地方,在于他们会很骄傲的将攻击的成果贴在一些安全常上的网站,藉以推销自己,同时,也会将他们撰写的恶意程序散播到互联网上面。;有些安全就会将这些恶意程序收集起来,做成软件包,并使这些程序包更加流行于互联网上面,;这些恶意的程序包就被称为;rootkit;。

  二、rootkit;的类型

  我们可将unix和Linux下的;rootkit;分为两大类:应用层级rookit;和内核级别rootkit

  1.应用层级;rootkit

  应用层级;rootkit;是最常被拿来使用的;rootkit。攻击者以;rootkit;中的安全程序来替换系统中正常的应用程序与系统文件。安全程序会提供后门给攻击者并隐藏其踪迹,攻击者做的任何活动都不会储存在纪录文件中。下面列举了一些攻击者可能取代的文件:

  隐藏攻击者踪迹的程序

  (1)ls,;find,;du;-;安全程序可以隐藏攻击者文件、欺骗系统,让系统的文件及目录泄露讯息。

  (2)ps,;top,;pidof;-;这些程序都是程序监看程序,它们可以让攻击者在进行攻击的过程中,隐藏攻击者本身的程序。

  (3)netstat;-;netstat;是用来检查网络活动的连结与监听,如开放的通讯端口等等

  。安全程序;netstat;可以隐藏攻击者的网络活动,例如;ssh;daemon;或其它服务。

  (4)killall;-;安全程序;killall;让管理者无法停止程序。

  (5)ifconfig;-;当监听软件正在执行时,安全程序;ifconfig;不会显示;PROMISC;flag,这样可以隐藏攻击者,不被监听软件察觉。

  (6)crontab;-;安全程序;crontab;可以隐藏攻击者的;crontab;进入情况。

  (7)tcpd,;syslogd;-;安全程序;tcpd;与;"syslog";不会纪录攻击者的行为。

  后门程序

  (1)chfn;-;提升使用者的权限。执行;chfn,在输入新使用者名称时,只要输入;rootkit;密码,就可以取得;root;的权限。

  (2)chsh;-;提升使用者的权限。执行;chsh,在输入新;shell;时,只要输入rootkit;密码,就可以取得;root;的权限。

  (3)passwd;-;提升使用者的权限。执行;passwd,在输入新密码时,只要输入rootkit;密码,就可以取得;root;的权限。

  (4)login;-;能够纪录任何使用者名称,包含;root;登入的密码。

  (5)bd2;-;安全程序;rpcbind;允许攻击者在受害主机上执行任意程序代码。

  安全程序程序

  (1)inetd;-;安全程序;inetd;可以替攻击者打开远程登入的通讯端口,只要输入密码就可以取得;root;的权限。

  (2)rshd;-;替攻击者提供远程的;shell。

  (3)rsh;-;透过;rsh;可以取得;root;的密码。

  (4)sshd;-攻击者以特定账号密码登入就能拥有;root;shell;的权限。

  监听程序

  (1)linsniffer;-;linux;小型的监听程序。

  (2)sniffchk;-;这个程序可以检验与确认网络监听程序是否正在执行。

  (3)le;-;Solaris;Ethernet;封包的监听程序。

  (4)snif;-;linux;其它封包的监听程序。

  (5)sniff-10mb;-;这是一个设计来监听;10mbps;Ethernet;的监听程序。

  (6)sniff-100mb;-;这是一个设计来监听;100mbps;Ethernet;的监听程序。

  其它种类-

  (1)fix;-;安装安全程序时;(例如:ls);更改的时间戳记与检验封包值的讯息。

  (2)wted;-;wtmp;的编辑程序。可让攻击者修改;wtmp。

  (3)z2;-;移除;wtmp/utmp/lastlog。

  (4)bindshell;-;把;rootshell;与某个通讯端口结合在一起。(预设埠号为;31337)

  (5)zap3;-;攻击者会从;wtmp,;utmp,;lastlog,;wtmpx;和;utmpx;移除他们的踪迹

  。zap3;通常根据下列目录来找寻纪录文件的位置,例如;/var/log,;/var/adm,

  /usr/adm,;与;/var/run。

  2.内核级别rootkit

  内核级别rootkit;是比应用层级别;rootkit;功能更强大的;rootkit。内核级别rootkit

  透过操作与利用;kernel,已成为最难被发现;rootkit,因为它能够在应用层检查中,建立一条绕过检验的通道。虽然这种软件主要是针对;linux;所制作,但它可能被修改来针对某个通讯端口或者是其它的操作系统来做攻击,一旦被安装在目标主机上,系统就可说是完全被安全所控制,系统管理员甚至根本找不到安全隐藏的踪迹。内核级别rootkit;是如何运作的呢?;它基本上是利用;LKM『Loadable;Kernel;Module』的功能让攻击者做出非法的动作。LKM;在;linux;或其它系统中都是非常有用的工具,支持;LKM;的系统包含;FreeBSD;与;Solaris。操作系统里面有一些函数被系统用来建构;kernel,当这些函数遭到假冒与窜改,主机就不能再被信任了。下面针对内核级别rootkit;的一些运作方式来做介绍:

  (1)隐藏程序;-;在;unix;执行过程中,程序的纪录讯息会存放于文件系统中的;"/proc",隐藏程序可以操作;sys_getdents();系统呼叫函数,在程序的架构里就看不见这些附加且正在执行的程序。

  (2)隐藏网络连结;-;类似于隐藏程序,网络连结会纪录在;"/proc/net/tcp";与;"/proc/net/udp";这两个文件之中,执行;Kernel;rootkit,无论何时读取这两个文件,都会隐藏攻击者的踪迹,不让用户知道。

  (3)隐藏;LKM;的信号;-;通常;LKM;的默认值是可被看见的,这样是为了方便其它使用者也可以使用。攻击者必须使用;"EXPORT_NO_SYMBOLS";命令隐藏这些信号,以防止任何信号被泄漏出去。

  (4)利用;LKM;传递讯息;-;LKM;Kernel;rootkit;安装完成之后,攻击者若要通知kernel;隐藏另一文件,可透过;Kernel;rootkit;来替换;sys_settimeofday()。之后只要透过一些特别的参数,就可以请求系统来完成攻击者想要完成的事情。

  (5)改变文件的执行;-;有时攻击者可能想要替换掉某些文件,例如;"login",但并不想要更改文件,此时;Kernel;rootkit;可以替换;sys_execve()。这样系统会持续执行;"login";并泄漏;"login";程序的版本给攻击者。

  目前最流行的内核级别rootkit,包含;linux;上的;knark;与;Solaris;上的Loadable;Kernel;Module,其中;knark;还包含了以下的程序:

  (1)hidef:用来隐藏文件。

  (2)unhidef:用来设定执行文件重新导向,使攻击者的安全可以被执行。

  (3)nethide:可以隐藏;/proc/net/tcp;与;/proc/net/udp;字符串,这也是netstat;撷取资料的地方,攻击者可以用这个工具将目标主机上使用中的联机讯息隐藏起来。

  (4)taskhack:可以改变正在执行中的程序,因此攻击者可以将;/bin/sh;的程序,更改成为;root;的使用者账号。

  (5)rexec:可以从远程在;knark;服务器上执行命令,也可以用来支持;ip;造假的功能。

  (6)rootme:可以将权限提升到;root。

标签: