Linux Rootkit 检测:工具和技术
10 分钟阅读 - 2026年5月16日

如何使用 chkrootkit、rkhunter、Auditd、AIDE 和服务器上的行为监控来检测和预防 Linux rootkit。
Linux Rootkit 检测:服务器安全的工具和技术
Rootkit 为攻击者提供了对 Linux 系统的持久、隐蔽访问权限。它们操纵内核操作,隐藏文件和进程,躲避标准安全工具。有些攻击者多年来一直未被发现。检测它们需要采用分层方法,因为没有一种工具能捕捉到一切。
本文章将介绍 Linux rootkit 的主要类型、如何扫描它们,以及能捕捉基本扫描程序所遗漏内容的高级监控技术。
Linux Rootkit 的类型
rootkit在不同权限级别运行,越深越难发现。
用户模式 Rootkit在应用层(环 3)运行。它们使用LD_PRELOAD劫持动态链接,注入恶意库,拦截标准 C 库函数(如readdir或fopen),使文件和进程无法被用户工具发现。
内核模式 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 脚本,用于检查关键系统二进制文件(ls、ps、netstat、sshd、ifconfig)是否有被篡改的迹象。它还能检测杂乱的网络接口和被删除的日志。截至 0.59 版(2026 年 1 月),它能识别超过 75 种 rootkit、蠕虫和 LKM,包括 Linux BPFDoor、Syslogk 和 XZ Backdoor 等新威胁。
在任何可疑活动后运行它。注意ifpromisc组件发出的警告和有关删除lastlog或wtmp文件的警报。
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,Tetragon、Falco 和Tracee等运行时监控工具可以实时观察内核活动。
文件完整性监控
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=1和MIRRORS_MODE = 0,并在合法系统更新后运行rkhunter --propupd以刷新基线。
加固服务器以防范 Rootkit
检测很重要,但预防更好。大多数 rootkit 都需要提升权限才能安装,因此减少攻击面会带来真正的不同。
不断更新内核和软件包。攻击者会利用未打补丁的漏洞提升权限并部署基于 LKM 或 eBPF 的 rootkit。打完补丁后,使用rkhunter --propupd 更新检测基线。
执行最低权限。不要给予用户或进程超出其需要的访问权限。使用SELinux或AppArmor进行强制访问控制,即使进程被入侵,也能阻止未经授权的操作。
禁止启动后加载内核模块。在专用服务器上,通过锁定系统启动后的模块加载,可以完全防止 LKM rootkit。这在共享主机上是不可能实现的,这也是专用或 VPS 环境提供更强安全态势的原因之一。
隔离网络。如果一台机器受到攻击,隔离部分基础设施可限制横向移动。
定期审计。 Lynis等工具可以在攻击者利用之前识别出权限错误和配置错误。
结论
Rootkit 隐藏在众目睽睽之下。当症状出现时,系统可能已经受到破坏,无法轻易恢复。没有一种扫描仪能捕捉到所有的东西,基于签名的基本检测也很容易逃避。
实用的防御方法是多层次结合:
- 使用 chkrootkit 和 rkhunter 对已知威胁进行定期扫描
- 使用 Auditd 规则和行为监控可疑的内核活动
- 使用 AIDE 监控文件完整性,捕捉未经授权的更改
- 针对 eBPF 和 io_uring 威胁的 Tetragon 或 Falco 等运行时工具
- 加强访问控制、打补丁和网络分段,以减少攻击面
实现自动化,保持基线最新,并从值得信赖的干净操作系统安装开始。
FDC Servers 提供具有完全 root 访问权限和可定制内核配置的专用和 VPS 托管服务。探索专用服务器选项,构建加固的 Linux 环境。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级
iperf3 教程:在 Linux 和 Windows 上测试网络速度
10 分钟阅读 - 2026年5月7日