1. Sysinternals工具套件的前世今生
2006年微软收购Sysinternals时,我正在帮客户排查一个棘手的Windows服务崩溃问题。当时Process Explorer帮我抓到了那个泄漏GDI句柄的恶意DLL,从此这套工具就成了我系统维护的"手术刀"。现在让我们解剖这套诞生于1996年的传奇工具集。
创始人Mark Russinovich最初开发这些工具是为了解决NT内核调试的痛点。比如Process Monitor的前身Filemon/Regmon,就是因为在Windows NT 4.0时代,微软自带的性能监视器根本追踪不到某些注册表键的幽灵访问。这些工具用驱动级Hook实现了微软官方工具都做不到的深度监控。
核心组件可以分成六大类:
- 进程管理三剑客:Process Explorer/Process Monitor/PsTools
- 文件与注册表:ProcMon/AutoRuns
- 网络工具:TCPView/PsPing
- 系统信息:WinObj/Handle
- 磁盘工具:DiskMon/Contig
- 其他神器:ZoomIt/BGInfo
特别提示:在Windows Server 2016之后,部分工具需要以管理员身份运行并关闭杀毒软件实时防护,否则某些内核操作会被拦截。
2. Process Explorer的七十二变用法
初次打开Process Explorer时,那个不断刷新的进程树可能让人不知所措。我习惯先做三件事:
- 点击View → Show Lower Pane(显示下方窗格)
- 勾选View → DLLs/Handles
- 右键标题栏添加CPU History列
这样就能看到每个进程加载的DLL和打开的内核对象。曾经有个客户的打印服务频繁崩溃,就是用这个方法发现某个HP驱动在反复泄漏打印机句柄。
几个高阶技巧:
- 双击进程可以查看线程调用栈(Symbols需配置微软符号服务器)
- 右键"Suspend"能冻结可疑进程而不杀死它
- 进程属性页的TCP/IP标签能看到隐藏的网络连接
- 比较功能(Compare)可以抓取系统状态快照做差异分析
3. Process Monitor的取证级监控
如果说Process Explorer是显微镜,那Process Monitor就是监控整个系统的摄像头。它的三大捕获引擎(文件系统/注册表/进程活动)会产生海量数据,必须掌握过滤技巧:
Operation is WriteFile AND Path contains .config这个过滤条件曾帮我抓到某财务软件半夜篡改配置文件的恶意行为。
更专业的用法包括:
- 用Boot Logging记录开机启动过程
- 事件属性里的Stack Trace能追踪到调用源头
- 配合Registry Monitor可以重建软件安装痕迹
- 网络捕获需要额外安装WinPcap驱动
4. AutoRuns的启动项外科手术
病毒最喜欢藏身的地方就是启动项。AutoRuns比MSConfig强大之处在于它能显示:
- 计划任务文件夹外的隐藏任务
- 浏览器Helper Object插件
- Winlogon通知包
- 映像劫持(IFEO)条目
我处理过最狡猾的病毒是把自身注册为"Windows Defender更新服务",但在AutoRuns里它的签名验证显示为"不可信"。记得勾选Options → Hide Windows Entries来聚焦第三方条目。
5. 网络与磁盘的暗战工具
TCPView的"Last State"列能显示异常连接状态。某次发现大量SYN_SENT状态的出站连接,最终定位到被入侵的SQL Server正在尝试连接C2服务器。
对于磁盘问题:
- DiskMon可以记录所有磁盘I/O,配合Process Monitor过滤出高延迟操作
- Contig能可视化文件碎片情况,对数据库文件特别有用
- Sync工具强制刷新磁盘缓存,在断电测试前必用
6. 我的Sysinternals应急工具箱配置
经过多年实战,我的U盘里常备这些配置:
- Process Explorer预加载的符号路径
SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols - 保存好的ProcMon过滤器配置(.Pmc文件)
- AutoRuns扫描结果基线模板
- 定制版的PsExec远程执行脚本
在域环境排查问题时,我会先用PsInfo收集基础系统信息,再用PsLoggedOn看谁在远程访问,最后用PsKill终止恶意进程。这套组合拳比任何杀毒软件都高效。