搭建简易红队基础设施:从云主机到流量转发全解析

搭建简易红队基础设施

TL;DR: 正确配置基础设施能极大提升效率

0x0vid · 11分钟阅读 · 2024年12月16日

本文将介绍假设性入侵场景下的基础设施搭建方案。目标并非构建支持所有已知服务的完整体系,而是通过运行脚本快速部署可定制的云虚拟机。

0x0 — 需求背景

核心需求简单而普遍:如何在加固网络中获取网络访问权限?可能面临的限制包括:

  • 802.1x认证
  • 机器证书白名单
  • 热点创建被禁用
  • 其他网络限制

基础设施需要实现:

  1. 托管测试期间使用的文件
  2. 处理C2通信
  3. 转发来自ligolo-ng[001]等工具的隧道连接(类似chisel[002]的HTTP工具更适用)

与传统红队设施不同,本方案去除了域前置、SNMP服务器等复杂组件,专为假设性入侵和常规渗透测试设计。

简言之:我们需要捕获ligolo传入隧道,并在同一端口托管多个Web应用。

0x1 — 基本假设

  1. 所有云资产均为一次性使用
  2. 云端不存储敏感信息,仅作流量中转到本地Kali虚拟机
  3. 仅允许TCP 80/443端口通信
  4. 攻击环境中可执行常用穿透工具

0x2 — 架构设计与问题解决

经过验证发现:单服务器无法基于子域名实现端口转发[003]。实际需要为每个协议分配独立端口。HTTP服务可通过企业级应用部署方式解决,本文选用traefik[004](nginx[005]同样适用)。

基础设施架构

最终方案包含以下组件:

0x2.1 — 公网IP获取:云主机

通过云服务(Droplet/VM/EC2)自动获取可暴露的IP地址。

0x2.2 — 内网接入:OpenVPN

使用开源脚本[006]快速部署OpenVPN,实现:

  • 流量转发到本地Kali主机
  • 减少云端敏感信息残留
  • 保留本地化操作环境(如i3配置/GUI访问)

0x2.3 — 流量回传:Socat

基础转发命令示例:

socat TCP4-LISTEN:[外部端口],fork TCP4:[Kali的OpenVPN IP]:[Ligolo-NG端口]

0x2.4 — 多服务端口复用:DNS+Traefik

选择Traefik的原因:

  • 可视化仪表盘
  • 动态配置能力

关键配置概念:

  • Providers:端点发现机制(本文不使用Docker)
  • EntryPoints:监听端口定义
  • Routers:基于规则的路由决策
  • Middlewares:附加功能(如认证、日志)
  • Services:流量转发目标

示例配置(托管文件服务器和C2监听器):

# 静态配置 traefik.yml
api:
  dashboard: true
  insecure: false
providers:
  file:
    filename: "/etc/traefik/dyn.yml"
    watch: true
entryPoints:
  web: 
    address: ":443"

# 动态配置 dyn.yml
http:
  routers:
    to-py-http-server:
      rule: "Host(`file.{{env "DOMAIN"}}`)"
      service: py-http-server
    to-c2-http-server:
      rule: "Host(`c2.{{env "DOMAIN"}}`)"
      service: c2-http-server
  services:
    py-http-server:
      loadBalancer:
        servers:
        - url: "http://{{env "LOCAL_HOST"}}:8000"
    c2-http-server:
      loadBalancer:
        servers:
        - url: "http://{{env "LOCAL_HOST"}}:9001"

DNS设置仅需两条A记录:

  1. 主域名指向云VM
  2. 通配子域名解析到同一主机

0x3 — 安全加固

  1. 使用UFW配置防火墙规则
  2. 通过Nmap扫描验证(仅开放22/80/443端口)
  3. 未来计划限制SSH和管理界面访问

0x4 — 部署方案

选用Bash脚本而非Terraform/Ansible的原因:

  1. 无需额外工具安装
  2. 避免配置复杂性
  3. 适合短期基础设施(存活周期<1个月)

部署流程:

  1. 通过GitHub PAT令牌克隆仓库
  2. 运行脚本输入域名和许可IP
  3. 复制OpenVPN客户端配置
  4. 启动socat和traefik

0x5 — 结论

实践证明该方案能显著提升测试效率。未来可能扩展功能:

  • DNS托管
  • 文件上传接口
  • 脚本功能增强

0x6 — 参考资料

[001] ligolo-ng项目
[002] chisel工具
[003] 子域名端口转发讨论
[004] Traefik官网
...(其他参考链接详见原文)
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-07-11 09:01  qife  阅读(18)  评论(0)    收藏  举报