Nuestros investigadores están observando brotes localizados de una nueva variante del gusano USB PlugX, en lugares situados a casi medio mundo de distancia unos de otros. Tras llamar la atención por primera vez en Papúa Nueva Guinea en agosto de 2022, la nueva variante apareció en enero tanto en la nación de la costa del Pacífico como a 16.000 km de distancia, en Ghana. Aparecieron infecciones adicionales en Mongolia, Zimbabue y Nigeria. Los aspectos novedosos de esta variante son una nueva carga útil y devoluciones de llamada a un servidor C2 que anteriormente se pensaba que apenas estaba relacionado con este gusano.
Todo lo viejo es nuevo otra vez
PlugX es un malware de puerta trasera bastante común (un RAT, troyano de acceso remoto) de origen chino, que se basa en DLL sideloading para hacer su trabajo sucio. En Sophos llevamos años escribiendo sobre él, la última vez en noviembre. Incluso la versión USB-aware, que puede propagarse a través de un USB y obtener información de redes protegidas, ha estado en el radar de los defensores durante varios años. Sin embargo, en los últimos meses han aparecido nuevas variantes con regularidad, a veces en lugares notablemente lejanos.
Nuestro primer vistazo a la nueva variante del gusano procede de una alerta de CryptoGuard, probablemente desencadenada por la exfiltración de datos. Hemos puesto todos los IoC de este incidente en nuestra instancia de GitHub. La infección consta de un ejecutable limpio (AvastSvc.exe) susceptible de DLL sideloading; múltiples instancias de una DLL maliciosa (wsc.dll) en el cargador limpio; una carga útil .dat cifrada; y (en un directorio llamado RECYCLER.BIN) una colección de archivos robados y cifrados con nombres ofuscados en base64:
Mitigación CryptoGuard V5 Ruta de acceso: C:\ProgramData\AvastSvcpCP\AvastSvc.exe (aplicación Avast limpia) Hash: 85ca20eeec3400c68a62639a01928a5dab824d2eadf589e5cbfe5a2bc41d9654
En nuestro registro de comportamiento detallado del incidente, observamos lo siguiente
Línea de comandos: RECYCLER.BIN\1\CEFHelper.exe 142 60 SHA1: 049813b955db1dd90952657ae2bd34250153563e SHA256: 85ca20eeec3400c68a62639a01928a5dab824d2eadf589e5cbfe5a2bc41d9654
“CEFHelper” es el nombre de un proceso de Adobe, pero no es eso lo que es este archivo, como se muestra comparando este hash SHA256 con el hash mostrado en nuestro fragmento de código anterior (justo encima de la Figura 2) para el ejecutable limpio subvertido, son el mismo archivo, renombrado por el malware. Cuando el archivo se ejecuta, el ejecutable AvastSvc vuelve a ser visible:
"commandLine" : "C:\\ProgramData\\\AvastSvcpCP\AvastSvc.exe 983", "commandLine" : "C:\\Windows\system32\cmd.exe /c D:\RECYCLER.BIN\143CE844B89AC3D0\tmp.bat", "commandLine" : "arp -a ", "commandLine" : "ipconfig /all ", "commandLine" : "systeminfo ", "commandLine" : "tasklist /v ", "commandLine" : "netstat -ano ",
Cinco nombre curiosos
En esta fase hemos visto cinco nombres de archivos asociados a la infección. Por orden, son la información que recoge el gusano, el archivo por lotes que recoge realmente la información y tres componentes de carga lateral:
"path" : "d:\\\recycler.bin\143ce844b89ac3d0\\c3lzlmluzm8", "path" : "d:\\reciclador.bin\143ce844b89ac3d0\tmp.bat", "path" : "d:\reciclador.bin\1\\avastauth.dat" "path" : "d:\\recycler.bin\1\cefhelper.exe", "path" : "d:\\recycler.bin\1\wsc.dll",
Hablaremos de esos archivos más detenidamente en un momento. Vimos tres hashes, o, dado que el archivo cefhelper.exe y avastsvc.exe son el mismo archivo y tienen hashes idénticos, se podría decir que vimos dos hashes y un doppelgänger:
d:\recycler.bin\1\cefhelper.exe : 85ca20eeec3400c68a62639a01928a5dab824d2eadf589e5cbfe5a2bc41d9654 c:\programdata\avastsvcpcp\avastsvc.exe : 85ca20eeec3400c68a62639a01928a5dab824d2eadf589e5cbfe5a2bc41d9654 c:\programdata\avastsvcpcp\wsc.dll : 352fb4985fdd150d251ff9e20ca14023eab4f2888e481cbd8370c4ed40cfbb9a
¿Shady Mustang, Revealed Panda?
Después vimos actividad C2 que llegaba a múltiples variaciones de la dirección IP 45.142.166[.]112. Esta dirección IP se mencionó en una entrada del blog de Unit 42 de 2019 como “otro PlugX”, no vinculado en ese momento directamente a PKPLUG (alias Mustang Panda), el actor de la amenaza asociado más estrechamente con este malware. En aquel momento, los investigadores de Unit 42 describieron este hallazgo como una RAT vista previamente tras la explotación en una infección no relacionada. Nuestro análisis indica que todos los métodos vistos en uso durante nuestra investigación coinciden con lo que se sabe sobre el actor PKPLUG/Mustang Panda, reforzando así el vínculo entre esta dirección IP y el actor de la amenaza.
El archivo comprimido como se ve en VirusTotal:
e07d58a12ceb3fde8bb6644b467c0a111b8d8b079b33768e4f1f4170e875bc00: AvastSvcpCP(2).zip
El contenido de ese archivo al descomprimirlo me resulta familiar:
432a07eb49473fa8c71d50ccaf2bc980b692d458ec4aaedd52d739cb377f3428 *AvastAuth.dat 85ca20eeec3400c68a62639a01928a5dab824d2eadf589e5cbfe5a2bc41d9654 *AvastSvc.exe e8f55d0f327fd1d5f26428b890ef7fe878e135d494acda24ef01c695a2e9136d *wsc.dll
La carga útil es PlugX. Esta versión de la carga útil se llama 20190301h:
Datos de configuración: Directorio de instalación: AvastSvcpCP Nombre Mutex: cUUEdKgjnOOOrpkUEjHp Servidor C2: 45.142.166[.]112
Este malware PlugX tiene una larga historia y ha sido diseccionado en otros escritos del sector, como los análisis de Avira y QiAnXin. En este caso nos centraremos principalmente en la funcionalidad del gusano USB.
Utiliza mutex al copiar archivos a los medios extraíbles disponibles, utilizando estas cadenas de plantilla:
USB_NOTIFY_COP_%ws USB_NOTIFY_INF_%ws
A continuación, utiliza un par de trucos para ocultar su contenido malicioso al observador casual. En primer lugar, el medio extraíble infectado parecerá estar vacío. En el Explorador de Windows parecería que la unidad solo contiene otra unidad extraíble.
En realidad, el elemento mostrado no es realmente una unidad, sino un archivo de acceso directo de Windows, que utiliza un icono parecido al que se usa para los medios extraíbles. Si la víctima hace clic en este archivo, se ejecuta el ejecutable CEFHelper que hemos mencionado antes:
Los demás archivos y directorios tienen configurados los atributos ocultos y de sistema, por lo que no serán visibles por defecto en el listado de archivos. Tras activar específicamente la visualización de los archivos ocultos y de sistema, podemos ver el resto del contenido (y también ver que el elemento “Disco extraíble(1TB) se muestra correctamente como un mero acceso directo):
Los archivos copiados están en el directorio RECYCLER.BIN, para el que el gusano, en otra maniobra de ofuscación, deja caer un archivo desktop.ini que asocia el directorio con la función real de Reciclado. (RECYCLER es el nombre de la era NTFS para lo que es $Recycle.bin en los sistemas Windows modernos; los sistemas NTFS incluyen Windows 2000, NT y XP). Esto hace que Windows trate el directorio como si realmente fuera una Papelera de Reciclaje de Windows, y los archivos borrados por el usuario se mostrarán allí, ni siquiera los de la unidad USB, sino los del disco duro real del usuario.
De nuevo, unos comandos específicos en el símbolo del sistema de Windows revelan el contenido real del directorio RECYCLER.BIN:
Alternativamente, se puede utilizar un explorador de archivos menos fácil de engañar, como Total Commander, para examinar el contenido. Ambos métodos muestran que el directorio RECYCLER.BIN contiene en realidad dos subdirectorios:
El directorio llamado 1 contiene los componentes DLL sideloading que hemos visto anteriormente:
El otro directorio, que tiene un nombre aleatorio, contiene los archivos exfiltrados de la víctima. La primera imagen de abajo es el estado intermedio. Observa el archivo tmp.bat presente:
El archivo tmp.bat recoge la información del sistema y la guarda en el primer archivo con nombre aparentemente aleatorio del directorio mostrado arriba (en la imagen, el archivo de más de 1 GB de tamaño). Ese nombre de archivo no es realmente aleatorio: es la forma codificada en base64 de sys.info.
Cuando el archivo por lotes ha terminado su recolección, se elimina a sí mismo. Lo único que queda es el archivo “c3lzLmluZm8” con la información del sistema y los archivos recopilados.
PlugX recopila archivos .doc, .docx, .xls, .xlsx, .ppt, .pptx y .pdf (si el tamaño individual del archivo no supera los 314572800 bytes), susceptibles de ser exfiltrados. Los guarda de forma cifrada en el RECYCLER.BIN como se muestra arriba. Los nombres de los archivos, incluido el indicador de ruta, se convierten al formato base64. Por ejemplo, en la imagen de la Figura 11, los dos nombres de archivo se descodifican a:
Documentos_coolclient.docx Documentos_servidordll.docx
Por supuesto, el contenido de cada archivo también está cifrado:
Como ya se ha indicado, Sophos detectó y bloqueó el intento de exfiltración. Añadiremos los IoC comentados en este hilo a nuestro repositorio de Github.
En cuanto al uso de gusanos USB en 2023, ciertamente eran más comunes hace una o dos décadas, cuando un actor de amenazas podía comprometer al Pentágono dejando caer una o dos unidades de memoria USB en el aparcamiento adecuado. Sin embargo, a medida que los defensores alertaron a los usuarios sobre el potencial vector de ataque, y otros métodos de almacenamiento y transmisión de archivos se hicieron más populares, esta técnica se abandonó. Ahora los grupos APT están reincorporando este método como método eficaz de infección y exfiltración. Una vez más, una vieja técnica resurge, esta vez causando brotes locales lejanos.