mcpField
A
analyzing-linux-kernel-rootkits

analyzing-linux-kernel-rootkits

github.com/mukul975安全35.2k444 次安装8 周前更新
代码仓库

关于 analyzing-linux-kernel-rootkits

用于分析 Linux 内核 Rootkit 的安全分析技能,涵盖内存取证、交叉视图检查和实时扫描。面向事件响应人员、SOC 分析师和威胁狩猎人员,提供使用 Volatility3 及 Rootkit 扫描工具的流程。

主要功能

  1. 01使用 Volatility3 分析内存转储
  2. 02检查系统调用钩子和隐藏模块
  3. 03比对不同内核接口视图
  4. 04使用 rkhunter 和 chkrootkit 实时扫描
  5. 05生成结构化 JSON 结果

适用场景

  1. 01调查疑似 Linux 内核 Rootkit
  2. 02搜寻隐藏模块和系统调用钩子
  3. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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

评论

支持 Markdown