Diferencia entre revisiones de «PoisonedRefresh»
(Página creada con «Categoría:Familias de malware Categoría:Ciberataques = PoisonedRefresh: Rootkit en F5 BIG-IP APM = '''PoisonedRefresh''' (también identificado como Linux/Agnt-IC por Sophos) es un rootkit para Linux diseñado específicamente para atacar dispositivos '''F5 BIG-IP APM''' (Access Policy Manager) que ejecutan componentes Apache y PHP. El malware fue descubierto en marzo de 2026, cuando F5 Networks reclasificó una vulnerabilidad previamente considerada de de…») |
Sin resumen de edición |
||
| (No se muestra una edición intermedia del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
[[Categoría:Familias de malware]] | [[Categoría:Familias de malware]] | ||
[[Categoría: | [[Categoría:CAMPAÑAS|CAMPAÑAS]] | ||
= PoisonedRefresh: Rootkit en F5 BIG-IP APM = | = PoisonedRefresh: Rootkit en F5 BIG-IP APM = | ||
Revisión actual - 21:45 9 sep 2026
PoisonedRefresh: Rootkit en F5 BIG-IP APM
PoisonedRefresh (también identificado como Linux/Agnt-IC por Sophos) es un rootkit para Linux diseñado específicamente para atacar dispositivos F5 BIG-IP APM (Access Policy Manager) que ejecutan componentes Apache y PHP. El malware fue descubierto en marzo de 2026, cuando F5 Networks reclasificó una vulnerabilidad previamente considerada de denegación de servicio (DoS) como una falla crítica de ejecución remota de código (RCE), identificada como CVE-2025-53521.
El rootkit destaca por sus técnicas avanzadas de evasión, incluyendo la inyección de webshells en memoria sin escribir en disco, el secuestro del proceso de arranque de Apache y la creación de una puerta trasera local que permite acceso a una shell interactiva sin abrir puertos de red.
Cronología del ataque
Vulnerabilidad CVE-2025-53521
- Descripción inicial: Originalmente clasificada como una vulnerabilidad de denegación de servicio (DoS).
- Reclasificación (marzo 2026): F5 Networks la reclasificó como una vulnerabilidad crítica de ejecución remota de código (RCE) sin autenticación.
- Afecta a: Sistemas BIG-IP APM con políticas de acceso configuradas en un servidor virtual.
- Estado: Activamente explotada en ataques en la naturaleza (in the wild).
- Gravedad: Crítica (CVSS no especificado, pero reclasificado como RCE crítico).
Detección y nombramiento
- ESET: Nombró al malware PoisonedRefresh durante su análisis independiente.
- Sophos: Lo identificó como Linux/Agnt-IC y publicó un análisis técnico detallado.
- ShadowServer: Reportó que al menos 795 puntos finales F5 BIG-IP APM estaban expuestos en línea (septiembre 2026).
Descripción técnica del malware
El rootkit PoisonedRefresh se despliega como una carga útil de segunda etapa después de que un instalador o componente de propagación haya infectado el ejecutable Apache `/usr/sbin/httpd`. El instalador también modifica configuraciones de SELinux y persiste en las imágenes de actualización de BIG-IP.
1. Infección del ejecutable Apache
- El instalador malicioso (identificado como `umount` en algunos análisis) prepende un binario ELF malicioso al ejecutable legítimo `/usr/sbin/httpd`.
- La infección se activa cuando el primer argumento de la línea de comandos es `/mnt/tm_install/<dir>`.
- El instalador también infecta los archivos `umount`, `httpd` y `rc.local` dentro del directorio `tm_install`, permitiendo que el malware persista en las imágenes de instalación y se propague a otros sistemas BIG-IP.
- El malware deshabilita SELinux durante la infección.
2. Técnicas avanzadas del rootkit
Carga personalizada y secuestro de `__libc_start_main`
- El binario está stripped y enlazado estáticamente, lo que limita el análisis de importaciones.
- En lugar de la ruta de inicio normal, el malware salta directamente a un cargador personalizado que:
1. Reabre su propia imagen a través de `/proc/self/exe`. 2. Busca el ELF original incrustado en su interior. 3. Mapea manualmente los segmentos `PT_LOAD` en memoria. 4. Redirige la ejecución a través de su propia envoltura de `__libc_start_main`.
- Esto permite al malware ejecutar su código antes de que el `main()` de la aplicación host sea invocado.
Ocultación de strings con RC4
- Las strings operativas clave están cifradas con RC4 usando la clave hardcodeada de 16 bytes: `TrswBWIl90Z5e38n`.
- Las strings se descifran en tiempo de ejecución, ocultando nombres de funciones, bibliotecas y archivos objetivo.
- Las strings descifradas incluyen:
* `/proc/self/exe` y `/proc/self/maps` para autoinspección. * `__libc_start_main`, el servicio de inicio de libc. * `apr_dso_load` y `apr_time_now`, funciones de APR dentro de Apache. * `libphp`, el módulo PHP objetivo. * APIs de archivos y memoria como `open`, `close`, `mmap`. * Primitivas de hilos como `pthread_create` y `pthread_detach`.
3. Targeting de Apache y PHP
Hooking de `apr_dso_load`
- El malware hookea la función `apr_dso_load` de Apache Portable Runtime (APR).
- Cuando Apache carga el módulo `libphp`, el hook se activa y el malware modifica el comportamiento dentro de ese módulo.
Hooking de `apr_time_now`
- Esta función de tiempo de APR se invoca con frecuencia en un proceso Apache en ejecución.
- El malware utiliza esta función como un disparador retardado para iniciar el hilo que crea la puerta trasera del socket UNIX local.
Localización de `libphp` en memoria
- El rootkit lee `/proc/self/maps` para localizar la dirección de inicio y fin de la región de memoria de `libphp`.
- Luego:
1. Cambia los permisos de memoria a `RWX` (Lectura-Escritura-Ejecución). 2. Parchea las relocalizaciones y los objetivos de llamada. 3. Restaura los permisos a `RX` (Lectura-Ejecución).
- Esto permite al malware redirigir selectivamente las llamadas a funciones dentro de `libphp`.
Redirección de ejecución dentro de `libphp`
- El rootkit redirige las llamadas a funciones de archivos y memoria (`open`, `close`, `mmap`, `__fxstat`) dentro de `libphp`.
- Esto le da control sobre cómo PHP abre, mapea y ejecuta archivos de script.
4. Inyección del webshell en memoria
Archivos objetivo
El malware intercepta la apertura de tres archivos PHP específicos:
- `apm_css.php3`
- `full_wt.php3`
- `webtop_popup_css.php3`
Estos archivos fueron elegidos porque están presentes en entornos webtop de BIG-IP APM y es menos probable que activen alertas de seguridad.
Mecanismo de inyección
1. Cuando PHP abre uno de estos archivos, el rootkit registra el descriptor de archivo. 2. Cuando el archivo se mapea en memoria (`mmap`), el rootkit crea una vista en memoria modificada que contiene:
* El webshell malicioso prepended al contenido original. * El archivo en disco permanece sin cambios.
Funcionamiento del webshell
El webshell inyectado en memoria acepta solicitudes HTTP con un formato especial:
1. Lee los bytes de `php://input`. 2. Busca el prefijo mágico `BSOHAzPB` al inicio del cuerpo de la solicitud. 3. Descifra el resto utilizando un pequeño cifrado de flujo con la clave `wSLjN1beuR`. 4. Ejecuta el contenido descifrado mediante la función `eval()` de PHP. 5. Devuelve una respuesta HTTP 201 con el tipo de contenido `text/css; charset=utf-8` para ocultar la actividad maliciosa.
5. Puerta trasera local (UNIX socket)
Activación retardada
- El hilo que crea la puerta trasera local se inicia cuando Apache comienza a realizar llamadas rutinarias de tiempo (a través del hook de `apr_time_now`).
- Esto minimiza el riesgo de desestabilizar el servicio y ayuda a que el implante se integre en el comportamiento normal de ejecución.
Socket `bigtlog.pipe`
- El rootkit crea un socket local AF_UNIX en `/run/bigtlog.pipe`.
- El socket está protegido por contraseña con el token `Kzwd6jM5`.
- Después de la autenticación, el rootkit redirige las corrientes de entrada, salida y error a una shell interactiva (`/bin/bash`).
- El socket no está expuesto directamente a Internet, por lo que los atacantes necesitarían otro punto de acceso al dispositivo para interactuar con él.
Impacto y alcance
- Dispositivos afectados: F5 BIG-IP APM con políticas de acceso configuradas.
- Versiones vulnerables: Aquellas afectadas por CVE-2025-53521.
- Número de sistemas expuestos: 795 puntos finales expuestos en línea (según ShadowServer).
- Capacidades del malware:
* Ejecución de código del lado del servidor bajo demanda. * Persistencia en imágenes de actualización de BIG-IP. * Evasión de detección mediante inyección en memoria.
Señales de compromiso (IOCs)
Archivos y hashes
| Tipo | Valor | |------|-------| | **SHA256** | `26bd5b0722d1dbab5db749a063c49bc8638653ac2addfead7a9cb3d6d57bccc9` | | **SHA1** | `E5066C2490197FFBE0E916BC232114A61CB09A16` | | **SHA1** | `7A2FC3510B502D8FDC2548F907AF08308840851C` | | **SHA1** | `E2D6C74E815A07F555CD678F7AD0EFEDEAE98ECD` |
Indicadores de actividad maliciosa
- Procesos de Apache que leen `/proc/self/maps`.
- Cambios en las protecciones de memoria de `libphp` (RWX seguido de RX).
- Creación del archivo `/run/bigtlog.pipe`.
- Procesos de Apache que ejecutan `/bin/bash`.
- Solicitudes POST inusuales a los endpoints `.php3` objetivo.
- Respuestas PHP que combinan código HTTP 201 con `Content-Type: text/css`.
Mitigaciones y defensa
Para administradores de F5 BIG-IP
- Aplicar el parche: F5 ha lanzado parches para CVE-2025-53521. Consulte el [advisory oficial K000160486](https://my.f5.com/manage/s/article/K000160486).
- Revisar sistemas: Siga las guías de F5 para la evaluación de compromiso antes de aplicar medidas genéricas de hardening.
- Verificar logs: Revise los registros de acceso y las historias de terminal en busca de signos de actividad maliciosa.
- Restringir archivos .php3: Si no es necesario, considere deshabilitar la ejecución de archivos `.php3` después de revisar el impacto en la aplicación.
Hardening y detección
- Bloquear acceso a /proc cuando sea posible.
- Monitorear cambios de permisos de memoria en procesos de Apache.
- Detectar la creación de sockets UNIX inusuales, especialmente en `/run`.
- Auditar solicitudes HTTP con código 201 y tipo de contenido CSS.
- Restringir ptrace para reducir oportunidades de inyección:
```bash echo 1 > /proc/sys/kernel/yama/ptrace_scope