恶意二进制文件窃取用户 ID、密码、本地机器环境变量和本地主机名,然后将窃取的数据泄露到被劫持的存储桶中。
介绍
几周前,Github 发布了一份公告,报告 NPM 包“ bignum ”中存在恶意软件。
该公告描述了包被破坏的有趣方式。
“bignum”的最新版本 0.13.1 发布于 3 年多前,从未受到损害。但是,几个先前的版本是。
版本 0.12.2-0.13.0 依赖于托管在 S3 存储桶上的二进制文件。这些二进制文件会在安装时从存储桶中提取,以支持包的功能。大约 6 个月前,这个 bucket 被删除了(依赖它的版本大部分都没有用了)。
这为接管打开了大门,这导致了我们将要深入研究的事件。
什么是“S3 存储桶”?
S3 存储桶是亚马逊网络服务 (AWS) 提供的一种存储资源,允许用户通过 Internet 存储和检索海量数据。它用作可扩展且安全的对象存储服务,可存储文件、文档、图像、视频和任何其他类型的数字内容。S3 存储桶可以使用唯一的 URL 进行访问,使其广泛用于各种用途,例如网站托管、数据备份和归档、内容分发和应用程序数据存储。
开始:劫持废弃的 S3 存储桶
发现名为“bignum”的 NPM 包利用“node-gyp”在安装期间下载二进制文件。二进制文件最初托管在 Amazon AWS S3 存储桶上,如果无法访问,将提示包在本地查找二进制文件。
然而,一名身份不明的攻击者注意到曾经活跃的 AWS 存储桶突然被遗弃。意识到机会,攻击者抓住了废弃的水桶。因此,每当下载或重新安装 bignum 时,用户都会在不知不觉中下载由攻击者放置的恶意二进制文件。
请务必注意,每个 AWS S3 存储桶必须具有全球唯一的名称。删除存储桶后,该名称将再次可用。如果一个包指向一个桶作为它的源,那么即使在桶被删除之后,指针也会继续存在。这种异常使攻击者可以将指针重新路由到接管的存储桶。
攻击:具有双重功能的恶意二进制文件
这个假货。节点二进制文件模仿了原始文件的功能。它执行了包的通常和预期的活动。尽管如此,它仍未被用户检测到,它还添加了一个恶意负载,旨在窃取用户凭据并将它们发送到同一个被劫持的存储桶。渗漏是在 GET 请求的用户代理中巧妙地执行的。
逆转:揭开隐藏的功能
恶意 .node 文件——本质上是一个 C/C++ 编译的二进制文件——可以在 JavaScript 应用程序中调用,桥接 JavaScript 和本机 C/C++ 库。这允许 Node.js 模块利用更高性能的低级代码,并为潜在的恶意活动打开一个新的攻击面。
对编译后的文件进行逆向工程并非易事。使用 virus total 扫描文件没有产生任何结果,因为它没有被检测为恶意软件。但是,当查看文件中包含的字符串时,很容易看出其中有一些奇怪的行为,因此我不得不深入研究程序集。
从无休止的向注册表、比较和数据移动添加字节列表开始,这些最初看起来毫无意义,逆向工作最终得到了回报——一个 URL 是通过单独逆向字符串部分构建的。
进一步调查显示,二进制文件通过 getpwd 和 getuid(如字符串打印输出所示)等函数收集数据,提取环境数据。然后,它为 IPv4 通信创建了一个 TCP 套接字,并作为“GET”请求的用户代理秘密发送收集到的数据。
涟漪效应
由于这是第一次观察到此类攻击,我们在整个开源生态系统中进行了快速搜索。结果令人吃惊。我们发现许多使用容易受到这种利用的废弃 S3 存储桶的软件包和存储库。
这种新型攻击媒介的影响可能会有很大差异。但是,如果攻击者在这种变化发生时设法利用它,那么它所带来的危险可能是巨大的。使用冻结版本或人工制品的组织或开发人员面临另一个风险,因为他们将继续访问同一个现已被劫持的存储桶。
判决
子域接管领域的这一新变化为开发人员和组织敲响了警钟。它强调了对包源和相关托管资源进行严格检查和监控的必要性。
废弃的托管存储桶或过时的子域不仅仅是一个被遗忘的工件;如果落入坏人之手,它可能成为数据窃取和入侵的有力武器。
预防未来劫持的主动步骤
为了防止这种攻击发生在其他地方,我们接管了我们在搜索中发现的开源包中的所有废弃存储桶。现在,当有人试图访问这些存储桶中托管的文件时,他们将收到我们植入这些存储桶中的免责声明文件。
概括
攻击者不断寻找创造性的方法来毒化我们的软件供应链,这提醒我们我们的供应链流程是多么脆弱。
我们需要了解,如果攻击者接管其存储服务,依赖软件依赖项在构建时交付编译部分可能会无意中交付恶意软件。
我们要感谢 Google 软件包的维护者 Rod Vagg 和 Caleb Brown 对此次调查的合作和协助。
IOC
Bignum v0.13.0:
MD5: 1e7e2e4225a0543e7926f8f9244b1aab
SHA-1: b2e1bffff25059eb38c58441e103e8589ab48ad3
SHA-256: 3c6793de04bfc8407392704b3a6cef650425e42ebc95455f3c680264c70043a7
Bignum v0.12.5:
MD5: f671a326b56c8986de1ba2be12fae2f9
SHA-1: ab97d5c64e8f74fcb49ef4cb3a57ad093bfa14a7
SHA-256: 3ba3fd7e7a747598502c7afbe074aa0463a7def55d4d0dec6f061cd3165b5dd1
原文翻译自:https://checkmarx.com/blog/hijacking-s3-buckets-new-attack-technique-exploited-in-the-wild-by-supply-chain-attackers/
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里