对云函数隐藏C2技术的防御反制思路
字数 1682 2025-08-26 22:11:22
云函数隐藏C2技术的防御反制思路
前言
随着云函数概念的普及,攻防演练中频繁出现云函数扫描器及云函数隐藏C2服务器的案例。本文详细分析云函数隐藏C2的技术原理,并提供有效的防御反制方法。
环境搭建
腾讯云函数注意事项
-
Python版本选择:
- Python 3.7不自带requests库,需手动安装
- 建议使用Python 3.6(自带requests库)
-
安装方式:
- 新版本在线编辑器支持终端pip安装
- 安装过程可能较慢
-
验证成功:
- 访问80端口显示404为正常现象
- 出现腾讯云日志记录即表示成功
-
C2配置:
- 上线地址需去掉
http://和:80 - 格式应为:
service-xxxxxxxx-xxxxxxxxxx.sh.apigw.tencentcs.com
- 上线地址需去掉
Cobalt Strike流量分析
CS流量可分为三个阶段:
-
Stage下载阶段:
- 远程下载payload(约210KB)
- 注入到目标服务器内存
-
Beacon心跳包阶段:
- 按配置文件以GET方法向C2发起心跳请求
- 宿主机信息经过公私钥加密后发送
-
命令执行与回传阶段:
- C2通过HTTP返回包下发命令
- Beacon通过POST方法回传执行结果
Stage下载阶段特征
-
请求包:
- 路径ASCII之和与256取余等于92(checksum8规则)
-
返回包:
- 包含回连地址、加密字段、公钥等配置信息
- 云函数特有属性:
X-Request-Id: 请求IDX-Api-FuncName: 函数名(可伪装)X-Api-AppId: 对应账号IDX-Api-ServiceId: 服务IDX-Api-HttpHost: 组合信息X-Api-Status: 200X-Api-UpstreamStatus: 200
心跳包阶段特征
- 通过Cookie传输机器信息
- 加密流程:
- 公私钥加密
- Base64编码
- 添加"SESSIONID="前缀
- 添加Cookie头
命令执行阶段特征
- 请求头带有明显云函数特征
- Host头包含云函数API URL
- Header中包含云函数参数
Profile文件分析
典型云函数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;
}
}
}
全局选项
set sleeptime "3000";- 设置睡眠时间(毫秒)set jitter "0";- 设置数据抖动(百分比)set maxdns "255";- DNS上传数据时主机名最大长度set useragent- 设置UA
局部选项
set uri- 分配客户端和服务器引用的URIclient块 - 配置客户端行为server块 - 配置服务器响应metadata处理流程:- Base64编码
- 添加前缀
- 设置Header
分析与反制思路
流量特征识别
-
Stage下载阶段:
- 约210KB大流量包
- 路径ASCII和与256取余等于92
- 访问
/bootstrap-2.min.js等特定路径
-
心跳阶段:
- 访问
/api/getit等类似API模式 - 带有云函数特有Header
- 访问
-
云函数特征:
- Host格式:
service-xxxxxx.sh.apigw.tencentcs.com - 请求头包含:
X-Request-IdX-Api-FuncNameX-Api-AppIdX-Api-ServiceIdX-Api-HttpHostX-Api-StatusX-Api-UpstreamStatus
- Host格式:
反制手段
-
批量上线钓鱼马:
- 利用云函数IP变化特性
- 大量上线使攻击者无法分辨
-
消耗云函数额度:
- 使用脚本频繁访问耗尽攻击者额度
- 工具推荐:MenoyGone
-
虚假上线:
- 重放心跳包但无法执行命令
-
截图举报:
- 收集证据(Host名、X-Api-FuncName、X-Api-AppId等)
- 向云服务商举报封禁
总结
防御云函数隐藏C2的关键在于识别其特有流量特征,包括请求路径、返回包大小、云函数特有Header等。通过主动反制手段可有效干扰攻击者操作,保护企业安全。