¿Necesita Cloud Computing? Empiece ahora

Dark background with blue code overlay
Blog

El malware Capoae toma impulso: utiliza diferentes vulnerabilidades y tácticas para propagarse 

Larry Cashdollar

escrito por

Larry Cashdollar

September 16, 2021

Larry Cashdollar

escrito por

Larry Cashdollar

Larry W. Cashdollar lleva más de 18 años trabajando en el campo de la seguridad como investigador de vulnerabilidades y actualmente es miembro del equipo de Respuesta a Incidentes de Seguridad de Akamai Technologies. Estudió Informática en la Universidad del Sur de Maine, ha documentado más de 150 vulnerabilidades y exposiciones comunes (CVE) e incluso ha presentado su investigación en BSides Boston, OWASP Rhode Island y Defcon. En su tiempo libre, le gusta hacer actividades al aire libre y reconstruir motores de minibicicletas.

Introducción

Recientemente, las noticias se han hecho eco de la proliferación de malware de criptominería comprimido con UPX y escrito en el lenguaje de programación Golang cuyo objetivo son aplicaciones web y sistemas Linux. La táctica principal del malware es propagarse aprovechando los sistemas vulnerables y las credenciales administrativas poco seguras. Una vez infectados, estos sistemas se utilizan para extraer criptomonedas.  A la muestra analizada en esta publicación la he bautizado "Capoae" por la salida de código que recibí en la terminal. 

Casi al mismo tiempo que se propagaban las noticias sobre estos ataques de malware de criptominería, los señuelos del equipo de respuesta a incidentes e inteligencia en seguridad (SIRT) se infectaron con malware PHP que llegó a través de una puerta trasera de un complemento de WordPress llamado "download-monitor".

El complemento "download-monitor" se había instalado después de que se adivinaran las credenciales de administración de WordPress poco seguras del señuelo. También se descargó un archivo binario de 3 MB comprimido con UPX escrito en Golang en /tmp.  Al examinarlo, era evidente que el malware tenía cierta funcionalidad de descifrado y un archivo cifrado almacenado en otro directorio.  

Cuando se revisaron los registros de acceso del señuelo con más detenimiento, se detectó que se había realizado una solicitud con una carga oculta enviada en un parámetro GET.

captura de pantalla

Este argumento dw está codificado con los sistemas rot13 y base64.  Una vez que el valor base64 vuelve a su estado original y se descodifica mediante rot13 se convierte en:  

Fig. 2) La cadena anterior de la figura 1 está descodificada Fig. 2) La cadena anterior de la figura 1 está descodificada

La carga consta de dos partes: la ubicación (url) del archivo que se descargará y la ruta (dir) para colocarlo en el sistema de archivos de la máquina infectada. 

El archivo wp.txt se descarga, se cambia el nombre a wp.php y una vez ejecutado, se elimina. Sin embargo, no pude rescatar el contenido de este archivo debido a las limitaciones de mi sistema de registro. El nombre del archivo ProductList.php también se cambia añadiendo una cadena aleatoria al final del nombre para evitar que los transeúntes puedan encontrarlo. La cadena parece generarse con la siguiente función bash que utiliza un md5sum de la salida del comando de fecha. 

echo $(date|md5sum|awk -v n="$(date +%s)" '{print substr($1,1,n%7+6)}')

El archivo ./wp-content/plugins/download-monitor/src/Libs/uaparser/regexes.php es un shell web cifrado que toma un parámetro como un argumento "dw".  Se le llama desde el script principal ProductList.php, donde la carga dw se descifra y se ejecuta. La clave de descifrado de la carga se basa en la cadena User-Agent de la solicitud.

Fig. 3) La cadena User-Agent que se utiliza como clave de descifrado Fig. 3) La cadena User-Agent que se utiliza como clave de descifrado

Además, se agrega otro shell web como puerta trasera en ./wp-admin/includes/class-wp-page-n3RkIo.php

Contiene un shell web simple que se puede utilizar para cargar archivos:

Fig. 4) Un pequeño script de shell web para la carga de archivos Fig. 4) Un pequeño script de shell web para la carga de archivos

Al conectarse al script ProductList.php con un navegador web y la cadena User-Agent correcta se genera la siguiente interfaz de shell web:

Fig. 5) El shell web una vez se ha descifrado y ejecutado Fig. 5) El shell web una vez se ha descifrado y ejecutado

Qué hay en el archivo binario

