Skip to content

Multiplayer Mode

Joe edited this page Oct 16, 2022 · 34 revisions

Multiplayer-mode allows multiple operators (players) to connect to the same Sliver server and collaborate on engagements. The easiest way to setup a server for multiplayer is to use the Linux install script which will configure the server as a systemd service. However, any Sliver server binary supports multiplayer mode.

                    ┌──────────────────┐C2
                    │                  │Protocol ┌─────────┐
                    │ Sliver C2 Server ├────────►│ Implant │
                    │                  │         └─────────┘
                    └──────────────────┘
                            ▲
                            │
         gRPC/mTLS          │
      ┌────────────┬────────┴─────┐
      │            │              │
┌─────┴──┐         │              │
│Windows │    ┌────┴───┐     ┌────┴───┐
│Operator│    │Linux   │     │MacOS   │
└────────┘    │Operator│     │Operator│
              └────────┘     └────────┘

New Operators

Operators will need to download their preferred platform's client software from the releases page. Clients can connect to servers of differing platforms (e.g. a Windows client can connect to a Linux server). Operators and servers authenticate using Mutual TLS, however all the certificates are managed automatically for you.

  • If you did not install the server as a systemd service, be sure to leave the server console running in screen or tmux after starting the multiplayer listener.
  • If you did install the server as systemd service see the CLI section below for an alternative to the console commands.

Operators need a configuration file generated by the Sliver server to connect in multiplayer mode. The Sliver client can support multiple configuration files, but you can only be connected to one server at a time (per process).

From the server use the new-operator command to generate a new operator configuration file. You'll need to specify the operator's --name and the --lhost of the server (e.g., its public IP). Then from the server start a multiplayer listener using the multiplayer command to allow operators to connect:

Note: The new-operator and multiplayer commands are only accessible from the server's console

[server] sliver > new-operator --name moloch --lhost 1.2.3.4

[*] Generating new client certificate, please wait ...
[*] Saved new client config to: /Users/moloch/Desktop/moloch_example.com.cfg

[server] sliver > multiplayer

[*] Multiplayer mode enabled!

IMPORTANT: Before clients can connect to a server you must start an RPC listener with the multiplayer command. The default port is TCP/31337.

You can now give this configuration file moloch_example.com.cfg to the operator and they can connect to the server using the sliver-client binary. The sliver client will look for configuration files in ~/.sliver-client/configs/ or you can import configs using the import cli. The configs directory can contain multiple configs for different servers.

$ ./sliver-client import ./moloch_example.com.cfg

$ ./sliver-client
? Select a server:  [Use arrows to move, type to filter]
> example.com
  localhost

Server CLI / Daemon Mode Multiplayer

If the server is running in daemon mode (as is the default with the Linux install script), that means the multiplayer listener is started for you without an interactive console. You can use the server binaries' CLI to generate operator configuration files to connect:

./sliver-server operator --name zer0cool --lhost 1.2.3.4 --save zer0cool.cfg

The installation scripts by default will place the sliver-server binary in /root.

Clone this wiki locally