Introducción
El grupo de hackers iraníes conocido como Nimbus Manticore ha sido vinculado a dos nuevas familias de malware que reflejan la evolución de sus herramientas, ampliando su capacidad para infectar sistemas Linux y macOS mediante trojanos de acceso remoto (RATs). Estos RATs se desarrollan utilizando Node.js y JavaScript y han sido catalogados por la empresa de ciberseguridad rusa Kaspersky como NodeRabbit y PollCat.
Técnicas de distribución
La primera detección de NodeRabbit se realizó en un sistema en Afganistán, mientras que otras instancias fueron localizadas en Egipto y Etiopía. Según el investigador de Kaspersky, Omar Amin, los atacantes distribuyen NodeRabbit a través de mensajes de spear-phishing en LinkedIn y otras plataformas de búsqueda de empleo. Estos mensajes contienen archivos comprimidos de desafíos de codificación que han sido trojanizados.
Por su parte, PollCat también es un RAT multiplataforma, escrito en JavaScript ofuscado y distribuido mediante los mismos archivos maliciosos. Este movimiento marca un giro en la estrategia de Nimbus Manticore, que anteriormente utilizaba malware escrito en C, C++ y Go, así como técnicas de DLL hijacking para su implementación.
El caso de Afganistán
La actividad sospechosa en Afganistán comenzó con un archivo ZIP, denominado Front-Technical-Challenge.zip, alojado en AWS. Se cree que este archivo fue enviado bajo la apariencia de una oferta de empleo para un rol de ingeniería. Los atacantes se disfrazaron como especialistas en adquisición de talento en una importante empresa tecnológica y contactaron a un ingeniero de software, invitándolo a completar un desafío técnico.
El archivo comprimido contenía el código fuente de una herramienta de gestión de proyectos llamada Taskflow, con instrucciones para que los candidatos "encontraran y corrigieran todos los errores en el código frontend" en un tiempo limitado y sin utilizar herramientas de inteligencia artificial. Curiosamente, se les instruía a no modificar el componente del servidor del aplicativo, denominado server.js, argumentando que estaba "libre de errores y funcionaba correctamente". Sin embargo, el código malicioso estaba oculto en este archivo.
Funcionamiento del malware
La primera línea del archivo server.js importa un paquete trojanizado de npm llamado colorized_terminal, versión 2.1.0. Este paquete fue empaquetado directamente en el directorio node_modules del archivo del desafío, evitando su publicación en el registro de npm. Al ser importado, el paquete lanza silenciosamente un implante desde node_modules/.cache/.320697f1/index.js como un proceso en segundo plano.
Este implante, NodeRabbit, se comunica con uno de tres servidores de comando y control (C2) alojados en Azure a través de distintos endpoints de API. Sus comandos permiten recopilar detalles del host, listar procesos en ejecución, ejecutar comandos de shell arbitrarios y manipular archivos, entre otras funciones.
Variantes del malware
Kaspersky ha identificado dos variantes adicionales de NodeRabbit, cada una recuperada de Egipto y Etiopía. La primera variante utiliza un paquete trojanizado diferente llamado pretty-log, mientras que la tercera variante también emplea pretty-log pero con distintos endpoints de API.
La persistencia del malware se logra mediante diferentes mecanismos según el sistema operativo: un registro de ejecución en Windows, una entrada de cron para Linux y un agente de lanzamiento en macOS. Estos métodos imitan actualizaciones de software legítimo para evitar la detección.
Conclusión
El uso de tácticas de ingeniería social por parte de Nimbus Manticore resalta la necesidad de estar alerta ante ofertas de empleo aparentemente legítimas. La evolución de su arsenal de malware y la implementación de RATs multiplataforma representan una amenaza significativa para los usuarios y organizaciones en todo el mundo.