01 - 系统基础与注册表
本页是 Windows 应急响应的基石章节,内容量大且重要。注册表体系是贯穿整个系列的核心知识。
前置阅读:00-学习路线
Linux 对照:Linux应急响应/01-系统基础(如有)
一、Windows 目录结构
理解 Windows 的目录布局是取证排查的第一步。与 Linux 的 FHS(Filesystem Hierarchy Standard)不同,Windows 的目录结构以驱动器盘符为根,系统文件集中在 C:\Windows\ 下。
1.1 核心系统目录
C:\Windows\System32\
最重要的系统目录,包含所有核心系统二进制文件
关键文件:
cmd.exe — 命令提示符
powershell.exe — Windows PowerShell 5.x
svchost.exe — 服务宿主进程
lsass.exe — 本地安全授权子系统(认证核心)
csrss.exe — 客户端/服务端运行时子系统
conhost.exe — 控制台宿主
taskmgr.exe — 任务管理器
mmc.exe — 管理控制台
IR 关键点:
攻击者常将恶意文件伪装为系统文件名放在其他目录
正常的 svchost.exe 必须位于 C:\Windows\System32\
在其他路径发现同名文件即为高度可疑
1 | # 检查 svchost.exe 是否有异常实例 |
C:\Windows\SysWOW64\
64 位系统上用于存放 32 位系统二进制文件的目录
WOW64 = Windows on Windows 64
注意命名容易混淆:
System32 → 64 位程序(名称为历史遗留)
SysWOW64 → 32 位程序
IR 关键点:恶意软件可能利用这个目录的存在来隐藏(将 32 位恶意 DLL 放入此目录)
C:\Windows\Temp\
系统级临时目录,所有用户和服务共享
权限:普通用户可写入,但不能列出其他用户的文件
IR 关键点:
攻击者经常将工具和 payload 放在这里(可写目录)
排查时必须检查此目录下的可执行文件
1 | # 列出 Temp 目录下的可执行文件 |
C:\Windows\Prefetch\
预读取文件目录,记录程序执行历史
文件格式:<程序名>-<路径Hash>.pf
例如:CMD.EXE-4A81B364.pf
IR 关键点:
即使恶意程序已被删除,Prefetch 文件仍然存在
可以证明某个程序曾经被执行过
包含执行次数和最后执行时间
需要使用 PECmd.exe(EZ Tools)解析
1 | # 列出最近创建的 Prefetch 文件 |
详见 → 04-取证制品分析
C:\Windows\System32\winevt\Logs\
Windows Event Log 的存储目录
文件格式:.evtx(二进制 XML 格式)
关键文件:
Security.evtx — 安全事件(登录、权限、审计)
System.evtx — 系统事件(服务、驱动、关机)
Application.evtx — 应用程序事件
Microsoft-Windows-PowerShell%4Operational.evtx — PowerShell 日志
Microsoft-Windows-Sysmon%4Operational.evtx — Sysmon 日志
Microsoft-Windows-TaskScheduler%4Operational.evtx — 计划任务日志
Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx — RDP 日志
1 | # 列出所有 evtx 文件及大小 |
详见 → 03-事件日志分析
C:\Windows\System32\config\
注册表 Hive 文件的物理存储位置
关键文件:
SAM — 本地用户账户数据库
SYSTEM — 系统配置(服务、驱动、时区等)
SOFTWARE — 软件安装和配置信息
SECURITY — 安全策略和缓存凭据
DEFAULT — 默认用户配置文件
IR 关键点:
这些文件在系统运行时被锁定,无法直接复制
离线取证需从镜像中提取,或使用 reg save / KAPE
1 | :: 导出注册表 Hive(需管理员权限) |
1.2 用户相关目录
C:\Users\<username>\
每个用户的主目录,等价于 Linux 的 /home/<username>/
特殊用户目录:
C:\Users\Public\ — 所有用户共享目录(IR 排查重点)
C:\Users\Default\ — 新用户创建时的模板
C:\Users\<username>\AppData\
用户应用程序数据目录,包含三个子目录:
| 目录 | 全名 | 用途 | IR 关注度 |
|---|---|---|---|
Local |
AppData\Local | 本地缓存数据,不随漫游配置文件同步 | 高 |
LocalLow |
AppData\LocalLow | 低完整性级别应用数据(如浏览器沙箱) | 中 |
Roaming |
AppData\Roaming | 随域漫游配置文件同步的数据 | 高 |
攻击者常利用的子路径:
AppData\Local\Temp\ — 用户级临时目录($env:TEMP)
AppData\Local\Microsoft\Windows\Temporary Internet Files\ — IE 缓存
AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ — 用户启动文件夹
AppData\Roaming\Microsoft\Windows\Recent\ — 最近打开的文件(LNK)
AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt — PowerShell 命令历史
1 | # 查看当前用户的 PowerShell 命令历史(等价于 Linux bash_history) |
C:\Users\<username>\NTUSER.DAT
用户级注册表 Hive 文件,对应 HKCU 根键
系统运行时由当前登录用户加载,注销后保留在磁盘上
IR 关键点:
包含用户级自启动项(HKCU\...\Run)
包含用户最近运行的程序(UserAssist)
包含用户的 Shell 配置和文件类型关联
1 | # 列出所有用户的 NTUSER.DAT |
C:\Users\<username>\AppData\Local\Microsoft\Windows\UsrClass.dat
用户级注册表 Hive,对应 HKCU\Software\Classes
包含 COM 对象注册、文件类型关联、Shell 扩展等
IR 关键点:包含 ShellBags 数据 — 记录用户曾浏览过的文件夹(即使文件夹已被删除)
1.3 全局应用数据目录
C:\ProgramData\
全局应用程序数据目录,对所有用户可见
等价于 Linux 的 /var/lib/ 或 /etc/<app>/
默认为隐藏目录
IR 关键点:
攻击者常在此目录下创建隐蔽文件夹存放工具
检查非标准子目录和可执行文件
1 | # 检查 ProgramData 下的可执行文件 |
C:\Program Files\ 和 C:\Program Files (x86)\
程序安装目录(需管理员权限写入)
Program Files — 64 位程序
Program Files (x86) — 32 位程序
IR 关键点:
正常情况下只有合法安装程序才能写入
如果发现未知程序,可能是攻击者获得管理员权限后安装
1.4 与 Linux 目录结构对照
| Windows 路径 | Linux 等价路径 | 说明 |
|---|---|---|
C:\Windows\System32\ |
/usr/bin/ + /usr/sbin/ |
系统核心二进制 |
C:\Windows\Temp\ |
/tmp/ |
系统临时目录 |
C:\Users\<user>\ |
/home/<user>/ |
用户主目录 |
C:\Users\<user>\AppData\Local\Temp\ |
/tmp/ 或 $TMPDIR |
用户临时目录 |
C:\ProgramData\ |
/var/lib/ 或 /etc/ |
全局应用数据 |
C:\Program Files\ |
/usr/local/ 或 /opt/ |
程序安装目录 |
C:\Windows\System32\drivers\etc\hosts |
/etc/hosts |
主机名映射 |
C:\Windows\System32\config\ |
/etc/ (配置) |
系统配置/注册表 |
C:\Windows\System32\winevt\Logs\ |
/var/log/ |
系统日志 |
C:\Windows\Prefetch\ |
无等价物 | 程序执行记录 |
C:\$Recycle.Bin\ |
~/.local/share/Trash/ |
回收站 |
二、注册表体系(重点)
注册表(Registry)是 Windows 的核心配置数据库,存储了系统和应用程序的几乎所有设置。在 IR 中,注册表是最重要的信息源之一,也是持久化后门最密集的区域。
如果说 Linux IR 的核心是日志文件和配置文件,那么 Windows IR 的核心就是 注册表 + 事件日志。
2.1 五大根键详解
| 根键 | 缩写 | 说明 | IR 重要度 |
|---|---|---|---|
| HKEY_LOCAL_MACHINE | HKLM | 系统级配置:硬件、服务、软件、安全策略 | 极高 |
| HKEY_CURRENT_USER | HKCU | 当前登录用户的配置(映射自 HKU<SID>) | 高 |
| HKEY_CLASSES_ROOT | HKCR | 文件类型关联和 COM 对象注册(HKLM+HKCU 合并视图) | 高 |
| HKEY_USERS | HKU | 所有用户的配置文件集合 | 高 |
| HKEY_CURRENT_CONFIG | HKCC | 当前硬件配置文件(HKLM\SYSTEM 的子集) | 低 |
HKLM(HKEY_LOCAL_MACHINE)
系统级配置,影响所有用户
修改需要管理员权限
关键子键:
HKLM\SYSTEM — 系统启动配置、服务、驱动
HKLM\SYSTEM\CurrentControlSet\Services\ — 所有系统服务
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\ — 会话管理
HKLM\SOFTWARE — 已安装软件配置
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run — 系统级自启动
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon — 登录过程配置
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options — IFEO 劫持
HKLM\SAM — 本地用户账户数据库(默认 ACL 限制访问)
HKLM\SECURITY — 安全策略和缓存凭据(默认 ACL 限制访问)
HKCU(HKEY_CURRENT_USER)
当前用户的配置,只影响当前用户
普通用户权限即可修改(低权限持久化的首选)
关键子键:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run — 用户级自启动
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU — 运行对话框历史
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist — 程序执行历史(ROT13 编码)
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs — 最近打开文档
IR 要点:攻击者如果只获得了普通用户权限,通常会在 HKCU 下建立持久化
HKCR(HKEY_CLASSES_ROOT)
HKLM\SOFTWARE\Classes + HKCU\SOFTWARE\Classes 的合并视图
优先级:HKCU 覆盖 HKLM(用户级设置优先)
IR 要点:
COM 劫持通常通过修改 HKCU\SOFTWARE\Classes\CLSID\ 实现
文件类型关联劫持可用于持久化
详见 → 23-COM劫持
HKU(HKEY_USERS)
包含所有已加载用户配置文件的注册表
结构:HKU\<SID>\ — 每个用户一个子键
HKCU 实际上是 HKU\<当前用户SID> 的别名
IR 要点:排查时需要检查所有用户的 Run 键,而不仅仅是当前用户
1 | # 列出 HKU 下所有已加载的用户 SID |
2.2 注册表 Hive 文件与磁盘位置
注册表数据以 Hive 文件 的形式存储在磁盘上。理解 Hive 文件的物理位置对于离线取证至关重要。
| Hive 名称 | 注册表路径 | 磁盘位置 | 内容 |
|---|---|---|---|
| SAM | HKLM\SAM |
C:\Windows\System32\config\SAM |
本地用户账户和密码 Hash |
| SYSTEM | HKLM\SYSTEM |
C:\Windows\System32\config\SYSTEM |
系统配置、服务、驱动 |
| SOFTWARE | HKLM\SOFTWARE |
C:\Windows\System32\config\SOFTWARE |
软件配置、自启动项 |
| SECURITY | HKLM\SECURITY |
C:\Windows\System32\config\SECURITY |
安全策略、LSA 密钥 |
| DEFAULT | HKU\.DEFAULT |
C:\Windows\System32\config\DEFAULT |
默认用户配置 |
| NTUSER.DAT | HKU\<SID> / HKCU |
C:\Users\<user>\NTUSER.DAT |
用户个人配置 |
| UsrClass.dat | HKU\<SID>_Classes |
C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.dat |
用户级 COM/Shell 配置 |
每个 Hive 文件还有对应的日志文件(用于事务恢复):
SAM.LOG1, SAM.LOG2
SYSTEM.LOG1, SYSTEM.LOG2
等等
在线提取 Hive 文件
1 | :: 方法 1:使用 reg save(需管理员权限) |
1 | # 方法 2:使用卷影副本(Volume Shadow Copy) |
1 | # 方法 3:使用 KAPE 自动采集(推荐) |
离线分析 Hive 文件
使用 Registry Explorer(EZ Tools)打开 Hive 文件进行分析
使用 RECmd.exe(EZ Tools)进行批量注册表搜索
1 | :: 使用 RECmd 批量搜索注册表中的关键路径 |
2.3 注册表数据类型
注册表值(Value)有多种数据类型,IR 中需要理解每种类型以正确解读数据:
| 类型 | 名称 | 说明 | 示例 |
|---|---|---|---|
| REG_SZ | 字符串 | 固定长度字符串 | C:\Windows\notepad.exe |
| REG_EXPAND_SZ | 可扩展字符串 | 包含环境变量的字符串 | %SystemRoot%\notepad.exe |
| REG_MULTI_SZ | 多字符串 | 多个字符串组成的数组 | 服务依赖列表 |
| REG_DWORD | 32位整数 | 4 字节整数(小端序) | 0x00000001 (启用) |
| REG_QWORD | 64位整数 | 8 字节整数 | 大数值配置 |
| REG_BINARY | 二进制 | 原始二进制数据 | 时间戳、Hash 值 |
| REG_NONE | 无类型 | 未定义类型 | 罕见 |
IR 关键点:
REG_EXPAND_SZ 中的环境变量(如 %TEMP%)会在运行时展开,攻击者利用这点进行路径混淆
REG_BINARY 类型的值需要根据上下文解读(可能是时间戳、SID 或加密数据)
REG_DWORD 的 0 和 1 通常代表禁用/启用
1 | # 查看注册表值的类型 |
2.4 IR 关键注册表路径(按用途分类)
这是全系列最核心的参考表之一。建议打印或收藏。
自启动 / 持久化相关
| 注册表路径 | 说明 | 详见 |
|---|---|---|
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
系统级自启动 | Windows应急响应/18-Registry-Run-Keys |
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
用户级自启动 | Windows应急响应/18-Registry-Run-Keys |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce |
一次性启动(重启后删除) | Windows应急响应/18-Registry-Run-Keys |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run |
组策略控制的启动 | Windows应急响应/18-Registry-Run-Keys |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell |
登录 Shell(默认 explorer.exe) | Windows应急响应/09-注册表持久化排查 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit |
登录初始化程序 | Windows应急响应/09-注册表持久化排查 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify |
Winlogon 通知包(旧版) | Windows应急响应/09-注册表持久化排查 |
HKLM\SYSTEM\CurrentControlSet\Services\ |
系统服务(驱动和用户态服务) | Windows应急响应/20-服务后门 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ |
IFEO 镜像劫持 | Windows应急响应/25-IFEO镜像劫持 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ |
静默退出监控(配合 IFEO) | Windows应急响应/25-IFEO镜像劫持 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders |
Shell 文件夹路径(Startup) | Windows应急响应/24-启动文件夹后门 |
HKLM\SOFTWARE\Classes\CLSID\ |
COM 类注册 | 23-COM劫持 |
HKCU\SOFTWARE\Classes\CLSID\ |
用户级 COM 类(劫持优先) | 23-COM劫持 |
HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\ |
端口监视器(持久化) | Windows应急响应/29-Print-Spooler-BITS滥用 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs |
AppInit DLL 注入 | Windows应急响应/22-DLL劫持 |
1 | # 快速检查所有常见 Run 键 |
用户/认证相关
| 注册表路径 | 说明 |
|---|---|
HKLM\SAM\SAM\Domains\Account\Users\ |
本地用户账户列表和 RID |
HKLM\SAM\SAM\Domains\Account\Users\Names\ |
用户名与 RID 映射 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ |
用户 SID 与配置文件路径映射 |
HKLM\SECURITY\Cache\ |
域凭据缓存(DCC2 Hash) |
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ |
LSA 配置(认证包、安全包) |
网络相关
| 注册表路径 | 说明 |
|---|---|
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ |
网卡 IP 配置 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\ |
历史网络连接记录 |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\ |
网络签名(可判断曾连接的 WiFi) |
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\ |
防火墙规则 |
程序执行痕迹相关
| 注册表路径 | 说明 |
|---|---|
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\ |
程序执行历史(ROT13) |
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache |
ShimCache(程序兼容性缓存) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\ |
兼容性标志 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ |
程序路径注册 |
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU |
运行对话框历史 |
三、用户与组模型
3.1 SID 结构详解
SID(Security Identifier) 是 Windows 中用户和组的全局唯一标识符,等价于 Linux 的 UID/GID,但复杂得多。
SID 格式:
1 | S-1-5-21-3623811015-3361044348-30300820-1013 |
RID(Relative Identifier) 是 SID 的最后一段,用于区分同一域/机器内的不同用户和组:
| RID | 用户/组 | 说明 |
|---|---|---|
| 500 | Administrator | 内置管理员(即使重命名 RID 不变) |
| 501 | Guest | 来宾账户 |
| 502 | krbtgt | Kerberos 票据授权(域环境) |
| 512 | Domain Admins | 域管理员组 |
| 513 | Domain Users | 域用户组 |
| 515 | Domain Computers | 域计算机组 |
| 1000+ | 普通用户 | 自定义创建的用户 |
1 | # 查看当前用户的 SID |
3.2 内置安全主体 SID
Windows 有一系列内置 SID 代表特殊的安全主体(不是真正的用户账户):
| SID | 名称 | 说明 | IR 关注度 |
|---|---|---|---|
S-1-5-18 |
SYSTEM / NT AUTHORITY\SYSTEM | 最高权限系统账户 | 极高 |
S-1-5-19 |
LOCAL SERVICE | 低权限本地服务账户 | 中 |
S-1-5-20 |
NETWORK SERVICE | 低权限网络服务账户 | 中 |
S-1-5-32-544 |
BUILTIN\Administrators | 管理员组 | 高 |
S-1-5-32-545 |
BUILTIN\Users | 用户组 | 低 |
S-1-5-32-555 |
BUILTIN\Remote Desktop Users | RDP 用户组 | 高 |
S-1-5-32-551 |
BUILTIN\Backup Operators | 备份操作员(可读所有文件) | 高 |
S-1-1-0 |
Everyone | 所有人 | 中 |
S-1-5-7 |
ANONYMOUS LOGON | 匿名登录 | 高 |
IR 关键点:
SYSTEM (S-1-5-18) 权限高于 Administrator,是服务和驱动的默认运行身份
攻击者获得 SYSTEM 权限 = 完全控制系统
Remote Desktop Users 组的成员可以远程登录,必须严格审计
Backup Operators 可以绕过 NTFS ACL 读取任何文件(包括 SAM)
3.3 本地组与安全影响
| 组名 | 安全影响 | 排查要点 |
|---|---|---|
| Administrators | 完全控制系统 | 检查是否有未知用户 |
| Remote Desktop Users | 可 RDP 远程登录 | 检查是否有未授权用户 |
| Backup Operators | 可读任何文件 | 可被利用提取 SAM/NTDS.dit |
| Event Log Readers | 可读事件日志 | 攻击者可能添加侦察账户 |
| Hyper-V Administrators | 可管理虚拟机 | 可能导致虚拟机逃逸 |
| Network Configuration Operators | 可修改网络配置 | 可被用于网络劫持 |
1 | # 枚举所有本地组及其成员 |
3.4 SAM 数据库分析
SAM(Security Account Manager) 是存储本地用户账户信息的注册表 Hive。
SAM 数据库位置:C:\Windows\System32\config\SAM
运行时对应注册表路径:HKLM\SAM\SAM\
重要: SAM 的 HKLM\SAM\SAM\ 子键默认只有 SYSTEM 权限可以访问,即使 Administrator 也无法直接查看。
1 | # 尝试读取 SAM(需要 SYSTEM 权限,普通管理员会被拒绝) |
IR 排查重点:
检查是否有隐藏账户($ 结尾的用户名在 net user 中不显示)
检查账户创建时间是否在事件时间窗口内
检查 Administrator 账户(RID 500)是否被重命名
检查 Guest 账户(RID 501)是否被启用
1 | # 检查隐藏账户($ 结尾) |
3.5 排查命令汇总
CMD 版本
1 | :: 列出所有本地用户 |
PowerShell 版本
1 | # 列出所有本地用户(含详细信息) |
3.6 与 Linux 对照
| 概念 | Windows | Linux |
|---|---|---|
| 用户标识 | SID (S-1-5-21-xxx-RID) | UID (数字) |
| 组标识 | SID | GID |
| 超级用户 | Administrator (RID 500) + SYSTEM (S-1-5-18) | root (UID 0) |
| 用户数据库 | SAM (Registry Hive) | /etc/passwd + /etc/shadow |
| 密码 Hash | NTLM Hash (MD4) | SHA-512 (默认) |
| 用户枚举 | net user / Get-LocalUser |
cat /etc/passwd / getent passwd |
| 组枚举 | net localgroup / Get-LocalGroup |
cat /etc/group |
| 当前用户 | whoami /all |
id |
| 登录历史 | Event ID 4624/4625 | last / lastlog |
| 隐藏用户技术 | $ 结尾用户名 / 注册表隐藏 |
UID=0 非 root 用户 |
四、Windows 安全模型
理解 Windows 安全模型对 IR 至关重要 — 它决定了攻击者能做什么,以及为什么需要提权。
4.1 访问令牌(Access Token)
每个进程都有一个 Access Token,包含该进程的安全上下文:
1 | Access Token 结构: |
查看当前进程的 Token:
1 | # 查看当前用户的完整 Token 信息 |
IR 关键点:
Token 窃取(Token Theft)是 Windows 提权的常见手法
攻击者使用工具(如 Mimikatz、Incognito)窃取高权限 Token
进程的权限不仅取决于用户身份,还取决于 Token 中的特权
4.2 关键特权(Privileges)
Windows 的”特权”是比组成员资格更细粒度的权限控制。某些特权的存在本身就是安全风险。
| 特权名称 | 说明 | 安全风险 |
|---|---|---|
| SeDebugPrivilege | 调试任何进程 | 极高 — 可注入任何进程、读取 lsass 内存 |
| SeImpersonatePrivilege | 模拟客户端令牌 | 极高 — Potato 系列提权(JuicyPotato 等) |
| SeBackupPrivilege | 绕过 ACL 读取文件 | 高 — 可读取 SAM、NTDS.dit |
| SeRestorePrivilege | 绕过 ACL 写入文件 | 高 — 可覆盖系统文件 |
| SeTcbPrivilege | 充当操作系统的一部分 | 极高 — 可创建任意 Token |
| SeAssignPrimaryTokenPrivilege | 替换进程令牌 | 高 — 配合 Token 操作使用 |
| SeLoadDriverPrivilege | 加载/卸载内核驱动 | 极高 — 可加载 rootkit |
| SeTakeOwnershipPrivilege | 获取对象所有权 | 高 — 可修改任何文件/键的权限 |
1 | # 查看当前用户的特权 |
1 | # 查看进程的 Token 特权(需 Sysinternals handle.exe 或 Process Explorer) |
IR 排查要点:
发现普通用户进程拥有 SeDebugPrivilege → 高度可疑
服务账户拥有 SeImpersonatePrivilege → 正常(IIS/SQL 等服务默认拥有),但可能被利用提权
任何非系统进程拥有 SeTcbPrivilege → 极度可疑
4.3 完整性级别(Integrity Levels)
Windows Vista 开始引入的强制完整性控制(MIC),进程和对象都有完整性级别标记:
| 级别 | SID | 值 | 应用场景 |
|---|---|---|---|
| Untrusted | S-1-16-0 | 0 | 极少使用 |
| Low | S-1-16-4096 | 4096 | 浏览器沙箱(IE Protected Mode) |
| Medium | S-1-16-8192 | 8192 | 普通用户进程(标准) |
| High | S-1-16-12288 | 12288 | 管理员进程(UAC 提升后) |
| System | S-1-16-16384 | 16384 | 系统服务 |
规则:低完整性级别的进程不能写入高完整性级别的对象
1 | # 查看进程的完整性级别 |
IR 关键点:
恶意软件在 Low 完整性级别运行时,能力受限(无法写入 Program Files 等目录)
UAC Bypass 的目标就是从 Medium 提升到 High
服务通常在 System 完整性级别运行
4.4 UAC 与令牌提升
UAC(User Account Control) 是 Windows Vista 开始引入的安全机制:
管理员组成员登录后实际获得 两个 Token:
Filtered Token(Medium 完整性)— 日常使用,大部分特权被剥离
Full Token(High 完整性)— 通过 UAC 提示确认后使用
UAC 提升方式:
右键 → “以管理员身份运行”
程序 Manifest 请求 requireAdministrator
某些白名单程序自动提升(如 mmc.exe、regedit.exe 等高信任程序)
1 | # 检查 UAC 配置 |
UAC Bypass 技术(IR 需要了解的攻击手法):
自动提升白名单滥用:利用 fodhelper.exe、computerdefaults.exe 等可自动提升的程序
DLL 劫持:劫持可自动提升程序加载的 DLL
环境变量注入:windir 环境变量劫持
COM 对象劫持:修改 HKCU 中的 COM 注册
对 IR 的实际影响:
必须以管理员权限运行排查工具,否则很多信息看不到
某些注册表键(SAM, SECURITY)需要 SYSTEM 权限
内存取证工具(如 winpmem)需要内核级权限
1 | # 检查当前是否以管理员身份运行 |
五、关键系统配置
5.1 hosts 文件
路径:C:\Windows\System32\drivers\etc\hosts
功能:静态主机名解析,优先级高于 DNS
等价于 Linux 的 /etc/hosts
IR 排查要点:
攻击者可能添加条目将安全更新域名指向 127.0.0.1(阻止更新)
攻击者可能将正常域名指向恶意 IP(DNS 劫持)
挖矿木马可能添加矿池域名的直接 IP 解析
1 | # 查看 hosts 文件内容 |
5.2 services 文件
路径:C:\Windows\System32\drivers\etc\services
功能:端口号与服务名映射
等价于 Linux 的 /etc/services
通常不是 IR 排查重点,但如果被修改可能影响端口识别
5.3 组策略(Group Policy)
本地组策略路径:C:\Windows\System32\GroupPolicy\
域组策略缓存:C:\Windows\System32\GroupPolicy\DataStore\
域组策略SYSVOL路径:\\<domain>\SYSVOL\<domain>\Policies\
1 | # 查看当前生效的组策略 |
IR 排查要点:
检查 GroupPolicy\Machine\Scripts\Startup\ 是否有可疑脚本
检查 GroupPolicy\User\Scripts\Logon\ 是否有可疑脚本
域环境中:检查 GPO 是否被篡改(如添加了恶意启动脚本)
5.4 防火墙配置
1 | # 查看防火墙状态(所有配置文件) |
IR 排查要点:
检查是否有不明的 Allow Inbound 规则
检查防火墙是否被关闭(攻击者常关闭防火墙)
检查是否有针对特定 IP 的放行规则
5.5 Windows Defender 配置
1 | # 查看 Defender 状态 |
IR 排查要点:
检查排除列表 — 攻击者经常添加排除路径/进程/扩展名
检查 Defender 是否被禁用
查看检测历史中是否有被清除的威胁(可能有残留)
六、Windows vs Linux 全面对照表
这是全页最核心的参考表,整合了前面各节的对比内容,方便快速查阅。
6.1 系统路径对照
| 功能 | Windows 路径 | Linux 路径 |
|---|---|---|
| 系统二进制 | C:\Windows\System32\ |
/usr/bin/ + /usr/sbin/ |
| 系统临时目录 | C:\Windows\Temp\ |
/tmp/ |
| 用户主目录 | C:\Users\<user>\ |
/home/<user>/ |
| 用户临时目录 | %TEMP% (AppData\Local\Temp) |
$TMPDIR 或 /tmp/ |
| 全局应用数据 | C:\ProgramData\ |
/var/lib/ + /etc/ |
| 程序安装目录 | C:\Program Files\ |
/usr/local/ + /opt/ |
| hosts 文件 | drivers\etc\hosts |
/etc/hosts |
| 服务配置 | 注册表 Services 键 | /etc/systemd/system/ |
| 事件日志 | winevt\Logs\*.evtx |
/var/log/* |
| 用户配置 | NTUSER.DAT (注册表) |
~/.bashrc + ~/.profile |
| Shell 历史 | PSReadLine\ConsoleHost_history.txt |
~/.bash_history |
| 启动脚本 | shell:startup\ |
/etc/profile.d/ |
| 计划任务 | C:\Windows\System32\Tasks\ |
/var/spool/cron/ |
| 防火墙规则 | 注册表 + WFP | /etc/iptables/ |
| DNS 配置 | 注册表 + Interfaces | /etc/resolv.conf |
| 回收站 | C:\$Recycle.Bin\<SID>\ |
~/.local/share/Trash/ |
6.2 命令对照
| 功能 | Windows CMD | Windows PowerShell | Linux |
|---|---|---|---|
| 用户列表 | net user |
Get-LocalUser |
cat /etc/passwd |
| 当前用户 | whoami |
whoami / $env:USERNAME |
whoami / id |
| 组成员 | net localgroup Admins |
Get-LocalGroupMember |
getent group sudo |
| 网络连接 | netstat -anob |
Get-NetTCPConnection |
ss -tlnp / netstat -tlnp |
| 进程列表 | tasklist /v |
Get-Process |
ps aux |
| 进程树 | wmic process |
Get-CimInstance Win32_Process |
pstree -p |
| 服务列表 | sc query |
Get-Service |
systemctl list-units |
| 计划任务 | schtasks /query |
Get-ScheduledTask |
crontab -l |
| 文件搜索 | dir /s /b |
Get-ChildItem -Recurse |
find / -name |
| 启动项 | reg query ...Run |
Get-ItemProperty ...Run |
systemctl list-unit-files |
| 路由表 | route print |
Get-NetRoute |
ip route / route -n |
| DNS 缓存 | ipconfig /displaydns |
Get-DnsClientCache |
resolvectl statistics |
| 文件 Hash | certutil -hashfile |
Get-FileHash |
sha256sum / md5sum |
6.3 安全概念对照
| 概念 | Windows | Linux |
|---|---|---|
| 超级用户 | SYSTEM (S-1-5-18) + Administrator (RID 500) | root (UID 0) |
| 权限模型 | SID + Token + Privilege + DACL + MIC | UID/GID + rwx + Capabilities |
| 权限提升 | UAC Bypass / Token Theft / Potato | sudo / SUID / Capabilities |
| 认证 | NTLM + Kerberos (AD) | PAM + /etc/shadow |
| 凭据窃取 | lsass dump / SAM dump / DCSync | /etc/shadow 读取 |
| 远程管理 | RDP / WinRM / PSRemoting | SSH |
| 审计日志 | Event Log (Security.evtx) | auditd / auth.log |
| 加固基线 | CIS Windows Benchmark | CIS Linux Benchmark |
| 域/集中管理 | Active Directory | FreeIPA / LDAP (可选) |
七、本页小结
本页覆盖了 Windows 应急响应的基础知识体系:
目录结构 — 知道在哪里找什么
注册表体系 — 理解 Windows 的核心配置数据库
用户与组模型 — SID、RID、本地组的安全影响
安全模型 — Token、特权、完整性级别、UAC
关键系统配置 — hosts、防火墙、Defender、组策略
下一步学习建议:
在虚拟机中逐一执行本页的所有命令
使用 regedit 浏览本页提到的所有注册表路径
使用 Autoruns 查看当前系统的自启动项
导出一份基线快照(Autoruns CSV + 服务列表 + 计划任务)
导航
上一页 → 00-学习路线
下一页 → 02-排查命令速查
返回总索引 → Windows应急响应
Linux 对照 → Linux应急响应/01-系统基础
| 上一章 | 目录 | 下一章 |
|---|---|---|
| 00-学习路线 | Windows应急响应 | 02-排查命令速查 |