查询和开启3389端口方式总结

简介: 查询和开启3389端口方式总结

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(Users、IIS_IUSRS),tasklist /svc不显示服务名,注册表查看是0xd3d,但netstat -ano里又没有3389端口,这可能是因为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端口

        支持系统:

        • 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...]


        注:这个脚本可用于开启目标机器的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


        (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)”服务已正常启动。


        (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 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'


        注意事项:

        1. 其实就是利用WMIC远程执行命令的方式来执行WMIC、REG等开启3389端口的命令。
        2. WMIC远程开启3389端口时不能用%COMPUTERNAME%环境变量替代远程主机的计算机名。
        3. 错误:描述 = 拒绝访问,这是因为开启了UAC用户账户控制,只允许RID500管理员执行此操作。


        (5) Windows API开启3389端口

        冷逸老哥用C++写的“开3389工具”有点小问题,在两台Windows2008机器上测试时分别报出缺少vcruntime140.dll、api-ms-win-crt-runtime-l1-1-0.dll,可以自己去调试编译下。


        根据@冷逸老哥的思路用C#也写了一个,目标框架:.NET Framework 2.0,可用CobaltStrike execute-assembly加载到内存中实现无落地执行,其工具原理就是利用RegCreateKeyEx和RegSetValueEx两个API和Microsoft.Win32 RegistryKey类操作系统注册表,与无Net.exe添加管理员用户一样,都是直接利用Windows API执行相应操作!!!


        应用场景-1:

        目标主机因存在某安全防护软件而无法用reg、wmic命令开启3389端口时,可以尝试使用这款工具来查询和开启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开启状态
          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服务时发现:<读取描述失败。错误代码2>,出现这种情况是因为对应的C:\Windows\System32\termsrv.dll文件已经不存在了,可能是笔者以前在测试RDPWrap项目时给误删除掉了。


          启动TermService服务时必须加载termsrv.dll,所以无法通过常规方式开启3389端口,这时我们只需要将原来备份的termsrv.dll或找到对应版本操作系统的termsrv.dll拷贝到C:\Windows\System32\目录下,启动TermService服务,重新开启3389远程桌面后即可解决。


          相关文章
          |
          5月前
          |
          Windows
          windows环境下根据端口号查询进程编号并杀掉此进程
          windows环境下根据端口号查询进程编号并杀掉此进程
          |
          2月前
          |
          网络协议
          Mac根据端口查询进程id的命令
          这篇文章介绍了在Mac操作系统上如何使用两种命令来查询监听特定端口的进程ID。第一种方法是使用`netstat -anp tcp -v | grep 端口号`,例如`netstat -anp tcp -v | grep 80`,这将列出所有使用端口80的TCP连接及其相关信息。第二种方法是使用`lsof -P -n -i:端口号`,例如`lsof -P -n -i:8080`,这将显示使用指定端口的进程列表,包括进程ID、用户、文件描述符等信息。文章通过示例展示了如何使用这些命令,并提供了输出结果的截图。
          181 2
          |
          3月前
          |
          网络协议 Linux
          云服务器内部端口占用,9090端口已经存在了,如何关闭,Linux查询端口,查看端口,端口查询,关闭端口写法-netstat -tuln,​fuser -k 3306/tcp​
          云服务器内部端口占用,9090端口已经存在了,如何关闭,Linux查询端口,查看端口,端口查询,关闭端口写法-netstat -tuln,​fuser -k 3306/tcp​
          |
          5月前
          |
          网络协议 Linux
          Linux如何查询端口被占用?
          在Linux环境中,查询端口占用可使用`netstat`、`lsof`和`ss`命令。`netstat -tulnp | grep 80`显示TCP/UDP监听端口,`lsof -i:80`列出使用80端口的进程,而`ss -tuln | grep 80`是`netstat`的现代替代选项。若需解决端口占用问题,先找出占用进程的ID,然后用`kill -9`命令终止它,或调整服务配置以避免冲突。
          126 1
          |
          iOS开发 MacOS
          Liunx/macOS:进程占用端口查询
          Liunx/macOS:进程占用端口查询
          97 0
          |
          Java 应用服务中间件 Windows
          Tomcat的安装使用,修改默认8080端口号,查询端口号命令
          Tomcat的安装使用,修改默认8080端口号,查询端口号命令
          244 0
          Tomcat的安装使用,修改默认8080端口号,查询端口号命令
          查询zookeeper端口号,报 “stat is not executed because it is not in the whitelist.”
          查询zookeeper端口号,报 “stat is not executed because it is not in the whitelist.”
          304 0
          Nmap 查询指定端口状态
          Nmap 查询指定端口状态
          129 0
          |
          3月前
          |
          弹性计算 应用服务中间件 Linux
          阿里云服务器开放端口完整图文教程
          笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
          632 1
          阿里云服务器开放端口完整图文教程