Los atacantes usan bytecode compilado en Python para evadir la detección
Los atacantes que tienen como objetivo los repositorios de paquetes de código abierto como PyPI (Python Package Index) han desarrollado una nueva técnica para ocultar su código malicioso de los escáneres de seguridad, comprobaciones manuales y otras formas de análisis de seguridad. En un incidente, los investigadores encontraron un código de malware oculto en un archivo de código de bytes de Python (PYC) que se puede ejecutar directamente, a diferencia de los archivos de código fuente interpretados por el entorno de tiempo de ejecución de Python.
«Puede ser el primer ataque a la cadena de suministro que explota el hecho de que los archivos de código de bytes de Python se pueden ejecutar directamente, y se produce en medio de un aumento en los envíos maliciosos al índice de paquetes de Python», dijeron investigadores de la firma de seguridad ReversingLabs. en un informe. «Si es así, esto representa otro riesgo para la cadena de suministro en el futuro, ya que es probable que la mayoría de las herramientas de seguridad pasen por alto este tipo de ataque que solo escanea archivos de código fuente (PY) de Python».
Código compilado versus código fuente
La gran mayoría de los paquetes que se encuentran en repositorios públicos como npm para JavaScript, PyPI para Python y RubyGems para Ruby consisten en archivos de código fuente abierto empaquetados en archivos. Son fáciles de descomprimir y leer. Debido a esto, se desarrollaron escáneres de seguridad para estos repositorios para manejar este tipo de paquetes.
Los atacantes están en una batalla constante con las empresas de seguridad para evadir la detección, y la técnica de evasión más común cuando se trata de código de texto sin formato es la ofuscación. Las funciones del propio lenguaje de programación, como la codificación, la decodificación o la evaluación, se utilizan para hacer que el código sea ilegible pero aún funcional. Por ejemplo, la codificación de código malicioso en Base64 es una técnica común, pero las herramientas de seguridad pueden manejar dicha codificación.
En el ecosistema PyPI, los ciberdelincuentes detrás del malware W4SP Stealer son conocidos por usar técnicas como la codificación Base64, la compresión LZMA y la minificación, eliminando espacios y comentarios del código para hacerlo más compacto pero también más difícil de leer. Para lograrlo, el grupo utiliza algunas herramientas de código abierto de terceros, como Pyminifier, Kramer o Hyperion. En una variante de los ataques W4SP, el código malicioso ofuscado en los archivos fue empujado más allá de los bordes de la pantalla estándar para que alguien que inspeccione manualmente el archivo de código fuente no pueda verlo.
Sin embargo, los archivos PYC son diferentes. No son legibles por humanos como los scripts PY de texto sin formato. Los archivos PYC se generan cuando el intérprete de Python importa o ejecuta un script de Python. Debido a que ya son código interpretado (compilado), luego pueden ser ejecutados directamente por el intérprete de Python sin tener que reinterpretar el script original. Esto aumenta el rendimiento ya que los tiempos de ejecución son más rápidos y el uso más común de estos archivos es distribuir módulos de Python.
En la mayoría de los casos de malware PyPI, el código malicioso ofuscado está diseñado para acceder a una URL externa y descargar el malware, generalmente un ladrón de información, otra forma en que las herramientas de seguridad detectan comportamientos sospechosos. En este incidente reciente, se descubrió que un paquete llamado fshec2 contenía un archivo PYC malicioso. Toda la carga útil maliciosa se puede ocultar en el archivo y es mucho más difícil de detectar si la herramienta de seguridad no está diseñada para la descompilación.
«Los scripts de carga como los descubiertos en el paquete fshec2 contienen una cantidad mínima de código de Python y realizan una acción simple: cargar un módulo de Python compilado», dijeron los investigadores de ReversingLabs. «Es solo un módulo malicioso. Inspector, la herramienta estándar del equipo de seguridad de PyPI para analizar paquetes de PyPI, actualmente no proporciona una forma de analizar archivos binarios para detectar comportamientos maliciosos. El código compilado del archivo .PYC tuvo que ser descompilado para analizar su contenido».
El paquete fshec2 encontrado por ReversingLabs exhibió un comportamiento adicional que probablemente pretendía evadir la detección. Por lo general, un módulo se importa desde un script de Python mediante la declaración de importación. Sin embargo, en este caso, el módulo PYC malicioso se cargó con importlib, un paquete separado que implementa la funcionalidad de importación y solo se usa en ciertos casos, como cuando una biblioteca importada se modifica dinámicamente al importar. En este caso, el PYC malicioso no se ha modificado, por lo que no hay ninguna razón técnica para usar importlib aparte de evitar el uso de la directiva de importación regular, que probablemente tiene la intención de eludir la detección.
El robo de credenciales parece ser el objetivo principal
Una vez que se ejecuta en una máquina, la carga dañina fshec2 recopila información sobre el sistema, como nombres de usuario, listas de directorios y nombres de host, y luego configura un trabajo cron en Linux o una tarea programada en Windows para ejecutar comandos recuperados de un servidor remoto. Los comandos permiten que el malware se actualice, lo que permite a los atacantes implementar una nueva versión y cargas útiles adicionales en forma de secuencias de comandos de Python.
Los investigadores de ReversingLabs analizaron el servidor de mando y control y encontraron errores de configuración que les permitieron echar un vistazo a cierta información. Por ejemplo, descubrieron que las computadoras de las víctimas recibieron una identificación incremental y pudieron confirmar que el malware en realidad fue ejecutado por varias víctimas.
«La gran cantidad de estas fallas podría llevarnos a concluir que este ataque no fue obra de un actor patrocinado por el estado y no fue una Amenaza Persistente Avanzada (APT)», dijeron los investigadores. «Aunque mi equipo no recopiló suficiente evidencia para probar esta suposición de una forma u otra, al recopilar los nombres de los archivos incrementando la identificación del archivo, pudimos determinar que el ataque fue exitoso en algunos casos. Nuestros investigadores aún no pueden decir quiénes o cuáles son los objetivos». Sin embargo, podemos confirmar que los desarrolladores instalaron el paquete PyPI malicioso y que capturó los nombres de sus computadoras, nombres de usuario y listas de directorios».
Algunos de los nombres de archivos encontrados en el servidor indican que los atacantes usaron funciones de registro de teclas en algunas máquinas.
«En el pasado, npm era el desafortunado líder, y PyPI también compitió por ser la plataforma de código abierto que atrajo más la atención de los autores de malware», dijeron los investigadores. “Sin embargo, durante los últimos seis meses, ReversingLabs y otros han observado un aumento significativo en la cantidad de malware lanzado en PyPI. De hecho, en mayo, la creación de nuevas cuentas de usuarios y proyectos en PyPI se suspendió temporalmente durante unas horas, lo que provocó un alto nivel de actividad maliciosa”.
ReversingLabs informó sobre el nuevo vector de ataque al equipo de seguridad de PyPI, que eliminó el paquete y dijo que nunca antes habían visto esta técnica de ataque. Esto no excluye la posibilidad de que otros paquetes similares ingresen al repositorio.
Para hacer frente a estas amenazas modernas de la cadena de suministro de software, las organizaciones necesitan más que soluciones de análisis de código estático. Necesita herramientas que también puedan monitorear los sistemas de desarrollo confidenciales para detectar la creación de procesos sospechosos, la ejecución de archivos, el acceso a URL no autorizado, los comandos de recopilación de información y el uso de funciones de las que se abusa fácilmente, como get_path o importlib.
Derechos de autor © 2023 IDG Communications, Inc.
Este contenido de ciberseguridad nos ha llegado de: CSO Online
Encontrarás la noticia original en el enlace que se encuentra a continuación: https://www.csoonline.com/article/3698472/attackers-use-python-compiled-bytecode-to-evade-detection.html#tk.rss_news