浅谈云函数的代理IP利用面
前言
本篇文章介绍如何通过 Serverless(云函数) 实现各种扫描器探测功能,以达到绕过态势感知、WAF等安全设备,增大蓝队研判人员溯源难度,实现封无可封,查无可查的效果。
什么是云函数?
云函数(Serverless Cloud Function,SCF)是云计算厂商为企业和开发者们提供的无服务器执行环境,可在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在某云基础设施上弹性、安全地运行代码。
为什么通过云函数代理IP?
这是因为云函数会自动的在同一个地域内的多个可用区部署,在请求目标时,会自动调用不同的可用区的IP地址。这样一来,每次请求IP会发生改变,也就达到了我们想要建立一个代理池的目的。
环境准备
本地环境:kali 2021.4a
python版本:3.9.0
代理客户端:mitmproxy
云函数厂商:腾讯云
用到的仓库:https://github.com/shimmeris/SCFProxy
本地配置
首先在本地kali 中安装SCFProxy
需 Python >= 3.8
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
项目配置
函数配置
- 开通腾讯云函数服务
- 在 函数服务 > 新建 中使用自定义创建,函数名称及地域任选,运行环境选择 Python3.6
按我下图中的箭头配置就好了
修改 server.py 中的 SCF_TOKEN
为随机值(该值将用于鉴权),并将相同的值填入 client.py 中的 SCF_TOKEN
再通过在线编辑,将 SCFProxy
工具中的 server.py
文件代码替换进去,然后点击完成会自动部署
如需更多 ip 数,可重复上述步骤创建函数服务,地域选择不同区域。
触发器配置
成功创建函数后进入触发管理,创建触发器
触发方式选择 API 网关触发,其他保持不变即可
将访问路径记下
修改代理客户端配置
将触发器中的访问路径添加至 client.py 中 scf_servers
变量中,以逗号 ,
分隔
本次研究基于 mitmproxy 提供本地代理(kali自带mitmproxy工具 )
为代理 HTTPS 流量需安装证书。
运行 mitmdump
命令,证书目录自动生成在在 ~/.mitmproxy 中,安装并信任。
开启代理开始运行:
mitmdump -s client.py -p 8081 --no-http2
通过浏览器代理工具进行代理,代理协议为 HTTP
代理服务器为 127.0.0.1
代理端口为 8081
效果
浏览器代理后,可以看到IP地址也变了,每次请求IP地址都会变化
百度查看ip
ip 数量
经测试,单个地区服务器 200 个请求分配 ip 数量在 60-70 左右。
限制
- 请求与响应流量包不能大于 6M
- 云函数操作最大超时限制默认为 3 秒,可在云函数环境配置中修改执行超时时间
- 因云函数限制不能进行长连接,仅支持代理 HTTP 流量
本篇文章只是简单了谈了下云函数的代理ip利用,下篇文章将详细讲解云函数的扫描技术深入研究。