本文最后更新于 2019-11-19【23 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

rootkit 是 Linux 平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit 攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用 root 权限登录到系统。

rootkit 主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。

文件级 rootkit

文件级别的 rootkit 一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit 攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。

通常容易被 rootkit 替换的系统程序有 login、ls、ps、ifconfig、du、find、netstat 等,其中 login 程序是最经常被替换的,因为当访问 Linux 时,无论是通过本地登录还是远程登录,/bin/login 程序都会运行,系统将通过 /bin/login 来收集并核对用户的账号和密码,而 rootkit 就是利用这个程序的特点,使用一个带有根权限后门密码的 /bin/login 来替换系统的 /bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。此时,即使系统管理员修改 root 密码或者清除 root 密码,攻击者还是一样能通过 root 用户登录系统。攻击者通常在进入 Linux 系统后,会进行一系列的攻击动作,最常见的是安装嗅探器收集本机或者网络中其他服务器的重要数据。在默认情况下,Linux 中也有一些系统文件会监控这些工具动作,例如 ifconfig 命令,所以,攻击者为了避免被发现,会想方设法替换其他系统文件,常见的就是 ls、ps、ifconfig、du、find、netstat 等。如果这些文件都被替换,那么在系统层面就很难发现 rootkit 已经在系统中运行了。

这就是文件级别的 rootkit,对系统维护很大,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如果发现文件被修改或者被替换,那么很可能系统已经遭受了 rootkit 入侵。检查件完整性的工具很多,常见的有 Tripwire、 aide 等,可以通过这些工具定期检查文件系统的完整性,以检测系统是否被 rootkit 入侵。

内核级 rootkit

内核级 rootkit 是比文件级 rootkit 更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序,也就是说,当用户要运行程序 A 时,被入侵者修改过的内核会假装执行 A 程序,而实际上却执行了程序 B。

内核级 rootkit 主要依附在内核上,它并不对系统文件做任何修改,因此一般的检测工具很难检测到它的存在,这样一旦系统内核被植入 rootkit,攻击者就可以对系统为所欲为而不被发现。目前对于内核级的 rootkit 还没有很好的防御工具,因此,做好系统安全防范就非常重要,将系统维持在最小权限内工作,只要攻击者不能获取 root 权限,就无法在内核中植入 rootkit。

rootkit 后门检测工具 chkrootkit

chkrootkit 是一个 Linux 系统下查找并检测 rootkit 后门的工具,它的官方址: http://www.chkrootkit.org/

chkrootkit 没有包含在官方的 CentOS 源中,因此要采取手动编译的方法来安装,不过这种安装方法也更加安全。

chkrootkit 的使用比较简单,直接执行 chkrootkit 命令即可自动开始检测系统。下面是某个系统的检测结果:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit
Checking `ifconfig'... INFECTED
Checking `ls'... INFECTED
Checking `login'... INFECTED
Checking `netstat'... INFECTED
Checking `ps'... INFECTED
Checking `top'... INFECTED
Checking `sshd'... not infected
Checking `syslogd'... not tested

从输出可以看出,此系统的 ifconfig、ls、login、netstat、ps 和 top 命令已经被感染。针对被感染 rootkit 的系统,最安全而有效的方法就是备份数据重新安装系统。

chkrootkit 在检查 rootkit 的过程中使用了部分系统命令,因此,如果服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时 chkrootkit 的检测结果将变得完全不可信。为了避免 chkrootkit 的这个问题,可以在服务器对外开放前,事先将chkrootkit 使用的系统命令进行备份,在需要的时候使用备份的原始系统命令让 chkrootkit 对 rootkit 进行检测。

rootkit 后门检测工具 RKHunter

RKHunter 是一款专业的检测系统是否感染 rootkit 的工具,它通过执行一系列的脚本来确认服务器是否已经感染 rootkit。在官方的资料中,RKHunter可以作的事情有:

  • MD5校验测试,检测文件是否有改动
  • 检测rootkit使用的二进制和系统工具文件
  • 检测特洛伊木马程序的特征码
  • 检测常用程序的文件属性是否异常
  • 检测系统相关的测试
  • 检测隐藏文件
  • 检测可疑的核心模块LKM
  • 检测系统已启动的监听端口

在Linux终端使用 rkhunter 来检测,最大的好处在于每项的检测结果都有不同的颜色显示,如果是绿色的表示没有问题,如果是红色的,那就要引起关注了。另外,在执行检测的过程中,在每个部分检测完成后,需要以 Enter 键来继续。如果要让程序自动运行,可以执行如下命令:

/usr/local/bin/rkhunter --check --skip-keypress 

同时,如果想让检测程序每天定时运行,那么可以在 /etc/crontab 中加入如下内容:

30 09 * * * root /usr/local/bin/rkhunter --check --cronjob 

这样,RKhunter 检测程序就会在每天的 9:30 分运行一次。

其他未尽事项

Linux 安全运维系列文章:

本系列文章系转载

  • 来自:马哥 Linux 运维,
  • 作者:高俊峰,Linux 资深技术专家,畅销书籍《循序渐进 Linux 》、《高性能 Linux 服务器构建实战》作者
文章目录

推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:Linux 安全运维系列之四:后门入侵检测工具 - https://www.imtqy.com/linux-safe-check-rootkit.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!