当前位置: 首页 > news >正文

Windows取证

引言

最近在网络安全的学习中,关于取证方面有很多之前不理解并且很复杂的问题,Windows取证最容易“工具一堆、思路发散”。今天与大家一起分享自己的一些经验。

1. 什么是注册表

       如果把Windows主机比做成一个人,那么注册表就是他的记忆宫殿。

       操作系统什么时候出生的?名字是什么?安装过什么软件?哪些用户登录过?这些都藏在这本“日记本里”。

        注册表不是一大堆文件堆在一起,而是一个巨大树形结构的数据库,系统和用户做的每一件事都会留下痕迹。所以注册表在我们的取证过程中,就是一个“信息金矿”:

  1.         系统环境:版本,安装时间,时区,主机名。
  2.         硬盘驱动:开机时加载了哪些部件
  3.         账户档案:这台机器上有谁的账号,什么时候创建的,登录过几次
  4.         安全策略:密码复杂度,本地安全设置
  5.         用户习惯:常用的程序,点开过哪些文件,插过什么U盘。

        总之,注册表=Windows的黑匣子。飞机出事就得找黑匣子,电脑有问题也是一样。 

2. Registry Hive

        前面我们说过,注册表不是简单的单一文件,也不是很贱的堆砌,而是分成了很多hive文件,分别存储不同的信息。接下来给大家介绍一下常见的HIVE

Hive文件注册表路径包含的信息取证的用途

SYSTEM

(C:\Windows\System32\config\SYSTEM)

HKLM\SYSTEM驱动、服务、ControlSets、时区、主机名等确认OS环境、时区、硬件配置

SOFTWARE

(...\SOFTWARE)

HKLM\SOFTWARE已经安装的程序、系统设置操作系统的版本、已装软件

SAM

(...\SAM)

HKLM\SAMSecruity Accounts Manager用户、组、RID、hash

SECURITY

(...\SECURITY)

HKLM\SECURITY本地安全策略权限与安全配置

NTUSER.DAT

(C:\Users\<username>\NTUSER.DAT)

(C:\Documents and settings\<username>\..)

HKCU\<SID>/HKCU用户个性配置、UserAssist、MountPoints2等谁在用这台电脑,用过哪些程序,看过哪些盘

        这里简单说一些注册表路径,正常你通过硬盘路径去找到对应的Hive文件,你是打不开的。因为这些文件,每次开机时,系统会把他写到内存中,并且平装成数的结构,这个树的根节点就是HKLM。你只能使用专门的工具去打开它,比如regedit.exe(大部分windows自带,可以直接搜索用它)

        此外,HKLM=HKEY_LOCAL_MACHINE,是系统级别文件,SYSTEM,SOFTWARE,SAM,SECURITY是属于。

        NTUSER.DAT是用户级别的HIVE文件,每个用户都有一份

        

3. 先把环境钉死(OS/时区/主机名)

        当你开始去进行取证的时候,首先要去观察最基本的信息。先回答一句话

        “这台机子是谁的、在哪个时区、什么时候装的系统?”

        只有钉死环境,后面的时间线才不会断

3.1 操作系统版本和安装时间

        前面表格中说了,要查看这些信息在哪里? 是在SOFTWARE这个hive文件下。

        具体查看版本和安装时间呢是在键值:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion查看。下图我已自己的电脑举例:

        我用regedit去打开观察,可以看到对应的关键字段:

        ProductName->安装版本(我这里的版本就是Windows 10)

        InstallDate->安装时间(我这里展示的就是该电脑的时间戳)

3.2 时区和偏移

        时区在我们的取证过程中是非常的重要的,任何的证据都有时间线,那么时区一定要找对!在哪呢? 他在HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation。下图我依旧以自己的电脑举例:

        关键字段:

        TimeZoneKeyName -> 就是你的时区

        ActiveTimeBias-> 偏移量

        Local = UTC - ActiveTimeBias

3.3 确认ControlSet 

        事实上,我们在取证的时候,通常都是离线分析的。离线的情况下呢,我们是看不到前面所提到的CurrentControlSet的,你能见到的是ControlSet001/002。重要的是,真正生效的是CurrentControlSet,所以我们是要去确认用哪一套001还是002。在哪看呢?通常我们在SYSTEM\Select下去读取Current的值,就能确定了!

3.4 主机名和网络参数

           主机名:HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName     

   

        网络参数HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

        总结一下,我们取证的一开始,先干啥?

  • 确认 ProductNameInstallDate

  • 确认 Select\Current → 正确 ControlSet

  • TimeZoneKeyNameActiveTimeBias,写清换算规则

  • 记录 ComputerName 与网络配置

4.  账号画像:谁在用这台电脑(SAM)

        如果注册表是 Windows 的“户口本”,那 SAM (Security Accounts Manager) 就是“人口信息登记簿”。所有本地用户账号、RID(相当于身份证号)、登录计数和状态,都能在这里找到。

