🔥Adquiere tu membresía:  acceso a todos los cursos, videos eliminados, contenidos protegidos, manuales y más. >> Ver Más

Descubren paquete malicioso de NPM que roba las contraseñas guardadas en Chrome

En otro gran ataque a la cadena de suministro, un ladrón de contraseñas robaba credenciales de Chrome en sistemas Windows a través de ChromePass.

Expertos en seguridad encontraron un código malicioso dedicado al robo de credenciales. Este utiliza herramientas legítimas de recuperación de contraseñas en el navegador web Chrome de Google. Lo más preocupante es que el código en cuestión estaba al acecho en el repositorio de código abierto de npm. El infame código se encontraba ahí esperando ser plantada dentro de la galaxia en expansión de aplicaciones que extraen código de esa fuente.

Los investigadores detectaron que el robo de credenciales por medio de este malware de Chrome apunta específicamente a los sistemas Windows. El ladrón de contraseñas es multifuncional: también escucha los comandos entrantes del servidor de comando y control (C2) del atacante. Además, puede cargar archivos, grabar desde la pantalla y la cámara de la víctima y ejecutar comandos de shell.

Abuso de la utilidad Google ChromePass

Además de los archivos JavaScript textuales, npm también contiene varios tipos de ejecutables, como PE, ELF y Mach-O. Los investigadores de ReversingLabs, que publicaron sus hallazgos en una publicación del miércoles dieron detalles del malware. Ellos dijeron que, durante un análisis del repositorio de código, encontraron un interesante archivo ejecutable integrado de Windows. Hallaron una amenaza de robo de credenciales. Etiquetado como “Win32.Infostealer.Heuristics”, el ejecutable apareció en dos paquetes: nodejs_net_server y temptesttempfile.

Al menos por ahora, la primera y principal amenaza es nodejs_net_server. Algunos detalles sobre este paquete son los siguientes:

  • nodejs_net_server. Es un paquete con 12 versiones publicadas y un total de más de 1300 descargas desde que se publicó por primera vez en febrero de 2019. Se actualizó por última vez hace seis meses y fue creado por alguien con el nombre “chrunlee”. Según ReversingLabs, chrunlee también parece ser un desarrollador activo en GitHub, donde el desarrollador está trabajando en 61 repositorios.
Resumen del paquete NPM nodejs_net_server
Perfil de github de chrunlee

Análisis de nodejs_net_server

Mediante análisis estático, los investigadores encontraron el archivo Win32.Infostealer.Heuristics en varias versiones del paquete nodejs_net_server. Sus metadatos mostraron que el nombre original del archivo era “a.exe” y que estaba ubicado dentro de la carpeta “lib”. 

Un nombre de archivo de una sola letra con una extensión como esa es una señal de alerta para los cazadores de amenazas, acotaron los investigadores. Efectivamente, a.exe resultó ser una utilidad llamada ChromePass: una herramienta legítima utilizada para recuperar contraseñas almacenadas dentro de un navegador web Chrome.

chrunlee perfeccionó el paquete nodejs_net_server a través de 12 versiones hasta que finalmente lo actualizó en diciembre pasado. En esa fecha actualizó el paquete con un script para descargar el ladrón de contraseñas, que el desarrollador aloja en un sitio web personal. 

Posteriormente lo modificó para ejecutar TeamViewer.exe en su lugar.  “Probablemente porque el autor no quería tener una conexión tan obvia entre el malware y su sitio web”, teorizaron los investigadores.

chrunlee publicó la primera versión “solo para probar el proceso de publicación de un paquete de NPM”, Tres meses después, el desarrollador de malware implementó la funcionalidad de shell remoto que fue perfeccionada en varias versiones posteriores. Luego, en abril de 2020, chrunlee realizó modificaciones menores a la funcionalidad del shell en las versiones 1.0.7 y 1.0.8. Finalmente, en diciembre de 2020, se actualizó la versión 1.1.0 con un script para descargar la herramienta de robo de contraseñas.

El segundo paquete

  • temptesttempfile: más de 800 descargas totales. Este es un poco complicado, dado que los enlaces de la página de inicio y el repositorio de GitHub a este paquete conducen a páginas web que no existen.

Uno de los paquetes npm de chrunlee, tempdownloadtempfile, también tiene enlaces que no existen. Uno de sus archivos, file/test.js, implementa la misma funcionalidad de shell remoto que los que se encuentran en las versiones del paquete nodejs_net_server. Sin embargo, este paquete no realiza el secuestro de ejecución y carece de un mecanismo de persistencia, por lo que su propósito no es nada claro.

Desarrollador “divertido”

Los analistas de ReversingLabs descubrieron un “hecho divertido” de desarrollo al seleccionar el código de nodejs_net_server. Su autor, chrunlee, no solo fue el autor de un ladrón de credenciales, sino que también publicó accidentalmente sus propias credenciales de inicio de sesión almacenadas en su navegador. Seguramente, cuando el autor estaba probando el capturador de contraseñas, accidentalmente lo “atacó” y sus credenciales quedaron expuestas.

Parece que las versiones 1.1.1 y 1.1.2 publicadas del repositorio npm incluyen los resultados de probar la herramienta ChromePass en la computadora personal del autor. Estas credenciales de inicio de sesión se almacenaron en el archivo ‘a.txt’ ubicado en la misma carpeta que la herramienta de recuperación de contraseña, llamada ‘a.exe'”.

