首页/安全/取证与溯源速查/dmesg 输出解读与现场留取
Linux 取证135 条

dmesg 输出解读与现场留取

取证现场先将 dmesg 完整落盘:写入证据目录并记录文件哈希,-T 输出人可读时间便于时间线比对,与 journalctl -k 的历史日志互补使用。

取证与溯源速查安全更新于 2026-10-13

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 执行并把权限情况记入取证日志。

易错点

  • 现场没有及时落盘内核缓冲,关键记录被后续日志覆盖
  • 把 -T 的本地时间当作 UTC 直接合并,跨主机时间线整体错位
  • 只用 dmesg 回溯历史,未考虑缓冲覆盖造成的时间缺口
  • 忽略内核参数限制,普通权限下取到空输出就以为没有异常

数据来源与参考

  • man 1 dmesg(util-linux)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