Windows应急响应之USBDevices日志
字数 2654 2025-08-22 12:23:25

Windows应急响应之USB设备日志分析指南

1. SetupAPI.dev日志分析

1.1 日志位置与作用

  • 路径:C:\Windows\INF\setupapi.dev.log
  • 作用:记录系统上加载的驱动程序和设备相关事件,可用于BadUSB排查和驱动后门排查

1.2 日志级别设置

注册表键值:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\LogLevel

默认值0x20004001含义:

  • 0x20000000:写入每个条目后不将日志刷新到磁盘(提高速度但可能丢失数据)
  • 0x00004000:在详细模式下记录错误、警告和其他信息(设备日志记录级别)
  • 0x00000001:关闭设备安装日志记录(常规日志记录级别)

1.3 日志事件类别

注册表键值:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\LogMask

事件类别及对应值:

  • dvi: 设备安装 (TXTLOG_DEVINST) - 0x00000001
  • inf: 管理INF文件 (TXTLOG_INF) - 0x00000002
  • flq: 管理文件队列 (TXTLOG_FILEQ) - 0x00000004
  • cpy: 复制文件 (TXTLOG_COPYFILES) - 0x00000008
  • reg: 管理注册表设置 (TXTLOG_REGISTRY) - 0x00000010
  • sig: 验证数字签名 (TXTLOG_SIGVERIF) - 0x00000020
  • prp: 管理设备和驱动程序属性 (TXTLOG_PROPERTIES) - 0x00000040
  • bak: 备份数据 (TXTLOG_BACKUP) - 0x00000080
  • ui : 管理用户界面对话框 (TXTLOG_UI) - 0x00000100
  • ndv: 新建设备管理器 (TXTLOG_NEWDEV) - 0x01000000
  • ump: 用户模式PnP管理器 (TXTLOG_UMPNPMGR) - 0x02000000
  • sto: 管理驱动程序存储 (TXTLOG_DRIVER_STORE) - 0x04000000
  • cci: 类安装程序或合作安装程序操作 (TXTLOG_INSTALLER) - 0x40000000
  • dvs: 供应商提供的操作 (推测为Driver Setup) - 无官方文档说明

1.4 USB设备日志分析示例

以SanDisk U盘为例:

设备标识符格式:

USBSTOR\DISK&VEN__USB&PROD__SANDISK_3.2GEN1&REV_1.00\0501BAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6047

各字段含义:

  • USBSTOR:USB存储类设备
  • DISK:子类标识,表示磁盘设备
  • VEN:供应商ID(Vendor ID)
  • PROD:产品ID(Product ID)
  • REV:固件版本号
  • 长串字符:设备唯一序列号

