Dark background with blue code overlay
Blog

Kingsing evoluciona | blog Akamai

Evyatar Saias

escrito por

Evyatar Saias

September 16, 2021

Evyatar Saias

escrito por

Evyatar Saias

Evyatar Saias es un experto en seguridad del departamento de Inteligencia sobre Seguridad de Akamai. 

Introducción

Un botnet de fondo grande y persistente y criptominable es un sistema de infección a escala en todo Internet. 

La campaña fue vista por primera vez por Akamai SIRT el 16 de febrero de 2021 y parece estar dirigida a sistemas Windows y Linux. La botnet capturó su interés y el del equipo Akamai SIRT porque ha demostrado ser muy activa en un conjunto diverso de regiones geográficas, incluidas América, Europa y Asia. La botnet ha estado operando con la misma dirección IP de distribución (194.38.20.199) sin necesidad de rotar durante más de seis meses. Anteriormente, la campaña solo tenía como objetivo máquinas Linux, pero se expandió recientemente a sistemas Windows también.

Infección de sistemas Windows

Para infectar equipos Windows, botnet aprovecha CVE-2020-14883, Una vulnerabilidad que afecta a las versiones 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 y 14.1.1.0.0 de Oracle WebLogic Server. Cuando se aprovecha, permite que un atacante realice una ejecución remota de código (RCE), lo que puede dar como resultado una conclusión del servidor Oracle WebLogic. 

La infección comienza haciendo que el equipo víctima descargue y ejecute un archivo XML llamado wbw.xml. En los equipos Windows, el archivo XML se ejecuta a través de la clase ClassPathXmlApplicationContext

Fig. 1) el equipo víctima descarga y ejecuta un archivo xml remoto a través de la clase ClassPathXmApplicationContext, CVE-2020-14883 Fig. 1) el equipo víctima descarga y ejecuta un archivo xml remoto a través de la clase ClassPathXmApplicationContext, CVE-2020-14883

 

El archivo wbw.xml obtenido contiene un comando PowerShell integrado, que se ejecuta en la máquina de la víctima. El comando es:

 

Intenta descargar una secuencia de comandos de PowerShell llamada " 1.ps1meterse en la máquina de las víctimas usando el System.Net.WebClient.DownloadString Método: También aprovecha el indicador Set-ExecutionPolicy Bypass para garantizar que no se bloquee nada y que no se generarán avisos ni advertencias durante la ejecución. 

Fig. 2) el contenido del archivo wbw.xml que contiene un comando PowerShell que descarga una secuencia de comandos PowerShell llamada 1.ps1 en la máquina de la víctima Fig. 2) el contenido del archivo wbw.xml que contiene un comando PowerShell que descarga una secuencia de comandos PowerShell llamada 1.ps1 en la máquina de la víctima

 

Balance 1.ps1 luego, script descarga un archivo ejecutable crypto miner llamado xmrig.exe, así como también un config.json archivo, que contiene información de configuración para que el minero la consuma,  como direcciones de crypto wallet, extremos de crypto pool y configuraciones adicionales. Además de eso, el 1.ps1 también contiene un $miner_name variable que almacena el nuevo nombre al que se le cambiará el nombre al archivo ejecutable del crypto miner, xmrig.exe  , en este caso se le cambiará el nombre a xmrig.exe a "fecha de finalización del sistemase ejecutó y luego se ejecutó. 

Fig. 3) una parte de la secuencia de comandos 1.ps1 de PowerShell Fig. 3) una parte de la secuencia de comandos 1.ps1 de PowerShell
Fig. 4) una parte de config.json, que contiene configuraciones para el archivo ejecutable minero, como extremos de pooleta de minería y direcciones de criptografía. Fig. 4) una parte de config.json, que contiene configuraciones para el archivo ejecutable minero, como extremos de pooleta de minería y direcciones de criptografía.

 

