行为监控软件:ProcessMonitor与Wireshark(第11课)

一、ProcessMonitor

 

Process Monitor 是一款非常著名的系统进程监视软件,用户可以利用 Process Monitor 对系统中的文件系统,网络行为,进程线程行为以及注册表操作等方面同时进行监视和记录。 通过监控系统中相应位置的变化, 对于帮助诊断系统故障或是发现恶意软件、病毒或木马来说,非常有用。

 

Process Monitor工具栏介绍

 

注册表(Registry)

Process Monitor 能够记录所有的注册表操作并且将注册表根键以常用的缩写形式来表示,以显示注册表路径( 比如将 HKEY_LOCAL_MACHINE 表示为 HKLM)。

 

如果想去除注册表监控的显示, 可以取消选择在 Process Monitor 工具栏上的注册表按键,而如果想将注册表操作监控重新加回,则只需再次按下该按钮即可。

Registry

 

文件系统(File System)

Process Monitor 会显示 Windows 文件系统的所有活动信息,包括本地的存储文件以及远程文件系统。 Process Monitor 能够自动侦测到新加入的文件系统设备并且对其进行监控。当一个文件系统开始运行后,与用户会话相关的所有文件系统路径都会被显示出来。

 

如果想去除文件系统监控的显示, 可以取消选择在 Process Monitor 工具栏上的文件系统按键, 而如果想将文件系统的操作监控重新加回,则只需再次按下该按钮即可。

File System

 

进程(Process)

在它的进程/线程监控子系统中, Process Monitor 能够追踪所有的进程与线程的创建和退出操作,也可以追踪动态链接库( DLL) 文件和设备驱动程序的加载操作。

 

如果想去除进程操作监控的显示, 可以取消选择在 Process Monitor 工具栏上的进程按键,而如果想将进程操作监控重新加回,则只需再次按下该按钮即可。进程(Process)

 

进程树

“工具( Tools)”菜单中的“进程树( Process Tree)”菜单条目能够打开进程树对话框,它能够分层次地显示由加载的追踪事件所引用的所有进程,从而反映他们的父子关系。拥有相同父进程的进程会依据它们开始时间进行排序。 在窗口左侧的进程的父进程,没有在追踪中留下任何事件。

 

当我们在进程树中选择了一项进程后, Process Monitor 就获得了关于该进程数据的子集,比如它的映像地址, 用户账户与开始时间,这些会在对话框的底部显示出来。如果您想查看更多关于进程的信息,可以点击“转到事件( Go To Event)”按钮,它可以使得 Process Monitor在运行进程的追踪中定位并选择第一条可见项。需要注意的是, 通过使用筛选器从视图中排除指定进程的所有事件,可以阻止指定操作的完成。进程树

 

网络(Netword)

Process Monitor 使用 Windows 的事件追踪机制( ETW) 来追踪并记录 TCP 和 UDP 的活动。 每一项网络操作,包括源头与终点的地址,连同大量的发出与接收到的数据,但是不包括实际的数据内容。

 

如果想去除网络操作监控的显示, 可以取消选择在 Process Monitor 工具栏上的网络按键,而如果想将网络操作监控重新加回,则只需再次按下该按钮即可。

网络(Netword)

 

分析(Profiling)

这个事件类型能够在“ 选项( Option)” 菜单中激活。 当它被激活之后, Process Monitor能够检测到系统中的所有活动线程, 并且生成一个非常详尽的分析报告, 包括系统内核与用户 CPU 的时间消耗,以及上下文切换执行的数量,这都可以通过上次分析事件以来的线程实现。 注意: 系统进程不会包含在分析报告中。分析(Profiling)

 

捕获(Capture)

使用“文件( File)”菜单中的“ 捕获事件( Capture Events)”菜单选项,或者点击工具栏上的捕获按钮,也可以使用快捷键“ Ctrl+E”,实现对 Process Monitor 监控的捕获进行切换操作。取消捕获后ProcessMonitor将不会捕获事件。

捕获(Capture)

 

自动滚屏(Autoscroll)

