正好是做 JS 恶意代码分析相关的,就叫简单分析了一下这个项目。
首先,核心原理是你 npm start 运行这个项目后,项目里面存在一个后门函数会自动执行(伪装的比较好),这个函数会从远程下载一个 强混淆后的 JS 恶意代码(看到反调试之类的东西),然后执行后就把你本地浏览器中插件钱包的数据偷走了(里面就有存着私钥或者助记词的数据)。
说一下部分细节:
1. 项目中后门代码在这一行:
https://github.com/onboarding-helper/real-world-asset/blob/5c9894415e64b0717b8ded1328b8248685a9fb46/api/config/getContract.js#L223访问一个远程 URL 把里面的 err string 直接通过 js 运行时转换为代码执行。这个代码在你 npm start 后最终会调用触发到。
2. 这个返回 err string 是一个强混淆的 JS 代码,借助 LLM 简单反混淆分析了一下。他是一个适配了多端(win, macos, linux) 的数据窃取代码,会把多个浏览器下的多种钱包插件的本地存储目录内的关键内容打包,然后后传到他的 C2 去,并且还会从 C2 下载一个脚本,应该是后续的进一步攻击。看到的是浏览器包括 chrome ,brave ,firefox ,opera 这些。然后多种钱包插件都有针对包括 metamask ,Phantom ,binance 等等。
举个例子,比如你在 macos 上用的是 chrome 下的 Phantom 插件,他直接读取这个插件目录(~/Library/Application Support/Google/Chrome/Default/Local Extension Settings/bfnaelmomeimhlpmgjnjophhpkkoljpa),把里面的.log 和 .ldb 文件传输回去,里面应该是可以恢复出来你钱包的助记词和私钥的, 这也就是热钱包的弊端。有了这些信息把你的资质自动转移就不是什么难题了。
3. 除了拿这些插件钱包的代码,我看到好像还有访问 macos 的 login.keychain ,chrome 等浏览器保存的密码(Login Data),似乎还有针对 Exodus 桌面钱包的窃取逻辑。二阶段从 C2 服务器下载的东西 怎么执行的还没有详细分析,不确定有没有类似持久化的东西,建议 OP 先把涉及到的关键密码改一下,避免进一步损失,然后再详细排查其他风险。
最后,列一下涉及到的 IOC 吧,方便大家排查:
1. http[:]//chainlink-api-v3[.]com/api/service/token/3d5c7f64bbd450c5e85f0d1cf0202341 (最开始获取 混淆 js 代码的 URL )
2. http[:]//146[.]70[.]253[.]107:1224 (二阶段 C2 地址)
3. https[:]//api[.]npoint[.]io/96979650f5739bcbaebb (应该是个配置选择,获取参数传给 C2 来拿到不同的 payload)
最最后,这种攻击从今年上半年开始就比较活跃了,但之前被发现都是在 Linkin 上钓鱼,所以国内受影响还是比较小。国外一些做供应链安全的厂商也有一些比较详细的分析报告了, 我看有部分 IOC 相同的,应该是同一个攻击组织。可以参考
https://socket.dev/blog/contagious-interview-campaign-escalates-67-malicious-npm-packages