检测Linux Rootkit入侵威胁——阿里云是基于行为特征如信号劫持或者文件隐藏,用户提权和网络隐藏,进程劫持等进行检测
检测Linux Rootkit入侵威胁
云安全中心企业版支持Linux Rootkit入侵威胁检测功能,帮助您及时发现资产是否被Rootkit入侵。
背景信息
Rootkit泛指所有黑客在已入侵的服务器上,为了实现自身或其它恶意行为而隐藏的恶意程序。Rootkit往往采用与操作系统机制相关的底层技术实现,用于与人工审计、安全软件分析进行对抗,因此往往涉及对受害服务器的内核、驱动进行注入和篡改。
Rootkit危害Linux服务器的Rootkit是一类近些年有很大发展的高级对抗性恶意程序。通常,Linux Rootkit特指以Linux内核模块(LKM)形式加载到操作系统中,从内核态实现更高权限的操作,或直接对内核态代码进行篡改,从而劫持整个系统正常程序的运行。借助Rootkit,黑客可以实现对任意目录、文件、磁盘内容、进程、网络连接与流量的隐藏、窃取和篡改,并提供隐蔽的后门可供黑客直接登录到受害服务器执行更多操作。
- 黑客用户提权
- 隐藏文件和目录
- 隐藏进程
- 隐藏TCP/UDP连接
- 开机持久化隐藏
- 文件内容读写篡改
- ICMP/UDP/TCP类型后门
- 带文件传输功能的反弹Shell
- 代码与模块混淆
相比Rootkit的公开流行和发展,其检测技术在业界并没有成型的产品和成熟的方案。现有的工具例如Chkrootkit和Rkhunter,仅根据特定几种已知类型Rootkit的文件等特征判断,无法发现存在隐藏痕迹的、新型的Rootkit。而类似Volatility的内存取证方案,需要采集待检测服务器的全系统快照,并依赖于定制的或特定功能的插件,导致其无法被非安全专业人员或云服务器用户使用。
云安全中心Rootkit检测方案介绍
为了对云服务器实现Rootkit精准检测,云安全中心推出了一套轻量级的方案,以取证的方式,尝试发现潜在的Rootkit存在痕迹与影响。同时,保证对目标服务器的资源消耗极低,避免带来潜在的稳定性风险。
为发现任何形式隐藏、混淆的Rootkit,Rootkit检测功能针对通用Rootkit的原理,即总是存在对内核态函数(系统调用、VFS函数及底层功能函数)的挂钩(hook)、篡改和劫持,对系统内存镜像进行必要数据的采集检查,来确定Rootkit的存在与属性,判断被篡改劫持的系统功能,推断Rootkit本身的功能作用,从而尽可能准确地判定Rootkit,并向用户告警传递以上信息。
作为一种取证扫描形式的检测技术,本检测方案可定时对目标服务器所有历史上被植入且仍然存活的Rootkit内核模块进行全量检出,但不包括Rootkit植入进行时的行为检测。关于疑似Rootkit植入行为,以及用于植入的Rootkit内核模块文件(.ko文件),云安全中心提供“进程异常行为”、“恶意进程(云查杀)”、“持久化后门”等类型的告警检测。
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 | 检出 |