【天问】SysJoker:以npm软件供应链为攻击入口的跨平台恶意后门分析

摘要

奇安信技术研究院星图实验室利用自研的天问软件供应链安全分析平台,发现了用于传播SysJoker恶意软件的两个npm包mos-sass-loadercss-resources-loader,两个包均由同一个账号上传至npm公开仓库中,最早出现时间为2021年10月7日。

概述

  • 2022年1月11日,intezer发布了一个报告[1],揭露了一个跨Windows, Linux, macOS三个平台的恶意软件SysJoker,并推测该恶意软件最初的攻击向量是一个受感染的npm包。根据intezer提供的SysJoker恶意后门相关信息,奇安信技术研究院星图实验室利用自研的天问平台,对npm生态监测历史数据进行了扫描分析,证实SysJoker确实通过npm传播,我们发现早在2021年10月7日,传播SysJoker的恶意包mos-sass-loader就出现在npm生态中,且存在时间长达19天,此后在2021年10月25日,攻击者又上传了新的恶意包css-resources-loader,但仅存在1天。

mos-sass-loader分析

  • mos-sass-loader文件结构Untitled
  • 攻击者发布及删除该包的时间:(2021.10.7—2021.10.26),存在19天。image-20220118154238006.png
  • 依据抓取到的包相关元数据,发现gitHead信息。Untitled
  • 根据gitHead信息,通过git记录找到了上传者的github账号:moshee411(https://github.com/moshee411)Untitled
  • 其中SASS-Loader项目即为上传到npm源中的恶意包mos-sass-loader1.0.0版本。同时该github还有两个早期项目,其中未发现有用信息。
  • 该包的元数据中包含了该包的npm上传账号:moshe.411 (moshe411@bezeqint.net),与其github账号moshee411相似。经分析,域名bezeqint.net为以色列电信供应商所有,网站主页默认语言为希伯来语,该域名提供对外注册服务,近一年天穹沙箱分析的恶意样本中有5个样本与该域名的子域名mailmx.bezeqint.net有关联。在历史数据中检索,通过bezeqint.net域名邮箱注册的npm账号仅涉及这两个包。
  • 该包的元数据中还包含了一个作者自己指定的名称:Maik Jonson,经过搜索未找到更多可以证实攻击者身份的信息。
  • 通过包中README文件的分析可以得知,该包是对sass-loader包的仿冒,这是一个周下载量超千万次的流行npm包。Untitled
  • mos-sass-loader共有两个版本,差异对比如下:
具体版本包名发布时间UTCSysJoker恶意文件路径文件类型IOC分析版本差异启动参数
mos-sass-loader@1.0.02021-10-07T09:17:20.298Zpackage/src/sass.jsPE32 executable (DLL) (GUI) Intel 80386, for MS Windows0bf2615f85ae7e2e70e58d5d70491cea37c4e80f(未知IoC)1.0.0 版本里面少一个 powershell start xxxxxx\msg.exe初始版本rundll32.exe shell32.dll, Control_RunDLL “%INIT_CWD%/src/sass.js\”
mos-sass-loader@1.0.12021-10-07T09:57:18.405Zpackage/src/sass.jsPE32 executable (DLL) (GUI) Intel 80386, for MS Windowsd1d5158660cdc9e05ed0207ceba2033aa7736ed1已知IOC仅有sass.js不同,文件大小类型相同,但sha1不一致,经过分析多一个powershell start xxxxxx\msg.exerundll32.exe shell32.dll, Control_RunDLL “%INIT_CWD%/src/sass.js\”

css-resources-loader分析

  • css-resources-loader文件结构Untitled
  • 攻击者发布及删除该包的时间(2021.10.25—2021.10.26),仅存在1天。image-20220118154449153.png
  • 该恶意包共发布过10个版本,各个版本信息差异对比如下:
包名发布时间UTCSysjoker恶意文件路径文件类型IoC启动参数版本差异
css-resources-loader@1.0.02021-10-25T06:50:29.668Z1. package/src/utils/style-loader.ts 2.package/src/utils/types-config1. PE32 executable (DLL) (GUI) Intel 80386, for MS Windows 2. Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64]d1d5158660cdc9e05ed0207ceba2033aa7736ed1 8b49f61ce52f70dc3262c3190a6c7f2f7d9fdae8(未知IoC)通过一个被混淆的js文件来启动恶意后门。位于:package/src/utils/config.ts 89c82f46e673e60f5dd850ecb3e7a6a0bfb61848初始版本
css-resources-loader@1.0.12021-10-25T06:53:16.080Z同上同上同上package/src/utils/config.ts 984addb9b3c8b45360437c4928f08ff8ba8c60d4混淆的js文件被修改过
css-resources-loader@1.0.22021-10-25T06:54:57.949Z同上同上同上package/src/utils/config.ts 3fc977bf6f3791eebaa979d913b0b1574a562338混淆的js文件被修改过
css-resources-loader@1.0.32021-10-25T06:58:26.132Z同上同上同上package/src/utils/config.ts aa04d11286f3bea66c9a7f9f2c1a880c999aeef1混淆的js文件被修改过
css-resources-loader@1.0.42021-10-25T07:00:10.779Z同上同上同上package/src/utils/config.ts 215bb9daa3a61df830542fd647d80fafdc5634e5混淆的js文件被修改过
css-resources-loader@1.0.52021-10-25T07:02:59.082Z同上同上同上package/src/utils/config.ts 76f9be51714d36f11e9d739ec82abd9b4bc5f5d2混淆的js文件被修改过
css-resources-loader@1.0.62021-10-25T07:07:18.272Z同上同上同上package/src/utils/config.ts 2ac06d75434fcd3ee73ff379288a8e8060dde4b5混淆的js文件被修改过
css-resources-loader@1.0.72021-10-25T07:09:53.363Z同上同上同上package/src/utils/config.ts bfc302c35e39bf3afef475f8ce48e838f574d958混淆的js文件被修改过
css-resources-loader@1.0.82021-10-25T07:11:21.838Z同上同上同上package/src/utils/config.ts f3d74a484464a2d0f084475eb950ee9df082fef9混淆的js文件被修改过
css-resources-loader@1.0.92021-10-25T07:33:34.291Z同上同上d1d5158660cdc9e05ed0207ceba2033aa7736ed1 554aef8bf44e7fa941e1190e41c8770e90f07254与1.0.8版本相同修改了types-config, 针对macos平台的Sysjoker恶意后门的内容
css-resources-loader@1.1.02021-10-25T09:04:38.660Z1.package/src/utils/style-loader.ts 2.package/src/utils/types-config.ts同上同上package/src/utils/config.ts 71896061fc9a53befeeee599604edac28df5d31f1. 给Mach-O文件类型的恶意后门添加了.ts后缀,但文件内容没有变化,sha1一致 2. 用于启动后门的混淆js文件有变化
  • 通过各版本发布时间及版本间差异分析可以看到,攻击者一直在修改启动恶意后门的脚本。
    • 分析反混淆后的js代码结构,可以大致看出,该js代码会调用SysJoker后门运行,并将运行结果写入文件保存。由于反混淆有信息丢失,无法判断多个版本之间的具体修改细节。
  • 通过对包中README文件分析可知,该包是对style-resources-loader 的仿冒,这也是一个周下载量在40万次的流行包。Untitled

