
Vollspektrum-Linux-Angreifersimulationsplattform mit Kernel-Level-Tarnung, C2-Beaconing, Privilegienerweiterung, Anmeldeinformationsernte, lateraler Bewegung und Artefaktzerstörung. Entwickelt für Red-Team-Operationen und Erkennungsforschung.
BAT ist ein realistisches, sich weiterentwickelndes Bedrohungsmodell für Angreifer unter Linux und Windows. Es ist kein C2-Framework und kein Rootkit. Es ist eine vollständige Bedrohungssimulationsplattform, die C2-Kommunikation, Kernel-Level-Stealth-Rootkit-Module, Evasion im Userspace, Privilegienausweitung, Persistenz, Prozessinjektion, Ernte von Anmeldedaten, Exfiltration und laterale Bewegung in einem einzigen, kohärenten Gegner vereint. Das Designziel ist es, die ausgeklügeltste und realistischste Linux-Bedrohung zu sein, die im Jahr 2026 möglich ist, unabhängig davon, was ein Erkennungssystem derzeit aufspürt.
Es ist die Gegnerseite eines Forschungspaares. Das Aura-Framework entwickelt sich weiter, um Bat zu erkennen. Bat entwickelt sich weiter, um Aura zu entgehen. Der Gegner wird niemals durch den Detektor eingeschränkt.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. Konfigurieren```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
Generieren Sie ein Geheimnis: 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
Binärdateien landen in `bin/`.
### 4. Relay starten```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
Einen Agenten auf dem Ziel bereitstellen:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
Der Agent erscheint in bat-server als <agentID>@<hostname> innerhalb eines Beacon-Intervalls (Standard: 30 s).
Die Kernel-Stealth-Schicht (bat-stealth.ko, Quellcode in kperf-qos/) baut direkt auf Singularity auf, einem fortgeschrittenen Kernel-Rootkit-Forschungsframework. Vier Kernmodule wurden portiert und angepasst:
bpf_hook: Fängt bpf(2) und alle eBPF-Kommunikationsprimitive ab. Jeder eBPF-Sensor erhält keine Telemetriedaten für versteckte PIDs. Angepasst: ARCH_SYS("bpf") ersetzt den x86-spezifischen __x64_sys_bpf; __ia32_sys_bpf für ARM64 entfernt; HIDDEN_PORT durch eine sysfs-konfigurierbare globale Variable ersetzt.
hiding_fs: Komplette Dateisystemausblendung: getdents64/getdents-Filterung, stat/statx/newfstatat nlink-Anpassung, openat/access/faccessat /proc/<pid>-Blockierung, chdir- und readlink-Blockierung. Aus fünf Singularity-Modulen zusammengeführt (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). Angepasst: REGS_ARGn-Makros ersetzen direkten Registerzugriff; should_hide_path() erweitert für zur Laufzeit konfigurierbare bat_hidden_paths[].
hide_module: Entfernt bat-stealth.ko aus allen Kernel-Modul-Listen. Erweitert: Singularity speichert bereits list.prev; diese Version speichert sowohl list.prev als auch list.next und vergiftet beide, um Traversierung in beide Richtungen zu blockieren. module_unhide() für reversible Entfernung hinzugefügt, erforderlich von K-99, bevor delete_module(2) das Modul anhand des Namens finden kann.
lkrg_bypass: Unterdrückt LKRG-Erzwingung für versteckte Prozesse: Hooks zur Signalzustellung, um SIGKILL für versteckte Tasks zu blockieren, Hooks auf vprintk_emit, um LKRG-Protokollmeldungen zu verwerfen, deaktiviert UMH-Validierung während der Agentenausführung. Direkt ohne architektonische Änderungen portiert.
Die folgenden Module wurden unabhängig entwickelt:
become_root: Signal-59-Hook, der commit_creds(prepare_kernel_cred(NULL)) aufruft, um uid=0 zu gewähren (K-03)selfdefense: Blockiert LiME-Speichererfassung, verbirgt kallsyms-Einträge, blockiert kprobes auf Agent-Symbolen, blendet das Modul bei jedem Aufzählungsversuch erneut ausaudit: Unterdrückt auditd-Ereignisse für versteckte PIDssysrq_hook: Fängt SysRq-T ab, um versteckte Prozesse von Task-Dumps auszuschließentaskstats_hook: Filtert NETLINK taskstats-Antworten für versteckte PIDsreset_tainted + clear_taint_dmesg: Setzt /proc/sys/kernel/tainted auf Null und filtert dmesg-Zeilen, die Modul-Ladehinweise enthaltenhooks_write: Fängt alle Kernel-Schreibpfade ab (write/splice/sendfile/tee + io_uring_enter/enter2 + ia32 kompatibel), um Protokolleinträge, die Agent-Strings enthalten, zu verwerfen, bevor sie syslog oder journald erreichenpid_manager: Fork-Tracepoint zur Aufrechterhaltung des versteckten PID-Satzes über Kindprozesse hinwegDer gesamte Stack macht den Agenten und alle seine Artefakte unsichtbar für: ps, top, ss, netstat, lsof, Dateisystemtraversierung auf versteckten Pfaden, lsmod, sysfs, kallsyms, auditd, alle eBPF-Sensoren, LKRG, LiME und SysRq-Forensik.