跨供应链和代码库攻击技术分析

导语:本文深入研究了攻击者在看似合法的应用程序和代码库中植入恶意有效负载的复杂方法。

随着技术的发展,世界之间的联系变得更加紧密,攻击者使用的技术也在不断发展。攻击者通过不断地利用供应链和代码库中复杂的相互依赖关系,对组织、个人和社区造成重大风险。

近年来最令人担忧的攻击趋势之一是供应链攻击的增加,尤其是那些对代码库的攻击,这是全球网络安全领域的一个难题。根据欧盟网络安全机构(ENSA)发布的一份报告,62%的组织受到第三方网络事件的影响,只有40%的受访组织表示他们了解第三方网络和隐私风险。更令人担忧的是,38%的受访组织表示,他们不知道哪些网络问题是由第三方组件引起的,最近涉及供应链的网络攻击包括ApacheLog4j,SolarWindsOrion和3CX的3CXDesktopApp。

在现代软件开发中,开发人员依赖第三方组件来简化开发过程,这使开发人员能够创建成本效益高、效率高且功能丰富的应用程序。但是,当这些受信任的组件受到攻击时会发生什么?

攻击者可以通过组织供应链中不太安全的元素,如第三方供应商或软件存储库间接渗透系统,甚至允许他们破坏受信任的组件,从而在更大、更安全的环境中获得立足点。恶意代码经常嵌入看似合法的软件库中,当开发人员集成这些组件,就会不知不觉地将漏洞和其他网络安全风险引入他们的核心系统。

本文深入研究了攻击者在看似合法的应用程序和代码库中植入恶意有效负载的复杂方法,并以最近示例作为研究对象。

技术分析

攻击者复制合法GitHub存储库的示例研究,然后用恶意代码进行木马化和攻击,策略性地用关键字填充其存储库描述部分,以最大限度地提高其在GitHub搜索中的可见性。

通过此分析,我们可以深入了解攻击者攻击第三方组件的攻击过程和技术,以下部分将使用活动命令与控制(C&C)服务器研究其中一个被木马化的项目,了解其内部工作原理。

通过execsmugglingweb请求发起攻击

Discord-Boost-Tool的存储库名称和存储库的所有者

在所举示例中,攻击的第一阶段采用了一种我们称之为execsmuggling的新技术。该技术在一长串空白字符之后放置一个有效负载,将恶意内容从屏幕上推送出去。使用这种技术,下一阶段通过恶意请求调用检索,≠≠使用Python内置方法exec()执行。接下来,我们将根据示例概述execsmuggling的具体实现步骤。

导入必要的依赖项

在导入request和fernet之前,恶意软件使用以下命令在Python中安装必要的依赖项,通过该命令安装依赖项包:

恶意软件安装并导入必要的依赖项

将恶意代码对象移出白名单

攻击者会添加一长串空白字符(在本例中是521个空格),将恶意代码移出白名单,从而隐藏代码对象,不被人发现。

使用exec()执行恶意负载

最后,通过调用Python的exec方法来执行代码对象。以下是解密后的恶意代码片段:

此代码对象向攻击者的命令和控制(C&C)服务器发出web请求,该服务器包含恶意负载,然后导致第二阶段的攻击。

执行走私后攻击进入第二阶段

攻击的第二阶段

据分析,攻击的第二阶段侧重于为进一步开发准备攻击环境。

设置环境

第二阶段使用Python的子进程模块进一步准备环境

攻击的第三阶段

环境准备好后,恶意软件进入攻击过程的第三阶段。

BlackCap-Grabber

第三阶段包含一个修改版的开源信息窃取项目,名为BlackCap-Grabber。它具有以下功能:

提取浏览器密码、cookie和浏览历史记录;

检索系统信息;

绕过TokenProtector;

劫持Windows剪贴板以更改加密货币地址,将其内容替换为攻击者的钱包地址以及其他功能。

重要的是,原来的BlackCap-Grabber包括双钩(dualhook)技术,使用这种技术,代码的开发者也将收到由攻击者(BlackCap-Grabber用户)窃取的信息的副本。像BlackCap-Grabber-NoDualHook这样的项目会从源代码中移除植入的DualHook。

在执行时,恶意软件将受攻击系统的ComputerName发送到其C&C服务器。然后安装必要的Python包以确保恶意软件的功能。请注意,此代码不是原始BlackCap-Grabber的一部分,而是由攻击者添加的。