Balance 1.ps1 el guion establece la persistencia en la máquina de la víctima para actualizar el config.json archivo y el minero. Lo hace aprovechando SchTasks.exe, que permite la creación, eliminación y ejecución de tareas programadas en una máquina local o remota de PowerShell. Más información sobre SchTasks.exe se puede encontrar aquí. La tarea programada se denomina "Actualice el servicio para Windows Servicese puede aprovechar nuevamente la -Alerta de omisión ExecutionPolicy para evitar que se generen advertencias o avisos mientras se ejecuta, así como la bandera oculta de estilo de ventana para permanecer oculta.

Fig. 5) el script PowerShell 1.ps1 establece la persistencia mediante la creación de una tarea programada llamada "Update Service for Windows Service" (Actualizar servicio para Windows) para enviar actualizaciones al archivo de configuración y al archivo ejecutable miner Fig. 5) el script PowerShell 1.ps1 establece la persistencia mediante la creación de una tarea programada llamada "Update Service for Windows Service" (Actualizar servicio para Windows) para enviar actualizaciones al archivo de configuración y al archivo ejecutable miner

Infección de sistemas Linux

La campaña está aprovechando varios CVE para lograr RCE con el fin de infectar sistemas Linux. Junto con el malware de Kintsing, que contiene un crypto miner, las cargas útiles de Linux también tienen  un troyano de acceso remoto (RATA). Los servicios dirigidos incluyen Oracle WebLogic Server, Redis, Apache Solr, PHPUnit y Supervisor XML-RPC.

Esta campaña también aprovecha el servidor Oracle WebLogic CVE-2020-14883 en sistemas Linux. Sin embargo, a diferencia de la versión de Windows de esta vulnerabilidad, donde la RCE ocurre a través de  ClassPathXmlApplicationContext Clase, en Linux, se produce a través de FileSystemXmlApplicationContext clase. El archivo XML malicioso se denomina wb.xml, que descarga un script bash en lugar del anterior wbw.xml Para Windows, que descarga una secuencia de comandos de PowerShell.

Fig. 6) el equipo víctima descarga y ejecuta un archivo xml remoto a través de la clase FileSystemXmlApplicationContext, CVE-2020-14883 Fig. 6) el equipo víctima descarga y ejecuta un archivo xml remoto a través de la clase FileSystemXmlApplicationContext, CVE-2020-14883
Fig. 7) el contenido del archivo wb.xml, que contiene un comando bash que se descarga y ejecuta un script bash llamado wb.sh en la máquina de la víctima Fig. 7) el contenido del archivo wb.xml, que contiene un comando bash que se descarga y ejecuta un script bash llamado wb.sh en la máquina de la víctima

 

En los sistemas Linux, la infección comienza alcanzando la RCE utilizando cualquiera de los CVE que se indican en la tabla a continuación para descargar un archivo de script bash en la máquina de la víctima.

Fig. 8) los CVE que aprovecha la campaña para infectar a las víctimas Fig. 8) los CVE que aprovecha la campaña para infectar a las víctimas

 

Aunque el nombre del archivo de script bash varía entre s.sh , p.sh, sup.sh, d.sh, ex.sh, r.sh, spr.sh, tf.sh o wb.sh todos hacen casi lo mismo.

El script bash elimina a cualquier minero de la competencia que pueda ya existir en el sistema y desactiva las funciones de seguridad y registro. Luego, descarga el malware de Kinsing (escrito en Golang), establece la persistencia mediante el uso de crontab y, a continuación, inicia la minería de cifrado.

Fig. Una parte del script bash malicioso que descarga el cryptolminer Kinsing en la máquina Linux de la víctima Fig. Una parte del script bash malicioso que descarga el cryptolminer Kinsing en la máquina Linux de la víctima

 

Una vez ejecutado en la máquina de la víctima, el malware Kinsing crea un segundo proceso llamado kdevtmpfsi en el directorio /tmp, que es el crypto miner xmrig, y lo ejecuta. El malware Kinsing monitorea constantemente kdevtmpfsi proceso para garantizar que se esté ejecutando.

& Dirección IP de control de comandos de decodificación 

La forma en que el malware se comunica con el servidor C2 es mediante la decodificación de la dirección IP C2 en el tiempo de ejecución mediante una función llamada GetActiveC2CUrl. Balance GetActiveC2CUrl La función utiliza un cifrado de flujo RC4 para los datos hexadecimales de texto sin formato XOR con una clave de texto sin formato que se almacenan dentro del binario. 

