标题：WMI
定义
WMI（Windows Management Instrumentation,Windows 管理规范）是一项核心的 Windows 管理技术；用户可以使用 WMI 管理本地和远程计算机。
简介
Windows 2K/XP和Windows 98 都支持WMI；如果为NT 4.0和Windows 95加上了 Service Pack 4或更高版本，N  WMIT 4.0和Win95也支持WMI。因此，用WMI进行远程管理时，并非一定要用Windows 2K/XP（当然，如果WMI脚本在一台没有性能监视器的Win9x机器上运行，就不能在远程Win9x系统上查询Windows 2K/XP的性能监视器。 
如前所述，WMI允许通过一个公共的接口访问多种操作系统构成单元，因此不必分别对待各种底层接口或所谓的“提供者”。利用WMI可以高效地管理远程和本地的计算机；与此相对，并非所有的Windows 2K/XP命令行工具都支持远程运行。 
WMI是WBEM模型的一种实现。WBEM即Web-Based Enterprise Management，或基于Web的企业管理，WBEM由DMTF（Distributed Management Task Force，分布式管理任务组）在许多厂商的帮助下创立，包括Compaq、Sun、Microsoft等。WBEM的目标是，为管理企业环境开发一个标准的接口集。WBEM模型最关键的部分是它的数据模型（或描述和定义对象的方式）、编码规范（Encoding Specification），以及在客户端和服务器端之间传输数据的模式。 
WBEM的数据模型是CIM（Common Information Model，公共信息模型）。CIM是一个用来命名计算机的物理和逻辑单元的标准的命名系统（或称为命名模式），例如硬盘的逻辑分区、正在运行的应用的一个实例，或者一条电缆。 
CIM是一个面向对象的模型，使用一组面向对象的术语进行描述。CIM包含类（Class)，类是被管理单元的模板。类的实例称为对象（Object），对象代表着底层系统的一个具体单元。名称空间（Namespace）是一个类的集合，每个名称空间面向一个特定的管理领域。类包含属性（Property）和方法（Method）。 
CIM分三层。第一层是核心模型（Core Model），这一层包含的类定义对于所有管理领域来说都是共同的。第二层是公共模型（Common Model），这一层包含的类定义对于特定的管理领域来说是公共的，但与具体的操作系统和系统设计无关。第三层是扩展模型（Extension model），这一层包含的类定义与特定的操作系统或技术有关。 
WMI是Microsoft扩展CIM 2.0得到的面向Win32系统的扩展模型。引用WMI类和属性的形式是“扩展前缀_类名称.属性名称”，例如Win32_ComputerSystem. Name，其中Win32是CIM模式cimv2名称空间内WMI扩展类的前缀，ComputerSystem是类，Name是属性。 
编写WMI脚本的很大一部分工作涉及到读取和设置属性值。当前，WMI提供的方法还很有限，但随着时间的推移，相信WMI和CIM提供的方法都会越来越丰富。
操作方法
利用WMI软件开发包（SDK）可以方便地查看可用的CIM和Win32类。WMI SDK可以从MSDN下载。
WMI SDK要求操作系统必须是Windows 2K/XP或者NT 4.0 SP4或更高版本；尽管Win9x系统上可以安装WMI支持软件，但SDK不能在Win9x上运行。另外，为支持SDK的ActiveX控件，SDK还要求有IE 5.0或更高版本。SDK对机器性能的最低要求是：Pentium处理器，32 Mb的RAM，40 Mb的磁盘空间，以及至少要有800 x 600、256色的显示设备。对于运行Windows 2K/XP的机器来说，这些要求应该不会成为问题。CIMOM默认以服务的形式运行，但如果机器没有网卡，CIMOM不能作为服务运行，不过此时可以作为一个应用运行，只需执行winmgmt.exe即可。winmgmt.exe在\%systemroot%\system32\wbem的WMI主目录下。 
SDK必须由管理员组的成员安装。安装过程很简单，执行WMISdk.exe启动向导，指定安装的目标目录（默认是\program files\wmi）。选择要安装的可选组件（默认安装除了SNMP支持以外的所有组件），最后点击Finish。安装SDK不需要重新启动。安装完成后，“开始/程序”菜单上会增加一个WMI SDK组。 
点击WMI SDK程序组的WMI CIM Studio。CIM Studio提示连接名称空间，并显示默认连接的名称空间是root\cimv2，确认即可。如果你用Administrator身份登录Windows，再次点击确定以当前身份登录；如果你用其他的身份登录Windows，请改用Administrator登录。 
现在，假设我们要在当前的机器上查找一个对象：C:驱动器。我们不知道C:驱动器在CIM或WMI中的具体名称，浏览CIM Studio列出的数百个类又太麻烦，怎么办呢？可以使用Find按钮（左边上方的望远镜，参见图三）。图二显示了点击Find按钮后显示的Search for Class对话框，在这里输入我们猜想C:驱动器的类名称中应当包含的单词，然后点击Go!按钮。由于我们正在寻找一个命名的磁盘分区，而且我们知道Windows把这种分区叫做logical disk或logical drive，因此这里的搜索关键词可以是logical。当然，搜索关键词也可以是disk，但这时会有大量的搜索结果出现。
图二显示了搜索关键词logical得到的结果。选择Win32_LogicalDisk并点击OK，图三的窗口出现（为什么不选择CIM_LogicalDisk？前面已经提到，WMI管理的所有对象都带有Win32前缀。如果选择CIM_LogicalDisk然后要求显示出它的实例，不可能看到可用逻辑驱动器的任何具体信息，只能看到对应每一个可用逻辑驱动器的Win32_LogicalDisk条目）。现在，窗口的右边显示出Win32_logicalDisk类的属性。可以看到，属性的值都为空，这是因为我们正在查看的是一个类，而不是类的具体实例。要显示出Win32_LogicalDisk类的实例，点击右边上面的Instances按钮（右数第四）。 
点击Instances按钮之后，窗口显示出当前机器上所有逻辑驱动器的实例，包括网络逻辑驱动器。点击设备ID为“C:”的实例，显示出图四的结果。右边窗格包含了当前实例的属性和方法，当前逻辑驱动器的名称显示在右边窗格的上方。 
利用脚本可以修改这些属性或调用这些方法。如果对某个属性的含义不太清楚，只需选择Win32_LogialDisk类或Win32_LogicalDisk.DeviceID="C:"实例，再点击Help按钮。大多数对象的属性和方法都有详细的说明。
WMI功能
现在很多朋友仍然在使用管理员账号密码为空的系统，这样就为黑客制造了可乘之机，其中系统自带的WMI是最方便的入侵通道。WMI（Windows管理规范）作为一项Windows管理技术，方便用户对计算机进行远程管理。但是它的易用性也导致了系统的安全性大幅下降。让用户的电脑除了自己账号密码的保护外再没有什么安全保护措施。本期我们就向大家介绍“菜鸟”级的黑客都可以轻易利用的入侵通道——WMI（Windows管理规范）。
小知识：什么是WMI？
WMI是一项核心的Windows管理技术，WMI作为一种规范和基础结构，通过它可以访问、配置、管理和监视几乎所有的Windows资源，比如用户可以在远程计算机器上启动一个进程；设定一个在特定日期和时间运行的进程；远程启动计算机；获得本地或远程计算机的已安装程序列表；查询本地或远程计算机的Windows事件日志等等。本质善良的WMI从WMI本来的功能看，它是为了让计算机的管理更容易，同时方便管理员远程操作系统而产生的，那么它又怎么会为“菜鸟”级的入侵者提供方便呢？
一般情况下，在本地计算机上执行的WMI操作也可以在远程计算机上执行，只要用户拥有该计算机的管理员权限。如果用户对远程计算机拥有权限并且远程计算机支持远程访问，那么用户就可以连接到该远程计算机并执行拥有相应权限的操作。
WMI能够成为远程控制下的一个合法通道，有了这个通道，入侵者不需要对自己进行伪装，不必再为探测出对方账号的密码为空后，找不到连接对方系统的通道而发愁。只要进行简单几个步骤就可以轻易地入侵到别人的电脑中。下面，我们就来看看，到底该如何利用WMI通道。WMI被利用为虎作伥前面介绍了WMI的原理，下面我们实际了解下，如何通过WMI进行入侵。在网上，有很多利用WMI的小工具，这里我们就以rots.vbs工具进行简单的演示，看一个“菜鸟”黑客如何轻易地入侵。
1.扫描135端口
要寻找可以通过WMI入侵的远程计算机，只要对135端口进行扫描就可以了。因为WMI服务默认打开的就是135端口。我们本次实例采用的是NTscan扫描工具，因为它不但可以对IPC$、SMB、WMI这些信息进行扫描，同时还可以对扫描到的远程账户进行弱口令猜测，功能相对来说比较强大。
运行NTscan，在程序窗口的“配置”区域中进行设置。首先在“起始IP”和“结束”选项中输入扫描的IP地址范围，接着选择“WMI扫描”选项，并且在“扫描打开端口的主机”选项后输入“135”，最后点击“开始”按钮就开始进行扫描（如图）。　
2.开启终端服务
找到可以入侵的远程计算机以后，就可以开始入侵操作了。首先使用的工具是一个名为rots.vbs的脚本程序，通过它可以开启远程计算机的终端服务。脚本会自动判断目标系统类型，如果不是Windows 2000 Server及以上版本的系统，脚本就会提示是否要取消操作。因为Windows 2000 Pro以下版本不能安装终端服务。
然后是开启终端服务。开启工具的使用方法非常简单，命令格式为：cscript rots.vbs <目标IP> <用户名> <密码> [服务端口] [自动重启选项]
其中，[服务端口]和[自动重启选项]为可选参数，默认情况下，程序开启的终端服务端口为3389，如果用户需要修改，在[服务端口]选项中填入你要的端口即可，而[自动重启选项]选项则是在开启终端服务以后重启系统用的。
举个例子：cscript.exe rots.vbs 192.168.0.6 Administrator "" 4466 /r
上面这段实例的意思是开启192.168.0.6这台远程计算机的终端服务，并且将端口更改为4466，服务安装完成后自动重启。屏闭135端口防御入侵从上面的介绍大家都可以看出，整个过程中使用的端口都是135。所以为了防止别人通过WMI进行入侵，我们可以使用防火墙对135端口进行屏蔽，这样就可以达到防范类似的入侵。用户加强自己的账号密码强度，也可以有效防范入侵。关闭135端口的方法我们使用到十六进制的编辑器，比如：WINHEX、UltraEdit等软件。运行UltraEdit，通过工具栏上的“打开文档”按钮找到系统SYSTEM32文件夹下的rpcss.dll。接着点击“搜索”菜单中的“查找”命令，在弹出的窗口中查找“3100330035”这个字符串，找到后将它替换为“3000300030”，并另存为其他的文件目录中，建议保存在C盘根目录下。
重新启动系统，用启动盘启动到DOS状态下，进入C盘后运行：copy rpcss.dll c:\windows\system32\rpcss.dll，然后重新启动计算机，就会发现135端口已经被关闭。
使用网络防火墙也可以通过端口限制的手段进行屏蔽135端口。我们以天网网络防火墙为例。打开天网防火墙界面，依次点击“IP规则管理→增加规则”，然后在弹出的窗口界面中，在数据包方向中选择“接收或者发送”，在数据包类型中选择“TCP”，最后在本地端口中输入“135”，然后就是确定退出，最后保存规则即可。以后如果有数据从135端口进行传输，天网就会自动进行拦截。
识别代号
世界厂商识别代号
World Manufacturer Identifier
申请WMI的企业应向工作机构提出申请，申请时应如实填写《世界制造厂识别代号(WMI)申请表》，并提交相应的证明材料。