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

如何使用 chkrootkit、rkhunter、Auditd、AIDE 和服务器上的行为监控来检测和预防 Linux rootkit。
Linux Rootkit 检测:服务器安全工具与技术
Rootkit 使攻击者能够持久且隐蔽地访问 Linux 系统。它们操纵内核操作、隐藏文件和进程,并规避标准安全工具的检测。有些甚至多年未被发现。检测 Rootkit 需要采取分层策略,因为没有任何单一工具能捕获所有威胁。
本文将介绍 Linux Rootkit 的主要类型、检测方法,以及能够捕捉基础扫描器遗漏目标的高级监控技术。
Linux 后门程序的类型
Rootkit 在不同的权限级别运行,位置越深,就越难被发现。
用户模式 Rootkit 在应用程序层(Ring 3)运行。它们利用 LD_PRELOAD 来注入恶意库,从而拦截标准 C 库函数,例如 readdir 或 fopen,从而将文件和进程隐藏在用户空间工具的视线之外。
内核模式 Rootkit 作为可加载内核模块 (LKM) 加载,在 Ring 0 运行。它们拦截系统调用、篡改内核内存,并隐藏自身存在。由于它们与特定内核版本绑定,配置错误可能导致内核恐慌,讽刺的是,这反而会暴露其存在。
基于 eBPF 的 Rootkit 利用扩展伯克利数据包过滤子系统,无需加载传统模块即可在内核空间运行。它们挂接到系统调用钩子、跟踪点或 LSM 事件上。标准 LKM 扫描器无法检测到它们。Boopkit 是一个广为人知的概念验证,它利用此方法创建了一个隐蔽的 C2 通道。
基于 io_uring 的 Rootkit 是最新变种。它们将 io_uring 异步 I/O 接口进行批量操作,从而产生更少的可观测系统调用事件。实验性 Rootkit RingReaper 展示了如何通过这种方式悄无声息地替换诸如 read, write等调用, connect 等调用,同时规避EDR工具的检测。
| Rootkit 类型 | 权限级别 | 挂钩方法 | 检测难度 |
|---|---|---|---|
| 用户模式 | 第3环(用户) | LD_PRELOAD,库劫持 | 中等 |
| 内核模式 | Ring 0 (内核) | 系统调用表、LKM、内联挂钩 | 高 |
| 基于 eBPF | Ring 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
若要启用自动每日扫描,请将 CRON_DAILY_RUN="true" 为 /etc/rkhunter.conf 并使用 --skip-keypress 和 --report-warnings-only 以获得干净的输出。在 /var/log/rkhunter.log 并把已确认的误报加入白名单。
检测 LKM 型 Rootkit
LKM 后门程序特别危险,因为它们作为内核扩展运行,在内核层拦截系统调用并隐藏进程。像 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
即便是那些能躲过 lsmod 和 /proc/modules (如 Diamorphine)的 rootkit,仍可通过检查 /sys/module/diamorphine/coresize 或审查 syslog 警告来发现。
高级检测:行为监控与完整性检查
静态扫描器存在根本性缺陷。在 2026 年的一项实验中,仅向 Rootkit 二进制文件中添加一个空字节(这一改动并不影响功能),就使检测率急剧下降。仅通过剥离其符号表,Diamorphine 的检测率就从 33/66 降至 8/64。仅依赖签名是不够的。
行为分析
行为分析不再询问“该文件是否匹配已知的Rootkit?”,而是询问“该进程是否在执行异常操作?”请监控以下信号:
- 使用 Auditd 进行监控
init_module()和finit_module()系统调用,无论采用何种方式,这些调用都会加载内核模块。 - 监控
kill()信号号大于 31 的系统调用,这可能表明存在隐蔽的 Rootkit 通信。 - 检查
/proc/sys/kernel/tainted检查是否存在未经授权的内核模块活动。 - 留意意外的
.so文件/tmp或/dev/shm. - 跟踪 eBPF 活动,特别是
bpf_probe_write_user调用。BCC 等工具可通过 tracepoint(如sys_enter_io_uring_enter.
对于 eBPF 和 io_uring 后门程序,Tetragon、Falco 和 Tracee 等运行时监控工具可实时观察内核中的活动。
文件完整性监控
AIDE(高级入侵检测环境)会建立可信系统文件的基线,并检查是否有更改。使用 aide --init,随后通过 aide --check 通过 cron 进行调度。它会跟踪关键二进制文件(如 /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 根套件。这在共享主机上无法实现,这也是专用或 VPS 环境能提供更强安全防护能力的原因之一。
对网络进行分段。将基础设施的各个部分隔离,可在单台机器遭到入侵时限制横向移动。
定期进行安全审计。Lynis 等工具可在攻击者利用漏洞之前,识别权限错误和配置失误。
结论
Rootkit 的设计初衷就是隐匿于明处。待到症状显现时,系统可能已遭受严重破坏,难以轻易恢复。没有任何单一扫描工具能检测到所有威胁,而基于签名的基本检测方式也极易被规避。
有效的防御应结合多层策略:
- 使用 chkrootkit 和 rkhunter 定期扫描已知威胁
- 利用 Auditd 规则及行为监控来检测可疑内核活动
- 利用 AIDE 进行文件完整性监控,以捕获未经授权的更改
- 使用 Tetragon 或 Falco 等运行时工具防范 eBPF 和 io_uring 威胁
- 通过强化访问控制、及时打补丁以及网络分段来缩小攻击面
尽可能实现自动化,保持基线配置最新,并从可信的干净操作系统安装开始。
FDC Servers 提供具备完全 root 权限和可自定义内核配置的专用服务器及 VPS 托管服务。探索专用服务器选项,构建一个强化的 Linux 环境。

厌倦了缓慢的部署或带宽限制?FDC Servers 提供即时的专用电源、全球覆盖和灵活的计划,适合任何规模。
立即升级Linux 内存管理:交换、OOM 杀手和 Cgroups
12 分钟阅读 - 2026年5月31日