检测Linux Rootkit入侵威胁

更新时间:
复制 MD 格式

云安全中心企业版支持检测Linux Rootkit入侵威胁,帮助您及时发现服务器是否已被Rootkit入侵。

背景信息

Rootkit 是黑客在入侵服务器后植入的恶意程序,用于隐藏自身并维持持久访问。它通常利用操作系统底层机制来对抗人工审计和安全软件分析,涉及对内核和驱动的注入与篡改。

Rootkit危害

Linux Rootkit 是一类高级对抗性恶意程序,通常以 Linux 内核模块(LKM)的形式加载到系统中,在内核态执行高权限操作或直接篡改内核代码,从而劫持系统正常运行。借助 Rootkit,黑客可以隐藏或篡改任意目录、文件、磁盘内容、进程、网络连接与流量,并提供隐蔽后门以直接登录受害服务器。

以 Linux 服务器中常见的 Reptile Rootkit 为例,它会向目标系统安装名为 reptile_module 的内核态驱动模块并隐藏自身,实现以下目的:

  • 黑客用户提权

  • 隐藏文件和目录

  • 隐藏进程

  • 隐藏TCP/UDP连接

  • 开机持久化隐藏

  • 文件内容读写篡改

  • ICMP/UDP/TCP类型后门

  • 带文件传输功能的反弹Shell

  • 代码与模块混淆

检测难点与现状

相比 Rootkit 的广泛传播,业界缺乏成熟的检测产品和方案。现有工具如 ChkrootkitRkhunter 仅能基于已知 Rootkit 的文件特征进行匹配,无法发现新型隐藏型 Rootkit。而基于 Volatility 的内存取证方案需要采集服务器全系统快照并依赖定制插件,普通用户难以使用。

云安全中心Rootkit检测方案

云安全中心提供轻量级的 Rootkit 检测方案,以取证方式发现潜在的 Rootkit 痕迹和影响。该方案对服务器资源消耗极低,不会影响业务稳定性。

Rootkit 检测功能基于通用 Rootkit 原理工作:所有 Rootkit 都必须对内核态函数(系统调用、VFS 函数及底层功能函数)进行挂钩、篡改或劫持。检测功能通过采集和分析系统内存镜像中的关键数据,确定 Rootkit 的存在及属性,判断被篡改的系统功能,从而推断 Rootkit 的作用,并向您推送包含详细信息的告警。

作为取证扫描形式的检测技术,本方案可定时检出目标服务器上所有已植入且仍存活的 Rootkit 内核模块。该检测不包含 Rootkit 植入过程中的行为检测。如需检测疑似 Rootkit 植入行为及用于植入的内核模块文件(.ko 文件),可关注云安全中心提供的"进程异常行为"、"恶意软件"、"持久化后门"等类型的告警。

Rootkit检测与推送范围

云安全中心企业版每天定时检测您的资产中是否存在 Rootkit 威胁。发现威胁时会自动发送告警通知,无需手动启用或触发。非企业版用户或未检测到 Rootkit 威胁的用户不会收到相关告警。

说明

如果您在安全告警设置中未选择任何关注等级,将不会收到告警通知。具体内容,请参见设置安全告警

Rootkit告警信息解读

当您的资产中检测到 Rootkit 内核模块时,云安全中心控制台会推送名为 恶意进程(云查杀)-Rootkit内核模块 的安全告警,状态为 待处理。告警内容示例如下:

Rootkit内核模块名称为 reptile_module,其篡改的内核函数包括 __d_lookupaudit_allocfilldirinet_ioctlip_rcvsys_killtcp4_seq_showudp4_seq_showvfs_read 等 18 项。Rootkit特征影响涵盖信号劫持或后门开关、文件内容隐藏、用户提权、目录或文件隐藏、网络隐藏、进程劫持、进程隐藏。Linux Rootkit 内核模块是黑客植入到操作系统内核中的高级恶意代码,建议您评估后进行数据和业务迁移。

告警参数说明如下表所示。

参数

说明

Rootkit内核模块名称

指从内核态内存中,定位到的隐藏的内核模块名称。正常的内核模块载入后会在lsmod命令输出中列出,而隐藏的模块名则在此列表中隐藏。

