Core Concepts
C2 server vs implant: The Sliver server runs on your attacker machine and exposes listener ports. The implant runs on the target and calls back to those listeners. You interact with implants through the Sliver console. Beacon vs Session: A beacon checks in at a configurable interval, receives queued tasks, executes them, then goes back to sleep. A session holds a persistent interactive connection. Beacons are far stealthier and preferred for real engagements. Sessions are useful for quick interactive work or when running extensions with persistent global state. Implant naming: Sliver auto-assigns a random two-word name to each implant (e.g.WARM_LUMBERMAN). This is how you reference the implant in use, sessions, and beacons commands.
Task-based execution: In beacon mode, commands are queued on the server and not executed until the beacon checks in. Use tasks to see pending and completed tasks; tasks fetch <id> to retrieve output.
Listeners
Stage Listener
Generating Implants
Beacons are the default. Session implants are available for interactive work. Output format determines EXE, DLL, raw shellcode, or service binary.Session Management
Recon
File Operations
Loot Management
Files marked with--loot are stored server-side and visible to all operators in the team server.
Shell Access
Useexecute for single commands rather than opening a full shell. A full shell is noisier and draws more EDR attention.
Process Operations
Windows Token Manipulation
Windows Registry
Registry commands default toHKCU. Use -H HKLM for HKEY_LOCAL_MACHINE. Add --hostname to target a remote host’s registry over the network.
Pivoting
In-Memory Execution
Sliver provides three commands for running code in-memory without dropping binaries to disk. All three support PPID spoofing to make the sacrificial process appear as a child of a legitimate parent.execute-assembly
Runs a .NET assembly in a sacrificial process (or in-process) using Donut. Windows only.
Note: Argument length is capped at 256 characters in sacrificial process mode (Donut limitation). Use
--in-process to bypass this.
sideload
Loads and executes a shared library (DLL, .so, .dylib) or Windows EXE in a sacrificial process using Donut. Always spawns a new process.spawndll
Loads and executes a Reflective DLL in a sacrificial process. The DLL must implement a reflective loader (exportsReflectiveLoader by default). Does not use Donut. Windows only.
Armory
Armory is Sliver’s package manager. Packages are aliases that wrapexecute-assembly, sideload, or spawndll calls with pre-configured arguments. Nothing touches disk.
Extensions
Extensions are reflective DLLs implementing the Sliver extension API. They run in-process within the implant without spawning a sacrificial process. Install client-side only (~/.sliver-client/extensions/).
Use sessions for extensions with global state (e.g., keyloggers): beacons reload the DLL on each call, wiping global state. Sessions cache the loaded extension and maintain state across calls.
BOFs
BOF (Beacon Object File) is a compiled C object that runs inside the beacon process. No binary is dropped to disk, minimal footprint, compatible with Cobalt Strike BOFs.Persistence
OPSEC Tips
- Prefer beacons over sessions: persistent connections are trivial to flag in network monitoring
- Set sleep + jitter to at least 60s base / 30s jitter: flat check-in intervals are easy to detect
- Use mTLS or HTTPS: plain HTTP is never acceptable on a real engagement
- Migrate out of your initial shell process immediately (
cmd.exeandpowershell.exeare heavily monitored by EDR) - Good migration targets:
explorer.exe,svchost.exe,RuntimeBroker.exe,OneDrive.exe - Use
--ppidspoofing onexecute-assembly,sideload, andspawndllto make sacrificial processes appear user-spawned - Run post-ex tools via armory or extensions in-memory rather than uploading and executing from disk
- For HTTPS listeners, configure a custom C2 profile that mimics real browser traffic (User-Agent, Host header, URI paths)
- Kill all listeners and sessions at the end of an engagement