首页/安全/应急响应速查/rootkit 清除与重装判据

rootkit 清除与重装判据

rootkit 处置的核心是判据:内核级污染(模块、hook)无法可靠清除时,重装优于现场清理。

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

rootkit 处置的判据

rootkit 的处置核心是判据而不是工具:落到内核层的污染(恶意模块、系统调用 hook、netfilter 规则劫持)无法在现场可靠清除,也无法证明已清除干净。这类情况的重装优先级高于清理。

什么情况可以现场清

纯应用层的常规木马、单一 webshell、持久化点数量有限且路径清晰的场景,可以按标准顺序清理。判断依据来自实际检查记录,而不是「感觉没那么严重」。

基本信息

内核态迹象lsmod 陌生模块、内核 taint 非 0、dmesg 异常
隐藏手法劫持系统调用、隐藏进程与文件、篡改工具输出
应用级普通木马与 webshell,可按清除流程处理
标准顺序保全数据与证据→重装→加固→恢复业务
验证手段干净介质上的离线扫描与镜像分析
适用平台Linux 为主,Windows 内核驱动同理

典型使用场景

  • 发现可疑内核模块后判断能否现场清理
  • 排查 lsmod 与 dmesg 中的异常条目
  • 评估是否触发重装流程并给出书面依据
  • 清理后验证系统是否仍有异常行为
  • 复盘时说明清理范围与残留风险

检查内核态迹象

检查内核态迹象
lsmod | head -n 30                       # 不认识的模块逐个核对
cat /proc/sys/kernel/tainted               # 非 0 表示内核已加载非自由/异常代码
dmesg | grep -iE 'taint|module|rootkit' | tail -n 20
cat /proc/modules | wc -l
ls -la /lib/modules/$(uname -r)/ | head
strings /lib/modules/$(uname -r)/modules.dep | head -n 20

输出逐列读法

输出项含义正常/异常
tainted 值内核污染标志位非 0 时需能对应到明确的商业或调试模块
lsmod 列表已加载模块出现与业务无关的网络或隐藏类模块需重点核查
dmesg 尾部内核日志出现模块加载失败与异常提示需结合加载时间
模块文件时间驱动文件修改时间与入侵时间窗重合的模块文件是高价值线索
现场清理的结论要写清范围,例如「已清除可见的若干持久化点」:没有人能保证未发现的内核后门已经消失,报告口径要如实。

再判断是否已被绕过

再判断是否已被绕过
ps -ef | wc -l                            # 与 /proc 目录数量对比
ls /proc | grep -c '^[0-9]'                # 与 ps 输出数量不一致即为隐藏迹象
cat /proc/net/tcp | wc -l                  # 与 ss 输出对比
which ls cat ps netstat; ls -l /usr/bin/ls

决定重装后的必做项

  • 重置全部相关凭据与密钥,撤销旧授权公钥
  • 从可信介质重装并只恢复确认干净的数据
  • 重新配置最小暴露面的网络策略
  • 把遗留风险与后续观察期写入事件报告

易错点

  • 依赖扫描工具下结论:rootkit 会针对性规避工具,阴性结果不等于干净
  • 内核态污染仍现场清理:无法证明清除干净,残留后门会再次被利用
  • 重装不换凭据:旧密钥与口令会导致二次入侵
  • 只清文件不查模块与内核参数:真正的隐蔽通道留在原地
  • 结论写得含糊:报告缺少清理范围,后续无从核对

数据来源与参考

  • NIST SP 800-61:恢复阶段决策
  • chkrootkit / rkhunter 项目文档(初筛用途)

相关工具

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