COATHANGER (Chinese FortiGate RAT)


Se ha descubierto la operación de un nuevo troyano de acceso remoto (RAT) diseñado para infectar y comprometer equipos FortiGate.
Este troyano no explota vulnerabilidades Zero-Day, es un second-stage malware que se oculta asimismo modificando variables del sistema, no es posible erradicarlo actualizando el Firmware ni reiniciando los equipos.
La MIVD y la AIVD se refieren a este RAT como COATHANGER por una frase peculiar que el malware utiliza para encriptar la configuración en el disco: “She took his coat and hung it up”. Este RAT lo asocian, con mucha certeza, a actores maliciosos impulsados  por gente de la República de China, ya que, se enfatiza mucho que esta operación no se respalda por si sola, derivado a la complejidad y al nivel técnico del malware.

- Actividad Maliciosa
Los atacantes son bien conocidos por liderar campañas para explotar vulnerabilidades del tipo 0-Day y/o n-day1. Tienen un alto ritmo operativo, incluso abusan de fallos recién  parchados por los fabricantes de las tecnologías.
Para este incidente los actores aprovecharon la vulnerabilidad identificada como CVE[1]2022-42475 que afecta a los equipos FortiGate utilizando una conexión ofuscada2. El second-stage malware es descargado desde un host remoto temporal.
Aunque el ataque inicia explotando dicha vulnerabilidad, es posible que se utilice  cualquier otra, ya sea reciente o futura.
Después de comprometer el equipo, los atacantes inician un reconocimiento y obtiene  una lista de usuarios del servidor del Directorio Activo (AD). De esta manera pueden  garantizar su acceso como backdoor.

- Características Técnicas
COATHANGER provee acceso al equipo comprometido después de su instalación. Su implantación estable conexión por SSL periódicamente a un servidor de Command & Control, de esta manera proporciona un BusyBox Reverse Shell4. El malware es persistente, ya que se recupera después de cada reboot inyectando un respaldo de si mismo en los procesos responsables del reinicio del sistema. A su vez, el programa malicioso sobrevive a las actualizaciones del Firmware, incluso pueden estar infectados aquellos equipos que están completamente parchados, si es que fueron comprometidos  antes de su última actualización.
El malware es sigiloso, es difícil de detectar usando la línea de comandos del equipo, esto se debe a que se oculta asimismo dentro de las variables del sistema si es que se manda a llamar. Esto se logra remplazando las variables por cualquier proceso que se ve obligado a cargar el preload.so.

- Comportamiento
COATHANGER arroja los siguientes archivos:
/bin/smartctl or /data/bin/smartctl
/data2/.bd.key/authd
/data2/.bd.key/httpsd
/data2/.bd.key/newcli
/data2/.bd.key/preload.so
/data2/.bd.key/sh
/lib/liblog.so

Durante la ejecución algunos de estos archivos son copiados en otras locaciones, pero después son eliminados tras finalizar la carga. Nótese que, el nombre de los archivos  ocultos (.bd.key) varia sobre diferentes muestras.
Para mas detalle se puede revisar el boletín emitido:
https://www.ncsc.nl/documenten/publicaties/2024/februari/6/mivd-aivd-advisory-coathanger-tlp-clear

- Detección
Método CLI:
Se recomienda acceder al CLI por medio de la interfaz web en lugar de la consola serial o Tiempo de modificación:
Se debe validar si el archivo /bin/smartctl o el archivo /data/bin/smartctl existe utilizando el comando:
fnsysctl ls -la /bin
fnsysctl ls -la /data/bin

Si el smartctl fue modificado últimamente sin estar asociado a algún archivo es probable que el binario ha sido modificado. Esto sirve como primer indicador de que el equipo ha  sido infectado por COATHANGER u otro malware.
o TCP Sockets
El siguiente comando muestra una lista de los TCP Sockets activos (Similar a netstat):
Diagnose sys tcpsock
Mientras que el equipo FortiGate este conectado a internet y el malware este activo, la conexión de salida aparecerá en los resultados. Esto también despliega el numero del  proceso y el nombre de uno de los procesos relacionados con la infección, así como la dirección IP y el puerto escucha del servidor C25.
Esta versión específica del malware usa el proceso llamado httpsd para ofuscarse  asimismo. Por lo tanto, cualquier conexión sospechosa hacia el exterior desde un proceso llamado httpsd es un fuerte indicador de la presencia de COATHANGER u otro  malware:
:->:-
>state=established err=0 socktype=1 rma=0 wma=0
fma=0 tma=0 inode= process=/httpsd