恶意软件发送带有受害者计算机名的POST请求,并安装额外的依赖项

下图展示了由恶意软件及其处理受害者信标的请求处理程序生成的初始网络流量的示例。

向包含受害者用户名的/downloadhandler发出POST请求

BlackCap-Grabber配置

BlackCap-Grabber的主要功能是劫持Windows剪贴板以更改加密货币地址,从受攻击的系统中检索敏感信息,并从各种web浏览器将其保存到文件中以供泄露。

BlackCap-Grabber准备敏感信息,如浏览器cookie、加密货币地址和剪贴板信息

BlackCap-Grabber使用upload()方法处理敏感信息数据,以便上传到攻击者的基础设施

BlackCap-Grabber使用LoadRequests方法从受害者发送POST请求以进行数据提取

使用上图中的逻辑,攻击者向基础结构发送包含泄露的密码、cookie和加密货币地址的POST请求。

攻击者通过POST请求将泄露的数据发送到/handler终端

在此示例中,恶意软件将包含浏览器cookie等内容的恶意包从受攻击系统中泄漏到攻击者控制的主机。攻击者使用web请求处理程序来处理从受害设备上成功窃取的包。

另外一个密码示例通过POST请求发送到/handler终端

以上是我们发现的附加POST请求,其中包含由攻击者从受攻击的受害者向处理程序/句柄泄露的敏感信息。

探索Exodus和ElectronJS组件

经过调查,我们确定Exodus桌面钱包是使用ElectronJS框架构建的,基于本地Exodus安装的资源目录中存在的app.asar文件,该框架用于捆绑和打包应用程序的资源。Asar压缩文件类似于.zip或.tar文件,但专门为ElectronJS应用程序设计。

ElectronJS和Exodus这两个漏洞是由关联的。早在2018年,基于远程代码执行漏洞CVE-2018-1000006(CVSS8.8)的Electron就可以被利用。研究人员很快指出,攻击者可以通过滥用电子协议处理程序来利用这个漏洞。

如前所述,ElectronJS应用程序被打包为app.asar压缩文件,其中包含应用程序的源代码和各种应用程序资产。Asar压缩文件类似于.zip或.tar文件,是专门为ElectronJS应用程序设计。

什么是Exodus

Exodus是一个数字资产平台,允许用户存储、管理和交换加密货币和NFT。

Exodus提供各种钱包,如Web3钱包、移动钱包、桌面钱包、Trezor硬件钱包,以及与加密货币应用程序的集成。

Exodus桌面钱包应用程序

通过webGUI访问Exodus桌面钱包

Exodus桌面钱包提供了一个直观的界面来访问加密货币钱包。解锁加密货币钱包需要密码,如Exodus桌面钱包应用程序GUI所示。

在设置用于备份钱包的助记符秘密短语时,Exodus会让用户打印助记符密钥作为安全设备。

使用物理助记键恢复Exodus钱包

当用户试图恢复钱包时,Exodus可能会要求他们参考助记秘钥的打印副本,并根据提供的数字选择正确的单词。出于安全考虑,Exodus被设计成一个使用密码和助记短语组合的自我保管钱包。

探索ExodusElectronJS应用程序的主要组件

Exodus桌面钱包的app.asar文件可以解压缩到目标目录。在这个目录中,我们看到了应用程序的根目录,其中包括node_modules、src和应用程序的package.json。

Exodus桌面钱包的NodeJS后端

ExodusElectronJS应用程序的主要组件包括应用程序的主逻辑(包含在src/app/main/index.js中)、钱包组件(包含在src/app/wallet/index.js中)和表示逻辑(包含在src/app/static/中),后者将NodeJS后端文件导入到应用程序的前端表示中。

正在攻击Exodus桌面钱包的ElectronJS应用程序

通过使用注入技术,攻击者可以通过替换app.asar压缩,将Exodus桌面钱包的ElectronJS应用程序替换为恶意的ElectronJS应用程序,该压缩文件由Exodus桌面钱包读取。这个应用程序是一个全功能的复制品Exodus桌面钱包,攻击者将其功能改变,以窃取钱包信息,包括密码和助记符信息。

inject()函数负责注入恶意的Exodus桌面钱包

在上图所示的代码中,攻击者执行一系列检查,以确定受攻击的设备是否安装了ExodusDesktopWallet。

