关于 analyzing-linux-kernel-rootkits
用于分析 Linux 内核 Rootkit 的安全分析技能,涵盖内存取证、交叉视图检查和实时扫描。面向事件响应人员、SOC 分析师和威胁狩猎人员,提供使用 Volatility3 及 Rootkit 扫描工具的流程。
主要功能
- 01使用 Volatility3 分析内存转储
- 02检查系统调用钩子和隐藏模块
- 03比对不同内核接口视图
- 04使用 rkhunter 和 chkrootkit 实时扫描
- 05生成结构化 JSON 结果
适用场景
- 01调查疑似 Linux 内核 Rootkit
- 02搜寻隐藏模块和系统调用钩子
- 03核对 /proc、/sys 与内核视图
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill analyzing-linux-kernel-rootkits安装后在 Claude Code 中输入/analyzing-linux-kernel-rootkits确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
分析 Linux 内核 Rootkit
概述
Linux 内核 Rootkit 运行在环 0,通过修改内核数据结构,将进程、文件、网络连接和内核模块从用户空间工具中隐藏起来。检测需要进行内存取证(使用 Volatility3 分析物理内存转储),或进行交叉视图分析(比较 /proc、/sys 和内核数据结构,查找不一致之处)。本技能介绍如何使用 Volatility3 Linux 插件检测系统调用表钩子、隐藏的内核模块和被修改的函数指针,并辅以使用 rkhunter 和 chkrootkit 扫描实时系统。
适用场景
- 调查需要分析 Linux 内核 Rootkit 的安全事件时
- 为此领域构建检测规则或威胁搜寻查询时
- SOC 分析师需要此类分析的结构化流程时
- 验证针对相关攻击技术的安全监控覆盖范围时
先决条件
- 已安装 Volatility3(pip install volatility3)
- Linux 内存转储(通过 LiME、AVML 或 /proc/kcore 获取)
- 与目标内核版本匹配的 Volatility3 Linux 符号表(ISF)
- 用于扫描实时系统的 rkhunter 和 chkrootkit
- 用于对比的已知良好内核映像
步骤
步骤 1:获取内存转储
使用 LiME 内核模块或 AVML 捕获 Linux 物理内存(适用于云实例)。
步骤 2:使用 Volatility3 分析
运行 linux.check_syscall、linux.lsmod、linux.hidden_modules 和 linux.check_idt 插件,以检测 Rootkit 痕迹。
步骤 3:交叉视图分析
比较 /proc/modules、lsmod 和 /sys/module 中的模块列表,找出在某个视图中隐藏、但在另一个视图中存在的模块。
步骤 4:扫描实时系统
运行 rkhunter 和 chkrootkit,以检测已知的 Rootkit 特征、可疑文件和被修改的系统二进制文件。
预期输出
JSON 报告,包含检测到的系统调用钩子、隐藏的内核模块、被修改的 IDT 条目、可疑的 /proc 差异,以及 rkhunter 的检测结果。
示例输出
$ sudo python3 rootkit_analyzer.py --memory /evidence/linux-mem.lime --profile Ubuntu2204
Linux Kernel Rootkit Analysis Report
=====================================
Memory Image: /evidence/linux-mem.lime
Kernel Version: 5.15.0-91-generic (Ubuntu 22.04 LTS)
Analysis Time: 2024-01-18 09:15:32 UTC
[+] Scanning syscall table for hooks...
Syscall Table Base: 0xffffffff82200300
Total syscalls checked: 449
HOOKED SYSCALLS DETECTED:
┌─────────┬──────────────────┬──────────────────────┬──────────────────────┐
│ NR │ Syscall │ Expected Address │ Current Address │
├─────────┼──────────────────┼──────────────────────┼──────────────────────┤
│ 0 │ sys_read │ 0xffffffff8139a0e0 │ 0xffffffffc0a12000 │
│ 2 │ sys_open │ 0xffffffff8139b340 │ 0xffffffffc0a12180 │
│ 78 │ sys_getdents64 │ 0xffffffff813f5210 │ 0xffffffffc0a12300 │
│ 62 │ sys_kill │ 0xffffffff8110c4a0 │ 0xffffffffc0a12480 │
└─────────┴──────────────────┴──────────────────────┴──────────────────────┘
WARNING: 4 syscall hooks detected - rootkit behavior confirmed
[+] Checking for hidden kernel modules...
Loaded modules (lsmod): 147
Modules in kobject list: 149
HIDDEN MODULES:
- "netfilter_helper" at 0xffffffffc0a10000 (size: 12288)
- "kworker_sched" at 0xffffffffc0a14000 (size: 8192)
[+] Scanning /proc for discrepancies...
Processes in task_struct list: 234
Processes visible in /proc: 231
HIDDEN PROCESSES:
- PID 31337 cmd: "[kworker/0:3]" (disguised as kernel thread)
- PID 31442 cmd: "rsyslogd" (fake, real rsyslogd is PID 892)
- PID 31500 cmd: "" (unnamed process)
[+] Checking IDT entries...
IDT entries scanned: 256
Modified entries: 0 (clean)
[+] Running rkhunter scan...
Checking for known rootkits: 68 variants checked
Diamorphine rootkit: WARNING - signatures match
System binary checks:
/usr/bin/ps: MODIFIED (SHA-256 mismatch)
/usr/bin/netstat: MODIFIED (SHA-256 mismatch)
/usr/bin/ls: MODIFIED (SHA-256 mismatch)
/usr/sbin/ss: OK
[+] Network analysis...
Hidden connections (not in /proc/net/tcp):
ESTABLISHED 0.0.0.0:0 -> 198.51.100.47:4443 (PID 31337)
ESTABLISHED 0.0.0.0:0 -> 198.51.100.47:8080 (PID 31442)
Summary:
Rootkit Type: Loadable Kernel Module (LKM)
Probable Family: Diamorphine variant
Syscall Hooks: 4 (read, open, getdents64, kill)
Hidden Modules: 2
Hidden Processes: 3
Hidden Connections: 2 (C2: 198.51.100.47)
Modified Binaries: 3 (/usr/bin/ps, netstat, ls)
Risk Level: CRITICAL