带你掌握不一样的监控进程技术

公众号:小道安全
• 阅读 1967

文章目录

1.技术应用背景

目前已知在杀毒厂商以及游戏厂商的安全对抗过程中,常常需要准确的监控收集并进行检测用户创建打开的EXE应用程序是否是安全的。同时也可以将此技术应用于其他应用的安全对抗方案中。那么如何去准确的监控和收集用户每次点击打开的EXE应用程序信息呢?接下来我就进行还原实现下如何准确的监控并收集用户每次点击打开EXE应用程序技术。

2.效果展示

下图展示的是开启监控程序,这是进行监控电脑上包括系统自启动EXE程序以及用户主动点击启动应用程序的信息。
带你掌握不一样的监控进程技术

3.功能代码实现

实现监控用户所有创建打开EXE程序的数据需要以下几个步骤:

1.通过调用CoInitializeEx函数,进行对COM初始化。

2.通过调用 CoCreateInstance函数, 获得WMI的定位器。

3.通过调用IWbemLocator::ConnectServer函数,并指定函数的参数 strNetworkResource 的值为 “root\cimv2”, 从而实现连接到 "IWbemServices"服务器。

  1. 通过调用CoSetProxyBlanket函数,进行设置 IWbemServices的代理,目的是为了WMI 服务能够模拟客户端角色。

5.通过调用 ExecNotificationQuery函数, 来进行查询接收事件。

下图这部分代码主要的目的是为了初始化COM和WMI的设置。

带你掌握不一样的监控进程技术

下面代码主要实现查询接收事件,也就是通过ExecNotificationQuery查询来循环获取用户所创建打开的所有EXE的数据。

带你掌握不一样的监控进程技术

4.知识背景清单

概述:WMI技术算得上是一个很古老的技术,它是由微软提供的,同时也是一种非常可靠的解决方案。WMI它还有一个非常大的优势,可以进行访问远程电脑。它是Windows操作系统中管理数据和操作的基础模块,它提供了一个通过操作系统、网络和企业环境去管理本地或远程计算机的统一接口集。

WMI技术可以应用于:

1.查询获取正在运行进程信息;

2.查询获取正在运行线程信息;

3.查询获取桌面信息;

4.查询获取环境变量信息;

5.查询获取驱动信息;

6.查询获取文件夹信息;

7.查询获取系统信息和系统服务;

8.查询获取硬件信息;

9.查询获取磁盘相关信息。

5.WMI相关概念

1.WBEM它的全称:Web Based Enterprise Management(基于web的企业管理),它是一种行业规范,建立在企业网络中访问和共享管理信息的标准。

2.WMI它的全称:Windows Management Instrumentation(Windows管理工具),它是WBEM的Windows实现,也就是它要遵守WBEM规则。通过WMI,我们可以获取关于硬件和软件的相关数据,也可以提供关于硬件或软件服务的数据给WMI。

3.COM 它的全称:Component Object Model(组件对象模型),它是由微软推出的一套接口规范,通过设定不同组件之间需要遵守的标准与协议,主要用来跨语言、跨进程之间的模块通信。

6.WMI相关函数

1.CoInitializeEx函数详解

带你掌握不一样的监控进程技术

  1. CoCreateInstance函数详解

带你掌握不一样的监控进程技术

  1. ConnectServer函数详解

带你掌握不一样的监控进程技术

  1. CoSetProxyBlanket函数详解

带你掌握不一样的监控进程技术

5.ExecNotificationQuery函数详解

带你掌握不一样的监控进程技术

7.WMI架构解析

下图的WMI架构图来源于MSDN,我们可以从架构图中很清晰的看到WMI主要分为3的层结构。

带你掌握不一样的监控进程技术

1.WMI providersand Managed object(WMI提供者和管理对象)

WMI提供者是一个监控一个或者多个的托管对象的COM接口。

托管对象是指逻辑或者物理组件,例如硬盘驱动器、网络适配器、数据库系统、操作系统、进程或者服务。

WMI提供者通过托管对象提供的数据向WMI服务提供数据,同时将WMI服务的请求传递给托管对象。

WMI提供者是由实现逻辑的DLL和承载着描述数据和操作的类的托管对象格式MOF(Managed Object Format)文件组成。其中这个两个文件都保存在\Windows\System32\wbem目录下。

带你掌握不一样的监控进程技术

2.WMI Infrastructure(WMI基础结构)

WMI的基础结构是Windows系统的系统组件。它主要包含两个模块:包含WMI Core(WMI核心)的WMI Service(WMI服务)和WMI Repository(WMI存储库)。

WMI存储库是通过WMI Namespace(WMI命名空间)组织起来的。在系统启动时,WMI服务会创建例如root\cimv2、root\default、root\subscription等等命名空间。

WMI服务扮演着WMi提供者、管理应用和WMI存储库之间的协调者角色。一般来说,它是通过一个共享的服务进程svchost来实施工作的。当第一个管理应用向WMI命名空间发起连接时,WMI服务将会启动。当管理应用不再调用WMI时,WMI服务将会关闭或者进入低内存状态。

3.WMI Consumers(WMI使用者)

它位于WMI构架的最顶层,它是WMI技术使用的载体。对于使用C++代码实现我们就可以直接通过COM技术直接与下层进行通信。对于.net平台语言,则要使用System.Management域相关功能与下层进行通信。WMI的使用者,可以进行查询、枚举数据,也可以运行Provider的方法,还可以向WMI订阅消息。其中这些数据操作都是要有相应的Provider来提供。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
Linux查看GPU信息和使用情况
1、Linux查看显卡信息:lspci|grepivga2、使用nvidiaGPU可以:lspci|grepinvidia!(https://oscimg.oschina.net/oscnet/36e7c7382fa9fe49068e7e5f8825bc67a17.png)前边的序号"00:0f.0"是显卡的代
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
KDE发布首个4.7 RC发行
KDEShipsFirst4.7ReleaseCandidateKDE发布首个4.7RC发行By:SebastianKügler,in:20110625,about;KDEOfficialNews发表于:2011年6月25日北京时间08:00KDEhasrelease
Stella981 Stella981
3年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
公众号:小道安全
公众号:小道安全
Lv1
擅长各种安全开发逆向破解黑客技术,欢迎交流技术。
文章
8
粉丝
0
获赞
1