下面的代码片段是在Windows安装中Exodus应用程序使用的app.asar文件的位置。

Exodus钱包桌面Windowsapp.asar路径:

同时,下面的代码片段是Linux安装中Exodus应用程序使用的app.asar文件的位置:

Exodus钱包桌面Linuxapp.asar路径:

如果发现Exodus,恶意代码将继续如下操作:

1.从攻击者控制的基础设施下载并读取恶意修复的app.asar文件。

2.终止现有的Exodus进程。

3.将恶意的app.asar写入Exodus应用程序资源目录中的Exodusapp.asar文件中。

如果在设备上找不到Exodus桌面钱包的行为

如果在目标设备上没有找到Exodus,恶意代码将继续下载文件stromrechung.py到\Microsoft\Windows\StartMenu\Programs\Startup。该文件将在系统启动时执行。

如果没有找到Exodus,“miner.exe”将从另一个攻击者域下载并安装

Python用于执行恶意批处理文件,其中包含“miner.exe”的下载和运行逻辑。

恶意文件stromrechnung.py是一个python文件,包含以下逻辑:

1.为Windows批处理文件创建一个Python函数;

2.使用陆地驱动程序(LoLDrivers)编写逻辑以绕过UAC;

3.编写PowerShell命令将加密货币挖矿器(miner.exe)下载到受害者的设备上;

4.运行Python函数,该函数使用subprocess.popen方法执行批处理文件。

在Exodus桌面钱包的ElectronJS应用程序中注入代码

在示例中,有三个不同的文件被攻击者改变了,具体将在后面介绍。

恶意注入后端unlock()函数(src/app/wallet/index.js)

主要注入发生在src/wallet/index.js中,攻击者在解锁函数中注入恶意POST请求。POST请求包含钱包密码、助记密钥和钱包目录。

文件src/app/wallet/index.js被攻击,泄露密码、助记符和钱包信息给攻击者

允许打开钱包域(4.9.1.2.src/app/main/index.js)

即使在干净的Exodus应用程序将钱包域限制为Exodus的位置,攻击者也可以修改主index.js文件以允许所有钱包域。

文件src/app/main/index.js修改域名列表以允许所有钱包域名

4.9.1.3.src/static/wallet.html:禁用内容安全策略(CSP)

内容安全策略(CSP)作为一个额外的安全层,用于识别和抵御特定形式的攻击,例如跨站点脚本(XSS)和数据注入攻击。connect-src指令限制了可以通过脚本接口加载的url。

文件src/app/main/index.js被修改为禁用应用程序的CSP

我们发现,攻击者有效地禁用了CSP,以允许从所有url到Exoduswallet.js组件的数据连接。

Discord-Boost-ToolGitHub存储库

接下来,我们将探讨Discord-Boost-Tool的特性及其一些有趣的组件。

discord-boost-tool的起源

来自PatrickPagoda的Discord-Boost-Tool

PatrickPagoda版本的Discord-Boost-Tool使用了恶意的PyPi包

通过GitHub代码库进行供应链攻击的后果

尽管PatrickPagoda的GitHub帐户已被停用,但源自PatrickPagoda存储库的初始分叉仍然存在,同时还包含有攻击的PyPi包。这种情况反映了供应链攻击中的一种令人担忧的模式,攻击者可以通过合并有攻击的依赖关系来污染工具。

随后,他们通过上传到GitHub等平台来传播这些工具。然后,社区继续分叉这些受攻击的存储库,这反过来又导致进一步的分叉,从而扩大了攻击的范围。关于代码共享的滥用,也说明了组织采用全面的供应链风险管理(SCRM)程序的必要性。

使用PatrickPagoda的恶意存储库“installpylibsqlite”的示例存储库

使用PatrickPagoda恶意存储库“pipcryptliberyV2”的示例存储库

通过GitHub社区传播

这些工具在GitHub、Discord和Telegram等平台上激增,许多用户只是手动共享工具。不过使用者并不知道这些工具的起源,这是令人担忧的,因为理想情况下,只有当用户能够确认他们正在交互的代码库的完整性时,才应该使用软件。

用户随机共享受感染的工具

我们还发现,一些用户也在Telegram上出售这个工具。

这个修改后的工具在GitHub存储库中以不同的形式出现,并在Telegram和Discord等平台上传播。

分析Discord-Boost-Tool恶意提交史