在“编辑( Edit)” 菜单中选择“ 自动滚屏( Autoscroll)” 项,或者点击工具栏上的自动滚屏按钮,也可以使用快捷键“ Ctrl+A”,就能够切换 Process Monitor的自动滚屏特性,这能够使得它保证在显示列表中显示最新的操作。自动滚屏(Autoscroll)

 

清屏(Clear)

如果想要清除所有项目的显示,可以在“ 编辑( Edit)” 菜单中选择“ 清除显示( Clear Display)”,或者使用快捷键“ Ctrl+X”。清屏(Clear)

 

列目选择

我们可以通过拖动列目来重新排列他们的顺序实现列目定制显示的效果,通过“选项( Option)”菜单中的“选择列目( Select Columns)”菜单项就能够打开列目选择对话框。可供选择的列目包括如下:

列目选择

 

下面简单介绍一下这些细节:

应用程序细节(Application Details)

  • 进程名称( Process Name):当一个事件出现时的进程名称。
  • 映像路径( Image Path): 运行于一个进程中的映像的完整路径。
  • 命令行( Command Line): 开启一个进程的命令行。
  • 公司名称( Company Name):嵌入一个进程映像文件中的文本信息,它是用于记录公司名称的版本信息字符串。这个文本可由应用开发者选择定义。
  • 描述( Description):嵌入一个进程映像文件中的文本信息,它是用于记录产品描述信息的字符串。这个文本可由应用开发者选择定义。
  • 版本( Version): 嵌入一个进程映像文件中的文本信息, 它是用于记录产品版本的数字。这个信息可由应用开发者选择指定。

 

事件细节( Event Details)

  • 序列号( Sequence Number): 在所有事件中的某一操作的相对位置,包括当前的筛选
    器。
  • 事件类( Event Class):事件(文件、注册表、进程)的类型。
  • 操作( Operation): 指定事件的操作(比如读取、获取指定的注册表项值等)。
  • 日期和时间( Date & Time): 操作发生的日期和时间。
  • 时间( Time of Day):仅显示操作发生的时间。
  • 路径( Path):事件所引用的资源的路径。
  • 细节( Detail):某一具体事件的附加信息。
  • 结果( Result):一项已完成操作的状态码。
  • 相对时间( Relative Time):操作的相对时间,自 Process Monitor 启动开始计算,或者自从 Process Monitor 的最近一次清屏操作开始计算。
  • 持续时间( Duration): 已完成操作的持续时间。

 

进程管理( Process Management)

  • 用户名( User Name): 执行操作的进程运行时的用户账户的名称。
  • 会话 ID( Session ID): 执行操作的进程运行时所附属的 Windows 会话。
  • 认证 ID( Authentication ID): 执行操作的进程运行时所附属的登录会话。
  • 进程 ID( Process ID):执行操作的进程 ID( PID)。
  • 线程 ID( Thread ID):执行操作的线程 ID( TID)。
  • 完整性级别( Integrity Level):正在运行的操作所执行进程的完整性级别(仅在Windows Vista 下有效)。
  • 虚拟化 ( Virtualized): 正在运行的操作所附属进程的虚拟化状态。(仅在 Windows Vista下有效)

 

Process Monitor 事件属性

我们可以双击某项事件来查看一项独立事件的属性,或者通过在“事件( Event)”菜单中选择“属性( Properties)”菜单项,也可以通过右键点击一项事件,在弹出的快捷菜单中进行选择。事件属性对话框由事件、进程以及堆栈页所组成。

事件属性

 

事件(Event)

事件( Event)页显示特定的某一项事件的信息,包括它的序列号、事件线程、事件类别与操作、结果、时间戳,以及如果可用的话, 则显示资源路径。 只有文件系统以及注册表事件才定义有资源路径这一项。事件页的下半部分列出了一项事件所依赖的事件操作的细节集合。 这些细节信息与主界面中的细节列表所显示的内容是一致的,不同的是每一项细节都是分行进行显示的。

事件(Event)

 

进程(Process)

一项事件的进程页显示了已经执行的事件的进程信息。连同与进程镜像相关的数据,比如路径与版本字符串,进程页显示了进程执行的属性,比如进程ID,执行进程的用户账户,以及该事项是否由64位的Windows操作系统所生成,该进程是32位还是64位。

 