总结

  • SysJoker恶意软件早在2021年10月就在npm生态中出现,并通过仿冒两个热门的npm包进行传播,且传播时间长达20天。
  • 所仿冒的包均是用于Web资源打包时加载静态样式(CSS/SASS)的处理模块,这些包使用率极高,攻击者目标明确。建议使用了sass-loader 和 style-resources-loader 的用户进行自查,是否已经受到攻击。正常包名SysJoker仿冒包名sass-loadermos-sass-loaderstyle-resources-loadercss-resources-loader
  • 发现两个早期状态的SysJoker后门,疑似攻击者调试过程中使用,不排除已传播感染的可能。

IoCs

Windows

  • d1d5158660cdc9e05ed0207ceba2033aa7736ed1
  • 0bf2615f85ae7e2e70e58d5d70491cea37c4e80f (新增IoC)

Mac

  • 554aef8bf44e7fa941e1190e41c8770e90f07254
  • 8b49f61ce52f70dc3262c3190a6c7f2f7d9fdae8 (新增IoC)

参考文献

  1. New SysJoker Backdoor Targets Windows, Linux, and macOS

========= 我 是 分 割 线 ======================================

星图实验室隶属于奇安信技术研究院,专注于软件与系统安全的核心技术研究与系统平台研发,对外输出“天穹”软件动态分析沙箱、“天问”软件供应链分析平台、“天象”软件漏洞挖掘系统等核心能力和工具系统。

我们目前正在招聘,工作地点覆盖北京、上海、南京、成都等城市,详情请参见:https://research.qianxin.com/recruitment/