Hace pocos dias se dio a conocer la notifica de que fueron identificados 11 paquetes que contenían código malicioso en el directorio PyPI (índice de paquetes de Python).
Antes de que se identificaran los problemas, los paquetes se descargaron unas 38 mil veces en total y cabe destacar que los paquetes maliciosos detectados se destacan por el uso de métodos sofisticados para ocultar canales de comunicación con los servidores de los atacantes.
Los paquetes que fueron descubiertos son los siguientes:
- importantpackage (6305 descargas) e important-package (12897): estos paquetes establecen una conexión con un servidor externo con el pretexto de conectarse a pypi.python.org para proporcionar acceso de shell al sistema (shell inverso) y utilizan el programa trevorc2 para ocultar el canal de comunicación.
- pptest (10001) e ipboards (946): utilizaron DNS como canal de comunicación para transferir información sobre el sistema (en el primer paquete, el nombre de host, directorio de trabajo, IP interna y externa, en el segundo, el nombre de usuario y el nombre de host).
- owlmoon (3285), DiscordSafety (557) y yiffparty (1859): identifican el token de servicio de Discord en el sistema y lo envían a un host externo.
- trrfab (287): envía el identificador, el nombre de host y el contenido de /etc/passwd, /etc/hosts, /home a un host externo.
- 10Cent10 (490): estableció una conexión de shell inversa a un host externo.
yandex-yt (4183): mostró un mensaje sobre el sistema comprometido y redirigido a una página con información adicional sobre acciones adicionales, emitido a través de nda.ya.ru (api.ya.cc).
Ante ello, se menciona que se debe prestar especial atención al método de acceso a los hosts externos que se utilizan en los paquetes importantpackage e important-package, que utilizan la red de entrega de contenido Fastly utilizada en el catálogo de PyPI para ocultar su actividad.
De hecho, las solicitudes se enviaron al servidor pypi.python.org (incluida la especificación del nombre de python.org en SNI dentro de la solicitud HTTPS), pero el nombre del servidor controlado por el atacante se estableció en el encabezado HTTP «Host». La red de entrega de contenido envió una solicitud similar al servidor del atacante, utilizando los parámetros de la conexión TLS con pypi.python.org al transmitir datos.
La infraestructura de PyPI está impulsada por Fastly Content Delivery Network, que utiliza el proxy transparente de Varnish para almacenar en caché las solicitudes típicas, y utiliza el procesamiento de certificados TLS a nivel de CDN, en lugar de servidores de punto final, para reenviar las solicitudes HTTPS a través del proxy. Independientemente del host de destino, las solicitudes se envían al proxy, que identifica el host deseado por el encabezado HTTP «Host», y los nombres de host de dominio están vinculados a las direcciones IP del equilibrador de carga CDN típicas de todos los clientes Fastly.
El servidor de los atacantes también se registra con CDN Fastly, que proporciona a todos planes de tarifas gratuitos e incluso permite el registro anónimo. Cabe destacar que también se utiliza un esquema para enviar solicitudes a la víctima cuando se crea un «shell inverso», pero iniciado por el host del atacante. Desde el exterior, la interacción con el servidor del atacante parece una sesión legítima con el directorio PyPI, cifrado con el certificado PyPI TLS. Una técnica similar, conocida como «fronting de dominio», se utilizó anteriormente de forma activa para ocultar el nombre de host al omitir bloqueos, utilizando la opción HTTPS proporcionada en algunas redes CDN, especificando el host ficticio en el SNI y pasando el nombre del host solicitado en el encabezado del host HTTP dentro de una sesión TLS.
Para ocultar la actividad maliciosa, se utilizó adicionalmente el paquete TrevorC2, lo que hace que la interacción con el servidor sea similar a la navegación web normal.
Los paquetes pptest e ipboards utilizaron un enfoque diferente para ocultar la actividad de la red, basado en la codificación de información útil en las solicitudes al servidor DNS. El software malintencionado transmite información mediante la realización de consultas DNS, en las que los datos transmitidos al servidor de comando y control se codifican utilizando el formato base64 en el nombre del subdominio. Un atacante acepta estos mensajes controlando el servidor DNS del dominio.
Finalmente si estás interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.