首页 > 其他分享 >PSExec 与 WMI

PSExec 与 WMI

时间:2023-06-29 14:36:30浏览次数:40  
标签:10.1 administrator exe 1.19 WMI PSExec

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

PSExec 与 WMI

1 PSExec

1.1 Windows 下 PSExec 使用

PSExec 原理:

  • 通过管道在远程目标主机上创建一个 PSExec 服务,并在本地磁盘中生成一个名为 PSEXESVC 的二进制文件,然后通过 PSExec 服务运行命令,结束后删除服务。

PSExec 下载地址

利用注意点:

  1. 需要远程系统开启 admin$ 共享(默认开启)

  2. 使用 ipc$ 连接目标系统后,不需要输入账号与密码

  3. 使用 PSExec 执行远程命令时,会在目标系统中创建一个 PSEXESVC 服务。命令执行后, PSEXESVC 服务将被自动删除,由于创建或删除服务会产生大量的日志,可以在进行溯源时通过日志反推攻击流量。

    image-20211111105027627

  4. 使用 PSExec 可以直接获取 system 权限的交互式 shell

# 与目标主机建立 IPC$ 后,获取 system 权限的 Shell
PsExec64.exe -accepteula -nobanner \\10.1.1.19 -s cmd.exe
# -s 获取 system 权限 Shell。没有该参数则会获取一个所连接账户权限的 Shell

# 直接通过 PSExec 进行远程连接
PsExec64.exe -i \\10.1.1.19 -u win7\administrator -p Admin!@# cmd.exe
# 不显示交互式 shell,直接回显命令结果
PsExec64.exe -i \\10.1.1.19 -u win7\administrator -p Admin!@# cmd.exe /c "whoami"

PsExec could not start cmd.exe on 10.1.1.19:
登录失败: 未授予用户在此计算机上的请求登录类型。

解决方式:对于 PsExec version 2.30+ 需要在命令行中添加 -i 选项!

1.2 MSF 中的 PsExec 模块如下

exploit/windows/smb/psexec
auxiliary/scanner/smb/impacket/dcomexec
exploit/windows/smb/ms17_010_psexec
auxiliary/admin/smb/ms17_010_command
auxiliary/scanner/smb/psexec_loggedin_users
auxiliary/admin/smb/psexec_ntdsgrab
exploit/windows/local/current_user_psexec
encoder/x86/service
auxiliary/scanner/smb/impacket/wmiexec
exploit/windows/smb/webexec
exploit/windows/local/wmi

image-20211111110722282

1.3 Python Exp

2 WMI

WMI(Windows Management Instrumentation)是一系列工具的集成,用户可以使用 WMI 管理本地和远程计算机。使用 wmiexec 进行横向移动时,默认不会将 WMI 的操作记录在日志中,有较好的隐蔽性。

wmic /node:10.1.1.19 /user:win7\administrator /password:Admin123 process call create "cmd.exe /c ipconfig > c:\ip.txt"

# 查看 WMI 所执行的内容
net use \\10.1.1.19\ipc$ Admin123 /user:win7\administrator
dir \\10.1.1.19\c$\
type \\10.1.1.19\c$\ip.txt

WMI RPC 服务器不可用(The RPC server is unavailable. ) 问题解决

  1. 检查远程服务器 “Remote Procedure Call”、“DCOM Server Process Launcher” 和 “DHCP Client”服务是否开启
  2. 检查远程服务器 本地安全策略--本地策略--安全选项--网络访问:本地帐户的共享和安全模式--属性 选择:经典-本地用户以自己的身份验证
  3. 在远程服务器上,运行"netsh firewall set service RemoteAdmin".
# impacket 工具包中的 wmiexec
git clone https://github.com/CoreSecurity/impacket.git
python3 wmiexec.py administrator:[email protected]

# wmiexec.vbs
# 下载地址:
https://github.com/k8gege/K8tools/blob/master/wmiexec.vbs
# get远程主机 cmd
cscript //nologo "wmiexec.vbs" /shell 10.1.1.19 administrator Admin123
# 在远程主机上执行 ipconfig
cscript "wmiexec v1.1.vbs" /cmd 10.1.1.19 administrator Admin123 "ipconfig"
# 运行时间长的命令时,如ping,systeminfo之类的,记得加上-wait 5000 或者更久的时间选项
# 运行 nc 反弹或者木马等不需要输出结果、同时需要一直运行的程序时,一定要加上-persist选项,不然你就只能去 taskkill 远程结束进程了

