首页/安全/取证与溯源速查/开机与关机事件的时间锚点
日志溯源53 条

开机与关机事件的时间锚点

系统日志中的启动与关机事件(Windows 6005/6006/6008,Linux 启动完成与关机记录)天然构成时间锚点,用于切分分析窗口。

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

开关机是天然锚点

系统的启动与关机事件时间明确、数量有限、含义清晰,非常适合当作时间线的锚点:先把一段时间切成若干个运行阶段,再在阶段内做细粒度分析,比在连续数周的日志上滑动窗口要高效得多。Windows 上对应 System 日志的事件 6005、6006、6008、6013,Linux 上对应 journald 的 boot 分段与 last 的关机记录。

异常关机值得单独看

正常关机与意外断电在日志里留下的记录不同:意外的关机事件往往缺少正常的停止过程,同时伴随文件系统检查或服务异常启动。当可疑主机出现异常关机时,要评估是故障、断电,还是有人试图中断取证或逃避检测。

基本信息

适用平台Windows(事件日志)、Linux(journald、utmp/wtmp)
Windows 事件6005 启动、6006 正常停止、6008 意外关机、6013 运行时长
Linux 查看journalctl --list-boots、last -x、uptime -s
用途切分分析窗口、判断是否重启、验证内存镜像的时间点
输出阶段列表:每段的起止时刻与运行长度

典型使用场景

  • 内存镜像与日志时间对不上:用最近的启动事件确认镜像采集时系统已运行多久
  • 排查为什么日志中断:确认中断点是否对应一次重启
  • 缩小可疑窗口:把注意力集中在某次启动之后的时间段
  • 核对桌面终端异常关机:判断是否有人为干预取证
  • 跨主机时间线:用各自的启动事件把多台主机的时间线分段并列

枚举开关机锚点

枚举开关机锚点
# Windows:取 System 日志里的启动与关机事件
Get-WinEvent -FilterHashtable @{LogName='System'; Id=6005,6006,6007,6008,6013} -MaxEvents 20 |
  Select-Object TimeCreated, Id, ProviderName, Message | Format-Table -AutoSize

# 判断某次启动之后系统运行了多久
Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime

# Linux:列出所有可用的 boot 分段
# journalctl --list-boots --no-pager

# Linux:从 wtmp 看重启与关机记录
# last -x | head -20

事件 ID 读法

事件 ID含义分析用法
6005事件日志服务启动近似代表系统本次启动
6006事件日志服务停止表示正常关机
6007意外关机记录(部分版本)与 6008 配合判断异常下线
6008上次关机是意外的断电、硬复位或崩溃
6013系统运行时长可直接读出本次运行时长
休眠与快速启动会让关机事件的记录不完整:进入休眠时可能只有睡眠相关事件而没有独立的关机记录,分析前先确认该主机的电源策略。
事件 6008 只是「上次关机是意外的」,它本身不给出关机时刻,需要用前一条 6005 以及事件日志的最后记录时间反推。

易错点

  • 把 6008 当正常关机处理:异常下线的性质完全不同,会影响对故障与人为干预的判断
  • 只用事件 ID 不看时间顺序:快速启动与休眠会让记录缺失,容易推出错误的运行阶段
  • 忽略时区:事件日志显示本地时间,与其他来源的 UTC 记录直接比较会偏移
  • 日志被清理后仍按原样推断:6006 缺失不必然是异常,也可能是日志被清空
  • 不记录锚点列表:后续分析无法说明窗口是依据什么切出来的

数据来源与参考

  • Microsoft Learn(系统事件 ID 6005/6006/6008)
  • journalctl man 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