云安全中心企业版支持检测Linux Rootkit入侵威胁,帮助您及时发现服务器是否已被Rootkit入侵。
背景信息
Rootkit 是黑客在入侵服务器后植入的恶意程序,用于隐藏自身并维持持久访问。它通常利用操作系统底层机制来对抗人工审计和安全软件分析,涉及对内核和驱动的注入与篡改。
Rootkit危害
Linux Rootkit 是一类高级对抗性恶意程序,通常以 Linux 内核模块(LKM)的形式加载到系统中,在内核态执行高权限操作或直接篡改内核代码,从而劫持系统正常运行。借助 Rootkit,黑客可以隐藏或篡改任意目录、文件、磁盘内容、进程、网络连接与流量,并提供隐蔽后门以直接登录受害服务器。
以 Linux 服务器中常见的 Reptile Rootkit 为例,它会向目标系统安装名为 reptile_module 的内核态驱动模块并隐藏自身,实现以下目的:
黑客用户提权
隐藏文件和目录
隐藏进程
隐藏TCP/UDP连接
开机持久化隐藏
文件内容读写篡改
ICMP/UDP/TCP类型后门
带文件传输功能的反弹Shell
代码与模块混淆
检测难点与现状
相比 Rootkit 的广泛传播,业界缺乏成熟的检测产品和方案。现有工具如 Chkrootkit 和 Rkhunter 仅能基于已知 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_lookup、audit_alloc、filldir、inet_ioctl、ip_rcv、sys_kill、tcp4_seq_show、udp4_seq_show、vfs_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_lookup、audit_alloc、compat_filldir、filldir、find_task_by_vpid、inet_ioctl、tcp4_seq_show、udp4_seq_show、vfs_read 等。Rootkit特征影响 包括文件内容隐藏、用户提权、目录或文件隐藏、网络隐藏、进程劫持、进程隐藏。