恶意的Discord-Boost-Tool首次提交是在2023年7月10日,到现在总共有78次提交。在第一次提交时,攻击者试图从update.py中的PyPi安装一个名为pipcoloringskitsV1的恶意包。此外,所有其他Python文件都被exec和request.get的组合所攻击。

攻击者的提交历史

execsmugglingGitHub提交

此攻击者使用execsmuggling技术来执行恶意有效负载的检索。

execsmuggling提交到"utils/checker.py"

execsmuggling提交“utils/token.py”

恶意提交PyPi

开发者还有一个重要的提交历史,其中恶意PyPi包被用来攻击和危害受害者。

将恶意PyPi包"pipcoliringskitsV1"提交到"update.py"

pipcoloringskitsV1包只包含一个名为__init__.py的文件,它与我们之前分析的最新版本stage2Python释放器脚本相同。

“pipcolorinskitsV1”包包含一个文件(__init__.py)

恶意PyPi包包含一个文件(__init__.py)

通过2023年7月10日到2023年8月7日的分析,攻击者传播恶意有效负载的技术包括推送恶意PyPi包。

用恶意GitHub提交替换恶意PyPi包

从2023年8月8日开始,攻击者对update.py中的传播方法进行了更改。攻击者没有传播恶意的PyPi包,而是直接在存储库中下载并执行后续阶段的有效负载。在checker.py和token.py中也采用了类似的技术。然而,C&C服务器的详细信息是用Fernet加密的。

恶意PyPi包的历史

包和提交的数量突出了这种特定攻击者能够使用各种恶意包来攻击受害者的敏捷性和灵活性。

示例"pythoncoloringsmodsv2"可在PyPi存储库中获得

德国犯罪市场execsmuggling工具

德国犯罪论坛上的帖子

5月27日论坛帖子示例

受攻击工具示例

该工具伪装成Tether(USDT)的清理工具,USDT是领先的稳定加密货币,其价值与美元挂钩,旨在欺骗毫无戒心的受害者。在这些论坛上宣传的工具使用了execsmuggling技术,该技术对我们上述分析的相同域执行恶意GET请求。

