利用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配置文件

  1. 使用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: 你的域名
  2. 示例配置关键部分:

    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

注册账户

  1. 访问Tyk注册地址
  2. 选择免费版并设置组织名称

创建并配置API

  1. 创建四种API:http-get、http-post、Stager-x86、Stager-x64
  2. 以http-get API为例:
    • 设置Listen path为C2配置中的URI(如/api/v2/login
    • Target URL指向C2服务器对应路径
    • 禁用Rate Limiting和缓存

设置访问验证策略

  1. 将API的Authentication改为Basic Authentication
  2. 创建新策略:
    • 选择所有四个API
    • 禁用Global Limits and Quota
    • 设置密钥过期时间

配置访问验证Key

  1. 创建新Key:
    • 应用之前创建的策略
    • 设置用户名密码(如test:testtesttest)

配置C2配置文件

  1. 添加Authorization请求头:

    Authorization: Basic base64(username:password)
    

    示例:

    Authorization: Basic dGVzdDp0ZXN0dGVzdHRlc3Q=
    
  2. 完整配置示例:

    http-get {
        set uri "/api/v2/login";
        client {
            header "Authorization" "Basic dGVzdDp0ZXN0dGVzdHRlc3Q=";
        }
    }
    

效果

  • 直接访问API地址需要验证
  • CS可以正常上线

0x04 配置CloudFlare防火墙

获得tyk.io特征

  1. 创建防火墙规则拦截所有流量
  2. 生成木马尝试上线,查看拦截记录中的特征(如ASN)

编辑防火墙规则

  1. 创建新规则只允许Tyk Gateway API的流量
  2. 示例规则:
    • 条件:ASN等于Tyk的ASN
    • 动作:允许

0x05 最终效果

  1. 服务器扫描无法获取beacon stage
  2. 直接访问API地址需要验证
  3. 直接访问C2域名被CloudFlare拦截
  4. CS可正常上线和执行命令

0x06 问题与限制

  1. 流量多次转发可能导致上线延迟
  2. 使用HTTPS上线会留下*.tyk.io的DNS记录特征

0x07 参考资源

  1. Oh my API, abusing TYK cloud API management to hide your malicious C2 traffic
  2. cobaltstrike配置nginx反向代理
  3. cs2modrewrite
利用Nginx、Tyk Gateway API和CloudFlare防火墙隐藏C2设施 0x01 前言 Cobalt Strike的特征已被各大安全厂商标记,加上搜索引擎和空间测绘的扫描,配置C2域名后若不做好基础设施隐匿,很快会被发现。传统隐藏C2的方法如域前置已被禁用,云函数隐藏存在额度限制和反制风险。本文介绍一种结合Nginx、Tyk Gateway API和CloudFlare防火墙的隐匿方案。 0x02 配置Nginx 自定义Nginx配置文件 使用 cs2modrewrite 工具生成基础配置: -i : 指定C2配置文件 -c : 内部监听端口 -r : 302跳转地址 -H : 你的域名 示例配置关键部分: 效果 符合规则的请求转发到内部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和缓存 设置访问验证策略 将API的Authentication改为Basic Authentication 创建新策略: 选择所有四个API 禁用Global Limits and Quota 设置密钥过期时间 配置访问验证Key 创建新Key: 应用之前创建的策略 设置用户名密码(如test:testtesttest) 配置C2配置文件 添加Authorization请求头: 示例: 完整配置示例: 效果 直接访问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记录特征 0x07 参考资源 Oh my API, abusing TYK cloud API management to hide your malicious C2 traffic cobaltstrike配置nginx反向代理 cs2modrewrite