Windows 注册表取证基础

注册表在电子取证中的应用

Windows 注册表是 Windows 系统中非常重要的配置数据库,里面保存了系统、硬件、用户、软件、服务、网络、外接设备、启动项等大量信息。微软官方将其描述为一个分层数据库,数据以树状结构组织,每个节点叫 Key,Key 下面可以有子 Key 和 Value。对取证来说,注册表经常可以用来还原“谁用过这台电脑、插过什么设备、运行过什么程序、配置过什么启动项、访问过什么文件夹”。(微软官方说明Microsoft Learn)


一、注册表取证能查什么

注册表取证主要用于分析这些问题:

1. 这台电脑有哪些用户?
2. 用户最后一次登录或使用痕迹是什么?
3. 是否插入过 U 盘、移动硬盘、手机等外接设备?
4. 是否运行过某些程序?
5. 是否存在恶意启动项、服务、计划任务?
6. 用户是否访问过某些文件夹或网络路径?
7. 系统时区、计算机名、网络配置是什么?
8. 是否存在远控、后门、持久化配置?

注册表本身不能解决所有问题,它更适合和事件日志、Prefetch、LNK、Jump Lists、浏览器记录、MFT、UsnJrnl 等证据一起交叉验证。


二、注册表的基本结构

注册表可以简单理解成一个树状数据库:

Hive     注册表配置单元
Key      键,类似文件夹
Subkey   子键
Value    值,类似具体配置项
Data     值里面保存的数据

例如:

HKEY_LOCAL_MACHINE
 └── SOFTWARE
     └── Microsoft
         └── Windows
             └── CurrentVersion
                 └── Run

其中 Run 这个键下面的值,可能记录开机自启动程序。

微软官方文档中中说明,Hive 是注册表中 Key、Subkey 和 Value 的逻辑组合,并且有对应的支持文件。 这些 Hive 会在系统启动或用户登录时加载到内存中。(Microsoft Learn)


三、常见注册表 Hive 文件

在做取证时,如果不使用软件进行仿真,那我们可以尝试从镜像中提取注册表 Hive 文件进行分析。

1. 系统级 Hive

路径一般在:

C:\Windows\System32\Config\

常见文件:

Hive 文件 主要作用
SYSTEM 硬件、服务、驱动、USB 设备、ControlSet、时区等
SOFTWARE 已安装软件、系统配置、部分启动项
SAM 本地用户、组信息
SECURITY 安全策略、权限、部分凭据相关信息
DEFAULT 默认用户配置

这些系统 Hive 文件通常位于 C:\Windows\System32\Config,用户相关 Hive 则位于用户配置文件目录中。微软文档也说明,用户配置文件 Hive 会在用户登录时创建并加载到 HKEY_USERS 下。


2. 用户级 Hive

每个用户都有自己的注册表文件。

常见位置:

C:\Users\用户名\NTUSER.DAT
C:\Users\用户名\AppData\Local\Microsoft\Windows\UsrClass.dat

常见用途:

Hive 文件 主要作用
NTUSER.DAT 当前用户的软件设置、Recent、UserAssist、TypedPaths、部分 MRU 记录
UsrClass.dat ShellBags、用户级 COM、资源管理器相关痕迹

简单理解:

SYSTEM / SOFTWARE / SAM / SECURITY  偏系统层面
NTUSER.DAT / UsrClass.dat           偏用户行为层面

四、注册表取证的基本流程

第一步:从镜像中提取 Hive

使用镜像解析软件导出Hive文件。 常见需要导出的文件:

C:\Windows\System32\Config\SYSTEM
C:\Windows\System32\Config\SOFTWARE
C:\Windows\System32\Config\SAM
C:\Windows\System32\Config\SECURITY
C:\Windows\System32\Config\DEFAULT
C:\Users\用户名\NTUSER.DAT
C:\Users\用户名\AppData\Local\Microsoft\Windows\UsrClass.dat
C:\Windows\AppCompat\Programs\Amcache.hve
---

### 第二步:使用工具打开 Hive

常用工具:

| 工具              | 用途                                                |
| ------------------- | ----------------------------------------------------- |
| Registry Explorer | 图形化查看注册表 Hive,支持搜索、多 Hive 分析和插件 |
| RECmd             | 命令行批量解析注册表                                |
| RegRipper         | 使用插件批量提取注册表取证信息                      |
| KAPE              | 快速采集和解析 Windows 取证痕迹                     |
| FTK Imager        | 从镜像中导出 Hive 文件                              |
| Autopsy           | 综合分析镜像中的系统痕迹                            |

---

### 第三步:注意事务日志

注册表 Hive 旁边经常会有这些文件:

```text
SYSTEM.LOG1
SYSTEM.LOG2
SOFTWARE.LOG1
SOFTWARE.LOG2
NTUSER.DAT.LOG1
NTUSER.DAT.LOG2

这些是注册表事务日志,可能包含还没有完全写入 Hive 主文件的数据。做取证时,不应只看单独的 Hive 文件,还要考虑 .LOG1.LOG2

注:RegRipper 不会自动处理 Hive transaction logs,如果需要纳入这些数据,需要先进行合并或使用支持 replay 的工具。(RegRipper3.0)


五、核心注册表痕迹

1. 查看当前 ControlSet

分析 SYSTEM Hive 时,经常会看到:

ControlSet001
ControlSet002
Select

重点看:

HKLM\SYSTEM\Select

常见值:

Current
Default
LastKnownGood
Failed

如果:

Current = 1

那么当前系统使用的一般是:

ControlSet001

如果:

Current = 2

那么当前系统使用的一般是:

ControlSet002

但在离线分析 Hive 时,更严谨的做法是先看 Select,再确定真正对应的 ControlSet00x


2. 计算机名

位置:

SYSTEM\ControlSet00x\Control\ComputerName\ComputerName

关注值:

ComputerName

作用:

确认检材主机名称
关联事件日志中的主机名
关联网络连接、域环境、共享访问记录

3. 系统时区

位置:

SYSTEM\ControlSet00x\Control\TimeZoneInformation

关注值:

TimeZoneKeyName
Bias
ActiveTimeBias

作用:

判断系统时间使用的时区
校正事件日志、文件时间、浏览器时间
避免时间线分析错误

注:有时候,计算机中的时间需要依靠时区转换


4. 本地用户信息

主要 Hive:

SAM

常见位置:

SAM\Domains\Account\Users
SAM\Domains\Account\Users\Names

可分析内容:

本地用户列表
用户 RID
账户创建时间
最后登录时间
是否禁用
用户组关系

取证问题:

是否创建了异常用户?
是否存在隐藏账户?
某个用户是否属于管理员组?

5. USB 设备插入痕迹

主要 Hive:

SYSTEM
SOFTWARE

常见位置:

SYSTEM\ControlSet00x\Enum\USBSTOR
SYSTEM\ControlSet00x\Enum\USB
SYSTEM\MountedDevices
SOFTWARE\Microsoft\Windows Portable Devices\Devices

可分析内容:

U盘品牌
设备类型
设备序列号
设备 VID / PID
卷标
曾经分配的盘符

Eg:

SYSTEM\ControlSet001\Enum\USBSTOR

可能看到类似:

Disk&Ven_Kingston&Prod_DataTraveler_3.0

这说明系统曾识别过一个 Kingston DataTraveler 设备。

USB 设备、Mounted Devices、服务、时区、启动项、最近访问文档、ShellBags 等都属于注册表取证中的常见关键证据类型。(belkasoft.com)


6. 盘符分配记录

位置:

SYSTEM\MountedDevices

常见值:

\DosDevices\C:
\DosDevices\D:
\DosDevices\E:
\??\Volume{GUID}

作用:

判断某个 U 盘曾经被分配为什么盘符
关联 LNK 文件中的盘符路径
关联用户访问文件的路径

分析示例:

USBSTOR 证明插过某个 U 盘;
MountedDevices 证明它曾经是 E: 盘;
LNK 证明用户打开过 E:\材料\名单.xlsx;
三者结合,才能更有说服力。

7. 程序运行痕迹:UserAssist

主要 Hive:

NTUSER.DAT

位置:

Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

作用:

记录用户通过图形界面运行过的部分程序
记录运行次数
记录最近运行时间

注意:

UserAssist 通常使用 ROT13 编码显示程序路径
命令行直接运行的程序不一定会出现在 UserAssist 中

例如 ROT13 后:

P:\Jvaqbjf\Flfgrz32\pnyp.rkr

解码后就是:

C:\Windows\System32\calc.exe

UserAssist、ShellBags、外接设备、MRU 等都是 Windows 注册表取证中常见的用户行为痕迹。(详细可以参考这一个教程 YouTube)


8. 程序执行痕迹:ShimCache / AppCompatCache

主要 Hive:

SYSTEM

位置:

SYSTEM\ControlSet00x\Control\Session Manager\AppCompatCache

作用:

辅助判断某些程序是否曾经存在或运行过
可用于恶意程序排查

注意:

不同 Windows 版本解析方式不同
不应单独依赖 ShimCache 判断程序一定执行过
最好结合 Prefetch、Amcache、事件日志 4688、SRUM 等一起判断

9. 程序执行痕迹:Amcache

文件位置:

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

常见价值:

程序路径
文件名
部分哈希信息
文件大小
程序首次出现或执行相关时间

分析问题:

是否出现过可疑 exe?
程序路径在哪里?
程序是否来自临时目录、下载目录、U盘?

可疑路径示例:

C:\Users\Public\
C:\ProgramData\
C:\Users\用户名\AppData\Roaming\
C:\Users\用户名\AppData\Local\Temp\
E:\

10. 开机启动项

常见位置:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

对应 Hive:

SOFTWARE
NTUSER.DAT

重点看:

值名称
程序路径
启动参数
文件创建时间
是否伪装成系统程序

可疑示例:

WindowsUpdate = C:\ProgramData\update.exe
SecurityHealth = C:\Users\Public\svchost.exe
OneDriveUpdate = powershell -w hidden -enc xxxxx

11. 服务持久化

位置:

SYSTEM\ControlSet00x\Services

重点字段:

ImagePath
Start
Type
DisplayName
Description
ObjectName

常见 Start 值含义:

2  自动启动
3  手动启动
4  禁用

可疑服务特征:

服务名像系统服务,但路径不在 System32
ImagePath 指向用户目录或 ProgramData
描述为空
创建时间接近异常登录时间
使用 rundll32、powershell、cmd 启动

12. 最近访问路径:TypedPaths

主要 Hive:

NTUSER.DAT

位置:

Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths

作用:

记录用户在资源管理器地址栏手动输入过的路径

可能出现:

E:\资料
\\192.168.1.10\share
C:\Users\test\Desktop
ftp://192.168.1.23

取证意义:

判断用户是否主动访问过某个本地目录
判断用户是否访问过网络共享路径
判断是否访问过 U 盘目录

13. 最近打开文件:RecentDocs / MRU

主要 Hive:

NTUSER.DAT

常见位置:

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU
Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

作用:

记录用户最近打开、保存、访问过的文件或路径

适合分析:

用户是否打开过某个文档
用户是否从 U 盘打开过文件
用户是否保存过某类文件
用户是否访问过某个可疑目录

14. ShellBags 文件夹访问痕迹

主要 Hive:

NTUSER.DAT
UsrClass.dat

常见位置:

Software\Microsoft\Windows\Shell
Software\Microsoft\Windows\ShellNoRoam
Local Settings\Software\Microsoft\Windows\Shell

作用:

记录用户通过资源管理器访问过的文件夹显示信息
可证明某个文件夹曾经被用户浏览过
即使文件夹已经删除,也可能留下访问痕迹

适合判断:

是否浏览过 U 盘中的某个目录
是否访问过网络共享文件夹
是否打开过隐藏较深的目录
是否进入过可疑程序目录

ShellBags 常用于分析用户是否看过某些文件夹,尤其适合和 LNK、Jump Lists、MFT、USBSTOR 一起使用。

这样可以大致推断出用户在本机进行文件操作的流程。


15. 网络配置和连接痕迹

主要 Hive:

SYSTEM
SOFTWARE

常见位置:

SYSTEM\ControlSet00x\Services\Tcpip\Parameters\Interfaces
SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList
SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures

可分析内容:

网卡信息
IP 地址
DNS 配置
网关
连接过的网络名称
网络类型
首次连接时间
最后连接时间

适合场景:

确认主机所在网络环境
关联入侵时间段的网络配置
判断是否连接过某个 Wi-Fi 或局域网

六、注册表时间分析

注册表取证中最重要的时间概念是:

Key LastWrite Time

也就是注册表键最后一次被修改的时间。

需要注意:

1. 注册表 Key 有 LastWrite 时间
2. 单个 Value 通常没有独立 LastWrite 时间
3. LastWrite 只能说明这个 Key 被修改过
4. 不能直接证明某个 Value 在该时间被修改
5. 要结合上下文和其他证据判断

例如:

Run 键的 LastWrite 时间是 2026-04-20 22:10:15

这只能说明:Run 这个键在该时间附近发生过变化,不能直接说:某个具体启动项一定是在这个时间创建的


七、取证机直接加载 Hive 分析


Windows支持用户使用 reg load 加载离线 Hive。

例如加载 SYSTEM:

reg load HKLM\OfflineSYSTEM C:\Case\Hives\SYSTEM

查看内容:

reg query HKLM\OfflineSYSTEM\Select

卸载:

reg unload HKLM\OfflineSYSTEM

加载 NTUSER.DAT:

reg load HKU\OfflineUser C:\Case\Users\test\NTUSER.DAT

查看 UserAssist:

reg query "HKU\OfflineUser\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist"

卸载:

reg unload HKU\OfflineUser

注:正式司法取证中更推荐用 Registry Explorer、RECmd、RegRipper 等离线分析工具,避免在取证机的注册表中产生混淆。


十、For Beginner 写给初学者


注册表取证不要死记路径,要围绕问题去查。

查用户         SAM
查计算机名     SYSTEM
查时区         SYSTEM
查 USB         SYSTEM + SOFTWARE
查盘符         SYSTEM\MountedDevices
查启动项       SOFTWARE + NTUSER.DAT
查服务         SYSTEM\Services
查用户行为     NTUSER.DAT
查文件夹访问   UsrClass.dat / ShellBags
查程序痕迹     UserAssist / ShimCache / Amcache

最重要的分析原则:

1. 优先分析镜像中的 Hive
2. 关注 Key 的 LastWrite 时间
3. 注意事务日志 LOG1 / LOG2
4. 区分系统级 Hive 和用户级 Hive
5. 不用单一注册表项直接下结论
6. 必须和日志、文件系统、快捷方式、Prefetch 等证据交叉验证

注册表取证的价值在于,它能把“系统配置”和“用户行为”连接起来。真正写报告时,不是简单说“我找到了某个键”,而是要说明这个键证明了什么、和哪些证据互相印证、能支持什么结论。