THE END
1.供应链管理前端防杂,后端减重,中间治乱摘要第一篇:前端防杂-通过控制复杂度来控制成本 本篇重点: 复杂度是成本的驱动器。复杂的产品要求复杂的组织、复杂的流程来支持。三维复杂度一起,决定了产品和供应链的成本做不低,速度...https://www.jianshu.com/p/3a4f4a5ff37a
2.关于进一步发展我市农村电子商务的建议目前,虽然农产品电商的创业非常活跃,但电商供应链各环节的互动联合与分工协作机制尚未形成,线上与线下的融合还存在很多障碍。大量离散的农业电商创业者之间的供需信息不能整合,供应链的前端与后端无法形成规模化的供应集聚和需求集合,产地与销地之间网络卖家未能有效联合,电商的效率与成本优势难以显现。 http://www.hgzx.gov.cn/yzjy/2017-11-07/2255.html
1.前端和供应链总监有什么区别说明:前端和供应链总监哪个工资高?前端低于供应链总监。前端平均工资¥17.1K/月,2024年工资¥17.2K,2024年工资低于2023年,供应链总监平均工资¥27.8K/月,2024年工资¥28.2K,2024年工资低于2023年,统计依赖于各大平台发布的公开数据,系统稳定性会影响客观性,仅供参考。 就业...https://www.jobui.com/gangwei/pk/qianduan-gongyinglianzongjian/
2.收藏必备千字长文详解供应链管理是什么以近期实时某恒动汽车零部件制造公司为案例,详细分享如何借助在无代码平台快速搭建供应链管理系统,实现数字化管理供应商全生命周期,从供应商注册准入、到采购、招标、邀标、评标、中标全流程闭环管理,打破多方协作壁垒,真正实现跨平台高效协同。 其主要核心价值:...https://blog.csdn.net/surongyun/article/details/143744329
3.运联研究供应链一体化趋势下,合同物流的变革例如京东物流、菜鸟、苏宁物流等,都是由原来的末端城市前置仓,逐步演变成为“产地仓+前置仓”模式,从供应链的后端服务向前端延伸,实现分销供应链的一体化。高效的供应链模式,使前端的品牌方、经销商等商品供应方更加依赖平台销售渠道。 2.4 物流服务向一体化供应链延伸 ...https://maimai.cn/article/detail?fid=1667886501&efid=MCa2KOnHjN-uvK1yKy4w8Q
4.供应链方案说到成本,就不得不提供应链。供应链作为企业的三大核心职能之一,是成本控制的重头戏。本书从前端防杂,后端减重,中间治乱三个角度,为企业解决供应链管理过程中的高成本、高库存、重资产问题,帮助企业养成好习惯,进而成为企业文化的一部分,从而突破瓶颈,实现更长远的发展。https://www.oh100.com/a/202305/6771518.html
5.SUPPLY流程架构supplychainmanagementstrategy供应链管理系统的顶层数据流程如图5所示。下面我们将就前端和后端分别分析数据流程。 (图5 系统顶层数据流程) 前端数据流程 前端DFD如图6所示。客户通过Web界面确认要定购的商品并提交订单,订单管理系统首先核查订单格式和内容是否正确,如果不正确则通知客户重新填写,如果正确则按订单内容生成待处理订单并在系统中备份。待...https://blog.51cto.com/u_12219/9117333
6.食品工业实证的企业数字化管理探析论文数字化技术使得诊断数据和操作数据在机器和专业人员以及专业人员和专业人员之间更好地流动,其在食品行业产品分类、无线加工厂、操作和决策过程、储存和运送、分配以及食品安全方面的应用,能带来诸如节省劳动力、增加可靠性、供应链透明化、提升客户体验以及增强功能等益处。顶级食品公司正寻求与高科技公司的合作,不断提高...https://www.yjbys.com/bylw/qitaleilunwen/126383.html
7.GitHubIceRainmvc/scmbiz传统供应链系统就像SAP基于核心企业作为使用对象,上下游合作企业并没有供应链账号可用 本供应链是使得上下游企业也可以通过管理完成的人力资源、产品信息交换,库存等。可以通过定制本系统实现不同的应用。 目录 参考下面的图 本系统包括前端、后端、数据大屏,数据结构和基础数据都是通过自研软件开发开发 ...https://github.com/IceRain-mvc/scm-biz-suite
8.新形势下构建国际工程绿色供应链的探索与实践国复咨询一是加强采购与设计的深度融合,确保供应链前端的绿色供应理念在前端规划与后端需求保持一致,提高供应链准备的准确性。 二是高度重视与供应链节点企业的合作,优选绿色供应资源,形成协同联动的快速响应机制,提高供应资源的配置效率和能力,缩短订单响应周期,降低供应商管理投入,优化项目全生命周期效益。 https://www.goalfore.cn/a/3909.html
9.微前端史话:从CS/BS(JSP/PHP)/前后端分离/模板引擎/单页面应用...如同微服务一样,微前端就是把系统拆解,解耦,然后组合。如同iphone的供应链管理。 微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。 https://cloud.tencent.com/developer/article/2286407
10.平台型组织的中国进化:64字关键特征与12大案例深度剖析除手机、电视等由小米负责,其他产品由小米投资、提供供应链、智能互联系统和品牌,而生产、制造、甚至设计都交由合作公司负责。小米以较低的成本迅速扩展智能生态链,也让消费者以较低的成本享受相对优质的智能生态硬件。截止2018年6月,小米成为全球最大的消费级IOT平台,使用小米IOT设备的家庭超过2000万,连接智能硬件...https://news.hexun.com/2019-11-22/199377116.html
11.山西建投:传统建筑行业物资供应链体系的应用与创新深度挖掘产品、交易、信息、金融、服务等多场景需求,推动各品类供方能够快速及时响应企业及项目需求,促进各要素供需精准匹配,解决了要素分散、供需错配、效能低下等问题,推动了供应链前端与后端有效整合,以更快的速度,更强的实力推动企业物资采购高质量发展。 https://bbs.co188.com/thread-10516442-1-1.html
12.漫谈车规MCU之何为车规?其中,PPAP报告是汽车产业链供应商逐级提供的,由晶圆厂和封测厂提供的PPAP被整合到车规芯片的PPAP中,然后提供给零部件设计生成商(Tier-1),最后由Tier-1整合ECU系统软硬件设计和生产的流程数据提供给整车厂。 1.2 车规芯片可靠性验证标准--AEC-Q100 AEC-Q100是由汽车电子委员会(Automotive Electronics Council,简称AEC...https://www.eet-china.com/mp/a246307.html