导读
查看DeepSeek-R1满血版总结
快速掌握注册表、WMIC、Meterpreter等工具查询与开启3389端口,支持跨系统操作及权限管理,绕过安全限制高效配置远程桌面连接。
内容由DeepSeek-R1模型生成
有用

3389端口全面查询与开启指南

(1) 通过REG查询3389端口状态
执行以下命令,查看3389端口的当前状态(0表示开启,1表示关闭):
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

这样,您就可以轻松地了解到3389端口的当前状态,从而为您的查询和开启操作提供有力支持。
(2) 使用REG查询3389端口(16进制到10进制转换)

执行以下命令,查看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

这样,您可以获得3389端口的详细数据,并进行必要的转换操作。
(3) 使用tasklist和netstat命令查询3389端口

执行以下命令,通过tasklist和netstat查看与3389端口相关的进程和连接信息:

tasklist /svc | findstr "TermService"
netstat -ano | findstr "2028"

这样,您可以获取到与3389端口相关的任务列表和网络连接状态。
有时会遇到特殊情况,例如在虚拟主机上,由于权限较低的用户运行的IIS(Users、IIS_IUSRS),导致tasklist /svc命令无法显示服务名。通过注册表查看,发现相关服务的PID为0xd3d,但在netstat -ano的输出中并未发现3389端口。这可能意味着3389远程终端已被关闭,而在此权限下,我们只能凭借经验来猜测可能被利用的可疑端口号。
(4) 使用Meterpreter查询3389端口
在某些情况下,我们可能无法直接执行netstat、tasklist或reg等命令。然而,通过Meterpreter中的netstat命令,我们可以迅速查询3389端口的状态。首先,我们需要找到正在运行svchost.exe的0.0.0.0地址,然后结合个人经验来推测可能被利用的可疑端口号。

通常,我们知道的常见端口包括FTP、RPC等,但这些都不太可能是我们要找的。因此,我们可以考虑其他可能的端口,例如58895。

(1) 使用MSF命令开启3389端口

支持系统:
XP/Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016

在Meterpreter中运行以下命令:

meterpreter> run getgui -e

请注意,Meterpreter脚本已弃用。建议尝试使用post/windows/manage/enable_rdp模块。

示例用法:

run post/windows/manage/enable_rdp OPTION=value

此脚本由Darkoperator提供,用于配置Windows远程桌面。运行该脚本后,将启用远程桌面功能。

(2) 使用REG命令开启3389端口

支持系统范围:
XP/Win2k3/Win7/Win2k8/Win8.1/Win10/2012/2016

执行以下REG命令:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0

此命令将修改注册表设置,从而开启3389远程桌面端口。请注意,执行此类操作需要相应权限,并请谨慎使用。
/f

(3) 使用WMIC命令开启3389端口

此命令适用于以下操作系统:Win2k3、Win7、Win2k8、Win8.1、Win10、2012以及2016(其中1表示开启,0表示关闭)。

请在命令提示符下输入以下指令:

wmic /namespace:\root\cimv2\terminalservice rdtoggle where servername='%computername%' call SetAllowTSConnections

执行完毕后,3389端口将根据您设定的状态进行开启或关闭。请注意,此操作需要管理员权限。

  1. 确保“Windows Management Instrumentation(Winmgmt)”服务已正常启动。这是使用WMIC命令的前提条件。
    (4) 使用WMIC命令开启远程主机的3389端口

此命令适用于Windows 2000、XP和Windows 2003操作系统。通过WMIC,您可以远程管理并开启主机的3389端口,该端口通常用于远程桌面连接。

命令格式如下:

wmic /node:<目标主机名或IP地址> /user:<用户名> /password:<密码> portopening where Name="net.tcp" and Protocol="TCP" and PortNumber=3389 enable

请确保替换 <目标主机名或IP地址><用户名><密码> 为实际的值,并根据需要调整其他参数。执行此命令后,远程主机的3389端口将被开启,允许远程桌面连接。
192.168.0.103
/user:administrator /password:betasec PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections

在Windows操作系统中,您可以通过WMIC命令开启远程主机的3389端口,以允许远程桌面连接。若要执行此操作,您需要指定目标主机的IP地址、用户名和密码。此外,还可以使用其他WMIC命令来配置远程终端服务设置,例如允许或禁止远程连接。在上述示例中,我们展示了如何使用WMIC命令路径和调用方法来开启远程终端服务的允许连接设置。请注意,实际使用时需替换命令中的占位符为实际值,并确保在具有适当权限的情况下执行这些命令。

  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