Debido a la naturaleza de cómo las cadenas se almacenan dentro de un binario Golang  , donde todas las cadenas estáticas básicamente se concatenan entre sí, lo que da como resultado una gran hinchazón de cadenas, la clave de texto sin formato y los datos hexadecimales se pueden ocultar fácilmente dentro de la cadena masiva. Después de invertir un poco el GetActiveC2CUrl función, se puede encontrar la ubicación en la memoria y la longitud de la llave y de los datos hexagonales.

Fig. 10) se muestra la ubicación en la memoria y la longitud de los datos hexadecimales de texto no cifrado C2 y la clave de cifrado. Fig. 10) se muestra la ubicación en la memoria y la longitud de los datos hexadecimales de texto no cifrado C2 y la clave de cifrado.

Balance GetActiveC2CUrl La función hexadecimal decodifica los datos hexagonales C2 y luego, junto con la tecla, ambos pasan a una segunda función llamada RC4. La personalización RC4 utiliza la función Flujo de trabajo de FUNC (c *Cipher) (dst, src []byte) Internamente desde el paquete de golang rc4 para generar la dirección IP C2.

Ahora que se obtienen los datos hexadecimales C2 y la tecla, se obtiene el GetActiveC2CUrl La función se puede volver a diseñar y reescribir en Golang para calcular la dirección IP C2 activa.

Fig. 11) la función getActiveC2CUrl() se reescribe en Golang con los datos hexadecimales C2 obtenidos y la clave para generar la dirección IP C2 activa. Fig. 11) la función getActiveC2CUrl() se reescribe en Golang con los datos hexadecimales C2 obtenidos y la clave para generar la dirección IP C2 activa.

Capacidades PARA RATAS

El malware Kinsing tiene capacidades de acceso remoto de troyanos (RATAS) que se pueden encontrar en una función llamada DoTask() dentro del binario. Balance DoTask (tarea de dosis la función contiene algunas llamadas de funciones interesantes que se ejecutan según una determinada entrada

  • RunTaskWithScan()

  • UpdateTask()

  • StartCmd()

  • EjecutaskOut()

  • masscan()

  • medias ()

  • conexión posterior ()

  • RunTaskWithHttp()

  • DownloadAndExecute()

 

Una de estas funciones interesantes es StartCmd() esto permite que se ejecute un comando arbitrario en la máquina de la víctima.

 

Fig. 12) la función de doTask() en forma descompilado muestra las capacidades DE LAS RATAS del malware. Resaltado es la función startCmd() incorporada que permite ejecutar un comando arbitrario en la máquina de la víctima. Fig. 12) la función de doTask() en forma descompilado muestra las capacidades DE LAS RATAS del malware. Resaltado es la función startCmd() incorporada que permite ejecutar un comando arbitrario en la máquina de la víctima.

Comunicación de control de comandos &

El malware se comunica con el C2,185.154.53.140, a través de HTTP.  Envía las solicitudes HTTP C2 con regularidad, recibe instrucciones para ser ejecutadas y proporciona comprobaciones de estado simples.

La máquina infectada envía la información C2 con cada solicitud HTTP sobre su estado actual y los recursos del sistema, como el número de núcleos, la memoria, el sistema operativo, si se obtuvieron o no privilegios de raíz y más.  Todos estos parámetros se proporcionan al servidor C2 mediante encabezados HTTP personalizados.

 Fig. 13) Una solicitud de POST realizada desde una máquina infectada al C2, que contiene información sobre los recursos del sistema de la víctima y los privilegios obtenidos Fig. 13) Una solicitud de POST realizada desde una máquina infectada al C2, que contiene información sobre los recursos del sistema de la víctima y los privilegios obtenidos

Un punto final que la máquina infectada solicita constantemente para recibir instrucciones es  GET. Cuando una máquina infectada hace una solicitud DE GET a los C2 GET endpoint, el malware intenta inmediatamente descargar nuevos scripts de shell maliciosos adicionales de la IP de distribución original 194.38.20.199.

