Linux 内存采集
内存镜像是易失证据中优先级最高的一类:进程、网络连接、已解密密钥与内核结构只存在于内存。Linux 上常用 LiME 内核模块或 AVML 静态二进制采集,前者需要编译与目标内核匹配的模块,后者以普通程序运行,对系统状态的改动更小。
基本信息
| 常用工具 | LiME(内核模块)、AVML(微软开源,静态二进制) |
|---|---|
| 备选手段 | /proc/kcore(不完整,仅作最后手段) |
| LiME 输出格式 | lime、raw、padded |
| 输出要求 | 采集完成后立即计算 sha256 并存档 |
| 空间要求 | 先确认输出分区剩余容量接近物理内存量 |
| 环境约束 | 内核锁定(lockdown)与 Secure Boot 可能阻止加载模块 |
典型使用场景
- 应急处置中优先固定易失证据
- 排查无文件载荷与内存注入行为
- 从内存中提取已被删除但仍被占用的文件内容
- 还原网络连接与进程的对应关系
- 为后续内存分析工具准备输入镜像
最小示例
最小示例
free -m # 先看内存量,估算镜像大小
df -h /mnt/ev # 确认输出分区空间充足
insmod ./lime.ko "path=/mnt/ev/mem.lime format=lime" # 需要与内核匹配的模块
sha256sum /mnt/ev/mem.lime | tee /mnt/ev/mem.lime.sha256 # 采完立即固化哈希
ls -l /mnt/ev/mem.lime # 记录镜像大小
lsmod | grep lime # 确认模块加载状态
rmmod lime # 采集完成后卸载模块记录项与要求
| 记录项 | 要求 | 说明 |
|---|---|---|
| 镜像大小 | 接近物理内存量 | 明显偏小说明采集中断或截断 |
| 哈希值 | 采集后立即计算 | 与镜像一并归档作为完整凭据 |
| 模块状态 | 采集后卸载 | 残留模块会污染后续分析 |
| 起止时刻 | 精确记录 | 用于解释采集期间的系统变化 |
| 工具版本 | 写入记录 | 复核者需按同版本重放 |
AVML 以静态二进制方式运行,适合无法编译内核模块的环境;LiME 在较新内核或开启内核锁定的系统上通常需要额外处理,具体做法以所用版本文档为准。
加载内核模块属于改变系统状态的操作,可能与安全产品冲突或触发告警;操作前评估影响并记录动作时刻。
/proc/kcore 不是完整物理内存映像,且读取范围受内核限制,用它采集时必须在报告里注明数据来源与局限。