SOC Prime Bias: Crítico

09 Abr 2026 18:14

Novo Whitepaper: Variantes do BPFDoor Se Escondem à Vista Desarmada

Author Photo
SOC Prime Team linkedin icon Seguir
Novo Whitepaper: Variantes do BPFDoor Se Escondem à Vista Desarmada
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Os laboratórios Rapid7 identificaram sete novas variantes do BPFDoor que abusam dos Filtros de Pacotes Berkeley em nível de kernel para manter acesso furtivo de backdoor em ambientes de telecomunicações. As novas famílias, httpShell e icmpShell, usam tunneling stateless ICMP e HTTP com formatos de pacote “mágicos” e campos de IP ocultos para estabelecer um comando e controle com uma pegada minimamente observável. O relatório explica como os implantes visam permanecer quase invisíveis através de mascaramento de processo, limpeza de descritores de arquivos, manipulação de timestamps e comunicações ICMP criptografadas.

Investigação

Pesquisadores analisaram quase 300 amostras e extraíram novos traços de bytecode BPF, novos marcadores de “magic byte” e nomes de processos específicos de variantes, como hpasmlited e cmathreshd. A validação em laboratório no Docker reproduziu o tunneling PTY dirigido por ICMP, troca de payload criptografada com RC4 e um comportamento de roteamento onde uma bandeira -1 retorna o tráfego de volta ao endereço de origem do pacote. A equipe também descobriu infraestrutura de suporte, incluindo domínios disfarçados como serviços NTP-sobre-SSL usados para mesclar tráfego de estágio e controle.

Mitigação

Priorize telometria que expõe abuso adjacente ao kernel: monitore a criação de sockets AF_PACKET, detecte anexação de filtro BPF e procure anomalias de protocolo vinculadas a essas variantes, incluindo sequência ICMP 1234 e um código ICMP inválido 1. Alerte sobre daemons suspeitos com caminhos de executáveis ausentes, nomes de serviços falsificados ou características de runtime inconsistentes com processos do sistema legítimos. A Rapid7 recomenda executar o script de triagem rapid7_bpfdoor_check.sh e atualizar as detecções YARA/Suricata com as novas assinaturas de magic-byte documentadas.

Resposta

Se indicadores forem encontrados, isole o sistema, interrompa o processo de implante suspeito e bloqueie os domínios e faixas de IP associados. Capture artefatos de memória e disco para preservar o estado BPF e evidências de runtime, depois use o rapid7_bpfdoor_check.sh para identificar filtros BPF ativos e artefatos de mutex de zero byte relacionados. Finalmente, atualize as detecções com as assinaturas publicadas e continue monitorando para o reaparecimento dos mesmos marcadores de pacotes, nomes de processos e comportamentos de anexação de filtro.

