Linux Rootkit 检测:工具和技术

10 分钟阅读 - 2026年5月16日

hero section cover
目录
  • Linux Rootkit 检测:服务器安全的工具和技术
  • Linux Rootkit 的类型
  • 使用 chkrootkit 和 rkhunter 进行扫描
  • 高级检测:行为监控和完整性检查
  • 加固服务器以防范 Rootkit
  • 结论
分享

如何使用 chkrootkit、rkhunter、Auditd、AIDE 和服务器上的行为监控来检测和预防 Linux rootkit。

Linux Rootkit 检测:服务器安全的工具和技术

Rootkit 为攻击者提供了对 Linux 系统的持久、隐蔽访问权限。它们操纵内核操作,隐藏文件和进程,躲避标准安全工具。有些攻击者多年来一直未被发现。检测它们需要采用分层方法,因为没有一种工具能捕捉到一切。

本文章将介绍 Linux rootkit 的主要类型、如何扫描它们,以及能捕捉基本扫描程序所遗漏内容的高级监控技术。


Linux Rootkit 的类型

rootkit在不同权限级别运行,越深越难发现。

用户模式 Rootkit在应用层(环 3)运行。它们使用LD_PRELOAD劫持动态链接,注入恶意库,拦截标准 C 库函数(如readdirfopen),使文件和进程无法被用户工具发现。

内核模式 rootkit通过加载可加载内核模块(LKM)在 0 环运行。它们会拦截系统调用、操作内核内存,并隐藏自己的存在。由于它们与特定的内核版本绑定,配置错误的内核导致内核慌乱,从而暴露自己。

基于 eBPF 的 rootkit利用扩展伯克利包过滤子系统在内核空间运行,而无需加载传统模块。它们附着在系统调用钩子、跟踪点或 LSM 事件上。标准的 LKM 扫描程序看不到它们。Boopkit就是利用这种方法创建隐蔽 C2 通道的著名概念验证。

基于 io_uring 的 rootkits是最新的变种。它们使用io_uring异步 I/O 接口进行批量操作,产生的可观测系统调用事件较少。RingReaper 是一款实验性 rootkit,它演示了这种方法如何在躲避 EDR 工具的同时,悄无声息地替换连接等调用。

rootkit类型 权限级别 挂钩方法 检测难度
用户模式 环 3(用户) LD_PRELOAD、库劫持 中度
内核模式 环 0(内核) 系统调用表、LKM、内联挂钩 中度
基于 eBPF 环 0(内核) eBPF 程序附件 极高
基于 io_uring 用户/内核 异步 I/O 批处理 极高

使用 chkrootkit 和 rkhunter 进行扫描

Linux 服务器上的 rootkit 检测有两个基本工具:chkrootkit用于快速扫描,rkhunter用于深入检查。

chkrootkit

chkrootkit是一个 shell 脚本,用于检查关键系统二进制文件(lspsnetstatsshdifconfig)是否有被篡改的迹象。它还能检测杂乱的网络接口和被删除的日志。截至 0.59 版(2026 年 1 月),它能识别超过 75 种 rootkit、蠕虫和 LKM,包括 Linux BPFDoor、Syslogk 和 XZ Backdoor 等新威胁。

在任何可疑活动后运行它。注意ifpromisc组件发出的警告和有关删除lastlogwtmp文件的警报。

rkhunter

rkhunter更进一步。它将系统二进制文件的 SHA-1 哈希值与已知良好值进行比较,监控文件权限和隐藏文件,检查启动配置,并执行内核和网络分析。

从一开始就正确设置

# Establish a baseline after a clean install or update
rkhunter --propupd
 
# Update rootkit definitions
rkhunter --update
 
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all

要实现每日自动扫描,请在/etc/rkhunter.conf中设置CRON_DAILY_RUN="true",并使用--skip-keypress--report-warnings-only来获得干净的输出。查看/var/log/rkhunter.log中的日志,并将确认的误报列入白名单。

检测 LKM rootkit

LKM rootkit 特别危险,因为它们会作为内核扩展运行,拦截系统调用并在内核级别隐藏进程。标准工具(如lsmod)看不到它们,但有办法发现它们。

lsmod输出与/sys/module/列表进行比较。检查系统日志,查找可疑的内核信息:

# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
 
# Check for module verification failures
grep "module verification failed" /var/log/syslog
 
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm

通过检查/sys /module/ diamorphine/coresize或查看系统日志警告,甚至可以发现隐藏在lsmod/proc/ modules(如 Diamorphine)中的 rootkit。

高级检测:行为监控和完整性检查

