概述

在一次安全应急处置中,使用chkrootkit工具对可能被检查的服务器进行自查,发现存在:Possible t0rn v8 \(or variation\) rootkit installed。本文通过学习chkrootkit工具的检测源码,手动处置linux的rootkit后门。

记一次t0rn v8 rootkit后门应急处置复现_应急处置


环境:linx6.0.60

内核版本为:Linux linx 2.6.32-696

记一次t0rn v8 rootkit后门应急处置复现_linux_02


记一次t0rn v8 rootkit后门应急处置复现_linux_03


环境搭建

操作系统安装

凝思操作系统linx 6.0.60是基于debian6.0.10开发的,由于凝思操作系统需要序列号激活系统才可以使用网络,笔者没有凝思序列号,故采用相同内核的debian6.0.10进行复原测试。由于debian6没有可用的网络更新源,无法进行更新内核至最新2.6.32-696。

记一次t0rn v8 rootkit后门应急处置复现_应急处置_04


记一次t0rn v8 rootkit后门应急处置复现_应急处置_05


因此,将更新源设置cd更新源,方便后文使用。

记一次t0rn v8 rootkit后门应急处置复现_应急处置_06


操作系统安装过程省略。

安装chkrootkit

下载chkrootkit

下载:

#wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz

记一次t0rn v8 rootkit后门应急处置复现_应急处置_07


使用命令对其解压:

#tar -zxvf chkrootkit.tar.gz

记一次t0rn v8 rootkit后门应急处置复现_linux_08


#ls

#cd chkrootkit-0.58b/

#ls

记一次t0rn v8 rootkit后门应急处置复现_linux_09


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

记一次t0rn v8 rootkit后门应急处置复现_应急处置_10


#apt-get install make

记一次t0rn v8 rootkit后门应急处置复现_应急处置_11


2、安装chkrootkit

#make sense

记一次t0rn v8 rootkit后门应急处置复现_应急处置_12


3、测试

#./chkrootkit

记一次t0rn v8 rootkit后门应急处置复现_应急处置_13


模拟t0rn v8 rootkit环境

通过chkrootkit的官方代码学习,t0rn v8 rootkit检测主要是在${ROOTDIR}lib${ROOTDIR}usr/lib ${ROOTDIR}usr/local/lib${ROOTDIR}usr/local/lib等目录下查找是否存在libproc.a文件。

记一次t0rn v8 rootkit后门应急处置复现_linux_14


笔者在/usr/lib目录下创建:libproc.a

#touch /usr/lib/ libproc.a

# find / -name libproc.a

记一次t0rn v8 rootkit后门应急处置复现_linux_15


复现分析

1、检测

使用chkrootkit进行检测,发现t0rn v8 rootkit:

# sh chkrootkit |grep installed

记一次t0rn v8 rootkit后门应急处置复现_linux_16


2、处置

(1)定位libproc.a

#find / -name libproc.a

记一次t0rn v8 rootkit后门应急处置复现_应急处置_17


(2)删除libproc.a文件

#rm -rf /usr/lib/libproc.a

记一次t0rn v8 rootkit后门应急处置复现_应急处置_18


(3)复测

# sh chkrootkit |grep installed

记一次t0rn v8 rootkit后门应急处置复现_应急处置_19


未检测到t0rn v8 rootkit。

补充知识:

Chkrootkit简介

chkrootkit 是一种开源工具,旨在帮助检测 Linux 系统中是否存在 rootkit 和恶意软件。rootkit 是一种用于隐藏恶意活动的恶意软件,它能够有效地掩盖自身和其他恶意行为,使攻击者可以在受感染的系统上保持持久的访问权限。它通过搜索常见的 rootkit 文件和代码,包括 Linux 内核模块 (LKM) 和用户空间 rootkit,来识别潜在的威胁。

官网: http://www.chkrootkit.org

下载地址: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主要代码简析

记一次t0rn v8 rootkit后门应急处置复现_linux_20


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是否删除。

记一次t0rn v8 rootkit后门应急处置复现_linux_21


