自动化与脚本
用 Volatility3 与交叉视图分析检测 Linux…
在拿到 Linux 内存转储或怀疑系统被内核 Rootkit 感染时,通过内存取证与 /proc、/sys 交叉比对识别被挂钩的 syscall、隐藏内核模块和隐藏进程。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 Volatility3 与交叉视图分通用
解决思路
- 使用 LiME 内核模块或 AVML 采集 Linux 物理内存转储(云实例用 AVML)。
- 安装 Volatility3(pip install volatility3),并准备与目标内核版本匹配的 Volatility3 Linux 符号表(ISF)。
- 用 Volatility3 运行 linux.check_syscall、linux.lsmod、linux.hidden_modules、linux.check_idt 插件,检测 Rootkit 痕迹。
- 检查 syscall 表:对比每个系统调用的期望地址与当前地址,标记被重定向到可疑地址(如 0xffffffffc0a... 模块区)的条目,例如 sys_read、sys_open、sys_getdents64、sys_kill。
- 检查隐藏内核模块:对比 lsmod 加载模块数与 kobject 链表中的模块数,列出仅存在于内核链表而不在 lsmod 中的模块(如 netfilter_helper、kworker_sched)。
- 进行交叉视图分析:比较 /proc/modules、lsmod 和 /sys/module 三个来源的模块列表,找出在某一视图中被隐藏但在另一视图中存在的模块。
- 扫描 /proc 差异:对比 task_struct 链表中的进程数与 /proc 中可见进程数,列出隐藏进程(如伪装成内核线程的 [kworker/0:3]、伪造的 rsyslogd、无名进程)。
- 检查 IDT 条目:扫描 256 个 IDT 条目,标记被修改的条目。
- 在活体系统上运行 rkhunter 和 chkrootkit,检测已知 Rootkit 签名、可疑文件和被篡改的系统二进制。
- 校验系统二进制完整性:对 /usr/bin/ps、/usr/bin/netstat、/usr/bin/ls 等做 SHA-256 比对,标记与已知良好版本不一致的文件。
- 进行网络分析:对比 /proc/net/tcp 与实际连接,找出隐藏连接(如指向 C2 198.51.100.47:4443/8080 的 ESTABLISHED 连接)。
- 汇总生成 JSON 报告,包含被挂钩 syscall、隐藏内核模块、被修改的 IDT 条目、/proc 差异和 rkhunter 发现。
- 与已知良好的内核镜像做对比,确认被篡改的内核结构与函数指针。
适用边界 · 注意事项
- 没有目标内核版本匹配的 Volatility3 ISF 符号表时,内存分析结果不可靠。
- 仅有活体系统而无内存转储时,无法检测仅存在于内存中的内核结构篡改(如 syscall 挂钩)。
- 未安装 Volatility3、rkhunter 或 chkrootkit 等工具时无法执行对应步骤。