云安全中心企业版支持Linux Rootkit入侵威胁检测功能,帮助您及时发现资产是否被Rootkit入侵。

背景信息

Rootkit泛指所有黑客在已入侵的服务器上,为了实现自身或其它恶意行为而隐藏的恶意程序。Rootkit往往采用与操作系统机制相关的底层技术实现,用于与人工审计、安全软件分析进行对抗,因此往往涉及对受害服务器的内核、驱动进行注入和篡改。

Rootkit危害

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

如果服务器被植入了Rootkit,该服务器就会被黑客完全控制并且无法察觉。例如,在Linux服务器中较为常见的Reptile Rootkit,可以向目标系统安装一个名为reptile_module的内核态驱动模块,并将自身隐藏,实现以下目的:
  • 黑客用户提权
  • 隐藏文件和目录
  • 隐藏进程
  • 隐藏TCP/UDP连接
  • 开机持久化隐藏
  • 文件内容读写篡改
  • ICMP/UDP/TCP类型后门
  • 带文件传输功能的反弹Shell
  • 代码与模块混淆
检测难点与现状

相比Rootkit的公开流行和发展,其检测技术在业界并没有成型的产品和成熟的方案。现有的工具例如ChkrootkitRkhunter,仅根据特定几种已知类型Rootkit的文件等特征判断,无法发现存在隐藏痕迹的、新型的Rootkit。而类似Volatility的内存取证方案,需要采集待检测服务器的全系统快照,并依赖于定制的或特定功能的插件,导致其无法被非安全专业人员或云服务器用户使用。

云安全中心Rootkit检测方案介绍

为了对云服务器实现Rootkit精准检测,云安全中心推出了一套轻量级的方案,以取证的方式,尝试发现潜在的Rootkit存在痕迹与影响。同时,保证对目标服务器的资源消耗极低,避免带来潜在的稳定性风险。

为发现任何形式隐藏、混淆的Rootkit,Rootkit检测功能针对通用Rootkit的原理,即总是存在对内核态函数(系统调用、VFS函数及底层功能函数)的挂钩(hook)、篡改和劫持,对系统内存镜像进行必要数据的采集检查,来确定Rootkit的存在与属性,判断被篡改劫持的系统功能,推断Rootkit本身的功能作用,从而尽可能准确地判定Rootkit,并向用户告警传递以上信息。

作为一种取证扫描形式的检测技术,本检测方案可定时对目标服务器所有历史上被植入且仍然存活的Rootkit内核模块进行全量检出,但不包括Rootkit植入进行时的行为检测。关于疑似Rootkit植入行为,以及用于植入的Rootkit内核模块文件(.ko文件),云安全中心提供“进程异常行为”、“恶意进程(云查杀)”、“持久化后门”等类型的告警检测。

Rootkit检测与推送范围

云安全中心企业版每天定时检测您资产中是否存在Rootkit威胁,检测出威胁时会自动发送告警通知,无需您主动启用或触发检测。非企业版用户或未检测出Rootkit威胁的用户不会收到相关告警。
说明 如果您在安全告警设置中未选择任何关注等级,您将不会收到告警通知。具体内容,请参见通知

Rootkit告警信息解读

如果您的资产中检测到Rootkit内核模块,云安全中心控制台会推送以下告警信息。
告警参数说明详见以下表格。
参数 说明
Rootkit内核模块名称 指从内核态内存中,定位到的隐藏的内核模块名称。正常的内核模块载入后会在lsmod命令输出中列出,而隐藏的模块名则在此列表中隐藏。
Rootkit篡改的内核函数 指在扫描中,发现被篡改、劫持的内核态函数名。这其中包括了作为内核功能入口的系统调用函数、VFS抽象层函数以及更底层的函数等。这种篡改既包括对正常函数指针的替换,也包括对正常内核代码的改写。这些劫持后真正被执行的代码,都存在于上述命名的隐藏内核模块的内存地址空间内。
Rootkit特征影响 指根据上述定位的篡改的目标,分析归纳出的Rootkit作用功能。现在包括如下分类标签:目录或文件隐藏、进程隐藏、文件内容隐藏、目录或文件防删除、网络隐藏、用户提权、进程劫持、信号劫持或后门开关、文件防改写或输入窃取、工作目录劫持。不同的Rootkit可能包括其中一项或多项标签。

支持检测的Rootkit列表

云安全中心Rootkit检测功能支持检测Linux 2.6.32以上内核、64位服务器。实际测试中选取了GitHub上较活跃维护的RootKits-List-Download列表,筛选其中开源或开放的Linux LKM型Rootkit。当前,云安全中心已全部可检出其中仍然有效的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 AliyunLinux 4.19.91 检出
说明 当前,对于已经在云上发现的多种非开源、并已有一定受害影响面的Rootkit,云安全中心已支持全部检出。具体检测列表后续披露。

高级对抗型Rootkit检测

在云服务器的大量分析中,已经发现有部分对抗型Rootkit,用于对抗类似Volatility的一般内核内存取证形式的扫描检测。我们目前的检测机制,已经支持对这类混淆和对抗的绕过。这类对抗型Rootkit,一般会尝试在已隐藏模块的基础上,进一步在载入内核的内存数据中,擦除包括模块头部数据在内的痕迹。对这种情况,我们仍然能够检测出上述内核函数篡改以及对应的特征影响,但其内核模块名称已经无法还原提取,此时用户接收到的告警如下所示。