首页/安全/应急响应速查/chkrootkit 常见篡改检查

chkrootkit 常见篡改检查

chkrootkit 检查 ls、ps、netstat 等系统二进制是否被替换,以及常见 LKM 与网卡混杂模式,适合与 rkhunter 交叉验证。

应急响应速查安全更新于 2026-10-13

chkrootkit 是什么

chkrootkit 是面向 Linux/Unix 的 rootkit 检查脚本集,核心思路是差值比对:把 ls、ps、netstat 等系统命令的已知指纹与实际文件比对,再看 LKM 内核模块、网卡混杂模式和常见后门端口。它给出的是线索而不是判决,必须与包管理器校验(rpm -V / dpkg -V)和原生命令输出交叉才能定性。

基本信息

适用平台Linux 各发行版、部分 Unix(源码或发行版包)
检查对象常用系统命令指纹、LKM、网络接口混杂模式
快速模式-q 只输出异常项
典型用法chkrootkit -q
常见误报容器共享内核、改过的发行版命令、升级过的模块
配套工具rkhunter、unhide、rpm -V / dpkg -V

典型使用场景

  • 主机疑似被植入 rootkit(进程看不见、端口对不上)时的第一轮初筛
  • 应急响应开头几分钟内快速拿到方向,决定后续深挖顺序
  • 例行巡检,与包完整性校验共同构成系统命令基线核对
  • 系统升级或迁移后确认关键命令未被替换
  • 与 unhide、rkhunter、包校验组合,用多套结论互相印证

过滤正常项只看可疑输出

过滤正常项只看可疑输出
chkrootkit -q                                 # 只打印可疑项,适合初筛
chkrootkit | grep -v -e 'not infected' -e 'not found' -e 'nothing detected' | head -n 40
chkrootkit -r /mnt/root                       # 对挂载好的离线系统目录检查
chkrootkit | tee /evidence/chkrootkit.txt     # 全量留档,事后复核
which chkrootkit; sha256sum $(which chkrootkit)  # 记录工具来源与哈希

输出怎么读

输出片段含义处置
INFECTED某命令指纹与预期不符与 rpm -V / dpkg -V 比对,再判断是否被替换
not infected该项未发现问题正常项,收尾时过滤掉
Searching for ...检查正在进行进度信息,不构成结论
not found / not tested依赖缺失或跳过该子检查未真正执行,补齐后重跑
在容器里运行会把宿主机的内核视图当作本机来比对,命中项大多是误报:先确认执行环境是容器还是宿主机,再解释结果。
检查工具本身必须可信:来源不明的二进制可能被替换成「永远输出干净」的版本。优先用发行版包,或从干净介质获取并核对哈希。

易错点

  • 把 INFECTED 直接当结论去清理:误报会导致误删正常文件,必须先与包完整性校验交叉
  • 在容器里跑却按宿主机语义解读:整份结果失真,第一步先确认执行环境
  • 只用 chkrootkit 一个工具:新型 rootkit 常绕过它,需要 unhide、网络证据、包校验共同印证
  • 使用了被替换过的检查工具:会稳定给出「一切正常」,让排查彻底跑偏

数据来源与参考

  • chkrootkit 官方站点文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