Process Monitor 学习笔记(5.2):事件模型与五大类操作(文档/注册表/进程/网络/Profiling
2025-11-09 10:38 tlnshuju 阅读(0) 评论(0) 收藏 举报Process Monitor 学习笔记(5.2):事件模型与五大类操作(文件/注册表/进程/网络/Profiling
- Process Monitor 学习笔记(5.2):事件模型与五大类操作(文件/注册表/进程/网络/Profiling)
- 一、事件模型总览:一条事件 = 谁 + 何时 + 做了什么 + 在哪儿 + 结果 + 细节 + 证据
- 二、五大类操作如何读(含典型序列 & 常见坑)
- 1)文件(File System)
- 2)注册表(Registry)
- 3)进程 / 线程(Process & Thread)
- 4)网络(Network)
- 5)Profiling(CPU 采样)
- 三、读懂一条“有价值”的事件(示例解剖)
- 四、过滤与高亮的通用套路(降噪 80%)
- 五、栈(Stack)= 证据链
- 六、常见 Result 速查(便携清单)
- 七、一步一招的“排障剧本”(可直接照做)
- 八、结语
Process Monitor 学习笔记(5.2):事件模型与五大类操控(档案/注册表/进程/网络/Profiling)
本篇聚焦 “一条 Procmon 事件到底包含什么?” 与 “五大类操作如何读懂与排障”。看懂这一节,你就能把海量日志“化噪为信”。
一、事件模型总览:一条事件 = 谁 + 何时 + 做了什么 + 在哪儿 + 结果 + 细节 + 证据
Procmon 把框架调用抽象为事件,核心字段建议这样理解/启用:
- Time of Day / Relative Time:精确到微毫秒的时间戳 / 相对起点时间
- Process Name / PID / TID:谁在执行(进程/线程)
- Operation:执行了什么(如
CreateFile,RegSetValue,TCP Connect) - Path:操作对象(记录/注册表键/网络端点/镜像路径等)
- Result:Win32/NT 返回码(例:
SUCCESS,ACCESS DENIED,NAME NOT FOUND) - Detail:关键信息宝库(Desired Access、ShareMode、Disposition、Length、Offset、重解析类型、目标端口等)
- Category:事件分类(File System / Registry / Process / Network / Profiling …)
- User / Session / Integrity:安全上下文(谁的会话、完整性级别)
- Stack(User+Kernel)**:调用栈证据,定位“哪段代码触发了事件”的关键
建议列配置:勾选TID / Category / User / Integrity / Duration / Command Line / Company / Path,并在工具栏启用堆栈。当日志量很大时,先过滤再打开堆栈,可显著降压。
二、五大类操作如何读(含典型序列 & 常见坑)
1)文件(File System)
常见 Operation
CreateFile、CloseFile、ReadFile、WriteFile、QueryInformationFileSetRenameInformationFile、SetDispositionInformationFile(删除/重命名)DeviceIoControl(与设备/驱动交互)细节重点(在 Detail 字段)
- Desired Access(所需权限:
ReadData,WriteData,Execute,ReadAttributes…) - ShareMode(共享读/写/删,常见冲突根源)
- Disposition(
Open/Create/OpenIf/Overwrite/Supersede) - Options/Attributes(同步/异步、目录/非目录等)
- CreateResult(
Created/Opened/Overwritten…)
- Desired Access(所需权限:
典型序列
- 打开读取:
CreateFile→QueryBasicInformationFile→ReadFile… →CloseFile - 写入/重命名/删除:
CreateFile(含写权限/删除共享)→SetDisposition…/SetRename…
易混淆返回码
NAME NOT FOUND:路径末端不存在(文档/键名写错、搜索探测)PATH NOT FOUND:中间某级目录不存在(部署/权限/挂载点问题)SHARING VIOLATION:共享模式冲突(被他进程以不兼容的共享方式打开)REPARSE:发生重解析(联接/符号链接/挂载点/兼容层重定向),继续看 DetailBUFFER OVERFLOW:多为探测长度的预调用,不是错误
2)注册表(Registry)
常见 Operation
RegOpenKey/CreateKey/CloseKeyRegQueryValue/SetValue/EnumKey/EnumValue/DeleteValue…
典型序列
- 读配置:
RegOpenKey→RegQueryValue→CloseKey - 写配置:
RegOpenKey/CreateKey→RegSetValue→CloseKey
必看细节
- Desired Access(
QueryValue,SetValue,CreateSubKey,EnumerateSubKeys…) - WOW64 重定向:
HKLM\Software(64 位) vsHKLM\Software\WOW6432Node(32 位) - UAC/权限:
ACCESS DENIED快速定位策略/ACL 问题 - 虚拟化/兼容层否有重定向(同样依赖就是:遇到意外路径,请查看Detail/Stack)
3)进程 / 线程(Process & Thread)
常见 Operation
Process Create/Process Exit(父子关系、命令行、映像路径)Thread Create/Thread ExitLoad Image(模块/DLL 加载路径与签名)
实战要点
- 找注入/加载:
Load Image+ Stack可定位是谁触发某 DLL 加载 - 定位启动慢:关注早期
Load Image、首次CreateFile/RegOpenKey失败重试 - 完整性级别(Integrity):中低完整性进程访问受限位置会频繁
DENIED
4)网络(Network)
常见 Operation
TCP Connect/TCP Reconnect/TCP DisconnectTCP Send/TCP ReceiveUDP Send/UDP Receive
理解边界
- Procmon 不是抓包器,不展示负载内容,但能看到谁、连哪里、是否成功。
- 结合 Detail 看本地/远端
IP:Port与返回码(WSAE*/Win32 错误)。 - 与防火墙/代理/证书验证疑问对照排查;必要时配合抓包工具。
5)Profiling(CPU 采样)
- 以固定间隔对目标进程做调用栈采样,形成
Profiling事件 - 结合 Process Activity Summary / Stack Summary 找热点模块/函数
- 适合定位“卡顿/高 CPU”趋势,抓取前先设好过滤并控制时长
温馨提示:采样 + 栈解析会增加开销;在大规模抓取前先在小窗口验证。
三、读懂一条“有价值”的事件(示例解剖)
示例:文件打开失败
Operation : CreateFile
Path : C:\ProgramData\Vendor\App\config.json
Result : ACCESS DENIED
Detail : Desired Access: Generic Read, Disposition: Open,ShareMode: Read, Write, Options: Non-Directory File,Attributes: n/a
Process : App.exe (PID 1234) Integrity: Medium User: DOMAIN\User
如何解读
ACCESS DENIED→ 核心矛盾是权限Desired Access: Generic Read→ 仅需“读”,却仍被拒- 结合 Integrity/User否跨会话/跨账户访问共享数据?就是:
- 看 Stack:谁发起?有没有安全产品/驱动在中途介入?
- 右键 Jump to Path / Permissions或直接检查该文件/父目录 ACL
四、过滤与高亮的通用套路(降噪 80%)
起手三板斧
Process Name is <目标进程> → IncludeCategory is (File System OR Registry)(按需加 Network/Process)- 勾选 Drop Filtered Events,Ctrl+X清屏后复现问题
高亮规则(建议)
Result contains DENIED|VIOLATION|NOT FOUND|TIMEOUT→ 高亮Operation begins with Query*→ 可先 Exclude 减少噪音Path begins with C:\Windows\Prefetch/ 临时目录 → 先排除
五、栈(Stack)= 证据链
- 调整符号服务器(Options → Configure Symbols),解码User/Kernel Stack
- 从栈顶向下看,快速锁定问题模块(第三方驱动/安全产品/插件往往一眼识破)
- 用 Stack Summary聚合热点调用路径,适合“高 CPU/卡顿”归因
六、常见 Result 速查(便携清单)
| Result | 意义/处置建议 |
|---|---|
| SUCCESS | 正常;若性能差,看 Duration/Stack |
| ACCESS DENIED | 权限/策略/锁定;查 ACL、完整性、句柄占用 |
| NAME NOT FOUND | 末级对象不存在;路径/文件名/键名错误或探测 |
| PATH NOT FOUND | 中间目录缺失;部署/安装/重定向错误 |
| SHARING VIOLATION | 共享模式冲突;找到“先占用者”并比对 ShareMode |
| REPARSE | 发生重解析;检查符号链接/联接点/兼容层 |
| BUFFER OVERFLOW | 多为长度探测,非错误;可忽略 |
| FAST IO DISALLOWED | 否影响性能就是走慢路径,非错误;关注 |
七、一步一招的“排障剧本”(可直接照做)
- 缩小范围:按进程/类别 Include →Drop Filtered Events
- 复现问题:短时间抓取,立即停止
- 定位失败:按
Result排序/高亮,先看DENIED/NOT FOUND/VIOLATION - 读 Detail:权限/共享/重解析/Disposition
- 看栈否三方模块介入?就是:是谁触发?
- 对策:改 ACL/修部署/修路径/修共享;必要时与安全或驱动团队沟通
- 沉淀:保存 Filter/Column 布局为模板,团队复用
八、结语
理解事件模型与五大类操作,你就有了读懂 Procmon 的“通用语法”。
下一篇(5.3 过滤、强调与收藏:把 1000 万行变 100 行)将系统演示如何构建稳定可复用的过滤器与高亮规则,显著提升定位效率。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960304.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!