「作者简介」: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 文件-写入