o Ubicación inusual en el proceso httpsd:
Todos los procesos pueden ser listados utilizando el comando:
fnsysctl ps
Corriendo este otro comando regresa todos los PIDs6 que son llamados httpsd:
diagnose sys procesos pidof httpsd
Los PIDs de los procesos que tienen conexiones sospechosas pueden ser utilizar como punto de partida para analizar los comportamientos:
diagnose sys process dump
Cuando los procesos tienen un GID establecido a 90 el equipo ya ha sido infectado por COATHANGER u otro malware.
Cuando el proceso incluye entradas que fueron borradas relacionados con /data2/httpsd o con entradas /data2/.bd.key/preload.so, el equipo ya a sido infectado por COATHANGER.
Maps:
0040.....-0040..... .... 0000.... b3:.. .....
/data2/httpsd (deleted)
[...]
7f90.....-7f90..... .... 0000.... b3:.. .....
/data2/.bd.key/preload.so
[...]

Nótese que la locación esta oculta para herramientas como fnsysctl. Por lo tanto, ejecutar fnsysctl ls -la /data2/.bd.key resultara en un mensaje de error que indica “No existe el archivo o directorio”
o Procesos eliminados de PID1:
Preload.so es inyectado en PID1 para ganar persistencia. Esto puede ser detectado haciendo un dump a la memoria del proceso 1 usando el comando:
diagnose sys process dump 1
Si la memoria contiene entradas eliminadas relacionadas a /lib/preload.so, esto es un fuerte indicador de que el equipo ha sido comprometido por COATHANGER u otro malware:
Maps:
[...]
7f7ff.....-7f7ff..... .... 0000.... 00:.. .....
/lib/preload.so (deleted)
[...]


Método JA3:
COATHANGER implanta comunicaciones con un servidor C2 usando TLS. Esta sesión TLS deja una huella con el JA3-HASH: 339f6adf54e6076d069dcaac54fddc25
Este Hash es una huella para conexiones originadas desde un FortiGate que soportan encriptación y algoritmos hashing para TLS.

Método YARA:
Se adjunta dos muestras de YARA Rules para su detección en la parte final del boletín.

Versiones Afectadas

FortiOS versión 7.2.0 a la 7.2.2
El ataque inicia al explotar la vulnerabilidad CVE-2022-42475 identificada como FG-IR[1]22-398 por FortiGuard Labs. Es un heap-based buffer overflow vulnerability3 que afecta a las conexiones SSL-VPN de FortiOS, permite a un atacante remoto no autenticado ejecutar código o comandos arbitrarios:
FortiOS versión 7.0.0 a la 7.0.8
FortiOS versión 6.4.0 a la 6.4.10
FortiOS versión 6.2.0 a la 6.2.11
FortiOS versión 6.0.0 a la 6.0.15
FortiOS versión 5.6.0 a la 5.6.14
FortiOS versión 5.4.0 a la 5.4.13
FortiOS versión 5.2.0 a la 5.2.15
FortiOS versión 5.0.0 a la 5.0.14
FortiOS-6K7K versión 7.0.0 a la 7.0.7
FortiOS-6K7K versión 6.4.0 a la 6.4.9
FortiOS-6K7K versión 6.2.0 a la 6.2.11
FortiOS-6K7K versión 6.0.0 a la 6.0.14
FortiProxy versión 7.2.0 a la 7.2.1
FortiProxy versión 7.0.0 a la 7.0.7
FortiProxy versión 2.0.0 a la 2.0.11
FortiProxy versión 1.2.0 a la 1.2.13
FortiProxy versión 1.1.0 a la 1.1.6
FortiProxy versión 1.0.0 a la 1.0.7

Recomendaciones

El equipo de respuesta a incidentes de Países Bajos recomienda lo siguiente:
Si cree que ha sido afectado por el malware COATHANGER, asume lo siguiente:
- El actor puede haber comprometido otros hosts accesibles a través del dispositivo FortiGate, así como cualesquiera dispositivos más allá de estos.
- Existe una mayor probabilidad de que se adopten medidas más selectivas, actividad práctica con el teclado, es decir, el incidente continúa más allá de la focalización oportunista, especialmente durante más tiempo tiempos de permanencia.
- Se recomienda seguir los siguientes pasos:
1. Aislar inmediatamente los dispositivos FortiGate afectados.
2. Recopile y revise registros, datos y artefactos relevantes de los dispositivos  comprometidos, extraer imagen del dispositivo para un análisis más detallado del ataque.
3. Considere ponerse en contacto con un tercero especializado en respuesta al  incidente. Asistencia en el seguimiento de la incidente ayuda a garantizar que el  actor malicioso sea erradicado de la red.
4. Informar del incidente al NCSC de los Países Bajos.

- Remover la infección
La única manera de remover por completo el malware involucra el formatear el equipo y reinstalando y reconfigurando el equipo.
Actualizar o reiniciar los equipos FortiGate no remueve la infección.

- Medidas preventivas
El equipo de respuesta a incidentes de Países Bajos otorga las siguientes medidas preventivas:
- Instale los parches de seguridad más recientes del proveedor en dispositivos con  acceso a Internet tan pronto como sea posible.
- Implementar las mejores prácticas de seguridad en el dispositivo.
- Antes de agregar o habilitar funciones de Internet a dispositivos, ejecutar un  análisis de riesgo.
- Restringir el acceso a Internet desde los dispositivos conectados a Internet  desactivando servicios innecesarios y puertos y desactivar el acceso a la gestion interfaz desde Internet.
- Supervisar los registros de eventos en busca de actividad anormal, como inicios  de sesión fuera del horario laboral, inusuales o, conexiones externas inesperadas  y no autorizadas, cambios de configuración en el dispositivo.