# PowerSploit 中的 Invoke-WmiCommand.ps1 脚本主要通过 PowerShell 调用 WMI 来远程执行命令,本质上还是利用 WMI。信息要一次输入正确,否则无法正常连接。
# 导入 Invoke-WmiCommand.ps1 脚本
Import-Module .\Invoke-WmiCommand.ps1
# 指定目标系统用户名
$User = "test\administrator" 
# 指定目标系统的密码
$Password = ConvertTo-SecureString -String "Admin@123" -AsPlainText -Force
# 将账号和密码整合起来,以便导入 Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password
# 指定要执行的命令和目标 IP
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 10.1.1.21
# 将执行结果输出到屏幕上
$Remote.PayloadOutput


# Invoke-WMIMethod 是 PowerShell 自带的一个模块,也可以用它来连接远程计算机执行命令和指定程序。
# 指定目标系统用户名
$User="test\administrator"
# 指定目标系统密码
$Password=ConvertTo-SecureString -String "Admin@123" -AsPlainText -Force
# 将账号和密码整合起来,以便导入 Credential中
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password
# 在远程系统中运行 calc.exe 命令
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "10.1.1.21" -Credential $Cred

标签:10.1,administrator,exe,1.19,WMI,PSExec
From: https://www.cnblogs.com/f-carey/p/17414891.html

相关文章

  • WMIC远程执行命令横向移动
    WMIC远程执行命令横向移动目录WMIC远程执行命令横向移动一、wmic介绍二、wmic常用命令三、wmic配合powershell上线CS四、Wmiexec配合powershell上线CS五、wmiexec.vbs配合powershell上线CS六、Invoke-WMIExec.ps1配合powershell上线CS七、Invoke-WMIMethod.ps1上线CS一、wmic介......
  • Qt使用wmic获取硬件序列号
    一、1.命令框输入wmic 二、#include"hardware_info.h"#include<QProcess>#include<QDebug>hardware_info::hardware_info(){}QStringhardware_info::get_cpu_id(){QStringListarg;arg<<"cpu"<<"ge......
  • Windows远程命令执行——psexec、wmiexec、wmic、nc,这属于横向移动范畴,另外还有smbexe
    环境:Win10、Win7虚拟机Windows远程命令执行1、psexec.exe远程执行命令psexec\\192.168.30.128-uAdministrator-p123456789cmd.exe 这里一开始登陆的是另一个管理员账号,但是一直被拒绝访问,后来把Administrator账号取消隐藏,一下就连接上。之后看到一篇文章也有一样的情况,只有A......
  • 在C#中使用WMI
    关于WMI的介绍可以参考https://www.cnblogs.com/zhaotianff/p/14764740.html 在C#中使用主要用到ManagementClass和ManagementObjectSearcher两个类 示例代码如下:1internalclassWMIHelper2{3internalstaticstringGetWmiProperty(stringwmiObj......
  • 命令查看windows系统软硬件信息(systeminfo、wmic系列)
    1、systeminfo(查看计算机的基本信息,包括计算机名、网络适配器信息等)    2、wmic系列(可以将brief替换为full获得更加详细的信息)wmicdiskdrivelistbrief(查......
  • Monitoring Performance Using WMI
    LearnPreviousVersionsWindowsScriptingScriptingClinic How'sMyDriving?MonitoringPerformanceUsingWMIArticle06/30/200631minutestoread......
  • WMI Scripting Primer
    WMIScriptingPrimer:Part1Article06/30/200625minutestoread GregStemp,DeanTsaltas,andBobWellsMicrosoftCorporationEthanWilanskyNetwork......
  • wmic 常用的获取计算机信息的命令
    wmicosgetsystemdirectory#获取系统的安装路径wmicbiosgetserialnumber#获取主板的序列号wmiccpugetname#获取CPU的名字wmiccomputersystemgetmodel......
  • WMI and ACPI 问题
    微软的资料如下:​​http://msdn.microsoft.com/en-us/library/windows/hardware/Dn614028(v=vs.85).aspx​​Code:​​http://code.msdn.microsoft.com/windowshardware/WMI-......
  • 如何在powershell中处理wmi查询返回的时间
    如何将wmi中返回的时间转化成可识别时间wmi中获取的时间类似于这种20230112005430.373878-000 以下代码用户返回操作系统安装时间用来做实验(gwmi-Query"SELECT*FROM......