进程页的底部区域显示了当事件执行时,由该进程读取的映像列表,以及读取的地址。双击列表中的一个映像可以查看关于映像的更多信息,包括它的版本信息等。

进程(Process)

 

栈(Stack)

栈页显示了当事件被记录时线程的线程栈。这个栈对于决定事件发生的原因以及导致该事件发生的组件有很大的帮助。内核模式的栈帧是由其左边的字母“ K” 作为标记的,而用户模式栈则以字母“ U” 作为标记。栈(Stack)

 

Process Monitor 高亮与筛选

我们可以在筛选器中指定事件的属性,这样就可以令ProcessMonitor仅显示或排除与指定的属性值相匹配的事件。所有的筛选器都是无损检测,也就是说这仅会对 ProcessMonitor 显示事件的方式产生影响,而不会影响潜在的事件数据。

 

当选取了一项事件后, 在 “事件( Event)”菜单的 “ 包含 ( Include)”与 “ 排除 ( Exclude)”子菜单中就可以很容易地添加事件的其中一项属性到筛选器的包含与排除配置中。比如说,我们在筛选器中指定进程的名称为notepad.exe和cmd.exe,并且在筛选器中包含了一个名为 C:\Windows 的路径,那么 Process Monitor 仅仅只会显示源自指定路径即 C:\Windows 目录中的 Notepad.exe 或 Cmd.exe 的事件。

 

在筛选器对话框中也有更多复杂的可使用的筛选选项,可以通过选择 “ 筛选器( Filter)”菜单中的“筛选器( Filter)”菜单项或者点击工具栏上的筛选器按钮来打开筛选器对话框。筛选器条目由一个属性域(如认证 ID,进程名称等)、一个比较操作符、一项属性值以及筛选类别(包含或排除) 所组成。 为了方便起见, 在当前加载的跟踪数据中, Process Monitor会自动在下拉列表中列出在已加载的追踪数据中出现的属性值。高亮与筛选

 

上下文菜单筛选

我们也可以在ProcessMonitor中用鼠标右键点击一个条目,则会显示一个上下文菜单,我们能够查看该条目的属性或配置一个基于该条目属性的筛选器。更进一步的是,快速筛选项能够依据我们点击的列的值添加到菜单中。

上下文菜单筛选

 

筛选器的存储与读取

一旦我们配置完成了一个筛选器,就可以选择“筛选器( Filter)”菜单中的“保存筛选器( Save Filters)”菜单项进行保存。 Process Monitor 为了便于我们下次的使用,它会将我们保存的筛选配置保存到“读取筛选器( Load Filter)”菜单, 并且我们还可以选择“筛选器( Filter)”菜单中的“管理筛选器( Organize Filter)”来打开管理筛选器对话框, 从而改变筛选器在菜单中的显示顺序。可以使用管理筛选器对话框来重命名已经保存的筛选器,还能够很方便地以一定的格式来输出筛选器,这样以后我们就可以在其它系统上利用管理筛选器对话框进行筛选器的导入了。

筛选器的存储与读取

管理筛选器对话框

 

管理筛选器对话框

存储筛选器对话框

 

高亮显示

Process Monitor 的高亮显示筛选器能够使我们指定事件的属性,从而令一个事件以高亮的颜色进行显示。“事件( Event)”菜单中的“高亮显示( Highlight)”子菜单能够使我们快速定义高亮显示的筛选器条目。Process Monitor 的高亮显示筛选器

 

 

并且“Filter”菜单中的“高亮显示( Highlight)” 菜单条目也能够打开高亮显示筛选对话框,其操作与包含/排除筛选对话框相似。高亮显示( Highlight)

 

我们可以通过点击高亮显示筛选对话框中的“添加筛选器( Add Filter)”按钮,从而将高亮显示筛选器转化为包含筛选器添加筛选器( Add Filter)

 

二、Wireshark

Wireshark是一个网络抓包工具。 是一款非常棒的Unix和Windows上的开源网络协议分析器。尽可能显示出最为详细的网络封包资料。

 

捕获数据

当我们打开Wires hark进行数据包抓取时,会显示下图所示的页面,供我们选择捕获哪个网络适配器中的数据包。具体的适配器名称以自己的计算机中的名称为准。双击选择的适配器名称即可开始进行数据包捕获。Wires hark进行数据包抓取

 