在执行WMIC命令时,通过指定/node参数可以连接至远程主机。然而,上述命令中的某些部分可能需要根据实际情况进行替换。例如,IP地址“192.168.0.116”应替换为实际的远程主机IP,同时,“administrator”和“betasec”应替换为具有相应权限的用户名和密码。此外,“WIN-TO2CN3V2VPR”也应替换为目标主机的实际ServerName。在替换完成后,确保网络连接和安全设置已正确配置,以便能够成功连接到目标主机并执行相关命令。
通过WMIC命令,我们可以连接到远程主机并执行各种操作。在上述命令中,我们指定了/node参数为“192.168.0.116”,即我们要连接的远程主机的IP地址。同时,我们还提供了具有相应权限的用户名和密码,以便能够成功登录到目标主机。接下来,我们使用process call create命令来执行一个特定的操作,即运行一个命令行脚本。该脚本的目的是向Windows注册表中添加一个键值,以禁用终端服务的拒绝TS连接功能。具体来说,我们使用了REG ADD命令来向HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server注册表项中添加一个名为fDenyTSConnections的键值,并将其类型设置为REG_DWORD,值为0,表示禁用该功能。通过这种方式,我们可以实现对远程主机的远程管理和配置。
注意事项:

在利用WMIC进行远程执行命令时,我们需要注意一些关键点。特别是当尝试使用WMIC或REG等命令来开启3389端口时,必须确保远程主机的计算机名被正确指定,而不能简单地使用%COMPUTERNAME%环境变量进行替代。此外,如果在执行过程中遇到“拒绝访问”的错误提示,这通常是由于UAC(用户账户控制)已启用所致,它限制了只有RID500管理员才能执行此类操作。
(5) 使用Windows API开启3389端口

在尝试使用C++编写的“开3389工具”时,我遇到了一个问题。当我在两台Windows2008机器上测试时,分别遇到了缺少vcruntime140.dll和api-ms-win-crt-runtime-l1-1-0.dll的错误。这可能需要我进行调试和重新编译来解决这个问题。

在面对某些安全防护软件阻碍reg和wmic命令开启3389端口的情况时,您可以尝试借助这款名为Open3389的工具。它能够查询并开启3389端口,且支持通过execute-assembly将自身加载到内存中执行,从而绕过安全软件的限制。
应用场景-2:
在某些情况下,目标主机可能部署了安全防护软件,如某锁或某安全卫士,这些软件会拦截rundll32.exe的执行。由于无法通过execute-assembly将其加载到内存中执行,因此只能选择在目标主机上直接执行。不过,目前这种执行方式仍然处于免杀状态。
(6) 使用MSSQL的xp_regwrite功能开启3389端口
在某些情况下,如xp_cmdshell被禁用或删除且无法恢复,我们可以尝试利用xp_regread和xp_regwrite来查询并开启目标机器的3389端口。此外,还可以选择使用sp_OACreate、Agent Job等其他命令执行方式来完成这一任务。
1、查询3389端口开启状态
使用MSSQL的xp_regread功能,我们可以查询目标机器上3389端口的开启状态。具体来说,就是查询注册表键值'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server'下的'fDenyTSConnections'项。如果该值为0,则表示3389端口已开启;若为1,则表示关闭。
2、查询3389远程桌面端口
要查询3389远程桌面端口的当前设置,我们可以使用MSSQL的xp_regread功能来读取注册表中的相关键值。具体来说,就是查询注册表键值'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'下的'PortNumber'项。这个键值就代表了3389远程桌面的端口号。
3、启用或禁用3389远程桌面端口(0表示开启,1表示禁用)

为了启用或禁用3389远程桌面端口,我们可以使用MSSQL的xp_regwrite功能来修改注册表中的相关键值。具体来说,就是修改注册表键值'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server'下的'fDenyTSConnections'项。将其值设置为0可以启用3389远程桌面,而设置为1则可以禁用它。
(7) 3389端口开启失败原因探究

在尝试通过计算机右键、REG或WMIC命令开启3389端口后,发现netstat -ano中无3389端口显示,同时tasklist /svc中也缺少TermService服务。最终在Services.msc中定位到TermService服务时,遇到“<读取描述失败。错误代码2>”的提示。经分析,这表明C:\Windows\System32\termsrv.dll文件已缺失,可能是由于之前测试RDPWrap项目时不慎删除所致。
由于启动TermService服务时必须加载termsrv.dll,而当前系统缺少该文件,因此无法通过常规方法开启3389端口。为解决此问题,我们只需将先前备份的termsrv.dll或找到与当前操作系统版本相匹配的termsrv.dll文件,复制到C:\Windows\System32\目录中,随后启动TermService服务并重新尝试开启3389远程桌面,即可成功解决端口开启失败的问题。

举报/反馈

阿虎踏上冒险征程

16获赞 1粉丝
关注
0
0
收藏
分享