Fig. 14) la máquina infectada realiza una solicitud GET al punto final /GET del C2 y, como resultado, obtiene nuevos scripts de shell de la IP de distribución original 194.38.20.199 Fig. 14) la máquina infectada realiza una solicitud GET al punto final /GET del C2 y, como resultado, obtiene nuevos scripts de shell de la IP de distribución original 194.38.20.199

 

Las secuencias de comandos de bash que luego se descargan de la IP 194.38.20.199 de distribución original como resultado de la reprueba GET se denomina punto final del C2 ph.sh y spre.sh. Estos dos archivos son diferentes del script de bash inicial de infección que vimos antes, cada uno tiene un propósito diferente y contienen vectores de infección adicionales.


Primero examinaremos el ph.sh script, descarga un rootkit llamado libsystem.so desde el 194.38.20.199/libsystem.so terminal además del malware Kinsing existente en la máquina de la víctima. Luego, el script ph.sh precarga este rootkit en /etc/ld.so.precarga

Fig. 15) una parte del script de ph.sh bash que precarga el libsSystem.SO rootkit en /etc/ld.SO.precarga Fig. 15) una parte del script de ph.sh bash que precarga el libsSystem.SO rootkit en /etc/ld.SO.precarga

 

Balance ph.sh el script también establece un segundo mecanismo de persistencia, además de los trabajos de cron ya existentes que se inyectaron previamente con el script inicial. Para hacerlo, se registra un servicio de sistema que volverá a infectar periódicamente el host.

Fig. 16) una parte del script ph.sh bash que crea un servicio de sistema para establecer la persistencia y volver a infectar al host periódicamente. Fig. 16) una parte del script ph.sh bash que crea un servicio de sistema para establecer la persistencia y volver a infectar al host periódicamente.

 

Si desea obtener más información sobre el libsSystem. De esta manera, el rootkit que instala el script ph.sh y su funcionamiento interno, Trend Micro escribió un fantástico blog sobre este rootkit específico que se puede encontrar aquí

El segundo archivo de script bash interesante que se obtiene debido a un GET La respuesta del criterio de valoración C2 es spre.sh. Su objetivo es propagar la infección a hosts adicionales mediante la búsqueda de credenciales ssh para cualquier host al que la víctima tenga acceso mediante un examen  ~/.ssh/config , ~/.bash_historyy .ssh/known_hosts. Balance spre.sh luego, el script intentará ingresar a los hosts descubiertos mediante los cres obtenidos que se encontraron e infectarlos también.

 

Fig. 17) el script spre.sh bash propaga la infección a hosts adicionales utilizando ssh buscando credenciales ssh en ~/.ssh/config ~/.bash_history y .ssh/known_hosts Fig. 17) el script spre.sh bash propaga la infección a hosts adicionales utilizando ssh buscando credenciales ssh en ~/.ssh/config ~/.bash_history y .ssh/known_hosts

 

Otro punto de destino C2 interesante que la máquina infectada solicita para obtener instrucciones es el /mg criterio de valoración. Cuando la máquina infectada hace una solicitud DE GET al /mg terminal, el C2 responde con algunos caracteres, luego inmediatamente la máquina infectada comenzará a comunicarse con una tercera dirección IP, 95.181.179.88, que parece ser responsable de dar comandos de minería a la máquina infectada en forma de una carga útil JSON-RPC sobre HTTP.

Fig. 18) la máquina infectada hace una solicitud DE GET al criterio de valoración /mg de C2 Fig. 18) la máquina infectada hace una solicitud DE GET al criterio de valoración /mg de C2

Qué hacer

Para mitigar estas amenazas, el SIRT de Akamai recomienda monitorear los procesos en sus sistemas para detectar un consumo de recursos anormalmente alto y una actividad sospechosa en la red. El alto uso anormal de CPU para un proceso determinado puede ser un indicador de actividad de criptomación.

El SIRT de Akamai también recomienda que revise con frecuencia los trabajos Cron que están registrados en las pestañas frontales de sus sistemas para asegurarse de que los trabajos Cron no se comunican con ninguna dirección IP desconocida, que es una técnica común para que el malware de Linux establezca la persistencia, y la campaña analizada no es una excepción.