graph TB classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f4c2c2 tech_socket_filters[“<b>Técnica</b> – T1205.002 Sinalização de tráfego: filtros de socket<br/><b>Descrição</b>: Cria sockets AF_PACKET com filtros BPF para monitorar tráfego e detectar pacote mágico.”] class tech_socket_filters technique tech_masq_task_service[“<b>Técnica</b> – T1036.004 Mascarar tarefa/serviço<br/><b>Descrição</b>: Falsifica nomes de serviços como cmathreshd e qmgr.”] class tech_masq_task_service technique tech_overwrite_args[“<b>Técnica</b> – T1036.011 Sobrescrever argumentos de processo<br/><b>Descrição</b>: Sobrescreve argumentos para se disfarçar.”] class tech_overwrite_args technique tech_rename_utils[“<b>Técnica</b> – T1036.003 Renomear utilitários legítimos<br/><b>Descrição</b>: Renomeia ferramentas comuns para evitar detecção.”] class tech_rename_utils technique tech_obfuscate_strings[“<b>Técnica</b> – T1027 Ofuscação de arquivos ou informações<br/><b>Descrição</b>: Oculta strings com ofuscação em pilha.”] class tech_obfuscate_strings technique tech_clear_history[“<b>Técnica</b> – T1070.003 Limpar histórico de comandos<br/><b>Descrição</b>: Remove histórico do shell.”] class tech_clear_history technique tech_wipe_timestamps[“<b>Técnica</b> – T1070.004 Exclusão de arquivos<br/><b>Descrição</b>: Remove timestamps e rastros.”] class tech_wipe_timestamps technique tech_unix_shell[“<b>Técnica</b> – T1059.004 Shell Unix<br/><b>Descrição</b>: Cria pseudo-terminal interativo.”] class tech_unix_shell technique tech_break_process[“<b>Técnica</b> – T1036.009 Quebra de árvore de processos<br/><b>Descrição</b>: Oculta relação pai-filho.”] class tech_break_process technique tech_http_c2[“<b>Técnica</b> – T1071.001 HTTP<br/><b>Descrição</b>: Comunicação via HTTP POST.”] class tech_http_c2 technique tech_icmp_tunnel[“<b>Técnica</b> – T1572 Túnel de protocolo<br/><b>Descrição</b>: Túnel via ICMP.”] class tech_icmp_tunnel technique tech_rc4_encryption[“<b>Técnica</b> – T1573.001 Canal criptografado<br/><b>Descrição</b>: Criptografia RC4.”] class tech_rc4_encryption technique tech_data_obfuscation[“<b>Técnica</b> – T1001 Ofuscação de dados<br/><b>Descrição</b>: Prefixo X: para confusão.”] class tech_data_obfuscation technique tech_port_knocking[“<b>Técnica</b> – T1205.001 Port Knocking<br/><b>Descrição</b>: Sequência de pacotes ativa backdoor.”] class tech_port_knocking technique tech_proxy[“<b>Técnica</b> – T1090 Proxy<br/><b>Descrição</b>: Reencaminha tráfego ICMP.”] class tech_proxy technique tech_create_process[“<b>Técnica</b> – T1543 Processo do sistema<br/><b>Descrição</b>: Cria daemon persistente.”] class tech_create_process technique tech_socket_filters –>|habilita| tech_masq_task_service tech_masq_task_service –>|suporta| tech_overwrite_args tech_overwrite_args –>|suporta| tech_rename_utils tech_rename_utils –>|melhora| tech_obfuscate_strings tech_obfuscate_strings –>|esconde| tech_clear_history tech_clear_history –>|finaliza| tech_wipe_timestamps tech_wipe_timestamps –>|prepara| tech_unix_shell tech_unix_shell –>|quebra| tech_break_process tech_break_process –>|canal para| tech_http_c2 tech_break_process –>|canal para| tech_icmp_tunnel tech_icmp_tunnel –>|usa| tech_rc4_encryption tech_rc4_encryption –>|adiciona| tech_data_obfuscation tech_port_knocking –>|ativa| tech_socket_filters tech_socket_filters –>|usado por| tech_proxy tech_proxy –>|encaminha para| tech_http_c2 tech_proxy –>|encaminha para| tech_icmp_tunnel tech_create_process –>|define persistência como| tech_masq_task_service

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telometria & Baseline deve ter passado.

Narrativa do Ataque & Comandos

  1. Crie um script Bash malicioso no caminho raramente monitorado /var/run/user/0.
  2. Torne o script executável e então delete o arquivo enquanto mantém aberto, resultando em um inode deletado que o kernel registra como parte da linha de comando quando o processo continua a ser executado.
  3. Execute o descritor de arquivo pendente, fazendo com que o processo execute a partir de um inode deletado e gerando a telometria exata que a regra Sigma procura.
  4. Verifique que a linha de comando do processo nos logs de auditoria contenha a string “inode deletado”, satisfazendo seleção3.
  5. Evite as strings de disfarce excluídas (hpasmlited, cmathreshd) para garantir que a regra seja acionada.

Script de Teste de Regressão

#!/usr/bin/env bash
# -------------------------------------------------
# Teste de execução de inode-deletado ao estilo BPFDoor
# -------------------------------------------------
# 1. Prepare um payload malicioso (inofensivo)
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. Abra o descritor de arquivo (mantenha o arquivo aberto)
exec 3<"$PAYLOAD"
# 3. Delete o arquivo do sistema de arquivos – o inode permanece aberto via FD 3
rm -f "$PAYLOAD"
# 4. Execute o script via seu descritor de arquivo pendente.
#    O link simbólico /proc/self/fd/3 aponta para o inode agora deletado.
bash /proc/self/fd/3 &
# 5. Dê um momento para o processo iniciar e ser registrado
sleep 5
# 6. Limpeza: feche o descritor de arquivo
exec 3<&-
echo "Simulação completada – verifique SIEM para alertas."

Comandos de Limpeza

#!/usr/bin/env bash
# -------------------------------------------------
# Limpeza após simulação BPFDoor
# -------------------------------------------------
# Mate qualquer processo de sono restante iniciado pelo script
pkill -f "sleep 60"
# Certifique-se de que não há arquivos sobrando no diretório de destino
rm -f /var/run/user/0/malicious.sh
echo "Limpeza finalizada."

Fim do Relatório