警惕隐藏JavaScript代码的虚假网速测试应用
这些虚假的在线网速测试应用瞄准了想要测量网络性能的用户,但它们隐藏着会破坏系统完整性和隐私的有效载荷。
与之前分析的虚假手动阅读器和查找器软件类似,这些冒牌货利用打包器、混淆的JavaScript和持久化机制来执行任意代码并窃取敏感数据。
2025年9月21日,新一波伪装成合法速度测试工具的恶意应用被发现。感染始于用户下载看似标准的桌面或基于网页的网速测试工具。安装后,可执行文件使用Inno Setup打包器解包自身,然后部署Node.js和一个混淆的JavaScript文件。
对通过task.xml定义以良性名称注册的计划任务的分析显示,启动器会调用Node来执行名为temp.js的文件。
载荷与数据窃取
该脚本采用多阶段解码例程来重建其真实载荷。通过修补解码函数:
|
|
安全研究人员能够在执行前打印解密后的字符串,确认恶意软件会收集系统标识符并将其发送到远程命令与控制(C2)服务器。
一旦JavaScript载荷执行,它会查询Windows注册表中的MachineGuid(位于HKLM\Software\Microsoft\Cryptography)并构建一个JSON对象。脚本的硬编码字段包括版本元数据(“ver”:0.2.1)、应用程序标识符和注册表值。
这些参数通过JSON.stringify序列化,并通过HTTPS POST传输到cloud.appusagestats[.]com。通过将此域名重定向到带有生成TLS证书的本地监听器,分析人员捕获了确切的POST主体:
|
|
同时嵌入的还有MachineGuid和进程标识符等元数据字段,使得能够唯一识别受感染的主机。数据窃取后,脚本等待来自C2的命令。
命令与控制服务器的响应以application/octet-stream形式到达,包含XOR编码的JSON载荷。解码过程包括将响应的前16个字节作为XOR密钥(以十六进制表示),然后将该密钥应用于载荷的其余部分。
解密后的JSON通常携带一个"pl"数组,其中填充了服务器发出的命令。在实际分析中,此数组为空,但该框架允许执行任意指令。
当收到命令时,恶意软件使用Node.js的child_process.exec生成系统命令。一个概念验证响应触发了一个伪装的PowerShell调用,显示了一个Windows Forms消息框。这证明了执行任何任意代码的潜力,包括凭据转储、勒索软件部署或横向移动工具。
缓解措施
由于前端功能的混淆和合法外观,检测这些虚假网速测试应用具有挑战性。入侵指标包括:
- 应用程序目录中存在本不需要的Node.js二进制文件
- 计划任务引用临时目录中的JavaScript文件
- 到未知域(如cloud.appusagestats[.]com)的出站HTTPS POST流量
- 安装期间在非标准键下创建的Task.xml或注册表项
系统管理员应审核计划任务和可执行文件校验和,与已知良好基线进行比较。端点检测和响应(EDR)解决方案可以标记通过Node.js或PowerShell调用编码载荷动态创建的子进程。
在意外上下文下阻止.js执行,并实施严格的应用程序白名单,进一步减少攻击面。
以无害网速测试工具为幌子的虚假、混淆的基于JS的恶意软件的 resurgence 凸显了不断演变的威胁格局。攻击者回收经过验证的感染模式——打包器使用、混淆脚本、计划持久化和C2通信——同时瞄准新类别的日常实用程序。
在应用程序来源方面保持警惕,结合强大的检测策略,仍然是对抗这些欺骗性威胁的最佳防御。确保用户仅下载经过验证的网速测试软件,并监控异常的计划任务和网络流量,将帮助组织在这场阴险的攻击活动中保持领先。