驱动安装过程分析:

  1. 系统尝试更新驱动程序(DIF_UPDATEDRIVER_UI

  2. 返回错误0xe000020e表示无新驱动程序可用

  3. 系统搜索硬件ID进行匹配:

    usbstor\disk_usb_____sandisk_3.2gen11.00
    usbstor\disk_usb_____sandisk_3.2gen1
    usbstor\disk_usb____
    usbstor\_usb_____sandisk_3.2gen11
    _usb_____sandisk_3.2gen11
    usbstor\gendisk
    gendisk
    
  4. 匹配到通用磁盘驱动:

    • 硬件ID:GenDisk
    • INF文件:C:\WINDOWS\System32\DriverStore\FileRepository\disk.inf_amd64_d110994be2d911c1\disk.inf
    • 设备描述:磁盘驱动器
    • 签名来源:INBOX(Windows内置驱动)
    • 驱动版本:10.0.22621.4391
  5. 设备类GUID更改为:{4d36e967-e325-11ce-bfc1-08002be10318}(磁盘驱动器类)

1.5 VID和PID解析

设备标识符中的VID_xxxxPID_xxxx

  • VID:供应商代码(4位十六进制)
  • PID:产品代码(4位十六进制)

示例:USB\VID_0781&PID_5591\

  • VID_0781:供应商代码,可查询对应厂商
  • PID_5591:产品代码,供应商分配

2. Kernel-PnP日志分析

2.1 Configuration日志

主要事件ID:

  • 400:已配置设备
  • 410:已启动设备
  • 411:设备在启动时出现问题
  • 420:已删除设备
  • 421:无法删除设备
  • 430:设备需要进一步安装

2.2 Driver Watchdog日志

记录驱动设备启动过程时间过长的信息,包括:

  • 线程ID
  • 设备信息
  • 服务信息

3. DeviceSetupManager日志

3.1 日志文件

  • Microsoft-Windows-DeviceSetupManager%4Operational.evtx
  • Microsoft-Windows-DeviceSetupManager%4Admin.evtx

3.2 关键字段

  • Prop_DeviceName:设备名称(如"LEGION M500")
  • Prop_TaskCount:设备安装/配置过程中的任务总数
  • Prop_ContainerId:设备UUID(可能因接口变化而变化,不唯一)

注意:同一设备的ContainerId可能变化,需结合设备名、VID、PID等综合判断。

4. Amcache日志分析

4.1 日志位置

C:\Windows\appcompat\Programs\Amcache.hve

4.2 解析方法

使用工具AmcacheParser.exe

AmcacheParser.exe -f "C:\Windows\appcompat\Programs\Amcache.hve" --csv result

4.3 记录内容

包含设备驱动的详细信息:

  • 驱动ID
  • 硬件ID
  • 厂商名
  • 设备型号
  • 驱动目录
  • 版本号等

5. 综合分析建议

  1. 多日志关联分析:将SetupAPI日志与Kernel-PnP、DeviceSetupManager日志交叉验证
  2. 时间线分析:关注设备插入、驱动加载的时间序列
  3. 异常驱动检测
    • 非Windows内置驱动(非INBOX签名)
    • 异常硬件ID
    • 非常规驱动加载路径
  4. 设备唯一性判断:结合VID/PID、序列号、设备名等多因素识别
  5. 工具辅助
    • 使用usbdetective.com社区版解析USB设备信息
    • 使用AmcacheParser解析Amcache日志

通过综合分析这些日志,可以有效追踪USB设备使用记录,识别可疑设备或恶意驱动加载行为。

Windows应急响应之USB设备日志分析指南 1. SetupAPI.dev日志分析 1.1 日志位置与作用 路径: C:\Windows\INF\setupapi.dev.log 作用:记录系统上加载的驱动程序和设备相关事件,可用于BadUSB排查和驱动后门排查 1.2 日志级别设置 注册表键值: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\LogLevel 默认值 0x20004001 含义: 0x20000000 :写入每个条目后不将日志刷新到磁盘(提高速度但可能丢失数据) 0x00004000 :在详细模式下记录错误、警告和其他信息(设备日志记录级别) 0x00000001 :关闭设备安装日志记录(常规日志记录级别) 1.3 日志事件类别 注册表键值: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\LogMask 事件类别及对应值: dvi: 设备安装 (TXTLOG_ DEVINST) - 0x00000001 inf: 管理INF文件 (TXTLOG_ INF) - 0x00000002 flq: 管理文件队列 (TXTLOG_ FILEQ) - 0x00000004 cpy: 复制文件 (TXTLOG_ COPYFILES) - 0x00000008 reg: 管理注册表设置 (TXTLOG_ REGISTRY) - 0x00000010 sig: 验证数字签名 (TXTLOG_ SIGVERIF) - 0x00000020 prp: 管理设备和驱动程序属性 (TXTLOG_ PROPERTIES) - 0x00000040 bak: 备份数据 (TXTLOG_ BACKUP) - 0x00000080 ui : 管理用户界面对话框 (TXTLOG_ UI) - 0x00000100 ndv: 新建设备管理器 (TXTLOG_ NEWDEV) - 0x01000000 ump: 用户模式PnP管理器 (TXTLOG_ UMPNPMGR) - 0x02000000 sto: 管理驱动程序存储 (TXTLOG_ DRIVER_ STORE) - 0x04000000 cci: 类安装程序或合作安装程序操作 (TXTLOG_ INSTALLER) - 0x40000000 dvs: 供应商提供的操作 (推测为Driver Setup) - 无官方文档说明 1.4 USB设备日志分析示例 以SanDisk U盘为例: 设备标识符格式: 各字段含义: USBSTOR :USB存储类设备 DISK :子类标识,表示磁盘设备 VEN :供应商ID(Vendor ID) PROD :产品ID(Product ID) REV :固件版本号 长串字符:设备唯一序列号 驱动安装过程分析: 系统尝试更新驱动程序( DIF_UPDATEDRIVER_UI ) 返回错误 0xe000020e 表示无新驱动程序可用 系统搜索硬件ID进行匹配: 匹配到通用磁盘驱动: 硬件ID: GenDisk INF文件: C:\WINDOWS\System32\DriverStore\FileRepository\disk.inf_amd64_d110994be2d911c1\disk.inf 设备描述:磁盘驱动器 签名来源: INBOX (Windows内置驱动) 驱动版本: 10.0.22621.4391 设备类GUID更改为: {4d36e967-e325-11ce-bfc1-08002be10318} (磁盘驱动器类) 1.5 VID和PID解析 设备标识符中的 VID_xxxx 和 PID_xxxx : VID :供应商代码(4位十六进制) PID :产品代码(4位十六进制) 示例: USB\VID_0781&PID_5591\ VID_0781 :供应商代码,可查询对应厂商 PID_5591 :产品代码,供应商分配 2. Kernel-PnP日志分析 2.1 Configuration日志 主要事件ID: 400 :已配置设备 410 :已启动设备 411 :设备在启动时出现问题 420 :已删除设备 421 :无法删除设备 430 :设备需要进一步安装 2.2 Driver Watchdog日志 记录驱动设备启动过程时间过长的信息,包括: 线程ID 设备信息 服务信息 3. DeviceSetupManager日志 3.1 日志文件 Microsoft-Windows-DeviceSetupManager%4Operational.evtx Microsoft-Windows-DeviceSetupManager%4Admin.evtx 3.2 关键字段 Prop_DeviceName :设备名称(如"LEGION M500") Prop_TaskCount :设备安装/配置过程中的任务总数 Prop_ContainerId :设备UUID(可能因接口变化而变化,不唯一) 注意:同一设备的 ContainerId 可能变化,需结合设备名、VID、PID等综合判断。 4. Amcache日志分析 4.1 日志位置 C:\Windows\appcompat\Programs\Amcache.hve 4.2 解析方法 使用工具 AmcacheParser.exe : 4.3 记录内容 包含设备驱动的详细信息: 驱动ID 硬件ID 厂商名 设备型号 驱动目录 版本号等 5. 综合分析建议 多日志关联分析 :将SetupAPI日志与Kernel-PnP、DeviceSetupManager日志交叉验证 时间线分析 :关注设备插入、驱动加载的时间序列 异常驱动检测 : 非Windows内置驱动(非INBOX签名) 异常硬件ID 非常规驱动加载路径 设备唯一性判断 :结合VID/PID、序列号、设备名等多因素识别 工具辅助 : 使用 usbdetective.com 社区版解析USB设备信息 使用 AmcacheParser 解析Amcache日志 通过综合分析这些日志,可以有效追踪USB设备使用记录,识别可疑设备或恶意驱动加载行为。