Skip to content

Offline Implant Builds

Joe edited this page Mar 9, 2022 · 13 revisions

By default when you build an implant for the first time Sliver will attempt to pull down the implant's Golang dependencies from the internet.

Due nuances in the build process offline builds are not simple, though we're always looking at ways we can implement this "out of the box" in the future. A solution is outlined below, however the slimiest solution is to (if you can) generate implants ahead of time and use regenerate.

GOPROXY

As of v1.5.0 Sliver also supports the Golang GOPROXY environment variable, which can be configured to point to a local Go Module Proxy that contains the implant's dependencies. A GOPROXY can also be configured in the server's configuration file, which will take precedence over any environment variable.

For example, you can use the Athens proxy to cache modules locally:

$ docker run -d -p '3000:3000' gomods/athens:latest
$ export GOPROXY=http://localhost:3000
$ ./sliver-server

[server] sliver > generate --http localhost

Athens Proxy Script

Script to start Athens:

export ATHENS_STORAGE=$HOME/.athens-storage
mkdir -p $ATHENS_STORAGE
docker run -d -v $ATHENS_STORAGE:/var/lib/athens \
   -e ATHENS_DISK_STORAGE_ROOT=/var/lib/athens \
   -e ATHENS_STORAGE_TYPE=disk \
   --name athens-proxy \
   --restart always \
   -p 3000:3000 \
   gomods/athens:latest
Clone this wiki locally