En los sistemas Windows, se debe hacer lo mismo con PowerShell mediante el uso de SchTasks.exe /Query para mostrar cualquier tarea programada que se haya creado con esta campaña. También verifique los procesos en ejecución en sus sistemas Linux y asegúrese de que los procesos con el nombre kinsing o kdevtmpfsi no se estén ejecutando y que un proceso denominado supdate no se esté ejecutando en sus sistemas Windows.

Agregue una autenticación sólida a sus sistemas cuando sea posible, las contraseñas débiles se pueden forzar fácilmente. También asegúrese de que los servicios que están dirigidos por la campaña analizada, que incluyen Oracle WebLogic Server, Redis, Apache Solr, PHPUnit y Supervisor XML-RPC, no se enfrentan a Internet si no necesitan ser, lo que reduce en gran medida el riesgo de que estos servicios se infecten. Por ejemplo, si una instancia de Redis solo es utilizada por sistemas internos, no es necesario estar orientada a Internet. 

El SIRT de Akamai también recomienda comprobar sus sistemas contra las indicaciones de compromiso (IOC) que se proporcionan en la sección de IoC a continuación para asegurarse de que sus sistemas no estén infectados.  Además de eso, emparche sus sistemas con regularidad y siga las mejores prácticas.

Indicaciones de compromiso (IOC)

IP

IP

Descripción

185.154.53,140

Mando y control

194.38.20,199

Distribución de malware 

95181179.88

Administra operaciones de criptografía

195.3.146,118

Copia de seguridad de la distribución de malware

 

Archivos

SHA-256

Nombre

Descripción

8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4

s.sh

194.38.20.199/s.sh, bash script que descarga el malware de Kinsing

ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6

p.sh

194.38.20.199/p.sh, bash script que descarga el malware de Kinsing

0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9

d.sh

194.38.20.199/d.sh, script bash que descarga malware de Kinsing

6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b

spr.sh        

194.38.20.199/spr.sh, script bash que descarga el malware de Kinsing

818179ac928027a5c26c9b13d3d830b731c3e4c46ba1e305867e3d4acaf3ef

r.sh

194.38.20.199/r.sh, bash script que descarga el malware de Kinsing

56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a9065ae0cca8fb3

ex.sh

194.38.20.199/ex.sh, script bash que descarga el malware de Kinsing

05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d

tf.sh

194.38.20.199/tf.sh, script bash que descarga el malware de Kinsing

274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fa1acadf5c4c

wb.sh

194.38.20.199/wb.sh, script bash que descarga el malware de Kinsing

6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b

Kinsing

194.38.20.199/kinsing, the Kinsing malware binario

7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff

config.json

194.38.20.199/config.json, json config para XMRIG miner

c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f8808a

libsystem.so

194.38.20.199/libssystem.so, un binario rootkit

5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170

xmrig.exe

194.38.20.199/xmrig.exe,

XMRIG miner para Windows

49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf

wbw.xml

Archivo xml 194.38.20.199/wbw.xml que descarga un script powershell para infectar sistemas Windows

25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e

wb.xml

Archivo xml 194.38.20.199/wb.xml que descarga un script bash para infectar sistemas Linux

6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3

curl-amd64

194.38.20.199/curl-amd64 , curl binario

fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3

al.sh

194.38.20.199/al.sh, script bash que detiene el servicio aegis 

cb2ca16246a687b34fa1ba76015cb4a3b50b4ecca4550478eb580c4725ab48f

cron.sh

194.38.20.199/cron.sh, bash script que actualiza la crontab

d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284

ph.sh

194.38.20.199/ph.sh, script bash que descarga el malware Kinsing y el libsSystem.SO rootkit

f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f

spre.sh

194.38.20.199/spsh, bash script que propaga la infección a otros hosts a través de ssh

dd603db3e2c0800d5ea262b6b8553c68dea486b545d4965df5dc43217cc839  

kdevtmpfsi

El proceso de Kinsing crypto miner



Evyatar Saias

escrito por

Evyatar Saias

September 16, 2021

Evyatar Saias

escrito por

Evyatar Saias

Evyatar Saias es un experto en seguridad del departamento de Inteligencia sobre Seguridad de Akamai.