「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。

Process Monitor 是微软提供的一款系统进程监视软件。常用来检测恶意软件和处理系统故障。
Process Monitor 使用教程
- 1、下载安装
- 2、功能使用
- 2.1、界面字段解释
- 2.2、筛选事件类型
- 2.3、自动滚动
- 2.4、清空列表
- 2.5、停止监听
- 2.6、调整显示列
- 2.7、查看事件属性
- 2.8、过滤器
- 2.9、导出PML文件
- 3、实战案例
- 3.1、分析浏览器启动过程
- 3.2、分析压缩包解压过程
- 3.3、抓取开机启动日志
- 4、事件操作类型翻译
1、下载安装
官网下载:
https://learn.microsoft.com/zh-cn/sysinternals/downloads/procmon

绿色版免安装,解压后双击运行Procmon64.exe


2、功能使用
2.1、界面字段解释
打开软件后,主界面默认展示字段分别是:
- Time of Day:事件发生的事件。
- Process Name:触发该事件的进程名。鼠标悬停在进程名上可以显示进程路径。
- PID:进程ID。
- Operation:事件的操作类型。
- Path:事件操作的文件的路径,非进程路径。
- Result:事件操作结果。
- Detail:事件操作的额外信息(没啥用)。

2.2、筛选事件类型
工具栏右侧的5个图标,分别是注册表读写事件、文件读写事件、网络连接事件、进程和线程的调用事件、配置事件。点击点亮图标后显示对应类型的事件,不亮不显示。

事件对应的操作解释见文末。
2.3、自动滚动
点工具栏左侧的蓝色图标 或 快捷键 Ctrl + X 或 Edit - Auto Scroll,可以让事件自动往下滚动,方便我们观察最新的事件。

2.4、清空列表
点工具栏左侧的垃圾桶图标 或 Ctrl + X 或 Edit - Clear Display,可以清空列表中的事件。当捕获的事件太多时,可以清空列表,只看新增的事件。

2.5、停止监听
点工具栏左侧的定位框图标 或 Ctrl + E 或 File - Capture Events,可以停止监听事件。当我们找到目标事件后,就可以停止监听,列表就不会动了。

2.6、调整显示列
鼠标拖动列名,可以调整列的位置。
Options - Select Columns 可以自定义显示列。想看那个字段,就勾选上。

Application Details 应用程序数据
- Process Name:生成事件的进程名
- Image Path:进程的位置(镜像路径)
- Command Line:启动进程的命令参数
- Company Name:进程程序文件的注册公司名称
- Description:进程程序文件的描述
- Version:进程程序文件的产品版本号
- Architecture:进程程序文件的架构(32位或64位)
Event Details 事件数据
- Sequence Number:序号,标明该事件在所有事件中的相对位置(
0,1,2,3,...) - Event Class:事件类别(
Network、Process等) - Operation:事件的操作类型(
CloseFile、CreateFile等) - Date & Time:事件的操作日期
- Time of Day:事件的操作事件
- Category:事件的操作种类(
Write、Read Metadata等) - Path:事件操作的资源的路径(非进程路径)
- Detail:事件操作的附加信息
- Result:事件操作的结果
- Relative Time:事件操作的发生时间,Process Monitor启动后开始计算。
- Duration:事件操作的执行时间。
- Completion Time:事件操作的结束时间。
Process Management 进程管理
- User Name:执行进程的用户名
- Session ID:进程的Windows会话ID
- Authentication ID:进程的登录会话ID
- Integrity:进程操作的可信级别
- Process ID:进程ID
- Thread ID:线程ID
- Parent PID:父进程ID
- Virtualized:进程的虚拟化状态
2.7、查看事件属性
双击事件任意位置 或 右键 - Properties 可以查看事件属性。
属性有 Event(事件)、Process(进程)、Stack(堆栈)三个标签。
Event标签记录:开始时间、线程、事件类型、操作类型、操作结果、操作的文件路径、耗时。

Process标签记录:
- 进程基础信息:公司名、进程名、版本号、进程路径、进程启动参数。
- 进程运行信息:进程ID、架构、父进程ID、进程的虚拟化状态、Windows会话ID、可信度、用户、运行的开始结束时间。
- 进程加载的模块

Stack标签记录调用的模块名和地址,方便溯源进程链,双击可以查看详细信息。
K开头是内核模式,U开头是用户模式。

