百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

WMI攻击-基础篇(一)(攻击miss)

cac55 2024-10-13 01:22 21 浏览 0 评论

#WMI攻击-基础篇(一)

这篇文章是关于WMI攻击系列文章的第一部分,面向新手。如果对Powershell有一定了解会对阅读本文有所帮助,但这并不是必需的,我们直接上干货。

#1、概述

为什么是WMI?

WMI 是 Microsoft 的一组规范,是为了对 Windows 系统进行快速高效的管理。WMI 存在于所有可用的 Windows 操作系统版本中。正如你可能知道的那样,安全规则说“任何对管理有用的东西也很容易被攻击者滥用”。 WMI 确实可以做很多事情——从收集计算机状态和配置设置到运行应用程序和执行代码。

什么是WMI?

WMI 全称 Windows Management Instrumentation,它是 Microsoft对 CIM(通用信息模型)和 WBEM(基于 Web 的企业管理)的实现——这两者都是 DMTF(分布式管理任务组)标准。 WMI 为应用程序/脚本提供了一个统一的界面来管理计算机(可能是远程的和本地的)——包括。流程、服务等。

WMI架构

了解体系结构对于了解整个WMI生态系统的工作方式非常重要。下图描述了WMI体系结构的大概组成(源自 Graeber 在 BHUSA 15 的演讲):

主要组件有:

  • Clients/Consumers: 与 WMI 类交互以查询数据、运行方法等的最终使用者。常见客户端有:wmic.exe, wbemtest.exe, winrm.exe, VBScript/JScript 和 ofc Powershell cmdlets。
  • Query Languages:和 SQL 提供查询数据库的方法类似,WMI 也有用于查询 WMI 服务的 WQL(WMI 查询语言)/CQL。在管理远程机器方面,WBEM 标准开始发挥作用——其中包括 DCOM 和 WS-Man。 WQL 基本上是 WMI 的 SQL 语法,不区分大小写。一个简单的查询可能如下所示:
  • select * from win32_bios
  • 查询有关 BIOS 的信息
  • Repositories:这些是我们之前讨论过的存储类的所有静态数据(定义)的数据库。存储库由定义结构、类、命名空间等的 MOF(托管对象格式)文件定义。数据库文件可以在 %WINDIR%\System32\Wbem\Repository 目录下找到。

  • MOF Files:MOF 文件用于定义 WMI 命名空间、类、提供程序等。在 %WINDIR%\System32\Wbem 目录下可以找到它们,扩展名为 .mof。在本系列的后面部分,我们将了解如何编写自己的 MOF 文件来扩展 WMI 的功能集。
  • Providers:可以在 WMI 提供程序的帮助下访问存储库中定义的任何内容。它们通常是 DLL 文件并与 MOF 文件相关联——如:cimwin32.dll、stdprov.dll 等,但是,它们也可以采用其他类型的形式(类、事件、事件消费者、方法等) 。提供程序对生态系统至关重要,因为它们监视来自特定定义对象的事件和数据。提供程序为托管对象和WMI之间架起一座桥梁。在下面的屏幕截图中,DLL 文件是相关 MOF 文件的提供程序:

  • Managed Objects:这些是上下文中资源的别名,即托管对象可以是由WMI管理的服务、进程或操作系统。
  • Namespaces:名称空间是类的逻辑划分,便于发现和使用。他们被分成3组和3中类型:
    • system
    • core
    • extension
  • 3种类型:
    • abstract
    • static
    • dynamic
  • 其中几个重要的命名空间:root\cimv2, root\default, root\security, root\subscription等。
  • 以上这就是WMI的架构。接下来让我们学习一下如何在 Powershell 中使用 WMI

#2、在Powershell 中使用WMI

前面我们已经学习了理论部分,让我们实践一下。重要的是要记住,在 Powershell v2 之前,只有少数 cmdlet 可以与 WMI 交互。检查Powershell 版本并将版本更改为 2:

执行如下命令:

Get-Command -CommandType Cmdlet *wmi*

提示:命令的名称一目了然(我们稍后还会深入研究)。在任何时候,都可以使用 Powershell 的标准语法:help <command> 获取有关特定命令功能的更多信息。例如你可能想尝试 help Invoke-WmiMethod 来查看该命令的作用,这一点与 Linux 的manpages非常相似。

从 Powershell v3 开始,MS 引入了 CIM cmdlet,它利用 WS-MAN 和 CIM 标准来管理对象。访问 CIM cmdlet 在以下两个方面具有优势:

  • 在WMI/DCOM本身被阻止运行的计算机中(可能是由于基于主机的防火墙规则?)但是,如果启用了WinRM/WS-MAN(Windows远程管理),我们仍然可以使用CIM来执行WMI的操作。
  • CIM 本身是一个行业标准并且是跨平台实现的,这意味着它也可以用于非 Windows 设备。
  • DCOM:DCOM是分布式组件对象模型(Distributed Component Object Model)的别名,是一种专有的Microsoft协议,用于联网计算机上的软件组件之间的通信。WMI使用分布式COM(DCOM)连接到远程计算机。但是,DCOM 对防火墙并不那么友好。
  • WS-MAN:WS-MAN 或 WS-Management 是一种 DMTF 标准,它为系统提供了一种通用的方式来访问IT基础架构中的管理信息。另一方面,WS-MAN 使用 HTTP,因此对是防火墙友好的。

将 Powershell 版本更改回默认值后(在我的例子中是 Powershell v5)重新执行上面的操作:

正如上面所说,CIM cmdlet可以做WMI cmdlet所能做的一切。如果要在WMI cmdlet和CIM cmdlet之间映射功能,下面是这两种类型之间功能比较的表格:

Use \ Types

WMI Cmdlets

CIM Cmdlets

