mirror of
https://github.com/28Zaaky/khaos-c2
synced 2026-07-22 12:18:04 +00:00
75 lines
3.5 KiB
Bash
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 ""
|