SOC Prime Bias: Crítico

09 Abr 2026 18:14

Nuevo Documento Técnico: Variantes de BPFDoor Se Ocultan a Simple Vista

Author Photo
SOC Prime Team linkedin icon Seguir
Nuevo Documento Técnico: Variantes de BPFDoor Se Ocultan a Simple Vista
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Laboratorios Rapid7 identificaron siete nuevas variantes de BPFDoor que abusan de Filtros de Paquetes de Berkeley a nivel de kernel para mantener el acceso de puerta trasera sigiloso en entornos de telecomunicaciones. Las nuevas familias, httpShell e icmpShell, utilizan tunelización ICMP y HTTP sin estado con formatos de paquetes «mágicos» y campos IP ocultos para establecer comando y control con un mínimo de huella observable. El informe explica cómo los implantes buscan permanecer casi invisibles a través de la suplantación de procesos, limpieza de descriptores de archivos, modificación de marcas temporales y comunicaciones ICMP cifradas.

Investigación

Los investigadores analizaron casi 300 muestras y extrajeron nuevos rasgos de bytecode BPF, nuevos marcadores de «byte mágico» y nombres de procesos específicos de variante como hpasmlited y cmathreshd. La validación en laboratorio en Docker reprodujo la tunelización PTY impulsada por ICMP, el intercambio de cargas útil cifradas RC4 y un comportamiento de enrutamiento donde una bandera -1 devuelve el tráfico a la dirección de origen del paquete. El equipo también descubrió infraestructura de soporte, incluidos dominios que se hacen pasar por servicios NTP sobre SSL utilizados para mezclar tráfico de preparación y control.

Mitigación

Priorizar la telemetría que expone el abuso adyacente al kernel: monitorear la creación de sockets AF_PACKET, detectar la anexión de filtros BPF y buscar anomalías de protocolo vinculadas a estas variantes, incluyendo la secuencia ICMP 1234 y un código ICMP inválido 1. Alertar sobre demonios sospechosos con rutas ejecutables faltantes, nombres de servicio falsificados o características de ejecución inconsistentes con procesos de sistema legítimos. Rapid7 recomienda ejecutar el script de triaje rapid7_bpfdoor_check.sh y actualizar las detecciones YARA/Suricata con las firmas de byte mágico recién documentadas.

Respuesta

Si se encuentran indicadores, aislar el sistema, detener el proceso de implante sospechoso y bloquear los dominios e intervalos de IP asociados. Capturar artefactos de memoria y disco para preservar el estado BPF y la evidencia de ejecución, luego usar rapid7_bpfdoor_check.sh para identificar filtros BPF activos y artefactos de mutex de cero bytes relacionados. Finalmente, actualizar las detecciones con las firmas publicadas y continuar monitoreando la reaparición de los mismos marcadores de paquetes, nombres de procesos y comportamientos de anexión de filtros.

