GitHub开源项目被投毒,后门病毒跟随开发流程传播蔓延
-
作者:火绒安全
-
发布时间:2025-01-23
-
阅读量:904
现如今,代码的开放给软件开发提供了诸多便利,GitHub就是其中极具代表性的平台。然而随着“开放”逐渐广泛,其被恶意利用的风险也随之增加。近年来,一种隐蔽又危险的攻击手段——代码投毒,悄悄成了威胁开发者和用户安全的隐患。攻击者会在开源项目或代码库里植入有害代码,这些看似正常的代码,一旦被开发者无意中引入,就会在开发链条中蔓延,最终让用户也面临安全风险。
近期,火绒威胁情报中心监测到一批GitHub投毒的恶意样本。经火绒工程师分析,该木马利用多种编程语言(包括JavaScript、VBS、PowerShell、C#、C++)构建复杂的进程链,最终实现恶意后门木马功能。这种投毒攻击方式不仅隐蔽性强,还可能通过软件供应链传播到更广泛的用户群体中。目前,火绒安全产品已具备对该类GitHub投毒样本的精准识别能力,能够有效阻断其加载过程,为用户系统提供可靠的安全保障。为了进一步增强系统防护能力,火绒安全建议广大用户及时更新病毒库。这将确保您的系统能够抵御最新威胁,防范潜在安全风险。
查杀图
一、GitHub投毒事件及潜在风险
尽管此类攻击看似主要针对开发者,但其潜在影响却远不止于此,甚至可能波及每一位普通用户。以下将详细介绍此类攻击的运作方式及其可能带来的风险,希望广大用户在了解后能够进一步提升终端安全防护意识。
攻击的起点——开发者
攻击者利用GitHub等开源平台的开放性,将恶意代码伪装成正常工具,诱骗开发者下载和使用。而近年来,GitHub投毒攻击已成为网络安全领域备受关注的热点话题。开发者作为软件的构建者,一旦不慎落入陷阱,这些恶意代码便会悄无声息地潜入他们的开发环境。而开发者编写的代码和使用的工具,最终将会转化为我们日常生活中所依赖的应用程序和服务。因此,一旦开发环境被污染,安全隐患便会顺着开发流程蔓延,进而影响到每一位普通用户。
供应链的连锁反应
在软件开发的生态系统中,开发者所使用的工具和库往往会通过软件供应链传播到更广泛的应用中,它们会通过层层传递,融入到更广泛的应用程序中。例如:
一个被篡改的开源库可能被集成到多个软件项目中。由于开源库的广泛使用和高度共享性,这种篡改行为很容易在软件开发过程中传播开来。
这些软件项目最终会发布到应用商店,或者通过更新机制推送到用户的设备上。在这个过程中,恶意代码可能会随着软件的分发而扩散到用户手中。
因此,即使我们从未直接接触过GitHub或开源代码,也可能因为使用了某个被感染的软件而成为受害者。
潜在风险
隐私泄露:恶意代码可能会窃取个人信息,如账号密码、浏览器Cookies等。
远程控制:攻击者可能通过远程访问工具控制设备,甚至监控使用者的一举一动。
经济损失:窃取的信息可能被用于欺诈或勒索,导致使用者遭受财产损失。
数据勒索:恶意代码可能导致设备运行缓慢、频繁崩溃,以及加密数据以勒索设备拥有者。
而火绒威胁情报中心监测到的这一批恶意样本,就存在盗取信息导致隐私泄露、远程控制等风险,以下为样本分析内容。
二、样本分析
执行流程图
2.1 样本信息
该样本通过利用Visual Studio的PreBuildEvent机制执行恶意命令,生成VBS脚本以下载7z解压工具和恶意压缩包SearchFilter.7z。解压后,样本加载一个基于Electron框架的程序,该程序具备反调试和虚拟机检测功能,能够规避安全分析环境。随后,程序从GitHub下载并解压第二个恶意压缩包BitDefender.7z,进一步释放多个恶意模块,包括后门工具(如AsyncRAT、Quasar、Remcos)、剪贴板劫持组件以及Lumma Stealer窃密木马。
这些模块共同构建了一个多层次、功能完备的恶意行为链,能够实现远程控制、剪贴板内容篡改、浏览器Cookie及其他敏感信息窃取等破坏性操作,对用户系统安全构成严重威胁。
2.2 Loader动静态分析
首先,病毒利用GitHub进行传播,通过Visual Studio的PreBuildEvent命令执行cmd命令。
测试执行calc
配置文件
以下是GitHub中Apex-Legends-External-Cheat-Hack-Trigger-Glow-Aimbot-Skin-More-Hwid-Spoofer外挂作弊软件项目中的恶意命令。
恶意命令
对其执行的命令进行分析,发现攻击者采用了Base64加密的VBS脚本。解密后,脚本内容被写入到名为b.vbs的文件中。
Base64加密
对其进行解密。
解密
解密后的VBS脚本通过反转字符串、Base64解码等方式对混淆内容进行处理,并利用Invoke-Expression执行解码后的指令。此外,脚本通过调用pWN $bnb来运行隐藏的恶意逻辑。
解密VBS脚本
最终解密之后是一段PowerShell脚本,主要功能如下。
1.多层递归调用与Base64解码:脚本通过多层递归调用和Base64解码技术,逐步解析出隐藏的下载地址,确保其隐蔽性。
2.下载7z解压工具:脚本从指定地址下载7z解压工具,并将其保存到C:\ProgramData\sevenZip目录中。
3.执行SearchFilter.exe:在下载并解压相关文件后,脚本会执行SearchFilter.exe,以加载后续的恶意功能。
4.清理痕迹:脚本会在执行完成后删除下载的压缩包文件。
下载7z
下载执行恶意程序
解密关键信息:
下载链接:
https://github.com/Fxkw45/delhi-metro/releases/download/metro/SearchFilter.7z
该链接指向托管在GitHub上的恶意压缩包SearchFilter.7z。
解压密码:
hR3^&b2%A9!gK*6LqP7t$NpW
该密码用于解压下载的SearchFilter.7z文件,以释放其中的恶意内容。
解密链接与解压密码
其下载链接指向了一个Fork的GitHub项目,攻击者利用GitHub的合法外衣来托管恶意样本。
GitHub链接
使用解密的解压密码对其进行解压,其主体是一个Electron程序的病毒。
Electron程序
对Electron程序进行解包后,发现其主文件是一个大小为1.03MB的JavaScript脚本文件,包含20000多行代码,且代码经过高度混淆。为了还原其逻辑,采用以下方法进行解混淆。
1.AST(抽象语法树)分析:
通过构建JavaScript代码的抽象语法树(AST),对代码结构进行解析和重构,以识别混淆逻辑并还原原始代码。
2.定位最长数组:
在混淆代码中,通常会将字符串、函数名等关键信息存储在数组中,并通过索引调用。通过分析代码中最长的数组,可以定位到关键的解密逻辑。
3.引用追踪与解密器定位:
通过追踪最长数组的引用关系,找到解密器的核心逻辑。解密器通常用于动态还原被混淆的字符串或函数,从而恢复代码的可读性。
4.逐步解混淆:
在定位解密器后,逐步还原被混淆的代码逻辑,包括字符串解密、函数调用还原以及控制流扁平化的修复,最终恢复出可读的JavaScript代码。
去除JavaScript混淆
之后对其混淆并重命名变量名。
去混淆代码
解混淆的逻辑是通过下载执行的方式,继续从GitHub进行下载进一步的后门与lumma stealer。
其首先通过执行反虚拟机,通过获取操作系统版本,检测CPU核心数,显卡名称、硬盘空余大小的方式进行反虚拟机。
检测虚拟机
之后脚本通过Base64解码对加密内容进行解密,并生成PowerShell脚本用于反调试。该脚本通过调用反调试技术,试图阻止安全分析工具对恶意样本调试。
反调试
对生成的antiDebug.ps1进行分析,发现代码通过IsTargetProcess方法检测以下进程(均为常见的调试工具、网络分析工具和系统监控工具):
1.调试工具:
watcher.exe
ProcessHacker.exe
SystemInformer.exe
procexp.exe(Process Explorer)
2.网络分析工具:
HttpAnalyzerStdV7.exe
mitmdump.exe
mitmproxy.exe
mitmweb.exe
Charles.exe
Fiddler.exe
Fiddler Everywhere.exe
Fiddler.WebUi.exe
HTTPDebuggerUI.exe
HTTPDebuggerSvc.exe
HTTPDebuggerPro.exe
Progress Telerik Fiddler Web Debugger.exe
HTTP Debugger Pro.exe
Wireshark.exe
3.API 测试工具:
Postman.exe
Insomnia.exe
HTTP Toolkit.exe
4.安全工具:
BurpSuiteCommunity.exe(Burp Suite Community Edition)
5.文件监控工具:
FolderChangesView.exe
之后通过调用 TerminateProcess 终止调试进程,阻止安全工具的运行。
结束进程
之后,脚本通过Base64解码生成disabledefender.ps1和disabledefenderv2.ps1两个PowerShell脚本。这些脚本执行以下恶意操作。
1.修改Windows Defender排除项:将整个C盘添加到Windows Defender的排除列表中,使Defender无法扫描和检测C盘中的恶意文件。
2.禁用系统还原功能:关闭系统还原功能,阻止用户通过系统还原点恢复系统。
3.删除卷影副本:清除所有卷影副本(Shadow Copy),彻底删除系统备份,使用户无法通过备份恢复数据。
添加Defender排除项
之后,脚本从GitHub下载包含后门功能和Lumma Stealer的压缩包文件。具体信息如下。
GitHub下载链接:
https://github.com/nguyendeptrai2004/ARFramework/releases/download/Muck/BitDefender.7z
解压密码:
SaToshi780189.!
下载恶意文件主体
GitHub链接
解压文件
执行隐藏文件夹。
隐藏文件夹
之后将解压之后的taskhostw.exe添加到计划任务执行C2功能。
添加计划任务
2.3 lumma stealer
解压出来的NVIDIA Control Panel.exe负责执行lumma stealer功能,该样本同样是一个Electron程序。对其进行分析,其采用API窃取以下信息。
Cookie
Reddit
instagram
tiktok
spotify
Netflix
GitHub
Roblox
Email
ChatGPT
Valorant 无畏契约
SQLite数据库
获取OpenVPN信息
获取Electronic Arts配置信息
获取聊天软件信息
Discord
Telegram
获取游戏信息
EpicGamesLauncher
RiotGames
Steam
窃取Cookie
2.4 后门分析
解压后得到的Taskhostw.exe是一个负责实现C2(命令与控制)功能的Electron程序。对其进行解包操作后,发现该样本同样采用了大量代码混淆和膨胀技术。通过解混淆分析,其核心逻辑如下。
1.进程注入:
该样本通过进程注入技术实现其恶意功能,具体利用以下合法程序作为注入目标。
RegAsm.exe:.NET程序集注册工具,被用于加载恶意代码。
DWWIN.exe:Windows错误报告工具,被用于隐藏恶意行为。
2.多次注入:
样本通过多次注入的方式,将恶意代码加载到不同的进程中,以规避检测并实现持久化。
3.C2功能:
注入成功后,样本与远程C2服务器建立通信,接收攻击者指令,执行包括远程控制、数据窃取、文件操作等恶意行为。
样本将加密的后门模块打包进Electron程序,首先采用PowerShell方式对后门模块进行AES加盐解密。
AES加盐解密
提取出来解密算法如下。
解密算法
对应的解密脚本。
解密脚本
解密之后的8个后门模块中,包括.NET程序的后门、shellcode形式的后门以及剪贴板盗窃替换程序。其中,.NET程序在初始时通过进程注入的方式,将其核心Rat_PE完整地注入到RegAsm.exe进程中。而shellcode版本的后门则采用内存加载.NET PE程序的方式执行恶意代码。以下是具体信息。
boot和Kernel:这两个模块是AsyncRAT的后门,AsyncRAT是一种开源的远程访问工具(RAT),通过安全加密连接实现远程监控和控制。
thread:该模块用于监听、替换和上传剪贴板信息。
magnify:该模块是Quasar的后门,Quasar是一款使用C#编写的快速、轻量级的远程管理工具,开源。
cryptwizard:该模块是Remcos的后门,Remcos是一种远程访问木马工具,未开源。
boot_f和Kernel_f:这两个模块是AsyncRAT的shellcode版本,通过内存加载的方式执行恶意代码。
thread_f:该模块是剪贴板盗窃程序的shellcode版本,同样通过内存加载的方式执行恶意代码。
后门模块对应表
后门模块文件
详细分析:
对.net初始程序进行分析发现,存量代码混淆。
注入代码
对其进行解混淆,分析其为注入器代码,解密内存中的PE,并将其注入到C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\RegAsm.exe。
内存解密出PE
注入进程
将PE进行Dump,同样是一个.net程序,将释放出来的.net程序分别进行dump其PE,发现存在以下4种程序。
1.AsyncRAT
2.Quasar
3.剪贴板匹配替换上传程序
4. Remcos
首先对Kernel、boot进行分析发现,其后门采用AsyncRAT开源远控。
其Kennel_f、boot_f模块对应其shellcode内存加载.net版本。
入口点对比如下。
AsyncRAT对比
AsyncRAT版本号0.5.8与官网相同。
AsyncRAT版本
后门地址。
后门地址
该后门支持以下功能。
功能图
主窗口
对后续后门进行分析发现,三个模块采用同样的方式对C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\RegAsm.exe进行注入。
对magnify模块分析发现其采用Quasar,其同样是一个开源远控,一款快速、轻量级的远程管理工具,使用 C# 编写。
入口点对比如下。
Quasar对比
其功能支持以下。
Quasar功能图
对thread模块进行分析,发现其是剪贴板程序,其主要负责监控剪贴板信息,并匹配剪贴板首字符替换相应的矿池地址,并将其原始剪贴板信息发送到Telegram Bot,其thread_f模块对应其shellcode内存加载.net版本。
匹配并替换剪贴板信息
替换的剪贴板钱包地址如下。
钱包地址
之后将剪贴板信息发送到Telegram Bot,其中包含以下内容。
Token: 6843479607:AAEGHeu36k4i1nGBZNGGNgLCPWatnPKKRnY
ChatID: -1002052131842
Telegram Bot Token
更进一步,可以通过Telegram获取到Bot的频道信息。
频道信息
对cryptwizard模块进行分析,发现其是一个Remcos远控,是一个C++程序。
Remcos信息
功能列表。
Remcos功能图
功能函数
三、附录
C&C:
HASH: