Nuevo Documento Técnico: Variantes de BPFDoor Se Ocultan a Simple Vista
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
Detecciones
El posible servicio de DNS dinámico fue contactado (vía dns)
Ver
IOCs (HashSha256) para detectar: Nuevas variantes de BPFDoor sigilosas son una aguja que parece heno
Ver
Detección de Variantes de BPFDoor través de Anomalías de Proceso [Creación de Proceso Linux]
Ver
Detección de Paquete Mágico de BPFDoor y Anomalías ICMP [Cortafuegos]
Ver
Ejecución de Simulación
Prerequisito: La Verificación de Telemetría y Línea Base debe haberse completado.
Narrativa del Ataque y Comandos
- Crear un script Bash malicioso en el ruta rara vez monitoreada
/var/run/user/0. - 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.
- 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.
- Verificar que la línea de comando del proceso en los registros de auditoría contenga la cadena “inode eliminado”, satisfaciendo
selección3. - 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