ESET Research ha descubierto un grupo de proyectos maliciosos de Python que se distribuyen en PyPI, el repositorio oficial de paquetes de Python. La amenaza se dirige tanto a sistemas Windows como a Linux y normalmente ofrece una puerta trasera personalizada. En algunos casos, la carga útil final es una variante del infame Ladrón W4SP, o un simple monitor de portapapeles para robar criptomonedas, o ambos. En mayo de 2023, nosotros reportaron en otro grupo de paquetes que encontramos en PyPI que ofrece malware para robar contraseñas y criptomonedas, pero los dos grupos parecen ser campañas diferentes.
Puntos clave de esta entrada de blog:
- ESET Research descubrió 116 paquetes maliciosos en PyPI, el repositorio oficial de software para el lenguaje de programación Python, cargados en 53 proyectos.
- Las víctimas han descargado estos paquetes más de 10,000 veces.
- Desde mayo de 2023, la tasa de descarga es más o menos de 80 por día.
- El malware ofrece una puerta trasera capaz de ejecutar comandos remotos, exfiltración y tomar capturas de pantalla.
- El componente de puerta trasera está implementado tanto para Windows, en Python, como para Linux, en Go.
- En algunos casos, se entrega en su lugar el W4SP Stealer o un monitor de portapapeles que roba criptomonedas, o ambos.
PyPI es popular entre los programadores de Python para compartir y descargar código. Dado que cualquiera puede contribuir al repositorio, allí puede aparecer malware (a veces haciéndose pasar por bibliotecas de códigos populares y legítimas). Encontramos 116 archivos (distribuciones fuente y ruedas) de 53 proyectos que contienen malware. Algunos nombres de paquetes se parecen a otros paquetes legítimos, pero creemos que la forma principal en que las víctimas potenciales los instalan no es a través de errores tipográficos, sino mediante ingeniería social, en la que se guía a las víctimas mientras ejecutan instalación de pip {nombre-paquete} para poder utilizar el paquete “interesante” por cualquier motivo.
Durante el año pasado, las víctimas descargaron estos archivos más de 10,000 veces; ver Figura 1.
Infestando PyPI
Los paquetes PyPI pueden tomar dos formas: paquetes fuente, que contienen todo el código fuente del proyecto y se crean durante la instalación, y paquetes prediseñados (llamados ruedas), que puede contener módulos compilados para un sistema operativo específico o una versión de Python. Curiosamente, en algunos casos el código Python en la distribución fuente difiere de la distribución construida. El primero está limpio, mientras que el segundo contiene código malicioso. Administrador de paquetes de Python, pepita, prefiere una rueda cuando está disponible en lugar de una distribución de origen. Como resultado, el malware se instala a menos que se solicite explícitamente lo contrario.
Hemos observado a los operadores detrás de esta campaña utilizando tres técnicas para agrupar código malicioso en paquetes de Python.
Módulo malicioso test.py
La primera técnica consiste en colocar un módulo de "prueba" con un código ligeramente ofuscado dentro del paquete. La figura 2 muestra una prueba.py archivo con una función llamada agarrar siendo definido y luego llamado. Observe que la función maneja sistemas Windows y Linux.
Este módulo de prueba se importa en medio del código fuente del módulo principal del paquete (__init__.py), para que el código malicioso se ejecute cada vez que se importe el paquete. La Figura 3 muestra un módulo que se hace pasar por un capturador de pantalla e importa el contenido malicioso. prueba.py.
PowerShell en setup.py
La segunda técnica consiste en incrustar código de PowerShell en el configuración.py archivo, que normalmente lo ejecutan automáticamente administradores de paquetes como pepita para ayudar a instalar proyectos de Python.
La Figura 4 muestra un script de PowerShell que descarga y ejecuta la siguiente etapa.
Este script de PowerShell se descarga transferir[.]sh/eyRyPT/Updater.zip en un directorio temporal como update.zip. Luego, el script descomprime el archivo ZIP en C: Datos de programa y lo elimina del directorio temporal. A continuación, el script ejecuta el pepita Programa para instalar dependencias. Finalmente, ejecuta el código Python en C:ProgramDataUpdaterserver.pyw.
Esta técnica sólo funciona en Windows y no podrá infestar sistemas Linux.
En los metadatos del paquete de la Figura 4, es posible que haya notado que el autor del paquete es billythegoat356. Ha habido numerosos informes que asocian este apodo con actividades maliciosas, incluido un artículo de filo, donde revelan el posible vínculo de Billy con W4SP Stealer.
Sólo malware...
En la tercera técnica, los operadores no hacen ningún esfuerzo por incluir código legítimo en el paquete, de modo que sólo está presente el código malicioso, en una forma ligeramente ofuscada. La Figura 5 muestra dos fragmentos de código malicioso para Windows que se escriben en archivos temporales y luego se ejecutan con pythonw.exe, que se utiliza en lugar de python.exe para que el código se ejecute sin abrir una ventana de consola.
Las siguientes etapas son paquetes, scripts o archivos binarios de Python descargados desde Dropbox o transfer.sh.
Persistencia
En Windows, la persistencia se logra la mayor parte del tiempo a través de un Codificado con VBScript (VBE), que es un archivo VBScript codificado, escrito en %APPDATA%/Pythonenv/pythenenv.vbe. La figura 6 muestra cmd.exe ocultando el directorio %APPDATA%/Pythonenv, Ejecutando pythenenv.vbey luego programar el archivo VBE para que se ejecute cada cinco minutos en la tarea MicrosoftWinRaRUtilityTaskB.
En Linux, la persistencia se logra colocando un archivo malicioso. entrada de escritorio, mate-usuario-compartido.desktop, En la ~/.config/autostart/ directorio, como se ve en la Figura 7. Archivos ubicados en el inicio automático El directorio se ejecuta en cada inicio del sistema. La entrada del escritorio utiliza el nombre de un MATE subproyecto por su nombre de archivo, pero es sólo para reducir las sospechas porque no tiene nada que ver con el entorno de escritorio.
La Figura 7 también muestra las descargas del módulo. dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean a ~/.config/.kde/.kdepath. Probablemente se trate de un intento de hacerse pasar por un directorio de configuración para el KDE GUI de plasma para Linux.
Lanzamiento del mate-usuario-compartido.desktop El archivo a su vez ejecuta el descargado. .kdepath archivo, que es el archivo ejecutable de Linux que contiene el componente de puerta trasera.
Carga útil final
Normalmente, la carga útil final es una puerta trasera personalizada que permite la ejecución remota de comandos, la filtración de archivos y, a veces, incluye la capacidad de tomar capturas de pantalla. En Windows, la puerta trasera está implementada en Python.
La Figura 8 muestra la puerta trasera creando una conexión de socket TCP para blazywound.ignorelist[.]com en el puerto 6001. Después de enviar el nombre de host, la dirección MAC y el nombre de usuario al servidor C&C, la puerta trasera manejará directamente algunos comandos o ejecutará cualquier otro comando en un proceso separado y devolverá la salida del comando y cualquier información de error al servidor.
En Linux, la puerta trasera está implementada en Go; ver Figura 9.
En algunos casos, en lugar de la puerta trasera, la carga útil es una variante del infame Ladrón W4SP, o un simple monitor de portapapeles que roba criptomonedas, o ambos. La Figura 10 muestra un monitor de portapapeles dirigido a las criptomonedas Bitcoin, Ethereum, Monero y Litecoin. El malware utiliza el legítimo clipper paquete para verificar el contenido del portapapeles en busca de direcciones de billetera. Si se encuentra, el malware copia una dirección controlada por el atacante en el portapapeles con la esperanza de que la víctima pegue esta dirección en una futura transacción de criptomonedas.
Los productos de ESET detectan los paquetes maliciosos de Python como variantes de Python/Agent y Python/TrojanDownloader, y la puerta trasera como Python/Agent.AOY o Linux/Spy.Agent.BB.
PyPI ya había eliminado la mayoría de los paquetes en el momento de esta investigación. ESET se comunicó con PyPI para tomar medidas contra los restantes y todos los paquetes maliciosos conocidos ahora están fuera de línea. La lista completa de 116 paquetes se puede encontrar en nuestro Repositorio GitHub.
Vale la pena señalar que el malware en un repositorio de proyectos PyPI no es un problema de seguridad con PyPI en sí. De hecho, el software que ejecuta PyPI fue recientemente auditado por una firma externa que evaluó que PyPl “se ajustaba a las mejores prácticas ampliamente aceptadas”.
Conclusión
Los ciberatacantes siguen abusando de PyPI para comprometer los dispositivos de los programadores de Python. Esta campaña muestra una variedad de técnicas que se utilizan para incluir malware en paquetes de Python. Los desarrolladores de Python deben examinar minuciosamente el código que descargan, especialmente comprobando estas técnicas. antes instalarlo en sus sistemas. Además de seguir abusando del W4SP Stealer de código abierto, los operadores también han implementado una puerta trasera simple pero efectiva. Esperamos que este abuso de PyPI continúe y recomendamos precaución al instalar código desde cualquier repositorio de software público.
Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, contáctenos en amenazaintel@eset.com.
ESET Research ofrece fuentes de datos e informes de inteligencia APT privados. Para cualquier consulta sobre este servicio, visite el Inteligencia de amenazas de ESET .
IoC
archivos
SHA-1 |
Nombre del archivo |
Detección |
Descripción |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
caché.py |
Python/Agente.AGL |
Descargador de puerta trasera de Linux. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-ninguno-cualquier.whl |
Python/Agente.AGU |
Paquete con instalador de puerta trasera de Linux. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-ninguno-cualquier.zip |
Python/Agente.AOY |
Paquete con puerta trasera de Windows. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
basura.py |
Python/Agente.AGM |
Instalador de persistencia de Windows. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
prolimpio |
Linux/Agente.espía.BB |
Puerta trasera de Linux. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
prov.py |
Python/Agente.AGL |
Descargador de puerta trasera de Linux. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Agente.espía.BB |
Puerta trasera de Linux. |
Para obtener una lista completa de paquetes maliciosos, consulte nuestro GitHub. repositorio de malware-ioc.
Nuestra red
Nombre de dominio y certificado SSL |
Dirección IP |
visto por primera vez |
Descripción |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
Servidor C&C para componente de puerta trasera. |
Técnicas MITRE ATT & CK
Esta tabla fue construida usando Versión 14 del marco MITRE ATT & CK.
Táctica |
ID |
Nombre |
Descripción |
Acceso inicial |
Compromiso de la cadena de suministro: comprometer las dependencias de software y las herramientas de desarrollo |
El malware se distribuye mediante el servicio de gestión de paquetes PyPl de Python. |
|
Persistencia |
Tarea/Trabajo programado: Tarea programada |
En Windows, la persistencia se logra mediante una tarea programada. |
|
Ejecución de inicio automático de inicio o inicio de sesión: entradas de inicio automático XDG |
En Linux, se crea una entrada de inicio automático para iniciar la puerta trasera cuando el usuario inicia sesión. |
||
Evasión de defensa |
Enmascaramiento: coincide con el nombre o la ubicación legítimos |
En Linux, los archivos persistentes tienen nombres similares a los del software legítimo. |
|
Acceso a credenciales |
Credenciales de almacenes de contraseñas: Credenciales de navegadores web |
W4SP roba contraseñas de los navegadores web instalados. |
|
Colecciones |
Datos del portapapeles |
Para robar fondos durante una transacción de criptomonedas, se reemplazan los datos del portapapeles. |
|
Comando y control |
Protocolo de capa de no aplicación |
La puerta trasera utiliza un protocolo binario no cifrado a través de TCP. |
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- :posee
- :es
- :dónde
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- capacidad
- Poder
- Nuestra Empresa
- abuso
- aceptado
- alcanzado
- la columna Acción
- actividades
- dirección
- direcciones
- asesorar
- Después
- en contra
- Agente
- Todos
- permite
- ya haya utilizado
- también
- entre
- an
- y
- Otra
- cualquier
- nadie
- Aparecer
- APT
- somos
- AS
- evaluado
- At
- autor
- automáticamente
- Hoy Disponibles
- Atrás
- puerta trasera
- BE
- porque
- esto
- detrás de
- "Ser"
- CREEMOS
- MEJOR
- Bitcoin
- ambas
- navegadores
- construido
- Packs ahorro
- pero
- by
- , que son
- Campaña
- Campañas
- PUEDEN
- capaz
- cases
- precaución
- cadena
- comprobar
- comprobación
- limpia
- Médico
- código
- COM
- comunicados
- compilado
- componente
- compromiso
- Configuración
- conexión
- Consola
- contacte
- que no contengo
- contiene
- contenido
- continue
- continúa
- continuo
- contribuir
- creado
- Creamos
- Referencias
- criptomonedas
- criptomoneda
- personalizado
- datos
- día
- se define
- liberado
- entrega
- dependencias
- desplegado
- computadora de escritorio
- detectar
- desarrolladores
- Desarrollo
- Dispositivos
- una experiencia diferente
- directamente
- descubierto CRISPR
- distribuidos
- distribuciones
- do
- DE INSCRIPCIÓN
- descargar
- Descarga de
- Descargas
- Dropbox
- durante
- cada una
- Eficaz
- esfuerzo
- ya sea
- incrustar
- integrado
- Ingeniería
- entrada
- Entorno
- error
- especialmente
- Etereum
- Cada
- ejecutado
- Ejecuta
- ejecución
- exfiltración
- esperar
- explícitamente
- externo
- hecho
- FALLO
- favores
- Figura
- Archive
- archivos
- final
- Finalmente
- Firme
- Nombre
- Digital XNUMXk
- formulario
- Ex
- Formularios
- encontrado
- Marco conceptual
- Desde
- ser completados
- función
- fondos
- futuras
- GitHub
- Go
- encargarse de
- Manijas
- Tienen
- ayuda
- esperanza
- HTTPS
- if
- imagen
- implementación
- implementado
- importador
- importaciones
- in
- incluir
- incluye
- Incluye
- infame
- información
- Consultas
- dentro
- instalar
- instalación
- instalado
- instalando
- Intelligence
- dentro
- IT
- SUS
- sí mismo
- conocido
- idioma
- lanzamiento
- .
- legítima
- menos
- bibliotecas
- ligeramente
- LINK
- Linux
- Lista
- Litecoin
- situados
- Mira
- Mac
- Inicio
- para lograr
- el malware
- Management
- gerente
- Managers
- Match
- Puede..
- mediano
- metadatos
- Ed. Media
- Min
- Módulo
- Módulos
- monero
- Monitorear
- más,
- MEJOR DE TU
- nombre
- nombres
- Next
- no
- nada
- Aviso..
- señalando
- ahora
- numeroso
- of
- Ofertas
- oficial
- digital fuera de línea.
- on
- ONE
- las
- , solamente
- de código abierto
- apertura
- funcionamiento
- sistema operativo
- operadores
- or
- Otro
- de otra manera
- nuestros
- salida
- Más de
- paquete
- paquetes
- página
- Contraseña
- contraseñas
- pasado
- para
- persistencia
- piezas
- Colocar
- colocación
- Plasma
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- Por favor
- puntos
- Popular
- posible
- PowerShell
- presente
- privada
- probablemente
- Productos
- Programador
- Programación
- proyecto
- proyecta
- protocolo
- público
- publicado
- PYPL
- Python
- Rate
- más bien
- razón
- reducir
- restante
- sanaciones
- reemplazados
- Informes
- repositorio
- la investigación
- resultado
- género
- Ejecutar
- correr
- corre
- programada
- programación
- capturas de pantalla
- guión
- guiones
- Segundo
- EN LINEA
- ver
- visto
- envío
- enviando
- separado
- servidor
- de coches
- Configure
- compartir
- tienes
- Shows
- similares
- sencillos
- desde
- So
- Social
- Ingeniería social
- Software
- algo
- a veces
- Fuente
- código fuente
- soluciones y
- Etapa
- etapas
- inicio
- robos
- tiendas
- tal
- te
- Todas las funciones a su disposición
- mesa
- ¡Prepárate!
- toma
- toma
- orientación
- tiene como objetivo
- Tarea
- la técnica
- técnicas
- temporal
- test
- que
- esa
- El proyecto
- La Fuente
- su
- luego
- Ahí.
- Estas
- ellos
- Código
- así
- a fondo
- amenaza
- Tres
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- veces
- a
- transaccional
- GIRO
- dos
- típicamente
- bajo
- subido
- a
- us
- utilizan el
- usado
- Usuario
- usos
- usando
- generalmente
- Variante
- variedad
- versión
- VET
- vía
- Víctima
- las víctimas
- Visite
- caminado
- Billetera
- fue
- Camino..
- we
- web
- navegadores web
- WELL
- tuvieron
- lo que
- Sistemas de
- cuando
- cuando
- que
- mientras
- extensamente
- anchura
- seguirá
- ventana
- ventanas
- sin
- funciona
- valor
- escrito
- año
- Usted
- zephyrnet
- Zip