导语:近期,安天CERT监测到通过GitHub传播窃密木马的攻击活动。
1 概览
近期,安天CERT监测到通过GitHub传播窃密木马的攻击活动。攻击者在其发布项目的环境依赖文件requirements.txt中添加恶意URL,以获取其恶意篡改的流行开源模块,从而在受害者电脑中植入窃密木马。
攻击者使用空格将恶意代码掩藏在该行代码的末尾,以避免被用户察觉;并使用多种手段对恶意代码进行混淆处理,以规避安全产品检测、阻碍安全人员分析。经过多层脚本载荷的传递后,将执行一种由Python编写的窃密木马。该窃密木马会在受害主机中窃取浏览器、社交平台、加密货币钱包、游戏客户端中的敏感信息,并针对目标路径中匹配关键词的文件夹及文件进行窃取,最终将窃密数据回传至C2服务器或上传至文件共享平台Gofile中。
在此次攻击活动中,攻击者在自己发布的项目中引入经过恶意篡改的流行开源模块,从而传播窃密木马。对流行的开源项目进行篡改,在其中添加恶意代码后重新打包并在发布的项目中进行恶意引用,已经成为一种攻击方式,用户很难察觉环境依赖文件中是否存在异常。用户在使用网络中非流行、未证实安全性的开源项目时也需保持警惕,以避免执行掩藏在其中的恶意代码。
经验证,安天智甲终端防御系统(简称IEP)可实现对该窃密木马的有效查杀。
2 技术梳理
攻击者在GitHub中上传项目,并在环境依赖文件requirements.txt中添加恶意URL。当用户使用该项目时,需要根据该文件中的内容进行配置,从而下载执行经过攻击者恶意篡改的colorama模块。
攻击者添加的恶意代码用于从其服务器中获取“version”文件,该文件使用Fernet算法进行加解密,执行后获取“inj”文件并写入临时文件中;“inj”文件经过混淆处理,通过zlib对代码进行解压;解压后的代码用于获取最终的窃密木马,通过注册表实现持久化,并向C2服务器回传受害主机的用户名称、IP信息等基本数据。
该窃密木马会窃取指定浏览器、社交平台、加密货币钱包、游戏客户端中的敏感数据,并对目标路径中含有关键词的文件夹中的文件(最多7个)、以及含有关键词且大小小于500000字节(约488KiB)的文件进行窃取。完成窃密行为后,窃密木马通过HTTP POST方式将窃密数据回传至C2服务器中。当第一种回传方式出错时,该窃密木马会将窃取的数据上传至文件共享平台Gofile。
图 2‑1攻击流程图
3 关联分析
此次发现的恶意GitHub项目是“Discord-Token-Generator”,最早于2024年1月份创建。
图 3‑1恶意GitHub项目
该项目的环境依赖文件requirements.txt中包含一个托管colorama-0.4.6.tar.gz的URL。攻击者对域名进行了伪装,在流行开源模块colorama-0.4.6中添加了恶意代码,并进行重新打包。
图 3‑2恶意Github项目中的requirements.txt文件
根据requirements.txt文件中发现的恶意域名,目前在GitHub中有多个项目引用了经过攻击者恶意篡改的模块,相关账号可能都是由同一批攻击者所创建。
图 3‑3引用经过攻击者恶意篡改模块的相关GitHub项目
攻击者用于托管载荷的域名于2024年2月份注册,表明这是一起刚开始进行的攻击活动。
图 3‑4攻击者使用域名的注册时间
在多个恶意GitHub项目中存在攻击者修改requirements.txt文件的痕迹。分析时已无法获取到该URL中的colorama-0.4.3.tar.gz,不能判断该文件是否恶意。
图 3‑5攻击者修改requirements.txt的痕迹
此外,在窃密木马文件中存在多处葡萄牙语痕迹,表明攻击者可能位于葡语系国家或地区。
图 3‑6攻击者在窃密木马文件中使用葡萄牙语进行输出
窃密木马窃取文件的关键词列表中存在几处法语,表明攻击者可能更加针对法语用户。
图 3‑7窃密文件中的法语痕迹
4 样本分析
4.1 经过攻击者篡改的colorama模块
colorama是一个开源的Python模块,能够提供彩色的终端文本。攻击者在其__init__.py文件中,通过463个空格将恶意代码掩藏在第5行末尾,然后将篡改的colorama模块重新打包并托管于搭建的服务器中。由于__init__.py文件用于定义包的初始化代码,因此当用户导入该包时会自动执行其中的恶意代码。该恶意代码用于从攻击者服务器中接收“version”文件中的内容并执行。
图 4‑1攻击者掩藏的恶意代码
4.2 version
“version”文件中的代码使用Fernet算法,通过攻击者自定义的密钥对代码进行解密,然后对解密的代码进行执行。
图 4‑2执行通过Fernet算法进行加解密的代码
解密后的代码访问指定的URL,将“inj”文件内容写入临时文件中,并通过python执行。
图 4‑3获取“inj”文件内容并执行
4.3 inj
该文件是一个Python脚本,攻击者使用中文、日文对变量及函数等进行命名,并且对代码进行了混淆处理。
图 4‑4 inj文件内容
攻击者同样通过空格对关键代码进行掩藏,经解混淆处理后发现,该脚本的作用是使用zlib解压出下一阶段的代码并进行执行。
图 4‑5经过zlib压缩的代码
4.4 经过zlib解压的代码
该代码使用Python编写,其作用是在%APPDATA、%LOCALAPPDATA%、%TEMP%中选取一个目录生成一个随机名称的文件,将从指定URL中获取的内容写入该文件中执行,通过注册表实现持久化,并向C2服务器回传受害主机的用户名称、IP信息等数据。
图 4‑6该代码的作用
4.5 窃密木马
4.5.1 窃密
经过以上多层载荷的传递,最终将执行一种使用Python编写的窃密木马。其窃密目标如下表所示。
表 4‑1窃密目标
浏览器 | Opera | Chrome | Brave | Vivaldi |
Edge | Yandex | Firefox | ||
社交平台 | Discord | Telegram | ||
加密货币钱包 | Atomic Wallet | Guarda | Zcash | Armory |
Bytecoin | Exodus | Binance | Jaxx | |
Electrum | Coinomi | |||
游戏客户端 | Steam | Riot Client |
该窃密木马也会对目标路径中含有关键词的文件夹中的文件(最多7个)、以及含有关键词且大小小于500000字节(约488KiB)的文件进行窃取。目标路径及关键词如下表所示。
表 4‑2目标路径及关键词
目标路径 | 桌面 | 下载 | 文档 | 最近使用的项目 |
关键词 | passw | mdp | motdepasse | mot_de_passe |
login | secret | bot | atomic | |
account | acount | paypal | banque | |
bot | metamask | wallet | crypto | |
exodus | ledger | trezor | hardware | |
cold | .dat | discord | 2fa | |
code | memo | compte | to0k3en | |
backup | secret | seed | mnemonic | |
memoric | private | key | passphrase | |
pass | phrase | steal | bank | |
info | casino | prv | privé | |
prive | telegram | identifiant | personnel | |
trading | bitcoin | sauvegarde | funds | |
récupé | recup | note |
4.5.2 回传
该窃密木马通过HTTP POST将窃取的数据回传至C2服务器中。
图 4‑7 HTTP POST回传方式
当该回传方式出错时,该窃密木马会将窃取的数据上传至文件共享平台Gofile,并将上传后形成的下载链接记录在“loggrab”文件中回传至C2服务器。
图 4‑8将数据上传至Gofile
5 防护建议
5.1 加强终端文件接收和执行防护
建议企业用户部署专业的终端安全防护产品,对本地新增和启动文件进行实时检测,并周期性进行网内病毒扫描。安天智甲终端安全系列产品(以下简称“智甲”)依托安天自研威胁检测引擎和内核级主动防御能力,可以有效查杀本次发现病毒样本。
智甲可对本地磁盘进行实时监测,对新增文件自动化进行病毒检测,对发现病毒可在其落地时第一时间发送告警并进行处置,避免恶意代码启动。
图 5‑1发现病毒时,智甲第一时间捕获并发送告警
智甲还为用户提供统一管理平台,管理员可通过平台集中查看网内威胁事件详情,并批量进行处置,提高终端安全运维效率。
图 5‑2通过智甲管理中心查看并完成威胁事件处置
6 IoCs
96B4C32AFE965529510A6430C2A7AAD3 |
150B3626C85EC5AF88B86C0D0E24736B |
6580C4990E1E56A7D31A36FF1A0502FA |
DD9914573C751C4D8BE4BFE0519F9597 |
6573627FFC97CA6E82A238561C14A9E4 |
https[:]//files.pypihosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz |
https[:]//pypihosted.org |
162.248.100[.]217 |
如若转载,请注明原文地址