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 | 依赖缺失或跳过 | 该子检查未真正执行,补齐后重跑 |
在容器里运行会把宿主机的内核视图当作本机来比对,命中项大多是误报:先确认执行环境是容器还是宿主机,再解释结果。
检查工具本身必须可信:来源不明的二进制可能被替换成「永远输出干净」的版本。优先用发行版包,或从干净介质获取并核对哈希。