2.8、过滤器
如果已经知道了恶意软件的程序名、进程等信息,可以使用过滤器来筛选。

点工具栏的漏斗图标 或 快捷键 Ctrl + L 或 Filter - Filter,打开过滤器。

文章后面的案例会详细介绍使用步骤。
2.9、导出PML文件
有时候遇到问题无法解决,需要抓进程日志,导出PML文件给别人分析。
复现问题后,点 File - Save,弹出的保存界面勾选 ALL events保存所有事件。Path后边是PML文件保存的路径,可按需修改。

3、实战案例
3.1、分析浏览器启动过程
打开并关闭浏览器,分析浏览器进程的行为。
工具栏开启监听、开启自动滚动、打开所有的事件类型筛选。

1)清空过滤器
点工具栏的过滤图标,打开过滤器。Reset 清空历史过滤,Apply 应用,OK 关闭窗口。
注意:每次使用前都看一眼这里的过滤规则,是否需要清空或调整。

2)寻找浏览器的进程。
打开浏览器(这里用Edge)后,点定位框图标停止监听,最后面的部分可以看到浏览器的进程是 msedge.exe 。

3)过滤浏览器进程
过滤字段选 Process Name根据进程名过滤,过滤规则选 is,过滤内容填 msedge.exe 只看Medg浏览器的进程,点Add添加到下面的列表中,Apply应用,OK关闭窗口。

4)捕获浏览器的启动过程。
关掉浏览器后,点定位框图标开启监听,点垃圾桶图标清空列表。
打开浏览器再关闭,就能看到浏览器从启动、运行到关闭都做了什么。
我们可以看到,刚打开时,浏览器的线程开始 Start 启动、Create 创建,开始读注册表、读写文件等。

关闭浏览器时,线程开始Exit结束,之前打开的文件也都被Close关闭。

3.2、分析压缩包解压过程
解压压缩包,寻找每个解压后的文件对应的操作。
工具栏开启监听、开启自动滚动、打开所有的事件类型筛选。

1)清空过滤器(同3.1)
2)解压压缩包
用文章开头下载的安装包,右键解压,点定位框图标停止监听。
事件很多,我们往上滑一些,这里我用的7z解压,所以能看到大量7zG.exe的进程。

3)过滤解压工具进程
第一个过滤器:过滤字段选 Process Name ,过滤规则选 is,过滤内容填 7zG.exe只看解压工具的进程,点Add添加到下面的列表中,Apply应用,OK关闭窗口

跟上一个案例一样,也是先 Start 创建进程,中间很多读写注册表、文件的操作,最后Exit退出线程。

4)过滤文件创建操作
第二个过滤器:过滤字段选 Operation 操作,过滤规则选 is,过滤内容选 CreateFile只看创建文件的操作(点右侧的下拉图标能选),点Add添加到下面的列表中,Apply应用,OK关闭窗口

可以看到解压后的目录里,每个文件都能找到对应的操作。

5)排除路径
Create 创建的文件有很多C盘的,这些是压缩工具自带的文件或系统文件,我们不关心,所以把C盘的路径都排除掉。
第三个过滤器:过滤字段选 Path 路径,过滤规则选 Contains包含,过滤内容填 C:\,包含关系选Exclude排除,点Add添加到下面的列表中,Apply应用,OK关闭窗口

这样再看就清晰多了。能看到它先创建了ProcessMonitor目录,又创建了里面的每个文件。

6)分析操作详情
从事件属性里看 test 目录 和 ProcessMonitor 目录的操作区别。
test目录是解压前我创建的,所里它们的操作都是 Open 打开资源,而非真正的创建。

ProcessMonitor目录是工具创建的,所以第一个操作是 Create 创建,后面的操作才是 Open。

后面每个exe文件都有两个操作,也是类似的逻辑,第一个操作创建文件,第二个操作打开文件写内容。
3.3、抓取开机启动日志
顽固病毒在启动项留存等场景,需要在开机过程中就抓取日志,可以使用 Boot Logging 开机记录功能。
- 勾选
Options-Ebable Boot Logging,记录下一次启动过程。 - 重启电脑后,日志保存到
%Windir%目录下(记录持续到Process Monitor被打开 或 关机) - 再次运行 Process Monitor,会询问你启动记录保存到哪里(保存后
%Windir%的日志会删掉 并且取消勾选Ebable Boot Logging)。 - 保存后会自动打开开机记录日志,再次打开可以点
File-Open打开刚才保存的文件。
1)开启开机记录功能