静态扫描仪有一个基本弱点。在 2026 年的一项实验中,在 rootkit 二进制文件中添加一个空字节(这一改动并不影响功能),就能大幅降低检测率。仅通过删除符号表,Diamorphine 的检测率就从 33/66 降至 8/64。仅仅依靠签名是不够的。

行为分析

行为分析不是问 "这个文件是否与已知的 rootkit 匹配?",而是问 "这个进程是否在做一些不寻常的事情?监控这些信号:

  • 使用Auditd监视init_module()finit_module()系统调用,这些调用会加载内核模块,而不考虑方法。
  • 监控kill()调用,如果信号超过31,则可能表明存在隐蔽的rootkit通信。
  • 检查/proc/sys/kernel/tainted是否有未经授权的内核模块活动。
  • 留意/tmp/dev/shm 中的意外.so文件。
  • 跟踪 eBPF 活动,尤其是bpf_probe_write_user调用。BCC等工具可通过sys_enter_io_uring_enter 等跟踪点跟踪io_uring 操作。

对于 eBPF 和 io_uring rootkit,TetragonFalcoTracee等运行时监控工具可以实时观察内核活动。

文件完整性监控

AIDE(高级入侵检测环境)可创建受信任系统文件的基线并检查更改。使用aide --init 进行初始化,然后通过 cron 调度aide--check。它可跟踪/bin/login/usr/bin/sshd 等关键二进制文件的校验和、权限、所有权和时间戳。

对于软件包级验证,debsums(Debian/Ubuntu)或rpm -Va(RHEL/CentOS)可以确认系统文件的完整性。要获得最可靠的结果,请从可信的应急媒体启动并离线检查文件系统,因为 rootkit 会篡改运行中内核的报告。

还要监控持久性机制。rootkit通常会修改/etc/ld.so.preload以注入共享对象,或更改.bashrc.profile。对这些文件的合法修改很少见,因此这里的警报信噪比很高。

使用 Auditd 自动监控

将这些规则添加到/etc/audit/rules.d/rootkit.rules中,以便实时检测可疑的内核活动:

# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
 
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32

将这些规则与 rkhunter 的自动更新相结合。在配置中设置UPDATE_MIRRORS=1MIRRORS_MODE = 0,并在合法系统更新后运行rkhunter --propupd以刷新基线。

加固服务器以防范 Rootkit

检测很重要,但预防更好。大多数 rootkit 都需要提升权限才能安装,因此减少攻击面会带来真正的不同。

不断更新内核和软件包。攻击者会利用未打补丁的漏洞提升权限并部署基于 LKM 或 eBPF 的 rootkit。打完补丁后,使用rkhunter --propupd 更新检测基线。

执行最低权限。不要给予用户或进程超出其需要的访问权限。使用SELinuxAppArmor进行强制访问控制,即使进程被入侵,也能阻止未经授权的操作。

禁止启动后加载内核模块。在专用服务器上,通过锁定系统启动后的模块加载,可以完全防止 LKM rootkit。这在共享主机上是不可能实现的,这也是专用或 VPS 环境提供更强安全态势的原因之一。

隔离网络。如果一台机器受到攻击,隔离部分基础设施可限制横向移动。

定期审计。 Lynis等工具可以在攻击者利用之前识别出权限错误和配置错误。

结论

Rootkit 隐藏在众目睽睽之下。当症状出现时,系统可能已经受到破坏,无法轻易恢复。没有一种扫描仪能捕捉到所有的东西,基于签名的基本检测也很容易逃避。

实用的防御方法是多层次结合:

  • 使用 chkrootkit 和 rkhunter 对已知威胁进行定期扫描
  • 使用 Auditd 规则和行为监控可疑的内核活动
  • 使用 AIDE 监控文件完整性,捕捉未经授权的更改
  • 针对 eBPF 和 io_uring 威胁的 Tetragon 或 Falco 等运行时工具
  • 加强访问控制、打补丁和网络分段,以减少攻击面

实现自动化,保持基线最新,并从值得信赖的干净操作系统安装开始。

FDC Servers 提供具有完全 root 访问权限和可定制内核配置的专用和 VPS 托管服务。探索专用服务器选项,构建加固的 Linux 环境。

background image
您的服务器是否阻碍了您的发展?

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。

立即升级

博客

本周特色

更多文章
Linux 服务器加固清单

Linux 服务器加固清单

加固 Linux 服务器的分步核对表。涵盖 SSH、防火墙、打补丁、文件权限、SELinux/AppArmor 和审计日志

15 分钟阅读 - 2026年5月8日

iperf3 教程:在 Linux 和 Windows 上测试网络速度

10 分钟阅读 - 2026年5月7日

更多文章