[微软软件工程必备基础]Process Monitor介绍
1、工具基本介绍
Process Monitor是微软推荐的一款系统监视攻击,能供实时显示文件系统、注册表、网络连接于进程活动的攻击工具。它整合了一些工具,其中Folemon专门用来监视系统中的任何文件操作过程,Regmon用来监视注册表的读写操作过程。
- Filemon:文件监视器
- Regmon:注册表监视器
同时。Process Monitor增加了进程ID、用户、进程可靠度等监视项。它的强大功能足以使Process Monitor成为您系统中的核心组件以及病毒探测工具。
Process Monitor可以帮助使用者对系统中的任何文件、注册表操作进行监视和记录,通过注册表和文件读写的变化。有效帮助诊断系统故障或者发现恶意软件、病毒及木马。
下载地址:https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
2、使用场景
运行Process Monitor建议使用管理员模式,当你启动Process Monitor后,它就开始监听三类操作,包括:文件系统、注册表、进程。
文件系统
Process Monitor显示所有的Windows文件系统活动,包括本地磁盘和远程文件系统。它会自动探测到新的文件系统设备并监听它们。所有的系统路径都会被显示为相对于在用户会话中的一个文件系统操作的执行。想在列表中清除文件系统的操作,在Process Monitor工具栏上反选“文件系统”按钮,再按下可以增加对文件系统的监听。
注册表
Process Monitor记录所有的注册表操作并显示使用常见的注册表根键缩写来显示注册表路径(如HEKY_LOCAL_MACHINE 缩写为HKLM)。想在列表中清除注册表的操作,在Process Monitor工具栏上反选“注册表”按钮,再次按下可以增加对注册表的监听。
进程
在Process Monitor的进程/线程监听子系统中,它将跟踪所有进程/线程的创建和退出操作,包括DLL和设备驱动程序的加载操作。想在列表中清除进程的操作,在Process Monitor工具栏上反选“进程”按钮,再次按下可以增加对进程的监听。
网络
Process Monitor使用“Windows事件跟踪(ETW)”来跟踪并记录TCP和UDP活动。每个网络操作包括源地址和目标地址,还有发送和接受到的一些数量的数据,但不包括真实的数据。想在列表中清除网络的操作,在Process Monitor工具栏上反选“网络”按钮,再次按下可以增加对网络的监听。
性能分析
这个事件类可以在“选项”菜单中启用。当处于“启用”状态,Process Monitor扫描系统中所有活动的线程并为每个线程生成一个性能分析事件,记录了内核模式和用户模式的CPU时间消耗,还有许多在上个性能分析事件后已被线程执行的环境开关。
3、常见用法
下载Procmon.exe软件后,双击直接启动,Procmon会自动扫描分析系统当前程序的运行情况。其中,下图中四个常用按钮作用分别为:捕获开关、清屏、设置过滤条件、查找。最后5个并排的按钮,使用来设置捕获那些类型的时间,分别表示注册表的读写、文件的读写、网络的连接、进程和线程的调用和配置事件。一般使用前面两个。分别是注册表和文件操作。
输出结果包括序号、时间点、进程名称、PID、操作、路径、结果、描述等,监控项通常包括:
1、文件系统
2、注册表
3、进程:跟踪所有进程和线程的创建和退出操作
4、刨析事件:扫描系统中所有活动线程,为每个线程创建一个刨析事件,记录它耗费的核心和用户CPU的时间,以及线程自上次刨析事件以来执行了多少次上下文转换。
为了更好地定制选择,也可以在Options菜单中选择Select Columns选项,然后通过弹出的列选择对话框来定制列的显示。常用列的选择包括:
1、Application Details
– Process Name:产生事件的那个进程的名字
– Image Path:进程镜像的完整路径
– Command Line:命令行,用于启动进程
– Company Name:进程镜像文件中的企业名称。这个文本是由应用程序的开发者来定义的
– Description:进程镜像文件中的产品描述信息。这个文本是由应用程序的开发者定义的
– Version:进程镜像文件中的产品版本号。这个文本是由应用程序的开发者定义的
2、Event Details
– Sequence Number:操作在全体事件中的相对位置,也包括当前的过滤
– Event Class:事件的类别(文件,注册表,进程)
– Operation:特殊事件操作,比如Read、RegQueryValue等
– Date & Time:操作的日期和时间
– Time of Day:只是操作的时间
– Path:一个事件引用资源的路径
– Detail:事件的附加信息
– Result:一个完成了的操作的状态码
– Relative Time:一个操作相对于Process Monitor的启动后的时间,或者相对于Process Monitor的信息清除后的时间
– Duration:一个已经完成了的操作所持续的时间
3、Process Management
– User Name:正在执行操作的进程的用户账户名
– Session ID:正在执行操作的进程的Windows会话ID
– Authentication ID:正在执行操作的进程的登录会话ID
– Process ID:执行了操作的进程的进程ID
– Thread ID:执行了操作的线程的线程ID
– Integrity Level:正在运行的进程执行操作时的可信级别(仅支持Vista以上系统)
– Virtualized:执行了操作的进程的虚拟化状态
4、实例分析
下面这个链接是我分析的程序piolt.exe, 大家可以下载使用
链接:https://pan.baidu.com/s/1RLkF1-LZlByGLpDzmbHVtA
提取码:8189
自启动目录:
Win 7/10:C:\Users\xxxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win XP:C:\Documents and Settings\Administrator\「开始」菜单\程序\启动
第一步,打开过滤器
打开软件Procmon,点击filter-> filter
在弹出的对话框中Architecture下拉框,选择Process Name填写要分析的应用程序名字,点击Add添加,最后点击右下角的Apply。
第二步,执行被分析的应用
双击exe程序弹出”计算器“
可以看到Process Mointor监控到应用的行为。
第三步,查看可执行文件的位置
点击查找按钮,然后输入“CreateFile”
找到该选项之后,我们右键点击“Jump To”。
我们可以去到该文件所在的文件夹下,即:
第四步,查看注册表选项
查询文件“RegSetValue”
右键选择jump to跳转到注册表。
可以看到注册表的内容,如果自启动还能看到相关键对的设置。
Windows自动重启运行的程序可以注册在下列任一注册表的位置。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOn
AppData\Local\Temp
它是电脑Windows系统临时存储的文件夹,会把浏览者浏览过的网站或者其它记录保存在这里。如果下次打开相应的地址,电脑会更快提取文件,甚至在没有网络时也能查看到。这是不安全的,你保密的文件文件也可能存在该位置,建议及时删除。
WriteFile:写操作,依照文件大小可能产生多条
ReadFile:读操作,一次读会产生很多条
SetAllocationInformationFile:改写文件时触发
SetEndOfFileInformationFile:改写文件时触发
SetRenameInformationFile:重命名时触发
SetDispositionInformationFile:删除文件时触发
分析恶意样本,涉及知识点包括:
- 文件活动行为分析:Procmon监控木马客户端的文件行为
- 注册表活动行为分析:Procmon监控木马客户端的注册表设置值行为
- 网络活动行为分析:Wireshark监控网络行为、TCP三次握手连接、被控端与控制端之间的通信过程
CloseFile 文件-关闭
CreateFile 文件-创建
CreateMailSlot 创建邮件位
CreatePipe 创建管道
DeviceChange 设备改变
DeviceIoControl 设备输入/输出控制
FileStreamInformation 文件流信息
FileSystemControl 文件系统控制
FlushBuffersFile 清空缓冲文件
InternalDeviceIoControl 内部设备IO控制
Load Image 装载映像
LockFile 文件-锁定
NotifyChangeDirectory 提示改变目录
PlugAndPlay 即插即用
Power 电源
Process Create 进程-创建
Process Defined 进程-定义
Process Exit 进程-关闭
Profiling interrupt 配置中断?
QueryAllInformationFile 查询所有信息文件
QueryAttribbuteTagFile 查询属性标签文件
QueryAttributeInformationVolume 查询属性信息卷(容量?)
QueryBasicInformationFile 查询基本信息文件
QueryCompressionInformationFile 查询压缩信息文件
QueryControlInformationVolume 查询控制信息卷
QueryDeviceInformationVolume 查询设备信息卷
QueryDirectory 查询-目录
QueryEAFile ?
QueryEaInformationFile ?
QueryFileInternalInformationFile 查询文件内部信息文件
QueryFileQuota 查询文件配额
QueryFullSizeInformationVolume 查询全尺寸信息卷
QueryInformationVolume 查询信息卷
QueryLabelInformationVolume 查询标签信息卷
QueryMinorCode49> 查询副编码
QueryMoveClusterInformationFile 查询移动簇信息文件
QueryNameInformationFile 查询名字信息文件
QueryNetworkOpenInformationFile 查询网络开启信息文件
QueryObjectIdInformationVolume 查询对象Id信息卷
QueryOpen 查询-打开
QueryPositionInformationFile 查询位置信息文件
QuerySecurityFile 查询安全文件
QuerySizeInformationVolume 查询尺寸信息卷
QueryStandardInformationFile 查询标准信息文件
QueryStreamInformationFile 查询流信息文件
ReadFile 文件-读取
RegCloseKey 注册表-关闭键
RegCreateKey 注册表-创建键
RegDeleteKey 注册表-删除键
RegDeleteValue 注册表-删除值
RegEnumKey 注册表-枚举键
RegEnumValue 注册表-枚举值
RegFlushKey 注册表-清空键
RegLoadKey 注册表-读取键
RegOpenKey 注册表-打开键
RegQueryKey 注册表-查询键
RegQueryKeySecurity 注册表-查询键安全性
RegQueryMultipleValueKey 查询多值键
RegQueryValue 注册表-查询值
RegRenameKey 注册表-重命名键
RegSetInfoKey 设置信息键
RegSetKeySecurity 注册表-设置键安全性
RegSetValue 注册表-设置值
RegUnloadKey 卸载键
SetAllInformationFile 设置全信息文件
SetBasicInformationFile 设置基本信息文件
SetDispositionInformationFile 设置部署信息文件
SetEAFile ?
SetEndOfFileInformationFile 设置文件结尾信息文件
SetFileQuota 设置文件配额
SetLinkInformationFile 设置连接信息文件
SetPipeInformation 设置管道信息
SetPositionInformationFile 设置位置信息文件
SetRenameInformationFile 设置重命名信息文件
SetSecurityFile 设置安全文件
SetShortNameInformation 设置短名称信息
SetValidDataLengthInformationFile 设置合法数据长度信息文件
SetVolumeInformation 设置卷信息
Shutdown 关闭
SystemControl 系统控制
Thread Create 线程-创建
Thread Exit 线程-关闭
Thread Profile 线程-Profile
UnlockFileAll 文件解锁全部
WriteFile 文件-写入
希望大家可以有所收获!!!