4.1 关键位置

        路径:HKLM\SAM\Domains\Account\Users\

4.2 数据结构

        在User\子键下,每个RID对应一个账号。重点要关注 F 和 V两个value。

    F值(Fixed data)                        

  • 账号创建时间

  • 上次登录时间

  • 登录失败次数

  • 总登录次数

  • 账号状态(启用/禁用)

    V值(Variable data)

  • 用户显示名

  • 注释/描述

  • Home 目录

  • LM/NTLM Hash 的偏移和长度

简单说:F 值看“账号的活动记录”,V 值看“账号的基本资料和凭据”。

5. 观察USB

        在取证过程中,去观测USB的使用情况,也很重要。比如“电脑中某个 U 盘是谁的/什么时候插的/挂到哪个盘符/哪个用户看见过它” 我们可以按这个顺序走,一步不漏去观察USB

        记忆口诀:插 → 装 → 映 → 人 → 链(USBSTOR → setupapi.dev.log → MountedDevices → MountPoints2 → .lnk)

5.1 插(USBSTOR):插了什么?有序列号没?

  • 注册表位置(关键)
    HKLM\SYSTEM\<ControlSetXXX>\Enum\USBSTOR

  • 能拿到的:厂商、型号、设备 ID/序列号(Serial)。

  • 为什么重要:序列号是把物理设备和系统日志串起来的黄金索引(同型号设备靠序列号区分)。

        大家重点关注展示出的USB信息:

       大家就可以看到该USB的各种信息,比如厂商的名字等等...

5.2 装(setupapi.dev.log / setupapi.log):什么时候被系统“装入”? 

  • 日志位置

    • Windows 7 及以后:C:\Windows\inf\setupapi.dev.log

    • Windows XP:C:\Windows\setupapi.log

  • 做什么:在日志里用设备序列号或设备 ID 搜索 “first install” / “install” 记录,找到首次安装/驱动安装时间,通常就是该设备第一次接入并被系统注册的时间点(时间戳为重要锚点)。

        图中就可以看到对应启动的时间

5.3映(MountedDevices):分到了哪个盘符 / 卷 GUID?

  • 注册表位置
    HKLM\SYSTEM\<ControlSetXXX>\MountedDevices

  • 能拿到的\\DosDevices\\E:\\??\\Volume{GUID} 的映射关系(即 Volume GUID ↔ 盘符)。

  • 用途:把“物理设备”映射到“文件系统上的盘符”,方便定位盘中的具体文件路径(例如 E:\somefolder\file.doc)。

  • Tip:MountedDevices 存的是 卷 GUID(而不是设备序列号),下一步需要把卷 GUID 和 USB 的序列号关联(通过 .lnk 或 NTFS 卷序列号)。

5.4  人(MountPoints2):哪个用户见过这卷?

  • 注册表位置(按用户)
    每个用户的 hive:NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

  • 能拿到的:在某个用户的 NTUSER.DAT 下,会保存该用户见过的卷 GUID / 挂载点信息。

  • 用途:把“卷 GUID”反查到“哪个用户的会话里出现过”,从而把设备使用痕迹绑定到具体用户(而不是仅仅绑定到设备)。

  • 注意:这一步必须对每个用户的 NTUSER.DAT 都做一次(多用户机器常被忽视)。

