ossec 的rootkit检查和主动防御

发布于 2021-12-03  1.2k 次阅读


一、rootkit的概念

Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。

 Rootkit 的目的在于隐藏自己以及其他软件不被发现。它可以通过阻止用户识别和删除攻击者的软件来达到这个目的。Rootkit 几乎可以隐藏任何软件,包括文件服务器、键盘记录器。许多 Rootkit 甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件,而您无法看到这些文件。 Rootkit 本身不会像病毒或蠕虫那样影响计算机的运行。

二、rootkit的检测工具种类

找出 Rootkit 十分困难,有一些软件包可以检测 Rootkit。这些软件包可划分为以下两类:基于签名的检查程序和基于行为的检查程序

2.1 基于签名(特征码)的检查程序

例如大多数病毒扫描程序,会检查二进制文件是否为已知的 Rootkit,这个方法通俗点将就是有个类似病毒库,它扫描的文件会和病毒库的内容比较,如果存在该名车,就会有rootkit 报警提示。

2.1 基于行为的检查程序

基于行为的检查程序试图通过查找一些代表 Rootkit 主要行为的隐藏元素来找出 Rootkit,比如一些隐藏进程以及后台隐藏端口。

ossec 就是基于签名特征来判断,和行为来判断是否是rootkit 程序,这个需要注意的是,基于签名方法,病毒库应该保持更新,由于开源软件的特点,这个点ossec 只能通过人工来更新病毒库,但是被植入rootkit 程序的时候,通过行为依旧能够发出预警。

1 用户级Rootkit 通过LD_PRELOAD来hook libc库,从而过滤/proc/pid目录

1.2 内核级rootkit 通过hook系统调用getdents/getdents64或者hook 文件file_operation的iterate

1.3 内核级rootkit把task_struct 从相关链表摘除(init_task,pidlist)

三、开源rootkit工具测试ossec

我们这里用的工具是Reptile: https://blog.buwo.net/public/Reptile-2.0.tar.gz

rootkit 程序对内核要求比较苛刻Reptile支持内核范围如下:
Debian 9: 4.9.0-8-amd64
Debian 10: 4.19.0-8-amd64
Ubuntu 18.04.1 LTS: 4.15.0-38-generic
Kali Linux: 4.18.0-kali2-amd64
Centos 6.10: 2.6.32-754.6.3.el6.x86_64
Centos 7: 3.10.0-862.3.2.el7.x86_64
Centos 8: 4.18.0-147.5.1.el8_1.x86_64

3.1 Reptile 安装

Reptile依赖于 kernel-headers :
所以需要安装 kernel-devel 和kernel-headers

yum -y install kernel-devel kernel-headers

tar -zxv Reptile-2.0.tar.gz

cd Reptile-2.0
./setup.sh install 根绝需要回车回车或者修改对应信息

3.2 Reptile 常用命令

这个后门还可以用命令隐藏任意其他你想要隐藏的东西

隐藏进程: /reptile/reptile_cmd hide <pid>
显示进程: /reptile/reptile_cmd show <pid>

隐藏: /reptile/reptile_cmd udp <IP> <port> hide
显示: /reptile/reptile_cmd udp <IP> <port> show