Skip to main content

Malware GobRAT escrito en lenguaje Go dirigido a enrutadores Linux – JPCERT/CC Eyes

mayo 28, 2024


JPCERT/CC ha confirmado ataques que infectaron enrutadores en Japón con malware alrededor de febrero de 2023. Este artículo de blog explica los detalles del ataque confirmado por JPCERT/CC y el malware GobRAT, que se utilizó en el ataque.

Flujo de ataque hasta la ejecución de malware

Inicialmente, el atacante apunta a un enrutador cuya WEBUI está abierta al público, ejecuta scripts posiblemente utilizando vulnerabilidades y finalmente infecta GobRAT. La Figura 1 muestra el flujo del ataque hasta que GobRAT infecta el enrutador.

Figura 1: Flujo de ataque

Secuencia de comandos del cargador funciona como un cargador y contiene funciones como generar varios scripts y descargar GobRAT. La clave pública SSH, que se supone que se utiliza para la puerta trasera, está codificada en el script. Además, desde Secuencia de comandos del cargador utiliza crontab para registrar la ruta del archivo de Iniciar guión para la persistencia, GobRAT no tiene tal función. las funciones de Secuencia de comandos del cargador son como sigue:

  • Deshabilitar la función de firewall
  • Descargue GobRAT para la arquitectura de la máquina de destino
  • Crear Iniciar guión y hacerlo persistente
  • Crear y ejecutar Guión demonio.
  • Registre una clave pública SSH en /root/.ssh/authorized_keys

La figura 2 es el código de Iniciar guión que ejecuta GobRAT. El script es único porque escribe la hora de inicio en un archivo llamado reiniciar.log. Además, este script ejecuta GobRAT con el nombre de archivo apaciguado para que parezca un proceso legítimo.

Figura 2: Iniciar secuencia de comandos

La figura 3 es el código de Guión demonio. Este script comprueba si Iniciar guión se ejecuta o no cada 20 segundos, y si no, inicia el script. Este código posiblemente ha sido preparado en caso de Iniciar guión se termina inesperadamente.

Figura 3: Script Daemon

Descripción general de GobRAT

GobRAT es una RAT escrita en lenguaje Go y se comunica con el servidor C2 a través de TLS y ejecuta varios comandos. Incluye la serie UPX versión 4 y se han confirmado muestras para varias arquitecturas como ARM, MIPS, x86 y x86-64. GobRAT realiza las siguientes comprobaciones al inicio y mantiene la información dentro de la muestra.

  • Dirección IP y dirección MAC de sí mismo.
  • Tiempo de actividad por comando de tiempo de actividad
  • Estado de comunicación de la red por /proc/net/dev

Las siguientes secciones describen el método de comunicación, el método de cifrado y los comandos que se ejecutarán de GobRAT.

Método de comunicación

GobRAT utiliza TLS para enviar y recibir datos con su servidor C2. La Figura 4 muestra un ejemplo de comunicación con el servidor C2. Los primeros 4 bytes indican el tamaño de los datos y el resto es gob.[1] datos. gob es un protocolo de serialización de datos disponible solo en idioma Go. GobRAT usa gob para recibir comandos y enviar los resultados de la ejecución del comando.

Figura 4: Ejemplo de contenido de comunicación

GobRAT define los datos de gob como una estructura PAQUETE en el ejemplo de la siguiente manera.

type PACKAGE struct {
    Type uint8                  // CommandID
    BotCount uint16             // Parameter
    BotList []string            // Command Parameter
    ParamLength uint16          // Length of Param
    Param map[string]string     // Command Parameter
    Content []uint8             // Command Parameter, Command Execution Result, etc
}

Los campos utilizados son diferentes según el tipo de comando, y se admiten matrices de cadenas, mapas y datos binarios para que se puedan pasar varios tipos de parámetros. Además, si bien los datos binarios se pueden almacenar en el Contenido de la estructura PACKAGE, los datos del mapa con cadena se convierten en datos binarios codificándolos con la función json.Marshal. La estructura PACKAGE se usa de varias maneras según el comando, como almacenar los datos en Contenido o convertir la estructura definida en datos binarios de la misma manera y almacenarlos en Contenido.

Método de cifrado

Las cadenas como los comandos C2 y Linux se cifran y almacenan en la muestra. La Figura 5 muestra la función de descifrado de GobRAT. El modo AES128 CTR se utiliza para descifrar cadenas, y la clave y el IV están codificados en la muestra. La misma clave (050CFE3706380723433807193E03FE2F) y IV («12345678abcdefgh») se utilizan en todas las muestras confirmadas. Además, como se muestra en la Figura 6, los códigos que probablemente hayan sido desarrollados por el atacante, como esta función de descifrado, tienen una estructura de carpetas única como aaa.com/bbb/me~.

Figura 5: Función de descifrado de cadenas

Figura 6: Estructura de carpetas característica

Comandos ejecutados

GobRAT tiene 22 comandos que se ejecutan mediante los comandos del servidor C2 y hemos identificado los siguientes comandos. Dado que el malware se dirige a los enrutadores, puede ver que la mayoría de las funciones están relacionadas con la comunicación, como frpc, calcetines5 y la reconfiguración de C2. Consulte el Apéndice A para obtener detalles sobre los comandos.

  • Obtener información de la máquina
  • Ejecutar shell inverso
  • Leer/escribir archivos
  • Configurar nuevo C2 y protocolo
  • Calcetines iniciales5
  • Ejecutar archivo en /zone/frpc
  • Intente iniciar sesión en los servicios sshd, Telnet, Redis, MySQL y PostgreSQL que se ejecutan en otra máquina

