Files
2026-06-30 18:02:46 +03:00

75 lines
3.5 KiB
Bash

#!/usr/bin/env bash
# install.sh — KHAØS C2 setup (Ubuntu 22.04+ / Debian 12+)
# Usage: bash install.sh
set -euo pipefail
RED='\033[0;31m'; GRN='\033[0;32m'; YLW='\033[1;33m'; NC='\033[0m'
info() { echo -e "${GRN}[*]${NC} $*"; }
warn() { echo -e "${YLW}[!]${NC} $*"; }
die() { echo -e "${RED}[x]${NC} $*" >&2; exit 1; }
# ── Root check ──────────────────────────────────────────────────────────────
[[ $EUID -eq 0 ]] || die "Run as root: sudo bash install.sh"
# ── Deps ────────────────────────────────────────────────────────────────────
info "Installing system dependencies..."
apt-get update -qq
apt-get install -y --no-install-recommends \
gcc-mingw-w64-x86-64 \
binutils-mingw-w64-x86-64 \
mingw-w64 \
make \
python3 python3-pip python3-venv \
nodejs npm \
openssl \
curl \
git 2>/dev/null
# ── Python server deps ───────────────────────────────────────────────────────
info "Installing Python server dependencies..."
pip3 install -q -r server/requirements.txt
# ── UI build ─────────────────────────────────────────────────────────────────
info "Building UI..."
cd ui
npm ci --silent
npm run build --silent
cd ..
# ── TLS cert ─────────────────────────────────────────────────────────────────
if [[ ! -f server/cert.pem ]]; then
info "Generating self-signed TLS certificate..."
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout server/cert.key \
-out server/cert.pem \
-subj "/CN=khaos-c2" \
-addext "subjectAltName=IP:127.0.0.1" 2>/dev/null
info "cert.pem + cert.key generated."
else
warn "cert.pem already exists — skipping TLS generation."
fi
# ── Config ───────────────────────────────────────────────────────────────────
if [[ ! -f server/config.yaml ]]; then
cp server/config.example.yaml server/config.yaml
JWT=$(openssl rand -base64 32)
sed -i "s|GENERATE_WITH: openssl rand -base64 32|${JWT}|" server/config.yaml
warn "server/config.yaml created with a random JWT secret."
warn "Edit it to fill in your channel credentials (Teams / Gist / HTTP / DoH)."
else
warn "server/config.yaml already exists — skipping."
fi
# ── Done ─────────────────────────────────────────────────────────────────────
echo ""
echo -e "${GRN}Setup complete.${NC}"
echo ""
echo " Next steps:"
echo " 1. Edit server/config.yaml — add your channel credentials"
echo " 2. python3 server/main.py — start the C2 server"
echo " 3. Open http://localhost:8443 or use the UI Build tab to generate agent.exe"
echo ""
echo " Default login: operator / changeme"
echo " Change via: KHAOS_OPERATOR_USER=x KHAOS_OPERATOR_PASS=y python3 server/main.py"
echo ""