graph TB %% Class Definitions 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 Señalización de tráfico: filtros de socket<br/><b>Descripción</b>: Crea sockets AF_PACKET con filtros BPF para monitorear tráfico y detectar un paquete mágico que activa el backdoor.»] class tech_socket_filters technique tech_masq_task_service[«<b>Técnica</b> – T1036.004 Servicio/Tarea enmascarado<br/><b>Descripción</b>: Falsifica nombres de demonios legítimos como cmathreshd y qmgr para ocultar actividad maliciosa.»] class tech_masq_task_service technique tech_overwrite_args[«<b>Técnica</b> – T1036.011 Sobrescritura de argumentos de proceso<br/><b>Descripción</b>: Sobrescribe cadenas de argumentos del proceso para camuflarse como servicios legítimos.»] class tech_overwrite_args technique tech_rename_utils[«<b>Técnica</b> – T1036.003 Renombrar utilidades legítimas<br/><b>Descripción</b>: Renombra utilidades comunes para evitar detección basada en nombres.»] class tech_rename_utils technique tech_obfuscate_strings[«<b>Técnica</b> – T1027 Archivos ofuscados o información<br/><b>Descripción</b>: Oculta strings mediante ofuscación en pila para dificultar análisis estático.»] class tech_obfuscate_strings technique tech_clear_history[«<b>Técnica</b> – T1070.003 Borrar historial de comandos<br/><b>Descripción</b>: Limpia el historial de shell para eliminar evidencia.»] class tech_clear_history technique tech_wipe_timestamps[«<b>Técnica</b> – T1070.004 Eliminación de archivos<br/><b>Descripción</b>: Borra descriptores y marcas de tiempo para dificultar análisis forense.»] class tech_wipe_timestamps technique tech_unix_shell[«<b>Técnica</b> – T1059.004 Shell Unix<br/><b>Descripción</b>: Crea una pseudo-terminal vía fork/dup2 para obtener shell interactiva.»] class tech_unix_shell technique tech_break_process[«<b>Técnica</b> – T1036.009 Romper árbol de procesos<br/><b>Descripción</b>: Rompe la relación padre-hijo del proceso para ocultar ejecución maliciosa.»] class tech_break_process technique tech_http_c2[«<b>Técnica</b> – T1071.001 Protocolo de capa de aplicación: HTTP<br/><b>Descripción</b>: Exfiltra comandos y respuestas mediante HTTP POST.»] class tech_http_c2 technique tech_icmp_tunnel[«<b>Técnica</b> – T1572 Túnel de protocolo<br/><b>Descripción</b>: Túnel interactivo PTY sobre solicitudes ICMP.»] class tech_icmp_tunnel technique tech_rc4_encryption[«<b>Técnica</b> – T1573.001 Canal cifrado: criptografía simétrica<br/><b>Descripción</b>: Cifra payload con RC4 antes de incrustarlo en paquetes ICMP.»] class tech_rc4_encryption technique tech_data_obfuscation[«<b>Técnica</b> – T1001 Ofuscación de datos<br/><b>Description</b>: Añade prefijo ‘X:’ para confundir analizadores.»] class tech_data_obfuscation technique tech_port_knocking[«<b>Técnica</b> – T1205.001 Señalización de tráfico: Port Knocking<br/><b>Descripción</b>: Activación basada en secuencias de bytes y flags en paquetes.»] class tech_port_knocking technique tech_proxy[«<b>Técnica</b> – T1090 Proxy<br/><b>Descripción</b>: Reescribe IP oculta y reenvía tráfico ICMP.»] class tech_proxy technique tech_create_process[«<b>Técnica</b> – T1543 Crear o modificar proceso del sistema<br/><b>Descripción</b>: Instala daemon en /var/run/user/0 para evitar auditoría.»] class tech_create_process technique tech_socket_filters –>|habilita| tech_masq_task_service tech_masq_task_service –>|soporta| tech_overwrite_args tech_overwrite_args –>|soporta| tech_rename_utils tech_rename_utils –>|mejora| tech_obfuscate_strings tech_obfuscate_strings –>|oculta| tech_clear_history tech_clear_history –>|completa| tech_wipe_timestamps tech_wipe_timestamps –>|prepara entorno para| tech_unix_shell tech_unix_shell –>|rompe| tech_break_process tech_break_process –>|provee canal para| tech_http_c2 tech_break_process –>|provee canal para| tech_icmp_tunnel tech_icmp_tunnel –>|usa| tech_rc4_encryption tech_rc4_encryption –>|añade| tech_data_obfuscation tech_port_knocking –>|activa| tech_socket_filters tech_socket_filters –>|usado por| tech_proxy tech_proxy –>|reenvía tráfico a| tech_http_c2 tech_proxy –>|reenvía tráfico a| tech_icmp_tunnel tech_create_process –>|establece persistencia como| tech_masq_task_service

Flujo de Ataque

Ejecución de Simulación

Prerequisito: La Verificación de Telemetría y Línea Base debe haberse completado.

Narrativa del Ataque y Comandos

  1. Crear un script Bash malicioso en el ruta rara vez monitoreada /var/run/user/0.
  2. Hacer que el script sea ejecutable y luego eliminar el archivo mientras se mantiene abierto, resultando en un inode eliminado que el kernel registra como parte de la línea de comandos cuando el proceso continúa ejecutándose.
  3. Ejecutar el descriptor de archivo colgante, causando que el proceso se ejecute desde un inode eliminado y generando exactamente la telemetría que busca la regla Sigma.
  4. Verificar que la línea de comando del proceso en los registros de auditoría contenga la cadena “inode eliminado”, satisfaciendo selección3.
  5. Evadir las cadenas de suplantación excluidas (hpasmlited, cmathreshd) para asegurar que se active la regla.

Script de Prueba de Regresión

#!/usr/bin/env bash
# -------------------------------------------------
# Prueba de ejecución estilo BPFDoor desde inode eliminado
# -------------------------------------------------

# 1. Preparar una carga útil maliciosa (inofensiva)
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"

# 2. Abrir el descriptor de archivo (mantener el archivo abierto)
exec 3<"$PAYLOAD"

# 3. Eliminar el archivo del sistema de archivos – el inode permanece abierto a través del FD 3
rm -f "$PAYLOAD"

# 4. Ejecutar el script a través de su descriptor de archivo colgante.
#    El enlace simbólico /proc/self/fd/3 apunta al inode ahora eliminado.
bash /proc/self/fd/3 &

# 5. Dar un momento al proceso para que inicie y sea registrado
sleep 5

# 6. Limpiar: cerrar el descriptor de archivo
exec 3<&-
echo "Simulación completada – verificar alertas en SIEM."

Comandos de Limpieza

#!/usr/bin/env bash
# -------------------------------------------------
# Limpieza después de la simulación BPFDoor
# -------------------------------------------------

# Matar cualquier proceso de sueño restante iniciado por el script
pkill -f "sleep 60"

# Asegurarse de que no queden archivos sobrantes en el directorio objetivo
rm -f /var/run/user/0/malicious.sh

echo "Limpieza finalizada."

Fin del Informe