在一般人的印象中, Linux安全性要大大高于Windows, 只要在服务器上安装了Linux, 系统安全就可以高枕无忧, 可实际情况并非如此。Linux系统并非无懈可击, 同样存在各种漏洞。和普通的后门程序相比, RootKit后门可谓极为阴险, 其危害大大超过一般的恶意程序, 使用普通的安全软件根本无法发现此类后门, 而黑客却可以利用RootKit后门毫不费力的以高权限用户身份非法控制整个系统。
在Linux中RootKit后门的分类
对于RootKit后门来说, 大体上分为内核级别和文件级别两类。对于前者来说, 其危害性尤为严重, 因为其渗透进入了系统内核, 却没有对系统文件进行任何修改, 所以普通的安全工具是无法察觉到其存在的。当RootKit后门潜伏到系统内核后, 黑客就可以轻松的获得系统底层的控制权, 甚至可以对系统内核进行修改, 非法拦截外层程序向内核提交的各种命令和数据。这样黑客就可以通过重定向的方式, 劫持用户所要运行的程序或者数据, 让黑客预设的不法程序获得运行权, 来扰乱系统的正常运作。
对于内核级别的RootKit后门, 其防御难度是比较大的, 这就要求管理员提前最好各种应对措施。例如使用权限最小化原则管理系统, 尽可能防止黑客获取Root权限, 避免其在系统内核中安置RootKit后门。
对于文件型RootKit来说, 其特点是采用“李代桃僵”的方式, 通过非法替换系统重要文件来隐藏自己。当黑客通过各种系统漏洞侵入系统后, 会对正常的系统文件 (例如各种命令程序:login、ls、netstat等) 进行非法替换操作, 使RootKit后门程序得以冒称正常的系统文件。
最常见的手法是对“/bin/log”文件进行非法替换, 该程序主要作用是对用户提交的登录账户和密码进行验证, 因为不管是本地还是远程登录, 都会使用到该程序, 黑客将“/bin/log”文件替换为包含特殊密码信息的RootKit后门, 而其管理登录的正常功能没有变化。这样黑客就可以Root账户身份登录系统, 即使管理员有所察觉, 为Root账户更改了复杂的密码, 对黑客的登录其实没有任何影响。
当然, 黑客不满足于替换某个系统文件, 因为这样的做的话很容易露出马脚, 所以黑客惯用的招数是对所有影响到其不法行为的系统文件都进行替换。例如为了防止管理员运行“ifconfig”、“find”、“netstat”等命令发现其活动踪迹, 就会使用精心设计的RootKit程序对这些文件全部进行替换, 这样管理员仅仅依靠这些“叛变”后的系统命令, 自然是无法察觉到黑客活动的。
使用CHKrootkit检测RootKit后门
使用CHKrootkit这款工具, 可以快速检测Linux中是否存在RootKit后门, 执行“yum-y install gcc”、“yum-y install gcc-c++”、“yum-y install make”、“tar zxvf chkrootkit.tar.gz”, “cd chkrootkit-*”、“make sense”, “cd..”、“cp-r chkrootkit-*/usr/local/chkrootkit”等命令, 来安装CHKrootkit以及所需的组件。执行“/usr/local/chkrootkit”命令, 就可以对系统进行检测, 如果在对应系统文件或者命令后面显示“INFECTED”字样, 就说明其已经被RootKit后门所控制。
当然, 要想充分发挥该工具的功能, 需要深入其各项运行参数。例如“执行/usr/local/chkrootkit-q”命令, 实现安静检测模式, 只显示存在问题的项目。如果后跟“-l”参数, 可以显示测试的内容;如果后跟“-d”参数, 则进入debug模式, 会显示检测过程中使用到的相关命令;如果后跟“-x”参数, 则进入高级检测模式, 显示所有的检测数据;如果后跟“-r dir”参数, 可以将指定的目录作为根目录;如果后跟“-p dir”参数, 可以指定检测时锁使用到的系统命令所在的目录;如果后跟“-n”参数, 可以跳过NFS连接的目录。注意, 在使用CHKrootkit时, 会使用到一些相关的系统命令 (例如awk、cut、find等) , 如果这些系统命令被RootKit耨们控制, 自然会影响到检测精度。
因此, 最可靠的方法是在系统处于干净状态时 (例如刚安装完系统) , 将这些系统命令文件备份出来, 便于在检测时使用。例如执行“cp`which–skip-alias awk cut echo find egrep id head ls netstat ps string sed uname`/var/cmdbeifen/”命令, 将相关的命令备份到指定的目录中, 并忽略这些命令的别名而只显示命令正常执行的结果。为了便于保存, 执行“tar zcvf/usr/cmdbeifen.tar.gz/var/cmdbeifen/”之类的命令, 将备份的所有文件打包压缩。在执行执行检测时, 可以执行“/usr/local/chkrootkit-p/var/cmdbeifen/”之类的命令, 使用这些纯净的系统命令, 来执行检测操作, 从而有效的保证检测的精度。
对于文件型RootKit木马来说, 最直接有效防御方法是使用Tripwire、Aide等工具, 定期对系统文件进行完整性检测, 如果发现相关的系统出现异常变动, 就说明RootKit很有可能嵌入了系统。
使用RKHunter检测RootKit后门
同CHKrootkit相比, RKHunter是一款功能强大的RootKit后门检测工具, 其可以通过执行预设的脚本, 来检测系统中是否存在RootKit后门。
该工具可以利用MD5算法进行检测校验, 检测文件内容是否存在可疑变动, 可以对系统文件和命令进行扫描, 发现其是否被RootKit非法利用。RKHunter可以检测木马的特征信息, 对常用文件的属性信息进行分析, 发现可能存在的问题, 还可以检测隐藏的文件, 可疑的系统核心模块, 对开启的网络端口进行监控。
执行“tar–zxvf rhkunter-x.x.x.tar.gz”, “cd rhkunter-x.x.x.tar.gz”, “./installer.sh–layout default–instal”等命令, 来安装该工具, 其中的“x.x.x”表示具体的版本号。以Root身份在命令行下执行运行“/usr/local/bin/rkhunter-c”命令, 对系统进行全面检测, 其过程依次包括对系统二进制命令进行检测, 确定是否被RootKit所控制。之后对常见的RootKit后门程序进行扫描。
接下来执行一些特殊的检测, 包括重要的目录, 指定的系统内核模块, 恶意程序等对象进行扫描。之后对网络端口、连接信息、启动文件、系统配置信息、登录参数、文件系统等目标进行深入检测, 来发现潜在的其中的RootKit程序。当检测完成后, 会显示详细的报告信息, 管理员借此可以全面了解系统的安全状况。
为便于区别不同的检测信息, 该工具使用绿色表示安全的项目, 红色显示存在危险的项目。当然, 要想充分发挥该工具的功能, 需要合理使用其各项运行参数。例如可以对“/etc/crontab”文件进行编辑, 在其中添加“0 7***/usr/local/bin/rkhunter-check–cronjob”行, 让该工具在每天的上午7点定时运行。执行“/usr/local/bin/rkhunter-summary”命令, 显示详细的统计信息。执行“/usr/local/bin/rkhunter–check-sk”命令, 可以让检测过程连贯进行。