chkrootkit安装与使用
前言
在今年比赛中有考到这样一道题,也是在公布的样卷中找到了它,今天就做做它并讲解一下:
公有云安全:入侵检测系统
使用提供的 makechk.tar.gz 包安装 chkrootkit 入侵检测工具,安装完毕后使用 chkrootkit 工具扫描系统,并将扫描结果保存到/var/log/chkrootkit/chkrootkit.log中
chkrootkit是一款用于检测UNIX系统上已知rootkit的开源工具。(rootkit是一种恶意软件,会获取对计算机系统的管理员访问权限,同时隐藏其存在)
虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我这篇文章:职业技能大赛云计算赛项实战——OpenStack搭建-CSDN博客
使用镜像为CentOS-7-x86_64-DVD-2009.iso,可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/
需要用到的chkrootkit软件源代码及其依赖包:https://pan.baidu.com/s/15Mx8vu-i2sct6ayqIC2LcA?pwd=mlya
提取码:mlya
操作过程
上传软件源代码及其依赖
使用远程连接工具(SecureFX、XShell等等)将我提供的软件源代码和依赖上传到机子的主目录下
[root@localhost ~]# ls
anaconda-ks.cfg chkrootkit.tar.gz makechk.tar.gz
配置YUM源
#将安装chkrootkit所需的依赖包解压至/opt目录
[root@localhost ~]# tar -zxf makechk.tar.gz -C /opt/
[root@localhost ~]# ls /opt
makechk
#删除系统自带的默认源
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[makechk]
name=makechk
baseurl=file:///opt/makechk
enabled=1
gpgcheck=0
安装chkrootkit
#安装所需依赖
[root@localhost ~]# yum -y install gcc gcc-c++ make glibc-static
#解压chkrootkit源代码压缩包
[root@localhost ~]# tar -zxf chkrootkit.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg chkrootkit-0.55 chkrootkit.tar.gz makechk.tar.gz
#进入其目录
[root@localhost ~]# cd chkrootkit-0.55/
[root@localhost chkrootkit-0.55]#
#进入其目录我们可以看到有很多文件
[root@localhost chkrootkit-0.55]# ls
ACKNOWLEDGMENTS chkproc.c chkwtmp.c patch strings.c
check_wtmpx.c chkrootkit COPYRIGHT README
chkdirs.c chkrootkit.lsm ifpromisc.c README.chklastlog
chklastlog.c chkutmp.c Makefile README.chkwtmp
#我们可以查看它的说明文档README
...
#在说明文档的这一段,我们可以知道目录里的那些包都是干嘛用的
* chkrootkit: a shell script that checks system binaries for
rootkit modification.
#这是一个shell脚本,用于检查系统二进制文件是否被rootkit修改过。我们后续使用命令也是执行这个脚本
* ifpromisc.c: checks if the network interface is in promiscuous
mode.
#用于检查网络接口是否处于混杂模式
* chklastlog.c: checks for lastlog deletions.
#用于检查lastlog文件是否被删除。lastlog文件是记录了用户最后一次登录信息的文件,只有root用户才能直接读取它。这个文件可以帮助我们监控用户的活动,并可用于安全审计和故障排查
* chkwtmp.c: checks for wtmp deletions.
#用于检查wtmp文件是否被删除。wtmp文件是记录所有用户登录和注销信息的文件,也是只有root用户才能直接读取它,对于系统安全和管理非常重要
* check_wtmpx.c: checks for wtmpx deletions. (Solaris only)
#用于检查wtmpx文件是否被删除,仅适用于Solaris系统
* chkproc.c: checks for signs of LKM trojans.
* chkdirs.c: checks for signs of LKM trojans.
#上面这俩都是用于检测恶意的可加载内核模块的,trojans应该都不陌生,就是特洛伊木马,而LKM(Loadable Kernel Module),即可加载内核模块。内核是操作系统的核心部分,负责管理和控制系统的各种资源和功能。内核模块是一种动态加载到内核中的软件组件,用于扩展内核的功能。LKM允许在运行的系统中动态地加载和卸载模块,而无需重新启动系统。也正因为LKM具有强大的特权级别和直接访问系统内核的能力,监测和识别系统中是否存在可疑的LKM模块才格外重要。
* strings.c: quick and dirty strings replacement.
#用于快速替换字符串,解释里的dirty并不是说这个字符串很脏,而是替换字符串的方法不规范、不优雅、不够严谨或不完善,因此说成脏~
* chkutmp.c: checks for utmp deletions.
#用于检查utmp文件是否被删除,utmp文件是记录系统上当前登录用户的相关信息的文件,上面提到的wtmp文件是记录所有用户的,你可以把wtmp文件看成是是 utmp文件的历史记录。
...
#说明文档的这一段,告诉了我们chkrootkit的安装方法以及简单的使用方法,我们直接照做就好了
5. Installation
---------------
To compile the C programs type:
# make sense
After that it is ready to use and you can simply type:
# ./chkrootkit
6. Usage
--------
chkrootkit must run as root. The simplest way is:
# ./chkrootkit
#编译安装
[root@localhost chkrootkit-0.55]# make sense
cc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
cc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
cc -DHAVE_LASTLOG_H -D_FILE_OFFSET_BITS=64 -o ifpromisc ifpromisc.c
cc -o chkproc chkproc.c
cc -o chkdirs chkdirs.c
cc -o check_wtmpx check_wtmpx.c
cc -static -o strings-static strings.c
cc -o chkutmp chkutmp.c
#创建日志文件
[root@localhost chkrootkit-0.55]# mkdir -p /var/log/chkrootkit
[root@localhost chkrootkit-0.55]# touch /var/log/chkrootkit/chkrootkit.log
#使用检测命令,将结果保存到日志文件当中
[root@localhost chkrootkit-0.55]# ./chkrootkit > /var/log/chkrootkit/chkrootkit.log
#可以去看一下检测出来的结果
[root@localhost chkrootkit-0.55]# vi /var/log/chkrootkit/chkrootkit.log
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
...
后语
持续更新…