获取有关类的信息

Get-WmiObject

Get-CimInstance

调用方法

Invoke-WmiMethod

Invoke-CimMethod

订阅事件

Register-WmiEvent

Register-CimIndicationEvent

创建/更新类的实例

Set-WmiInstance

Set-CimInstance

删除类的实例

Remove-WmiObject

Remove-CimInstance

#3、使用 Powershell 运行 WMI 查询

现在我们已经知道了可供我们使用的不同cmdlet,我们可以尝试运行上面的示例WQL查询。我们已经知道Get-WmiObject可用于获取有关类的信息。因此,使用-query参数运行cmdlet:

Get-WmiObject -Query 'select * from win32_bios'

#4、总结

通过本篇文章的学习,相信你对WMI已经有所了解,这里面有很多专业名词,但理解它们是非常必要的,这有助于后续内容的学习。下次见。

#说明

本文由笔者在原文基础上编译,转载请注明出处。

原文地址:https://0xinfection.github.io/posts/wmi-basics-part-1/

相关推荐

14款健身APP蹿红 看看下载最多的是哪款?

Zombies,Run!($3.99,安卓,iOS)如果你的运动理念是:除非有人追,否则绝不跑起来,那么这款APP应该适合你。Zombies,Run!这款程序把单调的跑步过程变身为躲避僵尸的游戏...

微软官方彩蛋庆祝《回到未来》纪念日

2015年10月21日,是MartyMcFly和Brown博士回到未来的时间。现在,这一天真的到了,那么当时影片中展示的一些科技产品究竟有多少实现了呢?作为一家走在技术前沿的公司,日前,微软就在M...

时尚圈最潮同志情侣 帅到没朋友(同志情侣微信头像)

来源:MSN时尚综合|2015-03-0419:45:15男演员ZacharyQuinto(中)与男模MilesMcMillan(右)于纽约街头公开热吻。情人节这个拥有不同起源传说,最早可以...

IE浏览器阻止过期ActiveX控件或将影响网银的使用

IE浏览器网银IE浏览器网银如果经常使用IE浏览器浏览网页的用户,可能都有遇到过浏览器窗口提示安装ActiveX控件的情况,一般情况下用户也是会选择直接安装。ActiveX控件广义上是指微软公司的整...

如何使Microsoft Band连接到WP设备

如果你幸运地购买到了MicrosoftBand,那么恭喜你。现在我们(winbeta)推出了“帮助系列”,那些尚未买到MicrosoftBand的朋友可以了解设备的一些新功能,以及设备的其他关键特...

毕业生不得不看的五大骗局全揭秘(毕业生防骗)

目前,距离高校大学生毕业已不足100天,大部分毕业生都十分忙碌。论文定稿、答辩,参加招聘、面试等成了应届毕业生的头等大事。但随着毕业季的临近,不法分子专门针对毕业生的诈骗高发期也随之来临。360手机安...

菠萝觅生活是O2O应用流量入口最大的供应商

现在主流的传统O2O生活服务,他们其实都有一个共通点,那就是各行其道。打车有快的,滴滴,外卖有饿了么,买机票有去哪儿网…每个APP都有着自己的核心竞争力。而用户呢?既想拥有海量有趣应用,又担心占用过多...

WP8.1版MSN健康应用,现已支持锁屏计步

IT之家(www.ithome.com):WP8.1版MSN健康应用,现已支持锁屏计步@WP之家报道,微软今天已将必应系列应用品牌归为MSN,除此之外,WP8.1版MSN健康和天气应用也获得一些新的...

短信就能传播手机病毒?看完推理惊呆了!

很多人都收到过一种带网址的陌生短信,有的人会点击网址看看,有的还会在好奇心驱使下回复短信。近日《北京新发现》栏目报道了一起离奇的电信诈骗案,事主耿先生的银行卡从未离身,但是在收到一条带网址的陌生短信,...

微软OneClip:我承包了你的剪贴板(微软onedrive云空间)

不久前,Twitter用户WalkingCat曝光了微软一款名为OneClip的应用。这是一款剪贴板应用,根据描述这款应用将覆盖Windows10(包括桌面和移动)、iOS和Android平台,可以...

Windows 10手机应该是什么样?微博用户给出了概念图

随着Windows10发布的不断临近,WindowsPhone的用户对Windows10的旗舰手机的期望也越来越高,我们WP中文网也在微博上发出了同样的问题,搜集用户对Windows10的硬...

云管家出席武汉2015年支付宝O2O生态峰会

2月4日,蚂蚁金服O2O生态峰会在武汉启幕。此次峰会展现了2015年蚂蚁金服在O2O领域的开放思路和策略,以及合作伙伴对O2O的创新观念及思路分享,吸引了武汉近3000名企业大佬、众多创业者、第三方服...

微软将于下周开启Windows开发中心帐号迁移工作

自下周开始微软将启动Windows开发中心的帐号迁移工作。根据WindowsBuildingApps博客透露Windows开发中心帐号迁移工作将会分为几个阶段。首个阶段从下周开始持续到今年7月份...

如何解绑已经合并的MSN账户和Skype账户?

如果您绑定的账户已经充值,建议您把产品消耗完毕后,再进行解绑。当您需要解绑合并的账户时,可登入Skype点卡账户自助操作。输入Skype或MSN账号、密码登录账户:登录后,可在页面左下角选择语言"中文...

微博账号已显示所属MCN机构,成为目前第二个上线该功能的平台

7月25日,多位网友发现,部分微博大V的个人主页已经显示其所属的MCN机构名称,微博也成为目前第二个上线该功能的平台。【来源:中新经纬】声明:此文版权归原作者所有,若有来源错误或者侵犯您的合法权益,您...

取消回复欢迎 发表评论: