Una campaña activa desde noviembre pasado ha estado apuntando a desarrolladores de Python que construyen bots de Telegram utilizando bifurcaciones troyanizadas de Pyrogram, lo que permite a los atacantes leer archivos arbitrarios en servidores comprometidos.

Al menos ocho paquetes han sido publicados en el Python Package Index (PyPI) con una puerta trasera oculta que se activa mediante módulos auxiliares al importar Pyrogram o al iniciar el bot.

Aunque el proyecto Pyrogram ya no recibe mantenimiento, sigue siendo popular, con casi 350,000 descargas mensuales en PyPI (última actualización en abril de 2023) y más de 1,400 bifurcaciones en GitHub (última actualización en diciembre de 2024).

Según investigadores de la empresa de seguridad de aplicaciones Checkmarx, que denominaron a la campaña 'Operation Navy Ghost', el actor de amenazas publicó en PyPI entre noviembre de 2025 y junio de 2026 las siguientes bifurcaciones maliciosas de Pyrogram: VLifeGram (9 versiones, 4,150 descargas), VLife-Gram (5 versiones, 1,030 descargas), pyrogram-navy (6 versiones, 2,530 descargas), pyrogram-styled (más de 16 versiones, 15,370 descargas), pyrogram-zeeb (1 versión, 432 descargas), kelragram (3 versiones, 1,041 descargas), sepgram (1 versión, 264 descargas) y pyrogram-kelra (1 versión, 672 descargas).

Todos los paquetes son bifurcaciones del proyecto legítimo Pyrogram, ya que incluyen el código fuente original. Sin embargo, el actor de amenazas también añadió una puerta trasera llamada secret.py, oculta en el módulo helpers.

El archivo malicioso registra manejadores de comandos ocultos de Telegram cuando se inicia un bot infectado, lo que permite la ejecución de código Python o comandos de shell proporcionados por el atacante.

Cuando el atacante envía /asu print(os.environ) al bot de la víctima, esta función compila y ejecuta ese código Python en la máquina de la víctima — con acceso completo al cliente de Telegram en vivo, sesión, chats, contactos y variables de entorno,” explica Checkmarx.
Cuando el atacante envía /asi cat /etc/passwd, esto ejecuta /bin/bash -c “cat /etc/passwd” en el servidor de la víctima y devuelve la salida,” dicen los investigadores. “Esto es repetible con cualquier comando de shell y se ejecuta bajo la autoridad de la aplicación infectada, lo que significa que el malware puede acceder y exfiltrar todo lo que la aplicación infectada podría acceder legítimamente.”

La salida del comando se devuelve a través de mensajes de Telegram, y si supera los 4096 bytes, se envía como un documento adjunto a los atacantes.

La puerta trasera contiene una lista 'OWNERS' codificada con IDs de Telegram que otorgan control exclusivo a los actores de amenazas. Esta lista también ayuda a desactivar la puerta trasera cuando se lanza en el sistema del atacante.

El malware apunta específicamente a cuentas de bot de Telegram y está diseñado para operar silenciosamente, suprimiendo errores y deshabilitando el registro. Checkmarx señala que la puerta trasera se activa solo en cuentas de bot de Telegram, que generalmente se ejecutan en entornos de producción, una función deliberada que indica que el atacante busca 'acceso a bases de datos, credenciales, APIs en la nube e infraestructura sensible'.

Una vez que el bot está activo, el actor de amenazas puede leer cualquier archivo en el servidor, volcar secretos, acceder a los chats de Telegram de la víctima, descargar la base de datos e instalar una puerta trasera persistente.

A pesar de que los paquetes fueron publicados desde diferentes cuentas de PyPI, Checkmarx atribuye la campaña a un solo actor de amenazas. La conclusión se basa en la lista OWNERS compartida entre los diversos paquetes, el código de puerta trasera idéntico, los nombres de comandos y la infraestructura superpuesta.

Los desarrolladores que hayan instalado los paquetes enumerados deben eliminarlos de inmediato, rotar todas las credenciales en el servidor afectado y revocar sus tokens de bot de Telegram. Checkmarx ha publicado indicadores de compromiso para los IDs maliciosos de Telegram junto con las URL de perfil del atacante.

image
image
The Python execution module
The Python execution module
Hardcoded OWNERS list
Hardcoded OWNERS list
article image
article image