WMI的全称是Windows Management Instrumentation(Windows管理规范),是微软在Windows操作系统中内置的一套管理框架和基础结构。
它就是Windows提供的一个统一“信息仓库”和“管理接口”,让管理员、脚本和应用程序能够用标准的方式获取系统的方方面面数据,甚至执行管理操作(比如重启服务、修改配置等)。
核心作用
- 信息查询:获取硬件型号、BIOS版本、磁盘容量、网络IP、进程列表等。
- 状态监控:实时读取CPU使用率、内存剩余、磁盘吞吐等性能数据。
- 系统配置与操作:可以创建/删除进程、启停服务、修改注册表等(部分操作需要权限)。
- 事件订阅:可以监听系统事件,比如“某个服务意外停止”、“磁盘空间不足”等。
组成
核心组件包括:
WMI服务 (Winmgmt):后台运行的Windows服务,负责处理请求。
WMI存储库:一个保存元数据定义(类、属性、方法)的数据库,启动时从各种提供程序加载。
WMI提供程序 (Provider):一个个特殊的驱动或DLL,它们负责从硬件驱动、注册表、驱动程序等地方收集真实数据,并暴露给WMI。比如“电池”、“磁盘”、“蓝牙”等都有各自的提供程序。
WMI类:数据被组织成“类”(类似于数据库的表),比如Win32_Processor、Win32_LogicalDisk,这些类有属性和方法。
常用WMI项
一、系统身份与基础信息
1. Win32_OperatingSystem
| 属性 |
含义 |
侦探意义 |
Caption |
操作系统全名,如 “Microsoft Windows 10 Enterprise” |
识别系统版本,定位可能的内核漏洞。 |
Version |
内部版本号,如 “10.0.19045” |
精确匹配漏洞库(如 CVE)。 |
BuildNumber |
构建号 |
配合 Version 确定更新程度。 |
OSArchitecture |
32位 / 64位 |
帮助选择攻击载荷(32/64位)。 |
InstallDate |
安装日期 |
判断系统是否长期未重装,可能存在沉积配置缺陷。 |
LastBootUpTime |
上次启动时间 |
了解系统是否长期运行未重启,补丁可能未生效。 |
ServicePackMajorVersion |
服务包主版本 |
旧系统的关键补丁等级。 |
TotalVisibleMemorySize |
可见内存 (KB) |
判断是否虚拟机、服务器或工作站。 |
SerialNumber |
产品序列号(部分) |
有时嵌入组织资产编号。 |
WindowsDirectory |
系统目录路径 |
常见 C:\Windows,确认系统路径。 |
RegisteredUser / Organization |
注册用户/组织 |
可能泄露域名或公司名。 |
2. Win32_ComputerSystem
| 属性 |
含义 |
侦探意义 |
Name |
主机名 |
定位主机在域内的角色。 |
Domain |
域或工作组 |
若返回域名,说明已加入域;若是 WORKGROUP,则是独立机。 |
Manufacturer / Model |
制造商和型号 |
物理机品牌(Dell/HP 等),虚拟机常见 “VMware, Inc.”。 |
SystemType |
x64-based PC 等 |
再次确认位数。 |
TotalPhysicalMemory |
物理内存总量 |
内存过小可能是容器或蜜罐。 |
NumberOfLogicalProcessors |
逻辑处理器数 |
CPU 核心线程数。 |
UserName |
当前登录的用户名 |
若有多用户同时登录,可能透露活跃会话。 |
3. Win32_BIOS
| 属性 |
含义 |
侦探意义 |
SerialNumber |
系统序列号(主板) |
硬件唯一标识,可用于资产追踪。 |
SMBIOSBIOSVersion |
SMBIOS 版本 |
可辅助判断硬件代际。 |
Version |
BIOS 版本 |
极旧 BIOS 可能存在低级漏洞。 |
二、用户与权限
4. Win32_UserAccount
| 属性 |
含义 |
侦探意义 |
Name |
用户名 |
枚举所有本地用户和域用户(Domain 属性筛选)。 |
FullName |
全名 |
可能包含真实姓名,用于社会工程。 |
SID |
安全标识符 |
判断管理员 (S-1-5-21-…-500)、来宾等。 |
Disabled |
是否禁用 |
发现未禁用但未使用的账户。 |
Lockout |
是否被锁定 |
可能正在被暴力破解。 |
PasswordRequired |
是否需要密码 |
若 False 且未禁用,是弱入口。 |
5. Win32_LogonSession
| 属性 |
含义 |
侦探意义 |
LogonId |
会话 ID |
关联进程所在会话。 |
LogonType |
登录类型(2交互,3网络,4批处理,5服务,10远程交互…) |
识别是否有远程桌面会话(类型10),或服务登录。 |
AuthenticationPackage |
身份验证包(如 Negotiate) |
判断认证协议。 |
6. Win32_Group / Win32_GroupUser
| 类/属性 |
含义 |
侦探意义 |
Win32_Group.Name |
组名 |
查找 Administrators、Remote Desktop Users 等高权限组。 |
Win32_GroupUser.PartComponent |
组成员 |
关联用户与组,发现隐藏管理员。 |
三、网络配置与连接
7. Win32_NetworkAdapterConfiguration
| 属性 |
含义 |
侦探意义 |
IPAddress |
IP 地址列表 |
获取本机 IP,判断所在网段。 |
DefaultIPGateway |
默认网关 |
确定出口路由和内网网关。 |
DNSServerSearchOrder |
DNS 服务器列表 |
可能泄露域控制器 IP。 |
DHCPServer |
DHCP 服务器 |
可能是同一子网内的服务器。 |
MACAddress |
MAC 地址 |
唯一标识网卡,可用于 VLAN 跳跃等攻击。 |
DNSDomain |
DNS 搜索域 |
进一步确认所在域。 |
8. Win32_NetworkAdapter
| 属性 |
含义 |
侦探意义 |
NetConnectionID |
网络连接名称(如“以太网”) |
关联到配置。 |
Speed |
速率 (bps) |
判断是千兆/万兆网。 |
PhysicalAdapter |
是否物理网卡 |
排除虚拟网卡,只关注物理通信接口。 |
9. Win32_IP4RouteTable
| 属性 |
含义 |
侦探意义 |
Destination |
目标网络 |
查看路由条目,发现其他可达内网段。 |
NextHop |
下一跳 |
指向其它路由器的 IP。 |
Mask |
子网掩码 |
帮助计算网段大小。 |
10. Active TCP/UDP Connections(MSFT_NetTCPConnection 等)
| 属性 |
含义 |
侦探意义 |
LocalAddress / LocalPort |
本机 IP 和端口 |
发现本地监听的敏感服务(3389, 445, 5985 等)。 |
RemoteAddress / RemotePort |
远程 IP 和端口 |
发现已建立的出站连接,识别 C2 或跳板机。 |
State |
连接状态 (Established, Listen…) |
筛选活跃连接。 |
OwningProcess |
进程 ID |
关联到具体进程,发现恶意软件通信。 |
四、进程、服务与计划任务
11. Win32_Process
| 属性 |
含义 |
侦探意义 |
Name |
进程名 |
查找杀软 (avp.exe, msmpeng.exe)、EDR、数据库进程。 |
ProcessId |
PID |
关联其它类。 |
CommandLine |
启动命令行 |
可能泄露密码、令牌、配置文件路径。 |
ExecutablePath |
可执行文件路径 |
判断是否为标准路径。 |
ParentProcessId |
父进程 PID |
构建进程树,发现异常父子关系。 |
CreationDate |
启动时间 |
近期启动的进程可能值得关注。 |
ThreadCount / HandleCount |
线程/句柄数 |
异常高可能是内存破坏或注入迹象。 |
12. Win32_Service
| 属性 |
含义 |
侦探意义 |
Name |
服务短名 |
已知漏洞服务或错误配置。 |
DisplayName |
显示名 |
伪装服务可能用类似 “Windows Update” 的名称。 |
State |
运行状态 |
识别正在运行的可疑服务。 |
StartMode |
启动类型 (Auto/Manual/Disabled) |
找到自启动的持久化服务。 |
StartName |
运行账户 |
若为 LocalSystem 或其他高权限用户,可能是提权点。 |
PathName |
服务执行路径 |
检查是否存在未引用路径空格漏洞或恶意的可执行文件。 |
13. Win32_ScheduledJob
| 属性 |
含义 |
侦探意义 |
Name |
任务名 |
发现异常计划任务。 |
Command |
执行的命令 |
可能是后门或自动化攻击脚本。 |
StartTime |
开始时间 |
找出高频执行的任务。 |
Enabled |
是否启用 |
排查被手动禁用的威胁。 |
五、已安装的软件与补丁
14. Win32_Product
| 属性 |
含义 |
侦探意义 |
Name |
软件名称 |
枚举所有 MSI 安装的程序。 |
Version |
软件版本 |
对比漏洞库找可利用的旧版。 |
Vendor |
开发商 |
找到第三方软件(Java, Adobe, Office 等)。 |
IdentifyingNumber |
GUID |
可用于静默卸载或伪装。 |
InstallDate |
安装日期 |
近期安装的可能是管理员刚装的工具。 |
15. Win32_QuickFixEngineering
| 属性 |
含义 |
侦探意义 |
HotFixID |
补丁编号(如 KB5012599) |
列举已安装补丁,反向判断缺失的补丁(可能包含提权漏洞)。 |
InstalledOn |
安装时间 |
评估修补节奏。 |
Description |
描述 |
可发现安全更新频率。 |
六、磁盘、文件与共享
16. Win32_LogicalDisk
| 属性 |
含义 |
侦探意义 |
DeviceID |
盘符 |
发现非标准挂载(D:, E: 为数据盘)。 |
FileSystem |
文件系统 |
NTFS 表示正常磁盘。 |
FreeSpace / Size |
可用/总容量 |
发现大容量存储,可能是文件服务器。 |
DriveType |
类型 (2=可移动,3=本地,4=网络) |
网络映射盘可能指向 NAS 或文件共享。 |
VolumeName |
卷标 |
有时透露分区用途 (DATA, BACKUP)。 |
17. Win32_Share
| 属性 |
含义 |
侦探意义 |
Name |
共享名 |
如 C$, ADMIN$ 默认管理共享,以及自定义共享。 |
Path |
共享路径 |
定位共享的实际目录。 |
Description |
描述 |
有的会写 “公共”、”财务部”等线索。 |
Type |
共享类型 (0=磁盘,1=打印,2=设备…) |
确定共享性质。 |
18. Win32_Directory / CIM_DataFile(文件搜索)
| 属性 |
含义 |
侦探意义 |
Name |
文件/目录全路径 |
用 WQL 语句搜索关键词(如 pass, config, .kdbx)。 |
FileSize |
文件大小 |
搜索大文件可能是归档或数据库。 |
LastModified |
最后修改时间 |
近期修改的可能是活跃文件。 |
七、安全产品与防火墙状态
19. Win32_Service (再次应用,筛选杀软)
常见杀软服务名:WinDefend, SecurityHealthService, MsMpEng, AvastSvc, McAfeeFramework等。
20. 查询防火墙规则 — SecurityCenter2 或 Windows Firewall
| 类 / 属性 |
含义 |
侦探意义 |
FirewallProduct (SecurityCenter2) |
防火墙产品名称 |
发现第三方防火墙。 |
AntivirusProduct (SecurityCenter2) |
杀毒产品名称和状态 |
可获取安装路径、更新状态。 |
HNetCfg.FwMgr 或 FirewallAPI |
内置防火墙状态 |
判断是否开启、出站/入站策略。 |
22. ROOT\SecurityCenter2: AntiVirusProduct
| 属性 |
含义 |
侦探意义 |
displayName |
防病毒软件显示名称 |
如 “Windows Defender” 或 “Symantec Endpoint Protection”。 |
productState |
产品状态码 |
解析可知是否启用、是否更新。 |
pathToSignedProductExe |
可执行文件路径 |
确认杀软进程路径。 |
八、启动项与持久化
23. Win32_StartupCommand
| 属性 |
含义 |
侦探意义 |
Name |
启动项名称 |
从注册表 Run 键、启动文件夹提取的条目。 |
Command |
执行命令 |
查看是否指向可疑位置。 |
Location |
来源 (Startup, Registry, Common Startup) |
识别是用户级还是系统级启动。 |
User |
所属用户 |
域用户启动项。 |
九、域与横向移动线索
24. Win32_NTDomain
| 属性 |
含义 |
侦探意义 |
DomainName |
域名 |
获取完整域名。 |
DomainControllerName |
域控制器名 |
可直接定位到域控主机名。 |
DnsForestName |
林名称 |
了解整个 AD 架构。 |
25. Win32_NetworkLoginProfile(最后登录信息)
| 属性 |
含义 |
侦探意义 |
Name |
账户名 |
最近通过此主机登录的域帐户。 |
LastLogon |
最后登录时间 |
可判断活动账户。 |
NumberOfLogons |
登录次数 |
高频率账户可能是管理员或服务账户。 |
26. Win32_PingStatus (WMI 封装的 Ping)
| 属性/方法 |
含义 |
侦探意义 |
Address, StatusCode |
目标 IP,返回码 |
不需调用 cmd 就可以扫描内网存活。 |
十、系统事件
27. Win32_NTLogEvent — 经典事件日志条目
| 属性 |
含义 |
侦察含义 |
| EventCode |
事件 ID(如 4624=登录成功,4625=登录失败,7045=新服务安装) |
按安全事件类型精确筛选,是识别入侵痕迹的核心过滤条件 |
| Logfile |
日志来源文件(System / Security / Application 等) |
定位事件所在日志仓库,不同日志记录不同安全维度 |
| Type |
事件级别:Error / Warning / Information / Security Audit Success / Security Audit Failure |
区分正常审计、警告和错误,Audit Success/Failure 直接反映访问是否被允许 |
| Message |
事件完整描述文本(含用户名、IP、进程名、路径等) |
事件解释的关键字段,提取攻击者行为细节(如登录来源 IP、提权命令) |
| TimeGenerated |
事件发生的时间(CIM 格式,含 UTC 偏移) |
构建攻击时间线,按时间范围过滤近期入侵活动 |
| SourceName |
事件来源模块(如 Microsoft-Windows-Security-Auditing、Service Control Manager) |
识别产生事件的子系统,缩小分析范围,快速定位恶意来源 |
| User |
触发该事件的用户账号(DOMAIN\Username) |
关联用户身份,追踪可疑操作的责任账户 |
| ComputerName |
产生事件的计算机名 |
多主机环境中确定事件来源主机 |
| CategoryString |
事件分类文字(如 Logon、Process Creation、Account Management) |
按行为类别快速分组,比 EventCode 更易读 |