Herramientas de análisis GobRAT

Dado que GobRAT usa gob para comunicarse, si desea emular su comunicación con C2 para verificar comandos, debe crear un programa usando el lenguaje Go. Nuestra herramienta de emulación C2 que admite el análisis GobRAT está disponible en GitHub. Descárguelo de la siguiente página web para su análisis.

JPCERTCC/aa-tools/GobRAT-Analysis – GitHub
https://github.com/JPCERTCC/aa-tools/tree/master/GobRAT-Analysis

Para concluir

En los últimos años, se han confirmado diferentes tipos de malware que utilizan el lenguaje Go, y esta vez se confirmó que el malware GobRAT utiliza gob, que solo puede ser manejado por el lenguaje Go, para la comunicación. Tenga cuidado continuamente con el malware que infecta los enrutadores, no limitado a GobRAT, ya que son difíciles de detectar. Consulte el Apéndice B para conocer el C2 del malware, el Apéndice C para conocer el valor hash del script y el Apéndice D para conocer el valor hash del malware.

Yuma Masubuchi

Traducido por Takumi Nakano.

Apéndice A: Comandos

Tabla A: comandos GobRAT

Valor Contenido
0x0 Actualice los datos json contenidos en malware y obtenga resultados de actualización
0x1 Recuperar datos json contenidos en malware
0x3 Iniciar shell inverso
0x4 Fin de la conexión de carcasa inversa
0x6 Confirmación de conexión de shell inversa
0x7 Ejecutar comando de shell para demonio
0x8 Ejecutar comando de shell
0xD Leer/escribir archivo especificado
0x10,0x11 Leer/escribir archivo especificado
0x16 Obtenga diversa información de la máquina, como el comando df
0x17 Establecer un nuevo canal de comunicación para TCP
0x18 Ejecute el proxy SOCKS5 con el puerto y la contraseña especificados
0x19 Ejecute el proxy SOCKS5 en el puerto especificado
0x1a Nueva configuración del canal de comunicación para UDP
0x1b Ejecute frpc después de ejecutar el proxy SOCKS5 en el puerto 5555
0x1f Comprobar la existencia del archivo especificado
0x25 Intentos de inicio de sesión para SSH, telenet, redis, mysql, postgres
0x27 Configuración de gorutina especificada
0x2a Escanear al servicio HTTP/HTTPS de la IP especificada
0x2D Ataque de diccionario al servicio HTTP/HTTPS de IP especificada
0x30 Configuración C2 relacionada
0x31 Ataques DDoS en SYN, TCP, UDP, HTTP, ICMP

Apéndice B: C2

  • https://su.vealcat.com
  • http://su.vealcat.com:58888
  • https://ktlvz.dnsfailover.net
  • http://ktlvz.dnsfailover.net:58888
  • su.vealcat.com
  • ktlvz.dnsfailover.net
  • wpksi.mefound.com

Apéndice C: Valores hash de los scripts

  • 060acb2a5df6560acab9989d6f019fb311d88d5511f3eda0effcbd9fc6bd12bb
  • feaef47defd8b4988e09c8b11967e20211b54e16e6df488780e2490d7c7fa02a
  • 3e44c807a25a56f4068b5b8186eee5002eed6f26d665a8b791c472ad154585d1
  • 60bcd645450e4c846238cf0e7226dc40c84c96eba99f6b2cffcd0ab4a391c8b3

Apéndice D: Valores hash del malware

  • a8b914df166fd0c94106f004e8ca0ca80a36c6f2623f87a4e9afe7d86b5b2e3a
  • aeed77896de38802b85a19bfcb8f2a1d567538ddc1b045bcdb29cb9e05919b60
  • 6748c22d76b8803e2deb3dad1e1fa7a8d8ff1e968eb340311fd82ea5d7277019
  • e133e05d6941ef1c2e3281f1abb837c3e152fdeaffefde84ffe25338fe02c56d
  • 43dc911a2e396791dc5a0f8996ae77ac527add02118adf66ac5c56291269527e
  • af0292e4de92032ede613dc69373de7f5a182d9cbba1ed49f589ef484ad1ee3e
  • 2c1566a2e03c63b67fbdd80b4a67535e9ed969ea3e3013f0ba503cfa58e287e3
  • 98c05ae70e69e3585fc026e67b356421f0b3d6ab45b45e8cc5eb35f16fef130c
  • 300a92a67940cfafeed1cf1c0af25f4869598ae58e615ecc559434111ab717cd
  • a363dea1efda1991d6c10cc637e3ab7d8e4af4bd2d3938036f03633a2cb20e88
  • 0c280f0b7c16c0d299e306d2c97b0bff3015352d2b3299cf485de189782a4e25
  • f962b594a847f47473488a2b860094da45190738f2825d82afc308b2a250b5fb
  • 4ceb27da700807be6aa3221022ef59ce6e9f1cda52838ae716746c1bbdee7c3d
  • 3e1a03f1dd10c3e050b5f455f37e946c214762ed9516996418d34a246daed521
  • 3bee59d74c24ef33351dc31ba697b99d41c8898685d143cd48bccdff707547c0
  • c71ff7514c8b7c448a8c1982308aaffed94f435a65c9fdc8f0249a13095f665e

Referencias

[1] montones de datos
https://go.dev/blog/gob



Source link

Translate »