Chkrootkit主要的执行文件是chkrootkit是一个shell脚本,用于检查系统二进制文件是否被rootkit修改。其中,ifpromisc.c等文件编译成二进制文件后供chkrootkit脚本中的函数调用

1、主函数

(1)定义正则表达式

记一次t0rn v8 rootkit后门应急处置复现_linux_22


(2)默认根目录“/”

记一次t0rn v8 rootkit后门应急处置复现_应急处置_23


(3)定义选项

记一次t0rn v8 rootkit后门应急处置复现_linux_24


记一次t0rn v8 rootkit后门应急处置复现_应急处置_25


(4)定义命令列表

记一次t0rn v8 rootkit后门应急处置复现_应急处置_26


(5)定义路径

记一次t0rn v8 rootkit后门应急处置复现_应急处置_27


(6)定义额外的命令路径

记一次t0rn v8 rootkit后门应急处置复现_应急处置_28


(7)系统、版本

记一次t0rn v8 rootkit后门应急处置复现_linux_29


(8)head命令

记一次t0rn v8 rootkit后门应急处置复现_应急处置_30


(9)ax命令测试

记一次t0rn v8 rootkit后门应急处置复现_linux_31


(10)root权限判断

记一次t0rn v8 rootkit后门应急处置复现_应急处置_32


(11)默认测试,即执行所有测试

记一次t0rn v8 rootkit后门应急处置复现_应急处置_33


(12)开启调试模式

记一次t0rn v8 rootkit后门应急处置复现_linux_34


(13)用户是否指定为根目录

记一次t0rn v8 rootkit后门应急处置复现_linux_35


(14)确定是netstat或ss命令

记一次t0rn v8 rootkit后门应急处置复现_应急处置_36


(15)循环调用各个check函数

记一次t0rn v8 rootkit后门应急处置复现_linux_37


2、删除login、ls、netstat、ss、ps dirname等命令的别名

记一次t0rn v8 rootkit后门应急处置复现_应急处置_38


3、本机命令

记一次t0rn v8 rootkit后门应急处置复现_linux_39


4、工具名称(详见后文:“6、功能函数”)

记一次t0rn v8 rootkit后门应急处置复现_应急处置_40


5、状态码:0-4

记一次t0rn v8 rootkit后门应急处置复现_linux_41


6、正则表达式标签:可能存在木马的命令标签

记一次t0rn v8 rootkit后门应急处置复现_应急处置_42


7、功能函数(用5个函数举例解析,剩下的自己解析,不一一列举)

(1)55808.A 蠕虫检测:w55808 ()

记一次t0rn v8 rootkit后门应急处置复现_linux_43


检测是否存在/tmp//a、/tmp//r文件,如果存在将输出警告信息;如果没有找到任何文件,并且

(2)OSX.RSPlug.A木马检测:OSX_RSPLUG ()

记一次t0rn v8 rootkit后门应急处置复现_linux_44


检查当前系统是否为

如果不是

如果是

对于每个文件路径,输出一条消息表明正在搜索该文件。

检查文件是否存在。

如果找到任何一个文件,则输出警告信息,并返回表示感染的状态码。

如果没有找到指定文件,则输出

(3)SLAPPER蠕虫及变种检测:slapper ()

记一次t0rn v8 rootkit后门应急处置复现_应急处置_45


检查系统上是否存在与

如果找到相关文件或网络连接,则输出警告信息,并返回表示感染的状态码。

如果没有找到相关文件或网络连接,则输出

(4)Scalper蠕虫检测:Scalper()

记一次t0rn v8 rootkit后门应急处置复现_应急处置_46


检查系统上是否存在与tmp/.uua /tmp/.a)或网络连接(0.0:2001)。

如果找到相关文件或网络连接,则输出警告信息,并返回表示感染的状态码。

如果没有找到相关文件或网络连接,则输出

(5)Ramen蠕虫检测:asp ()

记一次t0rn v8 rootkit后门应急处置复现_应急处置_47


检查系统上是否存在与etc/inetd.conf中以asp开头的行)或网络配置。

如果找到相关文件或配置,则输出警告信息,并返回表示感染的状态码。

如果没有找到相关文件或配置,则输出


参考资料:https://www.52pojie.cn/thread-817180-1-1.html