Otro dato divertido: ese archivo de texto tiene 282 credenciales de inicio de sesión capturadas desde el navegador de chrunlee. Algunas de estas credenciales aún pueden ser válidas (ReversingLabs no verificó si aun funcionaban). Y, algunas de esas credenciales cuentan con contraseñas (“111”, por ejemplo) y nombres de usuario poco seguros (“admin”, anyone?).

Algunas de las contraseñas que el autor del malware chrunlee recuperó de su propio navegador.

Con solo observar algunas de las credenciales recuperadas … demuestra que al autor no siempre le importaron las mejores prácticas de política de contraseñas.  

Los paquetes maliciosos ya fueron eliminados

ReversingLabs se puso en contacto con el equipo de seguridad de npm el 2 de julio para informarles sobre los paquetes nodejs_net_server y tempdownloadtempfile. Posteriormente, volvieron a contactarlos una vez más la semana pasada, el jueves, ya que el equipo aún no había eliminado los paquetes del repositorio.

Cuando algunos medios se pusieron en contacto con npm Inc., que mantiene el repositorio, un portavoz de GitHub aseguró que ya habían tomado acciones: “Ambos paquetes fueron eliminados después de nuestra investigación”, aseguró.

Incidentes anteriores con npm

Esta no es la primera vez que npm ha sido infiltrado por código malicioso. A principios de este año, se publicaron tres paquetes de software malicioso en npm. Cualquier aplicación dañada por el código podría robar tokens y otra información de los usuarios de Discord, dijeron los investigadores.

En julio de 2018, un atacante comprometió las credenciales de npm de un responsable de ESLint. El atacante publicó versiones maliciosas de los populares paquetes “eslint-scope” y “eslint-config-eslint” en el registro de npm. El código malicioso copiaba las credenciales npm de la máquina que ejecutaba eslint-scope y las subió al atacante.

Unos meses más tarde, en noviembre de 2018, se descubrió otro paquete malicioso: dependía de la versión 3.3.6 del popular paquete, “event-stream”. El paquete malicioso, llamado “flatmap-stream”, contenía un payload cifrado que fue diseñado para robar Bitcoins de la aplicación Copay.

Los repositorios son objetivos cada vez más populares

Si bien el hecho de que este malware haya permanecido en el registro de npm durante más de tres años es preocupante, sin embargo, no todo es malo. El hecho es que, afortunadamente, esos años les han dado a los motores antivirus la oportunidad de ponerse al día.

Por ejemplo, VirusTotal muestra que 46 proveedores de seguridad han marcado el archivo a.exe como malicioso. Así lo señaló el investigador senior de seguridad de Sonatype, Ax Sharma. Sharma dijo el miércoles que el malware de robo de contraseñas de Chrome “confirma aún más cómo los ataques a los ecosistemas de código abierto están aquí para quedarse. Y, pueden pasar desapercibidos durante años”.

Eso sí, no solo npm está en la mira de los ciberatacantes, A principios de este mes, los investigadores se encontraron con un grupo de criptomineros que se infiltraron en PyPI, también conocido como Python Package Index (PyPI). PyPI es un repositorio de código de software creado en el lenguaje de programación Python.

Según el informe, la infiltración de npm es solo el ejemplo más reciente de cómo los desarrolladores confían demasiado en el código de terceros. Ellos reutilizan bibliotecas para obtener resultados rápidos y fáciles y “rara vez [hacen] evaluaciones de seguridad en profundidad antes de incluirlas en su proyecto”.

Por supuesto, hay un montón de código para descubrir.

Problemas de seguridad

Esta omisión es el resultado de la naturaleza abrumadora y la gran cantidad de posibles problemas de seguridad que se encuentran en el código de terceros. Por lo tanto, en general, los paquetes se instalan rápidamente para validar si resuelven el problema y, si no lo hacen, pasar a la alternativa. Esta es una práctica peligrosa y puede dar lugar a la instalación accidental de software malintencionado “.

Sharma dijo que lo que es de particular interés sobre el descubrimiento de a.exe es el hecho de que emplea una utilidad legítima de Windows de recuperación de contraseñas. Es decir, utiliza ChromePass para robar contraseñas del navegador Chrome de un usuario. Los actores de amenazas a menudo dependen de componentes y servicios legítimos para llevar a cabo sus siniestras actividades con el fin de evadir la detección”.

Conclusión

En la conclusión del informe, ReversingLabs señaló que los ataques a la cadena de suministro de software se están convirtiendo en “una estrategia poderosa” para los ciberdelincuentes. Sin embargo, para los desarrolladores son un punto de entrada crítico para su organización y su base de clientes.

Uno de los vectores de ataque más frecuentes dirigidos a los desarrolladores es la explotación de los repositorios de paquetes públicos. Como estos repositorios tienen una gran cantidad de paquetes alojados, ofrecen un buen escondite para el malware.

El descubrimiento repetitivo de paquetes maliciosos en estos repositorios ha demostrado que existe una creciente necesidad de soluciones de seguridad. estas soluciones deben proporcionar una identificación confiable y protección contra este tipo de ataques.

Deja un comentario

Adquiere tu Membresía Anual Wiser

Adquiere tu Membresía Anual Wiser y adquiere grandes beneficios

Más información