dmesg 输出解读与留取
dmesg 输出的是内核环形缓冲区内容,包含硬件检测、驱动加载、文件系统挂载与内核级报错。现场取证时它有两个用途:一是尽快把当前缓冲完整落盘,因为环形缓冲有容量上限、新日志会覆盖旧日志;二是用 -T 转成人可读时间,与其它来源对齐后作为时间线的旁证。
基本信息
| 落盘方式 | dmesg -T > 证据目录/dmesg.txt,落盘后立即计算哈希 |
|---|---|
| 历史回溯 | journalctl -k 可按时间窗查看内核日志,需开启日志持久化 |
| 读取权限 | 部分发行版通过 kernel.dmesg_restrict 限制普通用户 |
| 时间显示 | -T 输出本地时间,-t 显示相对系统启动的秒数 |
| 常见关注点 | 挂载与卸载、模块加载、磁盘错误、内存耗尽记录 |
典型使用场景
- 现场第一时间固定内核缓冲内容,避免被后续日志覆盖
- 排查是否有异常模块被加载或设备被挂载
- 确认系统启动过程与设备识别时间,建立时间基线
- 查看内存耗尽与硬件错误,解释主机为何重启或异常变慢
- 与系统日志、认证日志对照,核实重启与关机时刻
采集与筛选
采集与筛选
dmesg -T | tail -50 # 看最近的内核消息(本地时间)
dmesg -T > /evidence/dmesg.txt && sha256sum /evidence/dmesg.txt # 落盘并固定哈希
dmesg -T | grep -iE 'mount|usb|module|oom' # 按关键词筛挂载与设备事件
journalctl -k --since '2026-01-01' --until '2026-01-02' | tail # 历史内核日志
sysctl kernel.dmesg_restrict # 确认是否限制普通用户读取常见消息读法
| 关键词 | 含义 | 取证价值 |
|---|---|---|
| usb 与 sd* | 存储设备识别与接入 | 外接设备接入的时间点 |
| mount 与文件系统名 | 文件系统挂载与卸载 | 挂载动作与文件系统异常 |
| module 与 taint | 模块加载与内核污染标记 | 是否存在非标准模块 |
| Out of memory | 内存耗尽导致进程被杀 | 解释进程消失与主机异常 |
环形缓冲容量固定,旧记录会被新日志覆盖,现场越早落盘越好。与 journalctl -k 配合使用可以按时间窗回溯,但这条路径依赖系统开启日志持久化,重启后内存中的日志会丢失。
dmesg -T 显示的是本地时区时间,跨主机合并时间线前要换算到统一基准;同时注意普通用户可能因内核参数限制读不到内容,采集应以 root 执行并把权限情况记入取证日志。