mirror of
https://github.com/BishopFox/sliver
synced 2026-06-08 10:29:05 +00:00
125 lines
3.5 KiB
Docker
125 lines
3.5 KiB
Docker
#
|
|
# For production:
|
|
# docker build --target production -t sliver .
|
|
# docker run -it --rm -v $HOME/.sliver:/home/sliver/.sliver sliver
|
|
#
|
|
# For unit testing:
|
|
# docker build --target test .
|
|
# docker build --target test --build-arg GO_TESTS_FLAGS=--skip-generate .
|
|
#
|
|
|
|
# STAGE: base
|
|
## Compiles Sliver for use
|
|
FROM golang:latest AS base
|
|
|
|
### Base packages
|
|
RUN apt-get update --fix-missing && apt-get -y install \
|
|
git build-essential zlib1g zlib1g-dev wget zip unzip
|
|
|
|
### Add sliver user
|
|
RUN groupadd -g 999 sliver && useradd -r -u 999 -g sliver sliver
|
|
RUN mkdir -p /home/sliver/ && chown -R sliver:sliver /home/sliver
|
|
|
|
### Build sliver:
|
|
RUN mkdir -p /go/src/github.com/bishopfox/sliver
|
|
WORKDIR /go/src/github.com/bishopfox/sliver
|
|
ADD . /go/src/github.com/bishopfox/sliver/
|
|
RUN make
|
|
RUN cp -vv sliver-server /opt/sliver-server
|
|
|
|
# STAGE: test
|
|
## Run unit tests against the compiled instance
|
|
## Use `--target test` in the docker build command to run this stage
|
|
FROM base AS test
|
|
|
|
ARG GO_TESTS_FLAGS=""
|
|
ENV GO_TESTS_FLAGS="${GO_TESTS_FLAGS}"
|
|
|
|
RUN apt-get update --fix-missing \
|
|
&& apt-get -y upgrade \
|
|
&& apt-get -y install \
|
|
curl
|
|
|
|
RUN /opt/sliver-server unpack --force
|
|
|
|
### Run unit tests
|
|
RUN /go/src/github.com/bishopfox/sliver/go-tests.sh ${GO_TESTS_FLAGS}
|
|
|
|
# STAGE: production
|
|
## Final dockerized form of Sliver
|
|
FROM debian:bookworm-slim AS production
|
|
|
|
### Install production packages
|
|
RUN apt-get update --fix-missing \
|
|
&& apt-get -y upgrade \
|
|
&& apt-get -y install \
|
|
libxml2 libxml2-dev libxslt-dev locate gnupg \
|
|
libreadline6-dev libcurl4-openssl-dev git-core \
|
|
libssl-dev libyaml-dev openssl autoconf libtool \
|
|
ncurses-dev bison curl xsel postgresql \
|
|
postgresql-contrib postgresql-client libpq-dev \
|
|
curl libapr1 libaprutil1 libsvn1 \
|
|
libpcap-dev libsqlite3-dev libgmp3-dev \
|
|
nasm
|
|
|
|
### Install MSF for stager generation
|
|
RUN curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall \
|
|
&& chmod 755 msfinstall \
|
|
&& ./msfinstall \
|
|
&& mkdir -p ~/.msf4/ \
|
|
&& touch ~/.msf4/initial_setup_complete
|
|
|
|
### Cleanup unneeded packages
|
|
RUN apt-get remove -y curl gnupg \
|
|
&& apt-get autoremove -y \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
### Add sliver user
|
|
RUN groupadd -g 999 sliver \
|
|
&& useradd -r -u 999 -g sliver sliver \
|
|
&& mkdir -p /home/sliver/ \
|
|
&& chown -R sliver:sliver /home/sliver \
|
|
&& su -l sliver -c 'mkdir -p ~/.msf4/ && touch ~/.msf4/initial_setup_complete'
|
|
|
|
### Copy compiled binary
|
|
COPY --from=base /opt/sliver-server /opt/sliver-server
|
|
|
|
### Unpack Sliver:
|
|
USER sliver
|
|
RUN /opt/sliver-server unpack --force
|
|
|
|
WORKDIR /home/sliver/
|
|
VOLUME [ "/home/sliver/.sliver" ]
|
|
ENTRYPOINT [ "/opt/sliver-server" ]
|
|
|
|
|
|
# STAGE: production-slim (about 1Gb smaller)
|
|
FROM debian:bookworm-slim AS production-slim
|
|
|
|
### Install production packages
|
|
RUN apt-get update --fix-missing \
|
|
&& apt-get -y upgrade
|
|
|
|
### Cleanup unneeded packages
|
|
RUN apt-get autoremove -y \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
### Add sliver user
|
|
RUN groupadd -g 999 sliver \
|
|
&& useradd -r -u 999 -g sliver sliver \
|
|
&& mkdir -p /home/sliver/ \
|
|
&& chown -R sliver:sliver /home/sliver
|
|
|
|
### Copy compiled binary
|
|
COPY --from=base /opt/sliver-server /opt/sliver-server
|
|
|
|
### Unpack Sliver:
|
|
USER sliver
|
|
RUN /opt/sliver-server unpack --force
|
|
|
|
WORKDIR /home/sliver/
|
|
VOLUME [ "/home/sliver/.sliver" ]
|
|
ENTRYPOINT [ "/opt/sliver-server" ]
|