5.5 链(.lnk):盘里到底访问了什么?

  • 位置%APPDATA%\Microsoft\Windows\Recent\(也要全盘搜 *.lnk

  • 为什么关键.lnk(快捷方式)通常包含 目标绝对路径、目标文件时间戳、卷序列号(Volume Serial Number)

    • 卷序列号可以用来把 .lnk 的目标和 MountedDevices/USBSTOR 链接起来(序列号 ↔ 卷 GUID ↔ USB 序列号)。

  • 举例:某个 .lnk 的目标是 E:\Photos\secret.jpg,并且记录了该目标的卷序列号为 0x1A2B3C4D,而 E: 所对应的卷 GUID 又映射到你在 MountedDevices 里看到的 GUID,USBSTOR 给出的序列号通过 setupapi.log 的时间吻合 → 你就能说:“在 T 时间,用户 X 打开了位于该 U 盘(序列 ABC)的 secret.jpg”

6. .lnk 快捷方式

        在 Windows 里,每次用户双击打开一个文件,系统常常会贴心地生成一个 快捷方式(.lnk 文件),放在 Recent 目录里。对用户来说它只是“最近文件列表”,但对取证人员来说,.lnk 就是显微镜——能放大看清“某个用户在某个时间打开了某个盘里的某个文件”。C:\Users\%UserName%\AppData\Roaming\Microsoft\Windows\Recent 可以看到你.lnk文件

6.1 .lnk 最有价值三个信息

        一个.lnk文件包含的字段很多,但是对取证来说最核心的是这三个:

  1. 目标路径 (Target Path)

    文件或目录的完整路径,例如:E:\Secret\flag.docx
  2. 目标时间戳 (Target Timestamps)

    至少有创建/修改/访问时间(MAC times),可以对比文件系统元数据来交叉验证。
  3. 卷序列号 (Volume Serial Number)

    这是关键!它能把 .lnk 的目标卷和 MountedDevices / USBSTOR 里的记录关联起来。

7. 程序执行证据:Prefetch × UserAssist 双证

想要证明“某个程序真的跑过”,Windows 提供了两个很好用的证据点:
一个是 系统级的 Prefetch,一个是 用户级的 UserAssist
前者像是“监控室录像”,后者像是“门禁打卡记录”。双管齐下,才能硬邦邦。

7.1 Prefetch:系统级的“开机录像”

  • 位置C:\Windows\Prefetch\*.pf

  • 作用:Windows 为了加速启动,会在程序第一次运行时创建一个 .pf 文件,里面记下了它加载了哪些 DLL,以及启动情况。

  • 关键字段

    • EXE 名字(哪个程序跑了)

    • Run Count(跑过几次)

    • Last Run Time(最后一次是什么时候)

    • DLL 列表(运行时加载了啥库)

解析工具:SIFT 的 prefetch.py、MiTeC Windows File Analyser、PrefetchForensics。

⚠️ 注意:Prefetch 可能被清理/禁用,所以“没有 ≠ 没执行过”。

7.2 UserAssist:用户维度的“打卡机”

  • 位置
    NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count

    大家可以看到这上面的信息是很奇怪的,是看不懂的,怎么还有P盘这种东西,事实上这些都是编码过后的。

        项目名是 ROT13 编码(解码后能看懂路径/程序名)

                  

        以上通过放在Cyberchef解码后就能看懂,原来这个P就是C!!

        User Assist也有局限性:只统计 从 Explorer 启动的程序,命令行或脚本运行的可能不会出现。

常用工具:RegRipper 的 userassist 插件、NirSoft UserAssistView。

7.3 Prefetch × UserAssist = 双保险

  • Prefetch 证明:“程序在系统上确实执行过”

  • UserAssist 证明:“哪个用户触发了这个执行”

举个例子,取证报告中,我们就可以说在本案磁盘镜像的 Prefetch 目录中发现 WEIXIN.EXE-XXXXXXXX.pf,该 prefetch 文件记录显示 weixin.exe2025-10-04T10:12:34Z(UTC) 被执行,累计运行次数为 N 次(见证据项 1)。
同时,在 C:\Users\A\NTUSER.DAT 的 UserAssist 区 (HKCU\...\Explorer\UserAssist\{GUID}\Count) 中存在解码后的 weixin.exe 条目,记录的最后运行时间与 Prefetch 时间一致(或在可接受时间误差范围内),运行计数 > 0(见证据项 2)。
综合以上两项证据(机器级执行记录 + 用户级触发记录),可合理得出结论:账户 A 的交互会话中确实由用户 A 发起并运行过 weixin.exe

        

        

       

                   

        

       

        

http://www.dtcms.com/a/442205.html

相关文章:

  • 市级数字政府大数据资源平台建设和实施方案PPT(61页)
  • 稀疏检索模型(Sparse Retrieval model)
  • [linux仓库]肝爆进程通信:匿名管道、命名管道、进程池核心原理与实战【万字长文】
  • 【论文阅读】-《Sparse Adversarial Attack via Perturbation Factorization》
  • flash类网站开发定制网络教研系统
  • Fine-Grained Auditing 在 ABP vNext 的落地
  • 新手用PPT百科找模板:简单好用的实操分享!
  • Next.js客户端组件与服务端组件:为什么app路由(App Route)成为新标准?use client、服务端组件嵌套客户端组件
  • 做ppt医学专业图片网站门户网站建设自查整改
  • Product Hunt 每日热榜 | 2025-10-03
  • 监管视角下的大数据信用报告:合规、透明与安全的博弈
  • 7. Pandas 字符串与类别数据处理
  • 【iOS】简单的四则运算
  • Tomcat的CATALINA_BASE
  • 嵌入式 Tomcat 与 Spring MVC 集成
  • MyBatis 进阶
  • 软件设计师-软件工程-软件过程模型
  • 论坛网站方案手机网站建设的趋势
  • LeetCode每日一题——单调数列
  • LeetCode 100题(10题)
  • 后端开发网站做一些什么建设部网站官网 造价鉴定
  • day52-Zabbix(第一部分)
  • 依托Java和百度地图实现长沙市热门道路与景点实时路况检索的实践探索
  • 7-1-查询练习
  • Numpy 手搓线性回归
  • 昆明网站服务器湖北seo推广
  • 医院网站建设怎么样盐城网站建设效果
  • dockerfile理解
  • SpringBoot集成Druid连接池_配置优化与监控实践指南
  • 12380网站建设打算公众号小程序开发公司