个人技术分享

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

在这里插入图片描述

Process Monitor 是微软提供的一款系统进程监视软件。常用来检测恶意软件和处理系统故障。

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 开机记录功能。

  1. 勾选 Options - Ebable Boot Logging,记录下一次启动过程。
  2. 重启电脑后,日志保存到 %Windir% 目录下(记录持续到Process Monitor被打开 或 关机)
  3. 再次运行 Process Monitor,会询问你启动记录保存到哪里(保存后 %Windir% 的日志会删掉 并且取消勾选 Ebable Boot Logging)。
  4. 保存后会自动打开开机记录日志,再次打开可以点 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 文件-写入