Linux Rootkit 排查不能只靠一个工具或一步操作,得从用户态到内核态分层推进,兼顾自动扫描和人工验证。核心思路是:找异常、验一致性、溯加载路径、查持久化痕迹。
用户态隐藏行为排查
多数Rootkit先在用户空间下手,手法直接但易留痕:
系统命令被替换
:用
查看文件大小、时间戳、inode 是否异常;对比
与可信镜像或 AIDE 数据库中的哈希值
环境变量劫持
:检查
、
、
中是否追加了别名(alias)或覆盖了命令路径(如
)
LD_PRELOAD 或 /etc/ld.so.preload
:运行
;查看
是否非空;再用
确认实际加载的共享库链
/proc 下的挂载隐藏
:执行
,重点看是否有
类型挂载指向
、
或隐藏目录;再用
找大小为 0 或明显偏小的 PID 目录
内核态隐蔽痕迹检测
内核级Rootkit更难发现,需借助内存分析或系统底层比对:
通义灵码 Linux版
通义灵码 Linux版是阿里云推出的一款AI智能编码助手,专为Linux开发者设计。它支持在Linux操作系统下的JetBrains IDEs、Visual Studio Code等主流集成开发环境中运行。该工具基于通义大模型,提供代码智能生成、实时续写、单元测试生成、代码优化以及研发智能问答等功能,旨在帮助Linux用户在编码过程中提升效率。
下载
模块隐藏
:运行
后,再对比
,若后者显著更多,说明有模块被从链表中摘除;同时检查
是否有可疑加载记录
系统调用表劫持
:使用
获取地址,再通过自定义模块或
的
插件,验证关键函数(如
、
)指针是否指向异常地址
VFS 层隐藏
:若
和
显示不一致,或
远少于
,很可能存在 VFS 层脱链或目录项过滤
自动化工具交叉验证
单一工具可能漏报或误报,建议组合使用并关注输出细节:
rkhunter
:首次运行后必须执行
初始化文件属性库;后续用
全面扫描,重点看
中 “Warning” 和 “Suspicious” 条目
chkrootkit
:轻量快速,适合初筛;注意它不依赖特征库更新,但对新型劫持(如 LD_PRELOAD + 自定义 so)检出率有限;若输出含 “INFECTED” 或 “TESTING”,需人工跟进对应进程或文件
AIDE
:部署越早越好;在系统干净时运行
,生成基线;之后定期
,重点关注
、
、
、
下命令是否被修改
辅助线索与上下文印证
很多Rootkit会伴随其他入侵迹象,结合排查能提高命中率:
异常高CPU或内存占用
:用
快速抓取,再用
定位可疑进程;注意名称伪装成
、
、
(但非 root 用户启动)等
SSH 后门痕迹
:检查
和各用户家目录下的同名文件;用
批量扫描;比对
中成功登录 IP 与业务白名单是否一致
定时任务与启动项
:检查
、
、
、
;查看
中非系统服务项;检查
下可疑脚本
ls -la /bin/ps /usr/bin/top /bin/lssha256sum/etc/profile/etc/profile.d/*.sh/etc/bashrcalias ps='/tmp/.x/ps'echo $LD_PRELOADcat /etc/ld.so.preloadldd $(which ps)cat /proc/$$/mountinfo | grep '/proc/[0-9]\+'bind/tmp/dev/shmls -lai /proc/[0-9]*lsmodls /sys/module/ | wc -ldmesg | grep -i 'module\|insmod'cat /proc/kallsyms | grep sys_call_tablevolatilitylinux_check_syscallsys_getdents64sys_openatps auxls /procfind /proc -maxdepth 1 -name '[0-9]*' | wc -lps -eo pid= | wc -lsudo rkhunter --propupdsudo rkhunter -c --enable all --disable none/var/log/rkhunter.logsudo aide --initsudo aide --check/bin/usr/bin/sbin/usr/sbintop -b -n1 | head -20ps -eo pid,ppid,comm,%cpu,%mem --sort=-%cpu | head -10kthreaddcryptosshd/root/.ssh/authorized_keysgrep -r "ssh-rsa\|ssh-ed25519" /home/*/\.ssh/ 2>/dev/null/var/log/securecrontab -lsudo crontab -l/etc/crontab/etc/cron.d/*systemctl list-unit-files --state=enabled/etc/init.d/