在远程系统上执行程序的技术整理
2016-01-23 17:47
239 查看
0x00 前言
![](http://img2.ph.126.net/t_lSyWL3DGh_3LE5N26AfA==/6630563089863518783.jpg)
上一篇学习了如何导出域内所有用户hash,那么,接下来准备用破解出的用户名口令尝试远程登陆目标主机并执行程序,结合实际环境做了如下测试.
0x01 目标
![](http://img2.ph.126.net/1Eb1JNinSLvdJXg87WjDkQ==/6630417954328101071.jpg)
远程登陆目标主机执行测试程序
0x02 测试环境
![](http://img0.ph.126.net/GTH9mjQm54U119WZyCQjMA==/6608902710795210585.jpg)
远程主机:
ip:192.168.40.137
用户名:test
口令:testtest
操作系统:win7 x64
远程登陆方式:
net use远程登陆,不使用3389
Tips:
解决工作组环境无法远程登陆执行程序的方法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System add a new DWORD (32-bit) called "LocalAccountTokenFilterPolicy" and set it to 1
0x03 测试方法
![](http://img0.ph.126.net/vwGLtYHqVjXA9Pr-lZZ_zA==/6631220597815370082.jpg)
1、at&schtasks
计划任务方式执行程序。
条件:
启动Task Scheduler服务
2、psexec
PsTools工具之一,在指定的一台或多台计算机上运行应用程序
条件:
需要开放ADMIN$共享
3、WMIC
功能强大,可做系统管理、远程主机信息获取
条件:
启动WMI服务,开放135端口
本地安全策略的"网络访问: 本地帐户的共享和安全模式"应设为"经典-本地用户以自己的身份验证"
4、wmiexec
使用VBS脚本调用WMI来模拟psexec的功能,基本上psexec能用的地方,这个脚本也能够使用。
条件:
启动WMI服务,开放135端口
本地安全策略的"网络访问: 本地帐户的共享和安全模式"应设为"经典-本地用户以自己的身份验证"
0x04 实际测试
![](http://img0.ph.126.net/vwGLtYHqVjXA9Pr-lZZ_zA==/6631220597815370082.jpg)
使用用户名口令远程登陆192.168.40.137,如图1
![](http://img1.ph.126.net/bh2qUqSjsNsKVFfX5vEvTQ==/6630480626490883468.jpg)
查看目标主机共享资源,如图1-2
![](http://img0.ph.126.net/sKXBaRr47aq2YbIidhGUMg==/6630300306583927035.jpg)
1、at&schtasks
at \\192.168.40.137
找不到网络路径,判断是目标主机已禁用Task Scheduler服务
如图2
![](http://img2.ph.126.net/n-3fejHf4D0u3vAJd4wktw==/6631277772420014609.jpg)
2、psexec
PsExec.exe \\192.168.40.137 /accepteula -u test -p testtest -c c:\runtest\calc.exe
找不到网络名,判断目标主机已禁用ADMIN$共享
如图3
![](http://img1.ph.126.net/99ggV99pjC9zoqVOIOMVdw==/6630848962886741962.jpg)
3、WMIC
wmic /node:192.168.40.137 /user:test /password:testtest process call create calc.exe
Description = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用
如图4
![](http://img1.ph.126.net/KmMh8_vmzavXsAoUYTNY8Q==/6630852261421625278.jpg)
4、wmiexec
cscript.exe wmiexec.vbs /cmd 192.168.40.137 test testtest "ipconfig"
WMIEXEC ERROR: 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用
如图5
![](http://img1.ph.126.net/TXuMB6DhuZ4MNxxkaKT3vg==/6630251928072303670.jpg)
0x05 分析
![](http://img2.ph.126.net/nUHMN0PzUnuN6v8Cwsk1uw==/6630848962886741972.jpg)
整理下目前掌握的目标主机信息:
目标主机:
1、已获得登陆用户名及口令
2、可以net use连接
3、开放共享C
但是:
1、默认admin$共享关闭,无法使用psexec
2、Task scheduler关闭,无法使用at、schtasks
3、Windows Management Instrumentation服务关闭,关闭135端口无法使用wmic、wmiexec
4、不支持3389
那么,如何在目标主机远程执行程序?
猜测管理员应该是对常用的远程执行程序的方法做了限制,就在一筹莫展的时候突然想到了smbexec,它是基于psexec,如果目标主机开放了其他默认共享,倒是可以尝试smbexec
于是搜索smbexec,终于在GitHub上面找到了一个smbexec的c++参考资料,作为工具改进模版
模版下载地址:
https://github.com/sunorr/smbexec
0x06 改进方案
![](http://img1.ph.126.net/pUzqwAtfuMGkUuQW3rIlOw==/6630873152142548971.jpg)
模版中的bug不细讲,最终我成功用vc6实现了psexec的功能,同时也做了一些改进:
1、可指定默认共享名
为了完成上述测试,加入了参数来指定默认共享,如果ADMIN$共享关闭,那么可以尝试其他磁盘的默认共享
2、分离安装服务的功能
在实际测试过程中,如果ADMIN$共享关闭,c$共享开启,因为UAC的缘故,注册安装服务的功能会出现bug,采取的解决办法为将实现注册安装服务功能的exe单独上传至c:\windows下,
即可解决权限不够的问题
0x07 方案测试
![](http://img0.ph.126.net/TVvrSjHunLZyfSDddvSdjg==/6630886346282083434.jpg)
1、工具说明
文件说明:
test.exe:主程序
execserver.exe:实现注册安装服务的辅助程序
参数说明:
test.exe ip user password command netshare
eg:
test.exe 192.168.40.137 test testtest whoami c$
2、使用流程
(1)上传execserver.exe至c:\windows
copy execserver.exe \\192.168.40.137\c$\windows
(2)远程执行
test.exe 192.168.40.137 test testtest whoami c$
如图6
![](http://img2.ph.126.net/q7LPJDQd3jGylIkuSWxvTw==/6630480626490883469.jpg)
最终我们通过改造的smbexec,突破目标主机限制,成功远程执行程序。
程序源码下载链接:
smbexec_source.zip
0x08 补充
![](http://img0.ph.126.net/TVvrSjHunLZyfSDddvSdjg==/6630886346282083434.jpg)
1、powershell remoting
实现在目标主机远程执行程序后,可对目标主机开放powershell remoting,用作远程连接
条件:
远程连接会有痕迹
本机要开启winRM服务
命令汇总:
列出所有远程信任主机
powershell Get-Item WSMan:\localhost\Client\TrustedHosts
设置信任所有主机
powershell Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force
设置允许运行ps1文件
powershell Set-ExecutionPolicy Unrestricted
执行test.ps1文件
powershell -ExecutionPolicy Bypass -File test.ps1
ps1文件如下:
$UserName = "test"
$serverpass = "testtest" $Password = ConvertTo-SecureString $serverpass -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
invoke-command -ComputerName 192.168.40.137 -Credential $cred -ScriptBlock { ipconfig }
2、python smbexec
随后用python写的smbexec也实现了相同的功能,但py2exe的时候遇到了大麻烦,如果有更简单的方法,
希望能得到你的帮助。
0x09 小结
![](http://img1.ph.126.net/qYhGoaS_NkaEPWHwtFkQqw==/6630257425630444327.jpg)
这篇文章共列举了六种远程执行程序的方法,如果已经成功登陆目标主机,却无法执行程序,最心塞的事情莫过于此。
at
psexec
WMIC
wmiexec
smbexec
powershell remoting
...
获得用户名口令,实现远程执行程序仅仅是个开始,内网渗透会很有趣。
水平有限,欢迎补充。
![](http://img2.ph.126.net/t_lSyWL3DGh_3LE5N26AfA==/6630563089863518783.jpg)
上一篇学习了如何导出域内所有用户hash,那么,接下来准备用破解出的用户名口令尝试远程登陆目标主机并执行程序,结合实际环境做了如下测试.
0x01 目标
![](http://img2.ph.126.net/1Eb1JNinSLvdJXg87WjDkQ==/6630417954328101071.jpg)
远程登陆目标主机执行测试程序
0x02 测试环境
![](http://img0.ph.126.net/GTH9mjQm54U119WZyCQjMA==/6608902710795210585.jpg)
远程主机:
ip:192.168.40.137
用户名:test
口令:testtest
操作系统:win7 x64
远程登陆方式:
net use远程登陆,不使用3389
Tips:
解决工作组环境无法远程登陆执行程序的方法:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System add a new DWORD (32-bit) called "LocalAccountTokenFilterPolicy" and set it to 1
0x03 测试方法
![](http://img0.ph.126.net/vwGLtYHqVjXA9Pr-lZZ_zA==/6631220597815370082.jpg)
1、at&schtasks
计划任务方式执行程序。
条件:
启动Task Scheduler服务
2、psexec
PsTools工具之一,在指定的一台或多台计算机上运行应用程序
条件:
需要开放ADMIN$共享
3、WMIC
功能强大,可做系统管理、远程主机信息获取
条件:
启动WMI服务,开放135端口
本地安全策略的"网络访问: 本地帐户的共享和安全模式"应设为"经典-本地用户以自己的身份验证"
4、wmiexec
使用VBS脚本调用WMI来模拟psexec的功能,基本上psexec能用的地方,这个脚本也能够使用。
条件:
启动WMI服务,开放135端口
本地安全策略的"网络访问: 本地帐户的共享和安全模式"应设为"经典-本地用户以自己的身份验证"
0x04 实际测试
![](http://img0.ph.126.net/vwGLtYHqVjXA9Pr-lZZ_zA==/6631220597815370082.jpg)
使用用户名口令远程登陆192.168.40.137,如图1
![](http://img1.ph.126.net/bh2qUqSjsNsKVFfX5vEvTQ==/6630480626490883468.jpg)
查看目标主机共享资源,如图1-2
![](http://img0.ph.126.net/sKXBaRr47aq2YbIidhGUMg==/6630300306583927035.jpg)
1、at&schtasks
at \\192.168.40.137
找不到网络路径,判断是目标主机已禁用Task Scheduler服务
如图2
![](http://img2.ph.126.net/n-3fejHf4D0u3vAJd4wktw==/6631277772420014609.jpg)
2、psexec
PsExec.exe \\192.168.40.137 /accepteula -u test -p testtest -c c:\runtest\calc.exe
找不到网络名,判断目标主机已禁用ADMIN$共享
如图3
![](http://img1.ph.126.net/99ggV99pjC9zoqVOIOMVdw==/6630848962886741962.jpg)
3、WMIC
wmic /node:192.168.40.137 /user:test /password:testtest process call create calc.exe
Description = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用
如图4
![](http://img1.ph.126.net/KmMh8_vmzavXsAoUYTNY8Q==/6630852261421625278.jpg)
4、wmiexec
cscript.exe wmiexec.vbs /cmd 192.168.40.137 test testtest "ipconfig"
WMIEXEC ERROR: 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用
如图5
![](http://img1.ph.126.net/TXuMB6DhuZ4MNxxkaKT3vg==/6630251928072303670.jpg)
0x05 分析
![](http://img2.ph.126.net/nUHMN0PzUnuN6v8Cwsk1uw==/6630848962886741972.jpg)
整理下目前掌握的目标主机信息:
目标主机:
1、已获得登陆用户名及口令
2、可以net use连接
3、开放共享C
但是:
1、默认admin$共享关闭,无法使用psexec
2、Task scheduler关闭,无法使用at、schtasks
3、Windows Management Instrumentation服务关闭,关闭135端口无法使用wmic、wmiexec
4、不支持3389
那么,如何在目标主机远程执行程序?
猜测管理员应该是对常用的远程执行程序的方法做了限制,就在一筹莫展的时候突然想到了smbexec,它是基于psexec,如果目标主机开放了其他默认共享,倒是可以尝试smbexec
于是搜索smbexec,终于在GitHub上面找到了一个smbexec的c++参考资料,作为工具改进模版
模版下载地址:
https://github.com/sunorr/smbexec
0x06 改进方案
![](http://img1.ph.126.net/pUzqwAtfuMGkUuQW3rIlOw==/6630873152142548971.jpg)
模版中的bug不细讲,最终我成功用vc6实现了psexec的功能,同时也做了一些改进:
1、可指定默认共享名
为了完成上述测试,加入了参数来指定默认共享,如果ADMIN$共享关闭,那么可以尝试其他磁盘的默认共享
2、分离安装服务的功能
在实际测试过程中,如果ADMIN$共享关闭,c$共享开启,因为UAC的缘故,注册安装服务的功能会出现bug,采取的解决办法为将实现注册安装服务功能的exe单独上传至c:\windows下,
即可解决权限不够的问题
0x07 方案测试
![](http://img0.ph.126.net/TVvrSjHunLZyfSDddvSdjg==/6630886346282083434.jpg)
1、工具说明
文件说明:
test.exe:主程序
execserver.exe:实现注册安装服务的辅助程序
参数说明:
test.exe ip user password command netshare
eg:
test.exe 192.168.40.137 test testtest whoami c$
2、使用流程
(1)上传execserver.exe至c:\windows
copy execserver.exe \\192.168.40.137\c$\windows
(2)远程执行
test.exe 192.168.40.137 test testtest whoami c$
如图6
![](http://img2.ph.126.net/q7LPJDQd3jGylIkuSWxvTw==/6630480626490883469.jpg)
最终我们通过改造的smbexec,突破目标主机限制,成功远程执行程序。
程序源码下载链接:
smbexec_source.zip
0x08 补充
![](http://img0.ph.126.net/TVvrSjHunLZyfSDddvSdjg==/6630886346282083434.jpg)
1、powershell remoting
实现在目标主机远程执行程序后,可对目标主机开放powershell remoting,用作远程连接
条件:
远程连接会有痕迹
本机要开启winRM服务
命令汇总:
列出所有远程信任主机
powershell Get-Item WSMan:\localhost\Client\TrustedHosts
设置信任所有主机
powershell Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force
设置允许运行ps1文件
powershell Set-ExecutionPolicy Unrestricted
执行test.ps1文件
powershell -ExecutionPolicy Bypass -File test.ps1
ps1文件如下:
$UserName = "test"
$serverpass = "testtest" $Password = ConvertTo-SecureString $serverpass -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)
invoke-command -ComputerName 192.168.40.137 -Credential $cred -ScriptBlock { ipconfig }
2、python smbexec
随后用python写的smbexec也实现了相同的功能,但py2exe的时候遇到了大麻烦,如果有更简单的方法,
希望能得到你的帮助。
0x09 小结
![](http://img1.ph.126.net/qYhGoaS_NkaEPWHwtFkQqw==/6630257425630444327.jpg)
这篇文章共列举了六种远程执行程序的方法,如果已经成功登陆目标主机,却无法执行程序,最心塞的事情莫过于此。
at
psexec
WMIC
wmiexec
smbexec
powershell remoting
...
获得用户名口令,实现远程执行程序仅仅是个开始,内网渗透会很有趣。
水平有限,欢迎补充。
相关文章推荐
- 内网渗透中的mimikatz
- Linux下中间人攻击利用框架bettercap测试
- Metasploit渗透技巧:后渗透Meterpreter代理
- 设计模式-桥接模式
- 浅析gerrit数据库
- CentOS下Red5安装
- DNS域传送漏洞
- 使用burpsuite对移动app抓包分析
- ThinkPHP最新版本SQL注入漏洞
- 支付宝内部人士是这样设密码的!太牛逼了!
- 犯罪分子如何用身份证套你的钱
- MSSQL注入常用SQL语句整理
- 解析漏洞总结
- Sqlserver2008+搜索型注入技术
- 突破安全狗和360网站卫士
- 关于建立社工库的经验总结
- 一个U盘黑掉你:TEENSY实战
- DNS域传送漏洞利用
- [python]emlog相册插件getshell exploit
- SDR窃听-监听空中的无线电