Sysinternals套件
前置说明
Sysinternals Suite 是 Microsoft(原 Mark Russinovich 开发)提供的一组高级系统工具,是 Windows IR 的”瑞士军刀”
下载地址:https://learn.microsoft.com/en-us/sysinternals/ 或直接访问 \\live.sysinternals.com\tools\
所有工具均为绿色便携,无需安装,适合 IR 场景下从 USB 直接运行
工具都有 GUI 和/或 CLI 版本,本页重点讲解 IR 中最常用的 8 个工具
关联页面:06-进程与网络分析 | 09-注册表持久化审计 | 02-排查命令速查
一、工具总览与获取
1.1 获取方式
方式一:整包下载
1 | # 下载 Sysinternals Suite 完整包 |
方式二:UNC 实时路径(联网环境)
1 | # 直接从 Microsoft Live 路径运行(无需下载) |
方式三:winget 安装
1 | winget install -e --id Microsoft.Sysinternals.ProcessExplorer |
1.2 IR 工具优先级
| 优先级 | 工具 | 主要用途 | IR 价值 |
|---|---|---|---|
| P0 | Process Explorer | 进程树分析、DLL 检查 | 发现可疑进程、注入、伪装 |
| P0 | Autoruns | 持久化枚举 | 找出所有 autostart 入口 |
| P0 | Process Monitor | 实时行为监控 | 抓取恶意软件行为 |
| P1 | TCPView | 网络连接分析 | 发现 C2 通信 |
| P1 | Sigcheck | 签名验证 | 识别未签名/异常签名文件 |
| P1 | Strings | 字符串提取 | 快速分析可疑二进制 |
| P2 | Handle | 句柄查询 | 找被锁定的文件 |
| P2 | ListDLLs | DLL 分析 | 未签名 DLL 检测 |
| P2 | PsExec | 远程执行 | 远程取证收集 |
| P2 | AccessChk | 权限审计 | 检查服务/目录权限 |
1.3 首次运行注意事项
所有 GUI 工具首次运行会弹出 EULA 对话框,IR 时可用 /accepteula 参数自动接受
1 | # 批量接受所有 Sysinternals 工具的 EULA(写注册表) |
或者运行时加参数:
1 | procexp.exe /accepteula |
二、Process Explorer — 进程树分析利器
2.1 基本界面与功能
Process Explorer (procexp.exe / procexp64.exe) 是 Task Manager 的超级增强版
核心特性:
进程树视图(父子关系清晰可见)
DLL 和 Handle 视图(底部面板)
实时 CPU/内存/IO 曲线
VirusTotal 集成
数字签名验证
替代系统 Task Manager
启动方式:
1 | # 以管理员权限运行(推荐,可看到所有进程信息) |
2.2 颜色编码(Color Coding)
Process Explorer 用颜色区分不同类型的进程,IR 时尤其关键:
| 颜色 | 含义 | IR 关注点 |
|---|---|---|
| 浅蓝色 | 自有进程(Same user) | 当前用户的进程 |
| 粉红色 | Services | 系统服务,关注异常服务 |
| 紫色 | Packed Images | 高度关注! 可能是加壳恶意软件 |
| 深灰色 | Suspended | 暂停的进程,可能是注入目标 |
| 绿色闪烁 | 新创建的进程 | 观察动态行为时注意 |
| 红色闪烁 | 即将退出的进程 | 注意瞬时进程 |
| 深蓝色 | .NET 进程 | 关注未签名的 .NET 进程 |
紫色进程(Packed Images)是 IR 最重要的信号之一:
Process Explorer 通过比较磁盘上的 PE 与内存中的映像来判断是否 packed
合法软件也可能使用 packer(如某些游戏),但 system32 下的紫色进程极为可疑
2.3 进程树分析
正常进程树结构(基线认知):
1 | System (PID 4) |
IR 中需要检查的异常:
lsass.exe 不是 wininit.exe 的子进程
svchost.exe 不是 services.exe 的子进程
多个 lsass.exe 实例(正常只有一个)
cmd.exe/powershell.exe 的父进程是 winword.exe/excel.exe(钓鱼攻击)
进程名拼写微妙差异:scvhost.exe、svch0st.exe、csrs.exe
右键 → Properties 查看详情:
Image tab: 完整路径、命令行参数、启动时间、父进程、用户
Threads tab: 线程信息,检查是否有远程线程注入
TCP/IP tab: 该进程的网络连接
Environment tab: 环境变量
Strings tab: 内存中的字符串(对比磁盘字符串,差异可能表明注入)
2.4 DLL 视图与 Handle 视图
底部面板切换(View → Lower Pane View):
Ctrl+D: 显示 DLL 视图
Ctrl+H: 显示 Handle 视图
DLL 视图(IR 用途):
检查进程加载了哪些 DLL
查找未签名的 DLL(可能是 DLL 劫持或 DLL 侧加载)
查找路径异常的 DLL(如从 %TEMP% 或 %AppData% 加载的 DLL)
查找不属于该进程的 DLL(如 svchost.exe 加载了 unknown.dll)
Handle 视图(IR 用途):
查看进程打开了哪些文件、注册表键、互斥体(Mutex)
恶意软件通常会创建特定的 Mutex 防止多实例运行
检查进程是否锁定了某些文件(如日志文件被清理工具锁定)
搜索功能(Find → Find Handle or DLL):
1 | # 快捷键 Ctrl+F |
2.5 VirusTotal 集成
启用方式: Options → VirusTotal.com → Check VirusTotal.com
启用后,进程列表中会出现 VT 列,显示检出率(如 0/72、45/72)
注意事项:
仅提交 hash,不会上传文件(除非手动选择 Submit)
如果显示 Unknown,说明 VT 上没有该文件,可能是定制恶意软件
需要网络连接
结合 Verify Signatures 使用:
Options → Verify Image Signatures
显示每个进程的数字签名状态
未签名(Not Verified)+ VT 检出 = 高度可疑
已签名 ≠ 安全(签名可能被盗用)
2.6 替代 Task Manager
1 | # 将 Process Explorer 设置为默认 Task Manager |
IR 时建议替换,因为 Task Manager 信息量远不如 Process Explorer
2.7 命令行版本 — handle.exe 与 listdlls.exe
Process Explorer 是 GUI 工具,脚本化场景使用 CLI 替代:
1 | # 列出所有进程及其命令行(类似 procexp 的 Image 列) |
三、Process Monitor — 实时行为监控
3.1 概述
Process Monitor (procmon.exe / procmon64.exe) 实时捕获系统上的所有文件、注册表、网络和进程/线程活动
每秒可能产生数万条事件,必须使用 Filter 才能有效分析
IR 中主要用途:
观察可疑进程的行为(读写了什么文件、修改了哪些注册表、连接了哪些地址)
分析恶意软件的 dropper 行为
排查持久化机制的创建过程
3.2 捕获类型
| 图标 | 类型 | 说明 |
|---|---|---|
| 文件图标 | File System | 文件创建/读写/删除/重命名 |
| 注册表图标 | Registry | 键值创建/查询/修改/删除 |
| 网络图标 | Network | TCP/UDP 连接和数据传输 |
| 进程图标 | Process & Thread | 进程创建/退出、线程创建、DLL 加载 |
| 性能图标 | Profiling | 性能相关事件 |
工具栏上对应的 5 个按钮可以快速开关各类型的捕获
3.3 Filter 设置(IR 核心技能)
Filter 是 Procmon 的灵魂,没有好的 Filter,Procmon 就是噪音制造机
打开方式:Filter → Filter… 或 Ctrl+L
Filter 语法: [Column] [Relation] [Value] then [Include/Exclude]
IR 常用 Filter 模板:
1 | # 模板一:监控特定可疑进程 |
3.4 实战:使用 Procmon 分析恶意软件行为
步骤一:准备环境
1 | # 在隔离 VM 中启动 Procmon |
步骤二:设置 Filter
先清除所有 Filter(Filter → Reset)
添加目标进程 Filter
步骤三:执行可疑样本
运行恶意软件样本
等待 30-60 秒收集行为
步骤四:停止捕获并分析
Ctrl+E 停止捕获
使用 Tools → Process Tree 查看进程创建链
使用 Tools → File Summary 查看文件操作汇总
使用 Tools → Registry Summary 查看注册表操作汇总
使用 Tools → Network Summary 查看网络连接汇总
步骤五:导出关键事件
1 | # 命令行导出为 CSV(自动化分析) |
3.5 Boot Logging(启动日志)
某些恶意软件在系统启动早期运行,普通 Procmon 抓不到
启用 Boot Logging: Options → Enable Boot Logging
重启后 Procmon 会在系统启动时就开始记录
下次打开 Procmon 时会提示合并 Boot Log
这对分析 bootkit、驱动级 rootkit、早期持久化非常有用
3.6 Procmon 与 Sysmon 的区别
| 特性 | Process Monitor | Sysmon |
|---|---|---|
| 运行方式 | 交互式、按需运行 | 后台服务、持续运行 |
| 日志存储 | PML 文件或内存 | Windows 事件日志 |
| 事件量 | 极大(每秒数万) | 经过规则过滤后适中 |
| 适用场景 | 实时行为分析、调试 | 长期监控、威胁检测 |
| 性能影响 | 较大 | 较小(配置得当时) |
IR 中两者配合使用:Sysmon 提供长期历史记录,Procmon 用于实时深入分析
四、Autoruns — 持久化全面枚举
4.1 概述
Autoruns 枚举 Windows 系统上几乎所有自动启动位置(比 msconfig 全面得多)
覆盖的自启动类型:
Logon(登录启动项)
Explorer(Shell 扩展)
Internet Explorer / Edge
Scheduled Tasks(计划任务)
Services(服务)
Drivers(驱动程序)
Codecs(编解码器)
Boot Execute
Image Hijacks(映像劫持)
AppInit DLLs
Known DLLs
Winlogon
Winsock Providers(LSP)
Print Monitors
LSA Providers
Network Providers
WMI
Office Addins
Sidebar Gadgets
4.2 IR 关键功能
Hide Microsoft Entries:
Options → Hide Microsoft Entries
过滤掉 Microsoft 签名的合法条目,极大减少噪音
IR 时必开,可以快速聚焦到第三方和未知条目
Verify Code Signatures:
Options → Scan Options → Verify code signatures
检查每个条目的数字签名
未签名的 autostart 条目需要重点关注
Check VirusTotal.com:
Options → Scan Options → Check VirusTotal.com
自动提交 hash 到 VT 检查
标签颜色含义:
粉红色/红色行:条目的映像文件不存在或签名验证失败 → 高度可疑
黄色行:条目指向的映像文件路径异常
绿色行:刚刚发生变化的条目
4.3 Compare 功能(基线对比)
这是 IR 中最强大的功能之一
原理:将当前系统的 autostart 与已知干净基线进行对比
工作流程:
1 | # 步骤一:在干净系统上导出基线 |
自动化 Compare(PowerShell):
1 | # 比较两个 Autoruns CSV,找出差异 |
4.4 命令行版本 autorunsc.exe
IR 脚本化场景必用命令行版本
1 | # 完整扫描,输出 CSV(含 hash、签名、VT 结果) |
4.5 常见恶意持久化条目示例
1 |
|
五、TCPView — 实时网络连接监控
5.1 基本功能
TCPView 实时显示系统上所有 TCP 和 UDP 连接,类似增强版 netstat -anob
优势(对比 netstat):
实时刷新(可配置刷新间隔)
显示进程名和 PID
可以直接关闭连接或终止进程
颜色编码显示新建/关闭的连接
地址解析(Resolve Addresses)
5.2 IR 使用要点
颜色含义:
绿色:新建连接
红色:即将关闭的连接
黄色:连接状态变化
IR 检查要点:
查找连接到非标准端口的进程
查找 ESTABLISHED 状态到外部 IP 的连接(潜在 C2)
查找 LISTENING 在高端口的进程(潜在 backdoor)
查找 svchost.exe 的异常连接目标
查找 powershell.exe/cmd.exe 的网络连接(正常情况不应该有)
右键菜单:
Close Connection:断开指定连接(应急时快速阻断 C2)
End Process:终止进程
Process Properties:查看进程详情
Whois:查询 IP 的 WHOIS 信息
5.3 命令行替代 — tcpvcon.exe
1 | # TCPView 的命令行版本 |
六、Strings — 字符串提取
6.1 概述
Strings 从二进制文件中提取可打印字符串,是恶意软件快速分析的第一步
可以发现 URL、IP 地址、文件路径、注册表路径、命令、错误信息等
6.2 使用方法
1 | # 基本用法:提取 ASCII 字符串 |
6.3 IR 中关注的字符串模式
| 模式 | 示例 | 意义 |
|---|---|---|
| URL/IP | http://evil.com/beacon, 192.168.1.100 |
C2 通信地址 |
| 文件路径 | C:\Windows\Temp\payload.dll |
文件投放路径 |
| 注册表路径 | SOFTWARE\Microsoft\Windows\CurrentVersion\Run |
持久化位置 |
| 命令 | cmd.exe /c, powershell -enc |
命令执行 |
| API 函数名 | VirtualAlloc, WriteProcessMemory, CreateRemoteThread |
进程注入指标 |
| Base64 | 长段 A-Za-z0-9+/= |
编码的 payload/命令 |
| PDB 路径 | C:\Users\attacker\Desktop\project\ |
开发者信息泄露 |
| Mutex | Global\{GUID} |
恶意软件标识 |
6.4 Process Explorer 内置 Strings 功能
在 Process Explorer 中,双击进程 → Strings tab
可以对比 Image(磁盘文件)和 Memory(内存中)的字符串
如果内存中存在磁盘上没有的字符串(如 URL、命令),可能表明进程被注入
这是检测进程注入的快速方法之一
七、Sigcheck — 签名验证与 VirusTotal 提交
7.1 基本用法
1 | # 验证单个文件的数字签名 |
7.2 VirusTotal 集成
1 | # 提交文件 hash 到 VirusTotal(不上传文件本身) |
7.3 Catalog Signing 检查
Windows 中有两种签名方式:
Embedded Signature:签名嵌入 PE 文件中
Catalog Signature:签名在 .cat 文件中(许多系统文件使用此方式)
Sigcheck 默认会检查两种签名,确保不会误报 Catalog 签名的文件为未签名
1 | # 显示详细的签名信息(含 catalog) |
7.4 IR 实战场景
1 | # 场景一:检查 System32 中的未签名 DLL(可能是 DLL 劫持) |
八、Handle — 句柄查询
8.1 基本用法
1 | # 查找哪个进程打开了特定文件 |
8.2 IR 场景
场景一:找出锁定日志文件的进程
恶意软件可能锁定事件日志文件防止读取
1 | handle64.exe -accepteula Security.evtx |
场景二:找恶意软件的 Mutex
1 | # 列出所有 Mutex |
场景三:检查谁在访问注册表键
1 | handle64.exe -accepteula "\REGISTRY\MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" |
九、ListDLLs — DLL 分析
9.1 基本用法
1 | # 列出指定进程的所有 DLL |
9.2 检测 DLL 劫持/侧加载
1 | # 查找从非标准路径加载的 DLL |
9.3 与 Process Explorer DLL 视图的区别
ListDLLs 是命令行工具,适合脚本化批量分析
Process Explorer DLL 视图是交互式的,适合单进程深入分析
IR 中两者配合:ListDLLs 批量扫描 → Process Explorer 深入可疑进程
十、PsExec / PsLogList / AccessChk
10.1 PsExec — 远程执行
PsExec 允许在远程计算机上执行命令,IR 中用于远程取证收集
1 | # 在远程计算机上执行命令 |
注意: PsExec 本身也是攻击者常用的横向移动工具,分析时注意区分正常管理员使用和攻击者滥用
10.2 PsLogList — 远程日志收集
1 | # 导出远程计算机的安全日志 |
10.3 AccessChk — 权限审计
1 | # 检查服务的权限(是否有弱权限可被利用) |
十一、完整 IR 工作流示例
11.1 场景:怀疑主机被入侵,使用 Sysinternals 完整排查
Phase 1: 快速评估(5 分钟)
1 | # Step 1: 启动 Process Explorer,快速扫描进程树 |
Phase 2: 持久化检查(10 分钟)
1 | # Step 3: 运行 Autoruns,导出并分析 |
Phase 3: 深入分析可疑进程(15-30 分钟)
1 | # Step 5: 对可疑进程使用 Strings 分析 |
Phase 4: 行为监控(按需)
1 | # Step 9: 如果需要观察恶意软件行为,启动 Procmon |
Phase 5: 全面扫描(时间允许时)
1 | # Step 10: 批量签名检查(找隐藏的可疑文件) |
11.2 自动化收集脚本
1 | # Sysinternals IR 自动化收集脚本 |
十二、对比总结与最佳实践
12.1 Sysinternals 工具选择指南
| 需求 | 工具 | 命令行版本 |
|---|---|---|
| 看进程树和 DLL | Process Explorer | - |
| 看进程行为 | Process Monitor | procmon CLI export |
| 看持久化 | Autoruns | autorunsc |
| 看网络连接 | TCPView | tcpvcon |
| 验证签名 | Sigcheck | sigcheck |
| 提取字符串 | Strings | strings |
| 查句柄 | Handle | handle |
| 查 DLL | ListDLLs | listdlls |
| 远程执行 | PsExec | psexec |
| 权限审计 | AccessChk | accesschk |
12.2 最佳实践
U 盘准备: 将 Sysinternals Suite 预装到 IR U 盘,并预先 /accepteula
基线先行: 在干净系统上预先导出 Autoruns 基线,IR 时对比
管理员权限: 所有工具都应以管理员权限运行,否则信息不完整
先观察后行动: 先用 Process Explorer + TCPView 建立态势感知,再做深入分析
保存证据: 所有输出都应重定向到文件,作为取证记录
不要打草惊蛇: 某些高级恶意软件会检测 Sysinternals 工具并隐藏自身
可以重命名工具文件名绕过简单检测
结合使用: 没有单一工具能发现所有问题,多工具交叉验证
12.3 与 Linux 工具的对应关系
| Sysinternals 工具 | Linux 对应 |
|---|---|
| Process Explorer | htop / ps auxf + lsof |
| Process Monitor | strace / sysdig / bpftrace |
| Autoruns | systemctl list-unit-files + crontab -l + /etc/init.d/ 手动检查 |
| TCPView | ss -tlnp / netstat -tlnp |
| Strings | strings (GNU binutils) |
| Sigcheck | rpm -V / dpkg --verify / sha256sum |
| Handle | lsof |
| ListDLLs | ldd / /proc/<pid>/maps |
| PsExec | ssh |
| AccessChk | find / -perm / getfacl |
参考链接
Mark Russinovich - Malware Hunting with Sysinternals Tools (视频)
关联页面:06-进程与网络分析 | 09-注册表持久化审计 | 32-Sysmon部署与规则编写
| 上一章 | 目录 | 下一章 |
|---|---|---|
| 30-持久化综合Checklist | Windows应急响应 | 32-Sysmon部署与规则编写 |