在最近的一次攻击活动中,网络犯罪分子被发现巧妙地操纵 GitHub 的搜索功能,并使用精心设计的存储库来分发恶意软件。
关键点
GitHub 搜索操纵:攻击者使用流行的名称和主题创建恶意存储库,使用自动更新和假星等技术来提高搜索排名并欺骗用户。
恶意代码通常隐藏在 Visual Studio 项目文件(.csproj 或 .vcxproj)中以逃避检测,并在项目生成时自动执行。
攻击者已经设置了根据受害者的来源修改有效负载的阶段,特别检查受害者是否位于俄罗斯。此时,我们还没有看到此功能被激活。
最近的恶意软件活动涉及一个大型的填充可执行文件,该文件与“Keyzetsu Clipper”恶意软件有相似之处,目标是加密货币钱包。
该恶意软件通过创建一个计划任务,每天凌晨 4 点运行恶意可执行文件,无需用户确认,从而在受感染的 Windows 计算机上建立持久性。
开发人员在使用公共存储库中的代码时应谨慎,并注意可疑的存储库属性,例如高提交频率和最近创建的帐户的观星者。
利用 GitHub 的搜索功能
我们最近的发现表明,威胁行为者使用可能会被毫无戒心的用户搜索的名称和主题创建 GitHub 存储库。这些存储库被巧妙地伪装成合法项目,通常与流行游戏、作弊或工具相关,使用户很难将它们与良性代码区分开来。
为了确保最大程度的可见性,攻击者采用了一些巧妙的技术,将其恶意存储库始终置于 GitHub 搜索结果的顶部。
Automatic Updates
通过利用 GitHub Actions,攻击者通过修改文件(通常称为“日志”),使用当前日期和时间或只是一些随机的小更改,以非常高的频率自动更新存储库。这种持续的活动人为地提高了存储库的可见性,特别是在用户通过“最近更新”过滤结果的情况下,增加了毫无戒心的用户找到并访问它们的可能性。
Faking Popularity
虽然自动更新有所帮助,但攻击者结合了另一种技术来放大其存储库的有效性,使其达到最佳结果。
攻击者使用多个虚假账户添加虚假明星,制造受欢迎度和可信度的假象。这人为地进一步提高了存储库的可见性,特别是在用户按“最多星星”过滤结果的情况下。
与过去发现攻击者在其存储库中添加数百或数千颗星星的事件相比,在这些情况下,攻击者似乎选择了数量较少的星星,可能是为了避免因夸大的数字而引起怀疑。
许多观星者都是在同一天创建的。虚假账户的危险信号。
这种社会工程技术旨在操纵用户相信该存储库被广泛使用且可靠,利用用户对高星级存储库的固有信任。
毫无戒心的用户通常会被看似积极参与的顶级搜索结果和存储库所吸引,更有可能点击这些恶意存储库并使用它们提供的代码或工具,而没有意识到其中潜伏的隐患。
要更深入地了解假明星的策略,请查看我们最近的博客,该博客更详细地探讨了这种操纵技术。
项目文件中隐藏的恶意软件
攻击者将其恶意软件主要隐藏为存储库的.csproj 或 .vcxproj文件(Visual Studio 项目中常用的文件)深处的混淆代码, 以减少普通用户检测到它的机会,除非他们主动搜索可疑元素。
然而,值得注意的是,还有少量其他检测到的存储库在其他文件中包含不同的恶意软件。
常见恶意负载的技术分析
恶意脚本嵌入在 Visual Studio 项目文件 (.vcxproj) 的预构建事件中,并设计为在构建过程中自动执行。该脚本由两个主要部分组成:
用于设置环境并执行 VBScript 文件的批处理脚本。
由 VBScript 文件解码和执行的 Base64 编码的 PowerShell 脚本。
该批处理脚本创建临时目录、生成 VBScript 文件并解码 Base64 编码的 PowerShell 脚本。然后,它执行解码后的 PowerShell 脚本并清理临时文件。
解码后的PowerShell脚本执行以下恶意操作:
检索机器 IP 地址的国家/地区代码,确定机器是否位于俄罗斯。
根据国家代码从特定URL下载内容(内容由攻击者不断更新)
从每个 URL 下载加密文件,使用预定义密码提取它们,然后执行提取的文件。
该脚本还采用错误处理来静默捕获异常并继续执行。
活跃活动
4 月 3 日,攻击者更新了其存储库之一中的恶意代码,指向一个新 URL,该 URL 下载另一个加密的 .7z 文件,其中包含名为 FeedbackAPI.exe 的可执行文件。
攻击者在可执行文件中填充了许多零,这是一种用于人为增加文件大小的技术。由于这种填充,文件大小超过了许多安全解决方案的阈值,其中 VirusTotal 是一个值得注意的解决方案,它阻止了其被扫描的可能性。根据 VirusTotal 的文档,
“如果要上传的文件大于 32MB,请使用 /private/files/upload_url 端点,该端点最多允许上传 650MB 的文件。”
填充后的feedbackAPI.exe 文件大小为750MB,甚至超过了替代端点增加的限制。
我们对该恶意软件的分析结果表明,该恶意软件与“Keyzetsu Clipper”恶意软件有相似之处,“Keyzetsu Clipper”恶意软件是不断增长的通常通过盗版软件分发的加密钱包 Clipper 列表中的一个相对较新的成员。
此可执行文件还尝试在 Windows 计算机上创建持久性。它通过创建 exe 文件的快捷方式,然后建立名为“Feedback_API_VS_Services_Client”的每日计划任务(在凌晨 4 点执行该快捷方式)来实现此目的。值得注意的是,此任务是在没有任何确认提示的情况下创建的,这使得它更加隐蔽,并且更有可能被毫无戒心的用户注意到。
成功利用的指标
有证据表明,攻击者的活动已成功欺骗了毫无戒心的用户。许多恶意存储库通过问题收到了投诉,并收到了下载和使用代码后遇到问题的用户的拉取请求。
结论
使用恶意 GitHub 存储库来分发恶意软件是一种持续的趋势,对开源生态系统构成了重大威胁。通过利用 GitHub 的搜索功能并操纵存储库属性,攻击者可以引诱毫无戒心的用户下载并执行恶意代码。
为了防止成为类似攻击的受害者,建议密切关注存储库的以下可疑属性:
提交频率:相对于其年龄,存储库的提交数量是否过多?这些提交是否对同一个文件进行了非常小的更改?
Stargazers:这个回购协议由谁主演?大多数观星者似乎都是在同一时间创建的帐户吗?
通过了解这些危险信号,用户可以更好地保护自己,避免无意中下载和执行恶意软件。
在 XZ 攻击和最近发生的许多其他事件之后,开发人员在使用开源代码时仅仅依赖声誉作为衡量标准是不负责任的。盲目获取代码的开发人员也会盲目地对该代码负责。这些事件凸显了手动代码审查或使用专门工具对恶意软件进行彻底代码检查的必要性。仅仅检查已知漏洞是不够的。
作为 Checkmarx 对供应链安全承诺的一部分,我们的研究团队持续监控和检测开源软件生态系统中的可疑活动。我们跟踪并标记潜在的恶意行为指标,并及时向我们的客户和社区发出警报,以帮助保护他们免受这些不断变化的威胁。
共同努力维护开源生态系统的安全。
国际奥委会
hxxps[:]//cdn.discordapp[.]com/attachments/1192526919577649306/1211404800575537304/VisualStudioEN.7z?ex=6612fda3&is=660088a3&hm=5ae3b1b5d2c7dc91a9c07a65dbf8c61d3822b1f16a2d7c70eb37a039979e8290&
hxxps[:]//cdn.discordapp[.]com/attachments/1192526919577649306/1211403074799804476/VisualStudioRU.7z?ex=6612fc07&is=66008707&hm=0a7fc9432f5ef58960b1f9a215c3feceb4e7704afd7179753faa93438d7e8f54&
08b799d56265e93f6aae4f089808d1cb
cc9d54b78688ef6f41e4f4d0c8bced3e04bfcedc
ooocyber[.]keenetic[.]pro
188[.]113[.]132[.]109
https://rentry.co/MuckCompanyMMC/raw
hxxps[:]//rentry[.]co/hwqfx/raw
hxxps[:]//rentry[.]co/q3i7zp/raw
hxxps[:]//rentry[.]co/tvfwh/raw
hxxps[:]//cdn[.]discordapp.com/attachments/1193658583947149322/1218876343232630844/main.exe?ex=6609420d&is=65f6cd0d&hm=f5a0af7499e892637935c3e4071f2dc59d48214f56a1c1d7aedc3392f58176db&
hxxps[:]//paste[.]fo/raw/dd6cd76eb5a0
hxxps[:]//paste[.]fo/raw/efda79f59c55
hxxps[:]//rentry[.]co/4543t/raw
hxxps[:]//rentry[.]co/a2edp
hxxps[:]//textbin[.]net/raw/gr2vzmwcvt
参考链接: https://checkmarx.com/blog/new-technique-to-trick-developers-detected-in-an-open-source-supply-chain-attack/
图片来源网络侵权可联系删除