黑客是怎样监控你所有打开EXE程序的?

李志宽
• 阅读 1356

技术应用背景:

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

效果展示:

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

黑客是怎样监控你所有打开EXE程序的?

功能代码实现:

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

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

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

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

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

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

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

黑客是怎样监控你所有打开EXE程序的?

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

黑客是怎样监控你所有打开EXE程序的?

知识背景清单:

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

WMI技术可以应用于:

  • 查询获取正在运行进程信息;
  • 查询获取正在运行线程信息;
  • 查询获取桌面信息;
  • 查询获取环境变量信息;
  • 查询获取驱动信息;
  • 查询获取文件夹信息;
  • 查询获取系统信息和系统服务;
  • 查询获取硬件信息;
  • 查询获取磁盘相关信息。

WMI相关概念

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

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

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

WMI相关函数

1.CoInitializeEx函数详解

黑客是怎样监控你所有打开EXE程序的?

2. CoCreateInstance函数详解

黑客是怎样监控你所有打开EXE程序的?

3. ConnectServer函数详解

黑客是怎样监控你所有打开EXE程序的?

4. CoSetProxyBlanket函数详解 黑客是怎样监控你所有打开EXE程序的?

5.ExecNotificationQuery函数详解 黑客是怎样监控你所有打开EXE程序的?

WMI架构解析

下图的WMI架构图来源于MSDN,我们可以从架构图中很清晰的看到WMI主要分为3的层结构。 黑客是怎样监控你所有打开EXE程序的?

1.WMI providersand Managed object(WMI提供者和管理对象) WMI提供者是一个监控一个或者多个的托管对象的COM接口。

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

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

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

黑客是怎样监控你所有打开EXE程序的?

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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
VirtualBox导入已安装好的操作系统的方法
VirtualBox导入已安装好的操作系统的方法1、修改UUID进入VirtualBox安装目录,运行VBoxManage修改UUID,命令运行如下:D:\\VirtualBoxVBoxManage.exe internalcommands setvdiuuid E:\\VirtualX
Stella981 Stella981
3年前
Linux运维常见面试题之精华收录
Linux运维常见面试题之精华收录1、什么是运维?什么是游戏运维?1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术运维又包括很多种,有DBA运维、网站运维、虚
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
晴雯 晴雯
1年前
优化配置Little Snitch for Mac的规则和设置
LittleSnitchforMac是一款专业的macOS防火墙软件,它可以帮助你控制应用程序是否访问网络或者磁盘,并对系统不可信的进程和信息进行监控。如果你想保护你的Mac的网络安全,那么你需要了解如何配置和优化LittleSnitchforMac的规则
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
李志宽
李志宽
Lv1
男 · 长沙幻音科技有限公司 · 网络安全工程师
李志宽、前百创作者、渗透测试专家、闷骚男一位、有自己的摇滚乐队
文章
89
粉丝
25
获赞
43