概述
在一次安全应急处置中,使用chkrootkit工具对可能被检查的服务器进行自查,发现存在:Possible t0rn v8 \(or variation\) rootkit installed。本文通过学习chkrootkit工具的检测源码,手动处置linux的rootkit后门。
环境:linx6.0.60
内核版本为:Linux linx 2.6.32-696
环境搭建
操作系统安装
凝思操作系统linx 6.0.60是基于debian6.0.10开发的,由于凝思操作系统需要序列号激活系统才可以使用网络,笔者没有凝思序列号,故采用相同内核的debian6.0.10进行复原测试。由于debian6没有可用的网络更新源,无法进行更新内核至最新2.6.32-696。
因此,将更新源设置cd更新源,方便后文使用。
操作系统安装过程省略。
安装chkrootkit
下载chkrootkit
下载:
#wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
使用命令对其解压:
#tar -zxvf chkrootkit.tar.gz
#ls
#cd chkrootkit-0.58b/
#ls
Chkrootkit软件包含:
chkrootkit:这是一个shell脚本,用于检查系统二进制文件是否被rootkit修改。
ifpromisc.c:检查网络端口是否处于混杂模式(promiscuous mode)。
chklastlog.c:检查lastlog是否删除。
chkwtmp.c:检查wtmp是否删除。
check_wtmpx.c:检查wtmpx是否删除(仅适用于Solaris)
chkproc.c:检查可加载内核模块木马的痕迹。
chkdirs.c:检查可加载内核模块木马的痕迹。
strings.c:快捷的字符串替换。
chkutmp.c:检查utmp是否删除。
安装chkrootkit
1、安装gcc环境
安装chkrootkit,需要准备gcc的安装环境:
#apt-get install gcc
#apt-get install make
2、安装chkroot’kit
#make sense
3、测试
#./chkrootkit
模拟t0rn v8 rootkit环境
通过chkrootkit的官方代码学习,t0rn v8 rootkit检测主要是在${ROOTDIR}lib、${ROOTDIR}usr/lib 、${ROOTDIR}usr/local/lib、${ROOTDIR}usr/local/lib等目录下查找是否存在libproc.a文件。
笔者在/usr/lib目录下创建:libproc.a
#touch /usr/lib/ libproc.a
# find / -name libproc.a
复现分析
1、检测
使用chkrootkit进行检测,发现t0rn v8 rootkit:
# sh chkrootkit |grep installed
2、处置
(1)定位libproc.a
#find / -name libproc.a
(2)删除libproc.a文件
#rm -rf /usr/lib/libproc.a
(3)复测
# sh chkrootkit |grep installed
未检测到t0rn v8 rootkit。
补充知识:
Chkrootkit简介
chkrootkit 是一种开源工具,旨在帮助检测 Linux 系统中是否存在 rootkit 和恶意软件。rootkit 是一种用于隐藏恶意活动的恶意软件,它能够有效地掩盖自身和其他恶意行为,使攻击者可以在受感染的系统上保持持久的访问权限。它通过搜索常见的 rootkit 文件和代码,包括 Linux 内核模块 (LKM) 和用户空间 rootkit,来识别潜在的威胁。
下载地址:ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
- chkrootkit的主要功能
- 检测是否被植入后门、木马、rootkit
- 检测系统命令是否正常
- 检测登录日志
Rootkit简介
rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统。
rootkit主要有两种类型:文件级别和内核级别
1、文件级别的rootkit
一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等。文件级别的rootkit,对系统维护很大,目前最有效的防御方法是定期对系统重要文件的完整性进行检查,如Tripwire、aide等。
2、内核级别rootkit
内核级别rootkit是比文件级rootkit更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序。内核级rootkit主要依附在内核上,它并不对系统文件做任何修改。
Chkrootkit主要代码简析
chkrootkit是一个本地检查rootkit迹象的工具。它包含:
- chkrootkit:这是一个shell脚本,用于检查系统二进制文件是否被rootkit修改。
- ifpromisc.c:检查网络端口是否处于混杂模式(promiscuous mode)。
- chklastlog.c:检查lastlog是否删除。
- chkwtmp.c:检查wtmp是否删除。
- check_wtmpx.c:检查wtmpx是否删除(仅适用于Solaris)
- chkproc.c:检查可加载内核模块木马的痕迹。
- chkdirs.c:检查可加载内核模块木马的痕迹。
- strings.c:快捷的字符串替换。
- chkutmp.c:检查utmp是否删除。
Chkrootkit主要的执行文件是chkrootkit,是一个shell脚本,用于检查系统二进制文件是否被rootkit修改。其中,ifpromisc.c等文件编译成二进制文件后供chkrootkit脚本中的函数调用。
1、主函数
(1)定义正则表达式
(2)默认根目录“/”
(3)定义选项
(4)定义命令列表
(5)定义路径
(6)定义额外的命令路径
(7)系统、版本
(8)head命令
(9)ax命令测试
(10)root权限判断
(11)默认测试,即执行所有测试
(12)开启调试模式
(13)用户是否指定为根目录
(14)确定是netstat或ss命令
(15)循环调用各个check函数
2、删除login、ls、netstat、ss、ps dirname等命令的别名
3、本机命令
4、工具名称(详见后文:“6、功能函数”)
5、状态码:0-4
6、正则表达式标签:可能存在木马的命令标签
7、功能函数(用5个函数举例解析,剩下的自己解析,不一一列举)
(1)55808.A 蠕虫检测:w55808 ()
检测是否存在/tmp/…/a、/tmp/…/r文件,如果存在将输出警告信息;如果没有找到任何文件,并且
(2)OSX.RSPlug.A木马检测:OSX_RSPLUG ()
检查当前系统是否为
如果不是
如果是
对于每个文件路径,输出一条消息表明正在搜索该文件。
检查文件是否存在。
如果找到任何一个文件,则输出警告信息,并返回表示感染的状态码。
如果没有找到指定文件,则输出
(3)SLAPPER蠕虫及变种检测:slapper ()
检查系统上是否存在与
如果找到相关文件或网络连接,则输出警告信息,并返回表示感染的状态码。
如果没有找到相关文件或网络连接,则输出
(4)Scalper蠕虫检测:Scalper()
检查系统上是否存在与tmp/.uua、 /tmp/.a)或网络连接(0.0:2001)。
如果找到相关文件或网络连接,则输出警告信息,并返回表示感染的状态码。
如果没有找到相关文件或网络连接,则输出
(5)Ramen蠕虫检测:asp ()
检查系统上是否存在与etc/inetd.conf中以asp开头的行)或网络配置。
如果找到相关文件或配置,则输出警告信息,并返回表示感染的状态码。
如果没有找到相关文件或配置,则输出
参考资料:https://www.52pojie.cn/thread-817180-1-1.html