利用Nginx、Tyk Gateway API和CloudFlare防火墙隐藏C2设施
字数 1213 2025-08-26 22:11:23
利用Nginx、Tyk Gateway API和CloudFlare防火墙隐藏C2设施
0x01 前言
Cobalt Strike的特征已被各大安全厂商标记,加上搜索引擎和空间测绘的扫描,配置C2域名后若不做好基础设施隐匿,很快会被发现。传统隐藏C2的方法如域前置已被禁用,云函数隐藏存在额度限制和反制风险。本文介绍一种结合Nginx、Tyk Gateway API和CloudFlare防火墙的隐匿方案。
0x02 配置Nginx
自定义Nginx配置文件
-
使用
cs2modrewrite工具生成基础配置:python3 ./cs2nginx.py -i jquery-c2.4.5.profile -c https://127.0.0.1:8443 -r http://www.baidu.com/ -H yourc2.domain > ./nginx.conf-i: 指定C2配置文件-c: 内部监听端口-r: 302跳转地址-H: 你的域名
-
示例配置关键部分:
server { set $C2_SERVER https://127.0.0.1:8443; set $REDIRECT_DOMAIN http://www.baidu.com/; server_name yourc2.domain; listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; location ~ ^(/jquery-3.3.2.slim.min.js.*|...) { if ($http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") { return 404; } proxy_pass $C2_SERVER; } location @redirect { return 302 $REDIRECT_DOMAIN$request_uri; } }
效果
- 符合规则的请求转发到内部8443端口
- 不符合规则的请求跳转到百度
- 直接扫描服务器IP无法获取beacon stage
0x03 配置Tyk Gateway API
注册账户
- 访问Tyk注册地址
- 选择免费版并设置组织名称
创建并配置API
- 创建四种API:http-get、http-post、Stager-x86、Stager-x64
- 以http-get API为例:
- 设置Listen path为C2配置中的URI(如
/api/v2/login) - Target URL指向C2服务器对应路径
- 禁用Rate Limiting和缓存
- 设置Listen path为C2配置中的URI(如
设置访问验证策略
- 将API的Authentication改为Basic Authentication
- 创建新策略:
- 选择所有四个API
- 禁用Global Limits and Quota
- 设置密钥过期时间
配置访问验证Key
- 创建新Key:
- 应用之前创建的策略
- 设置用户名密码(如test:testtesttest)
配置C2配置文件
-
添加Authorization请求头:
Authorization: Basic base64(username:password)示例:
Authorization: Basic dGVzdDp0ZXN0dGVzdHRlc3Q= -
完整配置示例:
http-get { set uri "/api/v2/login"; client { header "Authorization" "Basic dGVzdDp0ZXN0dGVzdHRlc3Q="; } }
效果
- 直接访问API地址需要验证
- CS可以正常上线
0x04 配置CloudFlare防火墙
获得tyk.io特征
- 创建防火墙规则拦截所有流量
- 生成木马尝试上线,查看拦截记录中的特征(如ASN)
编辑防火墙规则
- 创建新规则只允许Tyk Gateway API的流量
- 示例规则:
- 条件:ASN等于Tyk的ASN
- 动作:允许
0x05 最终效果
- 服务器扫描无法获取beacon stage
- 直接访问API地址需要验证
- 直接访问C2域名被CloudFlare拦截
- CS可正常上线和执行命令
0x06 问题与限制
- 流量多次转发可能导致上线延迟
- 使用HTTPS上线会留下
*.tyk.io的DNS记录特征