Linux平台下木马rootkit的检测和防范

一、关于linux下的rootkit

近些年来,在网络安全攻击中,高隐匿、高持久化的Rootkit技术成为黑客操控的主要手段,本文,我首先对Rootkit的几种类型进行介绍,主要让大家了解内核态Rootkit的高度定制化需求和Linux系统上存在的其他类型Rootkit,最后从攻防视角给出对Rootkit进行检测和防范的工具和方法。

rootkit是Linux平台下最常见的一种木 马后门工具,它主要通过替换系统文件来达到攻 击和和隐蔽的目的,这种木 马比普通木 马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木 马。制作精良的Rootkit可以在受害主机长期驻留,让主机在用户视角和部分内核视角没有任何感知,进而很难通过系统提供的检测工具以及常规的防病毒软件进行检测和清除。

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

1、文件级别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入 侵。

2、内核级别的rootkit木 马

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

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

二、rootkit后门检测工具chkrootkit

chkrootkit是一款小巧易用的Unix平台上的可以检测多种rootkit木 马的工具。它的功能包括检测文件修改、utmp/wtmp/last日志修改、界面欺骗(promiscuous interfaces)、恶意核心模块(maliciouskernel modules)。它的官方址:
http://www.chkrootkit.org/。 目前最新版本为chkrootkit 0.52,chkrootkit没有包含在官方的CentOS源中,因此要采取手动编译的方法来安装,不过这种安装方法也更加安全。下面简单介绍下chkrootkit的安装过程。

1、准备gcc编译环境

对于CentOS系统,需要安装gcc编译环境,执行下述四条命令:

[root@server ~]# yum -y install gcc
[root@server ~]# yum -y install gcc-c++
[root@server ~]# yum -y install make
[root@server ~]# yum install glibc* -y

2、安装chkrootkit

为了安全起见,建议直接从官方网站下载chkrootkit源码,然后进行安装,操作如下:

[root@server ~]# tar zxvf chkrootkit.tar.gz
[root@server ~]# cd chkrootkit-*
[root@server ~]# make sense

#注意,上面的编译命令为make sense

[root@server ~]# cd ..
[root@server ~]# cp -r chkrootkit-* /usr/local/chkrootkit
[root@server ~]# rm -rf chkrootkit-*

3、使用chkrootkit

我们将chkrootkit程序拷贝到了/usr/local/chkrootkit目录下,执行如下命令即可显示chkrootkit的详细用法:

[root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit  -h
chkrootkit各个参数的含义如下:
-h  显示帮助信息
-v  显示版本信息
-l  显示测试内容
-d  debug模式,显示检测过程的相关指令程序
-q  安静模式,只显示有问题的内容
-x  高级模式,显示所有检测结果
-r dir  设置指定的目录为根目录
-p dir1:dir2:dirN   指定chkrootkit检测时使用系统命令的目录
-n  跳过NFS连接的目录

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
Checking `tar'... not infected

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

4、chkrootkit的缺点

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

[root@server ~]# mkdir /usr/share/.commands
[root@server ~]# cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands
[root@server ~]# /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/
[root@server share]# cd /usr/share/
[root@server share]# tar zcvf commands.tar.gz .commands
[root@server share]#  rm -rf commands.tar.gz

上面这段操作是在/usr/share/下建立了一个.commands隐藏文件,然后将chkrootkit使用的系统命令进行备份到这个目录下。为了安全起见,可以将.commands目录压缩打包,然后下载到一个安全的地方进行备份,以后如果服务器遭受攻 击,就可以将这个备份上传到服务器任意路径下,然后通过chkrootkit命令的“-p”参数指定这个路径进行检测即可。

三、rootkit后门检测工具RKHunter

Rkhunter的中文名叫“Rootkit猎手”, 目前可以发现大多数已知的rootkits和一些嗅探器以及后门程序。它通过执行一系列的测试脚本来确认服务器是否已经感染rootkits,比如检查rootkits使用的基本文件,可执行二进制文件的错误文件权限,检测内核模块等等。在官方的资料中,RKHunter可以作的事情有:

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

1、安装RKHunter

RKHunter的官方网页地址为:
http://rootkit.nl/projects/rootkit_hunter.html, 目前的最新版本是rkhunter-1.4.6.tar.gz。 可以从https://sourceforge.net/projects/rkhunter/files/下载, RKHunter的安装非常简单,可以通过源码安装,也可以在线yum安装,这里以centos7.5为例,过程如下:

[root@server ~]#yum install epel-release
[root@server ~]#yum install rkhunter

因为rkhunter包含在了EPEL源中,所以要通过yum安装的话,需要先epel源,然后再安装rkhunter即可。

2、使用rkhunter指令

rkhunter命令的参数较多,但是使用非常简单,直接运行rkhunter即可显示此命令的用法。下面简单介绍下rkhunter常用的几个参数选项。

[root@server ~]#/usr/local/bin/rkhunter --help

常用的几个参数选项有:
-c, --check 必选参数,表示检测当前系统
--configfile <file> 使用特定的配置文件
--cronjob   作为cron任务定期运行
--sk, --skip-keypress   自动完成所有检测,跳过键盘输入
--summary   显示检测结果的统计信息
--update    检测更新内容

3、使用rkhunter开始检测系统

直接执行下面命令,即可开始检查:

[root@server ~]# /usr/bin/rkhunter -c

从图中可以看出,检查主要分成6个部分:

第一部分是进行系统命令的检查,主要是检测系统的二进制文件,因为这些文件最容易被rootkit。显示OK字样表示正常,显示Warning表示有异常,需要引起注意,而显示“Not found”字样,一般无需理会。

第二部分,主要检测常见的rootkit程序,显示绿色的“Not found”表示系统未感染此rootkit。

第三部分,主要是一些特殊或附加的检测,例如对rootkit文件或目录检测、对恶意软件检测以及对指定的内核模块检测。

第四部分,主要对网络、系统端口、系统启动文件、系统用户和组配置、SSH配置、文件系统等进行检测。

第五部分,主要是对应用程序版本进行检测。

第六部分,其实是上面输出的一个总结,通过这个总结,可以大概了解服务器目录的安全状态。

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

[root@server ~]# /usr/local/bin/rkhunter --check --skip-keypress 

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

10 3 * * * root /usr/local/bin/rkhunter --check --cronjob 

这样,rkhunter检测程序就会在每天的3:10分运行一次。

Rkhunter拥有并维护着一个包含rootkit特征的数据库,然后它根据此·数据库来检测系统中的rootkits,所以可以对此数据库进行升级,rkhunter --update

[root@server ~]# rkhunter --update

那么简单来讲,RKhunter就像我们的杀毒软件,有着自己的病毒数据库,对每一个重点命令进行比对,当发现了可疑代码则会提示用户。

更多Linux、云计算、云原生、大数据、docker、k8s知识,可访问:奇智云课堂

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值