2)重启后日志(临时)保存在 %Windir% 目录,很大,1个多G。

3)再次打开 Process Monitor,询问是否保存开机记录?

4)保存开机记录到指定位置。

5)保存后自动打开开机记录文件,分析是否有异常事件。

4、事件操作类型翻译
最后附上事件操作类型的翻译,不需要单独记忆,用的时候搜即可。
CloseFile 文件-关闭
CreateFile 文件-创建
CreateMailSlot 创建邮件位
CreatePipe 创建管道
DeviceChange 设备改变
DeviceloControl设备输入/输出控制
FileStreamInformation 文件流信息
FileSystemControl文件系统控制
FlushBuffersFile 清空缓冲文件
InternalDeviceloControl 内部设备IO控制
LoadImage 装载映像
LockFile 文件-锁定
NotifyChangeDirectory 提示改变目录
PlugAndPlay 即插即用
Power 电源
Process Create 进程-创建Process Defined 进程-定义
Process Exit 进程-关闭
Profiling interrupt 配置中断?
QueryAllInformationFile 查询所有信息文件
QueryAttribbuteTagFile 查询属性标签文件
QueryAttributelnformationVolume 查询属性信息卷 (容量?)
QueryBasicInformationFile 查询基本信息文件
QueryCompressionInformationFile 查询压缩信息文件
QueryControllnformationVolume 查询控制信息卷
QueryDevicelnformationVolume 查询设备信息卷
QueryDirectory 查询-目录
QueryEAFile ?
QueryEalnformationFile ?
QueryFilelnternallnformationFile 查询文件内部信息文件
QueryFileQuota 查询文件配额
QueryFullSizelnformationVolume 查询全尺寸信息卷
QuerylnformationVolume 查询信息卷
QueryLabellnformationVolume 查询标签信息卷
QueryMinorCode49>查询副编码
QueryMoveClusterlnformationFile 查询移动族信息文件
QueryNamelnformationFile 查询名字信息文件
QueryNetworkOpenlnformationFile 查询网络开启信息文件
QueryObjectldInformationVolume 查询对象ld信息卷
QueryOpen查询-打开
QueryPositionInformationFile 查询位置信息文件
QuerySecurityFile 查询安全文件
QuerySizelnformationVolume 查询尺寸信息卷
QueryStandardInformationFile 查询标准信息文件
QueryStreamInformationFile 查询流信息文件.
ReadFile 文件-读取
RegCloseKey注册表-关闭键
RegCreateKey注册表-创建键
RegDeleteKey 注册表-删除键
RegDeleteValue注册表-删除值
RegEnumKey注册表-枚举键
RegEnumValue注册表-枚举值
RegFlushKey注册表-清空键
RegLoadKey注册表-读取键
RegOpenKey注册表-打开键
RegQueryKey注册表-查询键
RegQueryKeySecurity 注册表-查询键安全性
RegQueryMultipleValueKey 查询多值键
RegQueryValue注册表-查询值
RegRenameKey注册表-重命名键
RegSetInfoKey 设置信息键
RegSetKeySecurity注册表-设置键安全性
RegSetValue注册表-设置值
RegUnloadKey 卸载键://blog
SetAllInformationFile 设置全信息文件
SetBasicInformationFile 设置基本信息文件
SetDispositionlnformationFile 设置部署信息文件
SetEAFile ?
SetEndOfFilelnformationFile 设置文件结尾信息文件
SetFileQuota 设置文件配额
SetLinkInformationFile 设置连接信息文件
SetPipelnformation 设置管道信息
SetPositionInformationFile 设置位置信息文件
SetRenamelnformationFile 设置重命名信息文件
SetSecurityFile 设置安全文件
SetShortNamelnformation 设置短名称信息
SetValidDataLengthInformationFile 设置合法数据长度信息文
SetVolumelnformation 设置卷信息
shutdown 关闭
SystemControl系统控制
Thread Create 线程-创建
Thread Exit 线程-关闭
Thread Profile 线程-Profile
UnlockFileAll 文件解锁全部
WriteFile 文件-写入