在打开Wireshark时,也会显示以前打开过的数据包,如果没有显示想要的数据包,可以通过“文件->打开”,或者使用快捷键Ctrl+O来打开特定的数据包。

 

过滤报文

一般我们捕获的数据包都比较大,难以对其进行详细分析,这时就需要用到Wireshark的过滤特性。

 

最基本的方式就是在窗口顶端的过滤栏中输入过滤规则。例如输入http,就只会看到Http报文。

过滤报文

 

同时也可以通过”菜单分析->显示过滤器“来创建新的过滤规则。

过滤规则

 

如果要看某一个报文中的数据,可以“右键 - 目标报文”,选择“追踪流”,再选择不同的流,可以看到TCP流,UDP流,SSL流和HTTP流。这样就可以看到服务端和客户端之间传输的数据内容。追踪流

 

常用的一些过滤方式如下所示:

  • 过滤源IP、目的IP:如查找目的地址为168.1.100的包—ip.dst==192.168.1.100.查找源地址为192.168.1.100的包—ip.src==192.168.1.100。
  • 过滤某个IP:addr==192.168.1.100。显示源IP或目标IP为192.168.1.100的数据包。
  • 过滤端口:比如过滤80端口—tcp.port==80。这条规则是把源端口和目的端口为80的数据包都过滤出来。使用dstport==80只过滤目的端口为80的包,tcp.srcport==80只过滤源端口为80的包。
  • 协议过滤:直接在过滤框中输入要过滤的协议即可,如HTTP,TCP,UDP等。
  • HTTP模式过滤:如过滤get包—http.request.method==“GET”。过滤post包,http.request.method==”POST”。

 

过滤器应用

掌握过滤器的应用对于数据分析来说是一项必备技能,可以说是一项大海捞针的技巧。学会构建,编辑,保存关键的显示过滤器能够大量的节省时间。

 

协议过滤器

  • arp:显示所有包括ARP请求和回复在内的所有ARP数据流。
  • ip:显示内含IPv4头在内的(如ICMP目的地址不可达报文,在ICMP报文头之后返回到来方向的IPv4头)IP数据流。
  • ipv6:显示所有IPv6数据流,包括内含IPv6报文头的IPv4报文,如6to4,Teredo,以及ISATAP数据流。
  • tcp:显示所有基于TCP的数据流。

 

应用过滤器

  • bootp:显示所有DHCP数据流(基于BOOTP)。
  • dns:显示包括TCP区域传输以及基于标准UDP的DNS请求和回复在内的所有DNS数据流。
  • tftp:显示所有TFTP(Trivial File Transfer Protocol)数据流。
  • http:显示所有HTTP命令,回复以及数据传输报文,但不显示TCP握手报文,TCP ACK报文以及TCP结束报文。
  • icmp:显示所有ICMP报文。

 

自动完成功能

当我们在过滤区域中输入http.request.method的时候,Wireshark会打开一个窗口来显示一些供我们选择的选项。我们可以使用这个特性查看所有可用的过滤条件。

自动完成功能

 

比较运算符

通过使用运算符可以增添过滤条件,Wireshark针对此功能支持数字比较运算符

  • ==或eq:例如src==192.168.1.100,显示素有源地址为192.168.1.100的数据流
  • !=或ne:例如srcport!=80,显示源端口除了80以外的所有TCP数据流
  • >或gt:例如time_relative>1,显示距前一个报文到达时间相差1秒的报文
  • <或lt:例如windows_size<1460,显示当TCP接收窗口小于1460字节时的报文
  • >=或ge:例如:count.answers >= 10显示包含10个以上answer的DNS响应报文
  • <=或le:例如ttl<=10,显示IP报文中Time to Live字段小于等于10的报文
  • contains:例如http contains “GET”显示所有HTTP客户端发送给HTTP服务器的GET请求
头像
  • ¥ 299.0元
  • 市场价:599.0元
  • ¥ 999.0元
  • 市场价:1599.0元
  • ¥ 199.0元
  • 市场价:399.0元
  • ¥ 99.0元
  • 市场价:129.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: