diff --git a/.github/workflows/autorelease.yml b/.github/workflows/autorelease.yml index 4996a50ac..df4de097e 100644 --- a/.github/workflows/autorelease.yml +++ b/.github/workflows/autorelease.yml @@ -5,8 +5,8 @@ on: branches: [master] jobs: - linux-windows-build: - name: Linux & Windows Build + servers-build: + name: Build Server Binaries if: startsWith( github.ref, 'refs/tags/v') runs-on: ubuntu-latest timeout-minutes: 45 @@ -28,33 +28,18 @@ jobs: run: git fetch --prune --unshallow --tags -f - name: Make - env: - ARTIFACT_SUFFIX: _linux - run: export PATH=/home/runner/go/bin/:$PATH && make linux + run: make servers - - name: Linux Artifacts + - name: Server Artifacts uses: actions/upload-artifact@v3 with: - name: linux - path: ./sliver-* + name: servers + path: ./sliver-server_* - - name: Make Windows - env: - ARTIFACT_SUFFIX: _windows - run: | - make clean - export PATH=/home/runner/go/bin/:$PATH && make windows - - - name: Windows Artifacts - uses: actions/upload-artifact@v3 - with: - name: windows - path: ./sliver-* - - macos-build: - name: MacOS Build + clients-build: + name: Build Client Binaries if: startsWith( github.ref, 'refs/tags/v') - runs-on: macos-latest + runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Go 1.20 @@ -68,24 +53,17 @@ jobs: - name: Git Fetch Tags run: git fetch --prune --unshallow --tags -f - - name: Make AMD64 - env: - ARTIFACT_SUFFIX: _macos - run: make macos + - name: Make + run: make clients - - name: Make ARM64 - env: - ARTIFACT_SUFFIX: _macos-arm64 - run: make macos-arm64 - - - name: MacOS Artifacts + - name: Client Artifacts uses: actions/upload-artifact@v3 with: - name: macos - path: ./sliver-* + name: clients + path: ./sliver-client_* tagged-release: - needs: [linux-windows-build, macos-build] + needs: [servers-build, clients-build] name: "Tagged Release" if: startsWith( github.ref, 'refs/tags/v') @@ -101,40 +79,57 @@ jobs: - name: Extract Artifacts run: | mkdir -p ./artifacts - cp ./builds/linux/* ./artifacts - cp ./builds/windows/* ./artifacts - cp ./builds/macos/* ./artifacts + cp ./builds/clients/* ./artifacts + cp ./builds/servers/* ./artifacts - - id: install-secret-key - name: GPG Key(s) + - name: GPG Key(s) run: | cat <(echo -e "${{ secrets.SLIVER_GPG }}") | gpg --batch --import gpg --list-secret-keys --keyid-format LONG # Linux + - name: Linux 386 (Client Only) + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-client_linux-386.sig --detach-sig ./artifacts/sliver-client_linux-386 - name: Linux AMD64 run: | - gpg --default-key 4449039C --output ./artifacts/sliver-server_linux.sig --detach-sig ./artifacts/sliver-server_linux - gpg --default-key 4449039C --output ./artifacts/sliver-client_linux.sig --detach-sig ./artifacts/sliver-client_linux + gpg --default-key 4449039C --output ./artifacts/sliver-server_linux-amd64.sig --detach-sig ./artifacts/sliver-server_linux-amd64 + gpg --default-key 4449039C --output ./artifacts/sliver-client_linux-amd64.sig --detach-sig ./artifacts/sliver-client_linux-amd64 + - name: Linux ARM64 + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-server_linux-arm64.sig --detach-sig ./artifacts/sliver-server_linux-arm64 + gpg --default-key 4449039C --output ./artifacts/sliver-client_linux-arm64.sig --detach-sig ./artifacts/sliver-client_linux-arm64 # Windows + - name: Windows 386 (Client Only) + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-client_windows-386.sig --detach-sig ./artifacts/sliver-client_windows-386.exe - name: Windows AMD64 run: | - gpg --default-key 4449039C --output ./artifacts/sliver-server_windows.sig --detach-sig ./artifacts/sliver-server_windows.exe - gpg --default-key 4449039C --output ./artifacts/sliver-client_windows.sig --detach-sig ./artifacts/sliver-client_windows.exe + gpg --default-key 4449039C --output ./artifacts/sliver-server_windows-amd64.sig --detach-sig ./artifacts/sliver-server_windows-amd64.exe + gpg --default-key 4449039C --output ./artifacts/sliver-client_windows-amd64.sig --detach-sig ./artifacts/sliver-client_windows-amd64.exe + - name: Windows ARM64 (Client Only) + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-client_windows-arm64.sig --detach-sig ./artifacts/sliver-client_windows-arm64.exe - # MacOS AMD64 + # MacOS - name: MacOS AMD64 run: | - gpg --default-key 4449039C --output ./artifacts/sliver-server_macos.sig --detach-sig ./artifacts/sliver-server_macos - gpg --default-key 4449039C --output ./artifacts/sliver-client_macos.sig --detach-sig ./artifacts/sliver-client_macos - - # MacOS ARM64 + gpg --default-key 4449039C --output ./artifacts/sliver-server_macos-amd64.sig --detach-sig ./artifacts/sliver-server_macos-amd64 + gpg --default-key 4449039C --output ./artifacts/sliver-client_macos-amd64.sig --detach-sig ./artifacts/sliver-client_macos-amd64 - name: Package MacOS ARM64 run: | gpg --default-key 4449039C --output ./artifacts/sliver-server_macos-arm64.sig --detach-sig ./artifacts/sliver-server_macos-arm64 gpg --default-key 4449039C --output ./artifacts/sliver-client_macos-arm64.sig --detach-sig ./artifacts/sliver-client_macos-arm64 + # FreeBSD + - name: FreeBSD AMD64 (Client Only) + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-client_freebsd-amd64.sig --detach-sig ./artifacts/sliver-client_freebsd-amd64.exe + - name: FreeBSD ARM64 (Client Only) + run: | + gpg --default-key 4449039C --output ./artifacts/sliver-client_freebsd-arm64.sig --detach-sig ./artifacts/sliver-client_freebsd-arm64.exe + - name: "Publish Release" uses: "bishopfox/action-gh-release@v1" with: diff --git a/.gitignore b/.gitignore index f15c9717e..65f12019c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ /sliver-server /sliver-server_arm64 /sliver.exe +/sliver-server_* /sliver-client /sliver-client_arm64 diff --git a/Makefile b/Makefile index 7800f09a5..c8663af4c 100644 --- a/Makefile +++ b/Makefile @@ -115,8 +115,8 @@ default: clean .downloaded_assets validate-go-version client: clean .downloaded_assets validate-go-version $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client ./client -.PHONY: macos -macos: clean .downloaded_assets validate-go-version +.PHONY: macos-amd64 +macos-amd64: clean .downloaded_assets validate-go-version GOOS=darwin GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server$(ARTIFACT_SUFFIX) ./server GOOS=darwin GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client$(ARTIFACT_SUFFIX) ./client @@ -125,8 +125,8 @@ macos-arm64: clean .downloaded_assets validate-go-version GOOS=darwin GOARCH=arm64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server$(ARTIFACT_SUFFIX) ./server GOOS=darwin GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client$(ARTIFACT_SUFFIX) ./client -.PHONY: linux -linux: clean .downloaded_assets validate-go-version +.PHONY: linux-amd64 +linux-amd64: clean .downloaded_assets validate-go-version GOOS=linux GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server$(ARTIFACT_SUFFIX) ./server GOOS=linux GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client$(ARTIFACT_SUFFIX) ./client @@ -135,20 +135,31 @@ linux-arm64: clean .downloaded_assets validate-go-version GOOS=linux GOARCH=arm64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server$(ARTIFACT_SUFFIX) ./server GOOS=linux GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client$(ARTIFACT_SUFFIX) ./client -.PHONY: windows -windows: clean .downloaded_assets validate-go-version +.PHONY: windows-amd64 +windows-amd64: clean .downloaded_assets validate-go-version GOOS=windows GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server$(ARTIFACT_SUFFIX).exe ./server GOOS=windows GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client$(ARTIFACT_SUFFIX).exe ./client .PHONY: clients clients: clean .downloaded_assets validate-go-version - GOOS=darwin GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_macos$(ARTIFACT_SUFFIX) ./client + GOOS=darwin GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_macos-amd64$(ARTIFACT_SUFFIX) ./client GOOS=darwin GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_macos-arm64$(ARTIFACT_SUFFIX) ./client - GOOS=linux GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_linux$(ARTIFACT_SUFFIX) ./client + GOOS=linux GOARCH=386 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_linux-386$(ARTIFACT_SUFFIX) ./client + GOOS=linux GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_linux-amd64$(ARTIFACT_SUFFIX) ./client GOOS=linux GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_linux-arm64$(ARTIFACT_SUFFIX) ./client - GOOS=windows GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_windows$(ARTIFACT_SUFFIX).exe ./client + GOOS=windows GOARCH=386 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_windows-386$(ARTIFACT_SUFFIX).exe ./client + GOOS=windows GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_windows-amd64$(ARTIFACT_SUFFIX).exe ./client GOOS=windows GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_windows-arm64$(ARTIFACT_SUFFIX).exe ./client - GOOS=freebsd GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_openbsd-amd64$(ARTIFACT_SUFFIX).exe ./client + GOOS=freebsd GOARCH=amd64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_freebsd-amd64$(ARTIFACT_SUFFIX) ./client + GOOS=freebsd GOARCH=arm64 $(ENV) CGO_ENABLED=0 $(GO) build -mod=vendor -trimpath $(TAGS),client $(LDFLAGS) -o sliver-client_freebsd-arm64$(ARTIFACT_SUFFIX) ./client + +.PHONY: servers +servers: + GOOS=windows GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server_windows-amd64$(ARTIFACT_SUFFIX).exe ./server + GOOS=linux GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server_linux-amd64$(ARTIFACT_SUFFIX) ./server + GOOS=linux GOARCH=arm64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server_linux-arm64$(ARTIFACT_SUFFIX) ./server + GOOS=darwin GOARCH=arm64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server_darwin-arm64$(ARTIFACT_SUFFIX) ./server + GOOS=darwin GOARCH=amd64 $(ENV) CGO_ENABLED=$(CGO_ENABLED) $(GO) build -mod=vendor -trimpath $(TAGS),server $(LDFLAGS) -o sliver-server_darwin-amd64$(ARTIFACT_SUFFIX) ./server .PHONY: pb pb: @@ -185,7 +196,7 @@ clean-all: clean .PHONY: clean clean: - rm -f sliver-client sliver-client_* sliver-server sliver-*.exe + rm -f sliver-client sliver-client_* sliver-server sliver-server_* sliver-*.exe .downloaded_assets: ./go-assets.sh diff --git a/client/transport/mtls.go b/client/transport/mtls.go index ee07e5a76..880e1319c 100644 --- a/client/transport/mtls.go +++ b/client/transport/mtls.go @@ -40,7 +40,7 @@ const ( gb = mb * 1024 // ClientMaxReceiveMessageSize - Max gRPC message size ~2Gb - ClientMaxReceiveMessageSize = 2 * gb + ClientMaxReceiveMessageSize = (2 * gb) - 1 // 2Gb - 1 byte defaultTimeout = time.Duration(10 * time.Second) )