Después de descomprimir el malware con "upx -d", se puede observar la estructura binaria real. Al examinar dicha estructura, salta a la vista que incluye funciones dirigidas a un conjunto de vulnerabilidades conocidas y marcos de gestión de contenido. A continuación, se enumeran algunas de las funciones más interesantes. En función de los nombres de las funciones y el desmontaje en R2, podemos hacernos una idea de lo que está pasando.

El malware de Golang está registrado en VirusTotal con fecha de origen del 08/09/2021:

$ ./redress -compiler Capoae 

Versión del compilador: go1.15.4 (2020-11-05T21:21:32Z)

Con Redress, observamos que el archivo binario se compiló con Go v1.15.4.

Y si buscamos un poco más, también encontramos el código de explotación para CVE-2020-14882, que se dirige a la plataforma Oracle WebLogic Server con una ejecución de código remoto (RCE) no autenticada.

El archivo binario utiliza una lista de credenciales de inicio de sesión poco seguras para forzar su acceso a los sistemas que ejecutan SSH.  Una vez autenticado correctamente, el malware instala una clave pública en .ssh/authorized_keys.

A continuación, se muestra otro ejemplo de código de explotación, esta vez dirigido a CVE-2018-20062, una vulnerabilidad de ejecución de código remoto conocida y muy explotada en ThinkPHP.

Esta sección contiene otro mecanismo de difusión.  En este caso, el malware intenta forzar el uso de pares de credenciales poco seguros contra las instalaciones de WordPress descubiertas a través de la API XMLLRPC de WordPress.

Desmontaje parcial de las funciones que se dirigen a instalaciones de Jenkins para CVE-2019-1003029 y CVE-2019-1003030, ambas vulnerabilidades de RCE.

El código guard.go mantiene la persistencia al agregar una entrada a crontab.

En la captura de pantalla anterior, se muestra una lista de funciones vinculadas al archivo xmrig_linux_amd64.go. Estas son enlaces de shell que exponen métodos para la interconexión de la criptominería. La campaña de minería utiliza el popular software de minería XMRig, pero es el malware quien se encarga de iniciarlo y supervisarlo en última instancia.

El malware también incluye un escáner de puertos que se utiliza para buscar servicios y puertos abiertos. Se dirige a direcciones IP generadas de forma aleatoria y comprueba si hay puertos contra los que pueda iniciar sus diferentes cargas de explotación.

Detonación del malware

Tras la ejecución del archivo binario de Golang, apareció una única y confusa cadena en el terminal.

Fig. 6) Salida tras la ejecución del malware Capoae Fig. 6) Salida tras la ejecución del malware Capoae

Si observamos un rastreo de la ejecución, podemos ver cuáles serían los bytes no imprimibles del texto si mi terminal admitiese caracteres en cirílico. 

Fig. 7) Salida del rastreo que muestra la palabra rusa "exploración" Fig. 7) Salida del rastreo que muestra la palabra rusa "exploración"

La salida es realmente "Сканирование", que en ruso significa "exploración".  Este es el motivo por el que he decidido utilizar solo los caracteres ASCII que aparecían en mi terminal tras la detonación inicial y denominar "Capoae"a la muestra de malware.

Tras ejecutar el malware Capoae, este muestra técnicas bastante inteligentes de persistencia. El malware elige primero una ruta de sistema aparentemente legítima de una pequeña lista de ubicaciones en un disco donde es probable que encuentre archivos binarios del sistema. A continuación, genera un nombre de archivo aleatorio de seis caracteres. Utiliza ambos elementos para copiarse en la nueva ubicación del disco y después autoeliminarse.

Una vez hecho esto, inyecta o actualiza una entrada Crontab que activará la ejecución de este archivo binario recién creado.  Cuando se produce esta detonación, todo el proceso se inicia de nuevo.  Esto hace que acabar con la infección se parezca un poco al juego de aplastar al topo, ya que se lucha contra una infección o carga en constante movimiento. 

Fig. 8) Entrada Crontab Fig. 8) Entrada Crontab

Entre los exploits RCE comunes para Oracle WebLogic, como CVE-2020-14882 y CVE-2018-20062 que afectaron a ThinkPHP, observamos que el marco de gestión de contenido de WordPress es un objetivo específico.  El malware se aprovecha de credenciales de inicio de sesión poco seguras para obtener acceso. 