- IOCs
SHA256

ibpe.so 50451bb5b6d68115695a6cb277839a6dd2bad8f70bdb8b79670b18dcde
188965
smartctl 4519baebba73827e2b33f36f835d6cb704755abf1312d8d197be635f4d9f
fade
authd f40c04fb9e2d4157a0bc753925dbc5f757feb77cdd22f90fedf3cc5e09514
3bc
httpsd 3ed99aad5922744b6a75ea90ea6ece81ba0d8eb9935aec38b897e44ac
3b36c35
newcli 2acc6a2a931db63fe3a875780f00192a60955c9794df68fe0ace0012d30
9b04f
preload.so 1c437dc9e929669e5a65a1c70afb3107fba471afb9ad35e3848334c9332
f2b59
sh dcd9a5af1c6297ed1a66c851efa305000335d8ade068ba515125a6612f1
d5300
liblog.so / 
ld.so.prelo
ad
a79f80158ebbf9e34f6a7ec86b564de2fbee783fe6c1e20eefe2832226e2f
827
packfile 4591b4fb1c93c27203b36c773597fd3f885338ad7641dcebf8ed2395acdf
4a5f
ld.so.prelo
ad
80baadc163ab14128a8d3f65de093a400f5ae8e27ec979918cf065cea38
af7f8
preload.so 45fc722b9959384fa46be673c246c9fc94491898a9b1aef6b4a408d81e6f
ed0f
newcli  47501cebf0b4ffbf5171d811c1517ea4fce178d925fcc4a3b3057be211add
88b
httpsd 2a5ea4b166163bf028c4f3c8d4dc1cd6788e991b7300b5ea948e38ec4f6
ac8fd
packfile d2ba18a8b851b87163e42807a3541d17b272b679045d2de00364a7189
73cb5d4
ld.so.prelo
ad
bdf838ca2268c6a33718c3682a03118213652903568d66fba362d3ce18
b4b4cf
sh 218a64bc50f4f82d07c459868b321ec0ef5cf315b012255a129e0bde5cc8
0320
preload.so 7b0709ec1f6e0eda3205a4ebdafbd2484f0590bbfe6ddd7c82d979f0f471
e664
newcli 7fba5ab17972daa6250f3097c5254c4cf0e5e19889e10c02307f73c7481b
4d5e
httpsd ce2d55a794bd7f41218796ef4a2cfab9707e8a5e8e971aa02ac8ff908b5f
02f
authd 01942a2b1b64446f8bf332004f8f875e66924a8405ac049fd0bb8d03c992
fba6
 


YARA RULES:
rule COATHANGER_beacon
{
meta:
description = "Detects COATHANGER beaconing code (GET / HTTP/2\nHost: www.google.com\n\n)"
malware = "COATHANGER"
author = "NLD MIVD - JSCU"
date = "20240206"
strings:
$chunk_1 = {
48 B8 47 45 54 20 2F 20 48 54
48 89 45 B0
48 B8 54 50 2F 32 0A 48 6F 73
48 89 45 B8
48 B8 74 3A 20 77 77 77 2E 67
48 89 45 C0
48 B8 6F 6F 67 6C 65 2E 63 6F
}
condition:
uint32(0) == 0x464c457f and filesize < 5MB and
any of them
}
rule COATHANGER_files
{
meta:
description = "Detects COATHANGER files by used filenames"
malware = "COATHANGER"
author = "NLD MIVD - JSCU"
date = "20240206"
strings:
$1 = "/data2/"
$2 = "/httpsd"
$3 = "/preload.so"
$4 = "/authd"
$5 = "/tmp/packfile"
$6 = "/smartctl"
$7 = "/etc/ld.so.preload"
$8 = "/newcli"
$9 = "/bin/busybox"
condition:
(uint32(0) == 0x464c457f or uint32(4) == 0x464c457f)
and filesize < 5MB and 4 of them
}


 

Referencias

Fuente NCSC: https://www.ncsc.nl/documenten/publicaties/2024/februari/6/mivd-aivd-advisory-coathanger-tlp-clear


1. n-day: Vulnerabilidades detectadas y publicadas
2. Conexion Ofuscada: Conexion que se encubre.
3. CWE-122: Una condición de desbordamiento del montón es un desbordamiento del búfer, donde el búfer que se puede sobrescribir se 
asigna en la porción de memoria del montón, lo que generalmente significa que el búfer se asignó mediante una rutina como malloc().
4. BusyBox Reverse Shell: Un binario con aplicaciones conglomeradas que se conecta a un equipo remoto.
5. C2: Command and Control
6. PIDs: Identificador del proceso.

El nombre es requerido.
El email es requerido.
El email no es válido.
El comentario es requerido.
El captcha es requerido.



Comentarios