Rootkit篡改的内核函数

指在扫描中,发现被篡改、劫持的内核态函数名。这其中包括了作为内核功能入口的系统调用函数、VFS抽象层函数以及更底层的函数等。这种篡改既包括对正常函数指针的替换,也包括对正常内核代码的改写。这些劫持后真正被执行的代码,都存在于上述命名的隐藏内核模块的内存地址空间内。

Rootkit特征影响

指根据上述定位的篡改的目标,分析归纳出的Rootkit作用功能。现在包括如下分类标签:目录或文件隐藏、进程隐藏、文件内容隐藏、目录或文件防删除、网络隐藏、用户提权、进程劫持、信号劫持或后门开关、文件防改写或输入窃取、工作目录劫持。不同的Rootkit可能包括其中一项或多项标签。

支持检测的Rootkit列表

云安全中心 Rootkit 检测功能支持检测运行 Linux 2.6.32 及以上内核的 64 位服务器。实际测试中,我们选取了 GitHub 上活跃维护的 RootKits-List-Download 列表中开源或开放的 Linux LKM 型 Rootkit,当前云安全中心已支持全部检出其中仍然有效的 Rootkit。

完整的测试列表及结果如下表所示。

Rootkit

测试系统

内核

结果

f0rb1dd3n/Reptile 1.0

CentOS 7.6

3.10.0

检出

f0rb1dd3n/Reptile 2.0

Ubuntu 16.04

4.4.0

检出

Eterna1/puszek-rootkit

Ubuntu 16.04

4.4.0

检出

m0nad/Diamorphine

Ubuntu 16.04

4.4.0

检出

citypw/suterusu

CentOS 7.6

3.10.0

检出

Xingyiquan

CentOS 6.10

2.6.32

检出

bones-codes/the_colonel

CentOS 6.10

2.6.32

检出

miagilepner/rickrolly

CentOS 6.10

2.6.32

检出

matteomattia/moo_rootkit

CentOS 6.10

2.6.32

已失效

ivyl/rootkit

CentOS 6.10

2.6.32

检出

QuokkaLight/rkduck

Ubuntu 16.04

4.4.0

检出

falk3n/subversive

CentOS 6.10

2.6.32

检出

a7vinx/liinux

CentOS 6.10

2.6.32

检出

varshapaidi/Kernel_Rootkit

CentOS 7.8

3.10.0

已失效

hanj4096/wukong

CentOS 7.8

3.10.0

检出

NinnOgTonic/Out-of-Sight-Out-of-Mind-Rootkit

CentOS 6.10

2.6.32

已失效

joshimhoff/toykit

CentOS 6.10

2.6.32

已失效

jiayy/lkm-rootkit

CentOS 6.10

2.6.32

已失效

nurupo/rootkit

CentOS 6.10

2.6.32

检出

trimpsyw/adore-ng

CentOS 7.8

3.10.0

检出

PinkP4nther/Sutekh

Alibaba Cloud Linux (Alinux)

4.19.91

检出

说明

当前,对于已经在云上发现的多种非开源并已有一定受害影响面的Rootkit,云安全中心已支持全部检出。具体检测列表后续披露。

高级对抗型Rootkit检测

在云服务器的实际分析中,我们发现部分对抗型 Rootkit 专门用于对抗基于内核内存取证形式(如 Volatility)的扫描检测。云安全中心当前的检测机制已支持绕过这类混淆和对抗。对抗型 Rootkit 通常会在隐藏模块的基础上,进一步在已载入内核的内存数据中擦除模块头部等痕迹。针对这种情况,检测功能仍能定位内核函数篡改及对应的特征影响,但无法还原提取内核模块名称,此时您接收到的告警信息如下。

告警标题为 恶意进程(云查杀)-Rootkit内核模块,状态为 待处理Rootkit内核模块名称 显示为 (对抗型已混淆)Rootkit篡改的内核函数 包括 __d_lookupaudit_alloccompat_filldirfilldirfind_task_by_vpidinet_ioctltcp4_seq_showudp4_seq_showvfs_read 等。Rootkit特征影响 包括文件内容隐藏、用户提权、目录或文件隐藏、网络隐藏、进程劫持、进程隐藏。