Fig. 9) Lista de funciones específicas de WordPress Fig. 9) Lista de funciones específicas de WordPress

El tema editable del exploit escribió un pequeño script PHP para footer.php en el tema twentynineteen que descargó el archivo ldr.sh y lo ejecutó. La cadena user-agent utilizada es el método a través del cual se infectó el host. En la siguiente captura de pantalla, vemos que la cadena user-agent está establecida en "brute_wordpress_admin".

Fig. 10) Captura de paquete de la modificación en footer.php Fig. 10) Captura de paquete de la modificación en footer.php

Si observamos la función exploitUploadPlugin, vemos que puede instalar un complemento mediante la interfaz del panel de administración. En la figura 10 se resaltan algunas de las cadenas de parámetros de instalación del complemento que aparecen en el desmontaje. 

Fig. 11) Desmontaje parcial de exploitUploadPlugin Fig. 11) Desmontaje parcial de exploitUploadPlugin

Por supuesto, el propósito de este malware es obtener criptomonedas.  A continuación, se muestra el archivo de configuración del grupo de criptominería, que revela que los agentes maliciosos utilizan un grupo de minería alojado en ntup.net, una empresa rusa de servidores privados virtuales (VPS).

Fig. 12) Archivo de configuración del minero en JSON Fig. 12) Archivo de configuración del minero en JSON

Conclusiones finales 

Las campañas de criptominería siguen evolucionando.  El uso de varias vulnerabilidades y tácticas de la campaña Capoae muestra claramente la intención de estos operadores de introducirse en tantas máquinas como les sea posible. 

La buena noticia es que las técnicas que recomendamos a la mayoría de empresas para mantener las redes y los sistemas seguros se aplican también en este caso. No utilice credenciales poco seguras o predeterminadas para los servidores o las aplicaciones implementadas. Asegúrese de mantener actualizadas las aplicaciones implementadas con los parches de seguridad más recientes y de comprobarlas periódicamente. 

Vigile el consumo de recursos del sistema y si este es más alto de lo normal. Esté atento a procesos de ejecución inesperados o extraños, artefactos sospechosos (archivos, entradas crontab, claves SSH, etc.), entradas de registro de acceso sospechosas, etc. Todo ello puede ayudarle a identificar las máquinas atacadas.  A continuación, encontrará una lista de indicadores de riesgo (IoC) que se puede utilizar para revisar los sistemas de archivos y el tráfico de red en busca de posibles infecciones.

IoC

SHA256SUM

  • 7d1e2685b0971497d75cbc4d4dac7dc104e83b20c2df8615cf5b008dd37caee0 Capoae UPX Packed

  • fd8f419f0217be0037ba7ae29baf4c3a08c8f2751b0b1be847b75bd58d6e153f Capoae UPX Unpacked

  • 5a791205bc08396bc413641ea6e5d9fd5ef3f86caf029f51d4da65be700a2b1e ProductList-n3RkIo.php

  • f37cc420165fb809eb34fbf9c8bf13236a0cc35dee210db5883107a08a70f66d class-wp-page-n3RkIo.php

  • 53521fab245023c56cf5562bd562d6ba98445a052155eb2e40c4a13a9343e6eb regexes.php

  • 9ed14f470c95759cc0dca86fd913714b6733af8c0aaa35e3a7ad6604455e2230 sys.i686 UPX Packed

  • af7c5617a89c40aac9eb2e573a37a2d496a5bcaa9f702fa919f86485e857cb74 sys.x86_64 UPX Packed

  • 7eb444671ab338eccadf81d43166661ccb4b1e487836ab41e2245db61dceed31 ldr.sh

 

IP

  • 198.100.145.141

  • 23.238.128.118

  • 69.12.66.218

  • 207.126.93.190


Larry Cashdollar

escrito por

Larry Cashdollar

September 16, 2021

Larry Cashdollar

escrito por

Larry Cashdollar

Larry W. Cashdollar lleva más de 18 años trabajando en el campo de la seguridad como investigador de vulnerabilidades y actualmente es miembro del equipo de Respuesta a Incidentes de Seguridad de Akamai Technologies. Estudió Informática en la Universidad del Sur de Maine, ha documentado más de 150 vulnerabilidades y exposiciones comunes (CVE) e incluso ha presentado su investigación en BSides Boston, OWASP Rhode Island y Defcon. En su tiempo libre, le gusta hacer actividades al aire libre y reconstruir motores de minibicicletas.