夜神模拟器遭受软件供应链攻击NoxPlayer数百万人遭受影响

夜神模拟器遭受软件供应链攻击NoxPlayer数百万人遭受影响

UPDATE(2021年2月3日第三次更新):
在我们的研究发表后,BigNox已与我们联系,说他们最初对折衷的否认是对他们的误解,并且自那以后,他们已采取以下步骤来提高用户的安全性:

仅使用HTTPS交付软件更新,以最小化域劫持和中间人(MitM)攻击的风险
使用MD5哈希和文件签名检查实现文件完整性验证
采取其他措施,特别是对敏感数据进行加密,以避免暴露用户的个人信息
BigNox还表示,他们已将最新文件推送到NoxPlayer的更新服务器,并且在启动后,NoxPlayer现在将检查以前安装在用户计算机上的应用程序文件。

网络安全研究人员今天披露了一种新的供应链攻击,这种攻击破坏了NoxPlayer的更新机制,NoxPlayer是一种适用于PC和Mac的免费Android模拟器。

斯洛伐克网络安全公司ESET称之为“ Operation NightScout ”,这一针对性极强的监视活动涉及通过针对台湾,香港和斯里兰卡的特定受害者进行量身定制的恶意更新,分发三个不同的恶意软件家族。

关于BigNox

BigNox是一家总部位于香港的公司,提供各种产品,主要是用于PC和Mac的Android模拟器NoxPlayer。该公司的官方网站声称,它在150多个国家/地区拥有1.5亿用户,使用20种不同的语言。但是,必须注意,BigNox的追随者群体主要位于亚洲国家。

BigNox还于2019年撰写了一篇有关VPN与NoxPlayer结合使用的广泛博客文章,表明该公司对其用户隐私的关注。

我们已就入侵事件与BigNox联系,他们否认受到了影响。如果他们决定进行内部调查,我们还提供了支持,以帮助他们完成披露工作。

详细情况

据称,持续攻击的最初迹象始于2020年9月,从入侵持续到本周发现“明显恶意活动”,促使ESET向BigNox报告此事件。

ESET研究人员Ignacio Sanmillan表示:“基于有问题的受感染软件和已交付的具有监视功能的恶意软件,我们认为这可能表明有意对游戏社区中涉及的目标进行情报收集。”

为了进行攻击,NoxPlayer更新机制充当向用户交付该软件的木马版本的载体,这些用户在安装后就交付了三种不同的恶意有效负载(例如Gh0st RAT)来监视受害者,捕获击键并收集敏感信息。

研究人员分别发现,BigNox更新程序从威胁参与者控制的远程服务器上下载了其他恶意软件(例如PoisonIvy RAT)。

Sanmillan说:“只有在最初的恶意更新之后才发现PoisonIvy RAT处于活动状态,并从攻击者控制的基础架构中下载了它。”

PoisonIvy RAT于2005年首次发布,已用于多个备受瞩目的恶意软件活动中,尤其是在2011年对RSA SecurID数据的入侵中。

ESET指出,这次攻击中使用的恶意软件加载程序与2018年缅甸总统府网站的泄密和去年违反香港大学的情况相似,ESET说,攻击背后的运营商违反了BigNox托管恶意软件的基础架构,证据表明其API基础结构可能已经遭到破坏。

Sanmillan说:“为了安全起见,以防入侵,请从干净的介质中进行标准重新安装。” “对于未感染NoxPlayer的用户,在BigNox发送减轻威胁的通知之前,请不要下载任何更新。此外,最佳实践是卸载软件。”

如何确定我是否手到恶意更新

检查任何正在进行的进程是否与已知的活动C&C服务器建立活动的网络连接,或者查看是否存在基于我们在报告中提供的文件名的任何恶意软件:

C:\ProgramData\Sandboxie\SbieIni.dat
C:\ProgramData\Sandboxie\SbieDll.dll
C:\ProgramData\LoGiTech\LBTServ.dll
C:\Program Files\Internet Explorer\ieproxysocket64.dll
C:\Program Files\Internet Explorer\ieproxysocket.dll
一个名叫 %LOCALAPPDATA%\Nox\update\UpdatePackageSilence.exe 没有经过BigNox的数字签名。

时间线

根据ESET遥测技术,我们在2020年9月看到了第一个危害指标,并且活动一直持续到2021年1月25我们明确发现恶意活动为止,此时我们已将事件报告给BigNox.

更新机制

为了了解这种供应链攻击的动态,了解使用哪种媒介向NoxPlayer用户分发恶意软件很重要。此向量是NoxPlayer的更新机制。

启动时,如果NoxPlayer检测到该软件的较新版本,它将提示用户一个消息框以提供安装选项。

 NoxPlayer更新提示

这是通过BigNox HTTP API(api.bignox.com)查询更新服务器来完成的,以检索特定的更新信息.

NoxPlayer客户端更新API请求

该查询的响应包含特定于更新的信息,例如更新二进制URL,其大小,MD5哈希以及其他附加相关信息

NoxPlayer服务器API返回信息

按下图1中的“立即更新”按钮后,主要的NoxPlayer二进制应用程序Nox.exe将在其工具箱NoxPack.exe中将接收到的更新参数提供给另一个二进制文件,该工具箱负责下载更新本身。

更新时的NoxPlayer执行链

完成此操作后,消息框中的进度栏​​将反映下载状态,完成后便执行了更新。

通过
NoxPack.exe正在进行的NoxPlayer更新

供应链妥协指标

我们有足够的证据表明BigNox基础结构(res06.bignox.com)被破坏以托管恶意软件,并且还暗示其HTTP API基础结构(api.bignox.com)可能已经受到破坏。在某些情况下,BigNox更新程序从攻击者控制的服务器下载了其他有效负载。这表明BigNox API答复中提供的URL字段已被攻击者篡改。观察到的入侵流如图所示。

入侵流程序图

上面的序列图中显示的内容概述如下:

  1. 启动时,主要的NoxPlayer可执行文件Nox.exe将通过API发送请求以查询更新信息。
  2. BigNox API服务器使用特定的更新信息来响应客户端请求,包括从BigNox合法基础结构下载更新的URL。
  3. Nox.exe提供适当的参数NoxPlayer.exe下载更新。
  4. BigNox基础结构中存储的合法更新可能已被恶意软件替换,或者它可能是合法更新未使用的新文件名/ URL。
  5. 恶意软件已安装在受害者的计算机上。与合法的BigNox更新相反,恶意文件未进行数字签名,这强烈表明BigNox构建系统并未受到威胁,只是其分发更新的系统受到了损害。
  6. 对受害者进行一些侦查,并将信息发送给恶意软件操作员。
  7. 犯罪者根据一些未知的过滤方案,针对特定的目标受害者进行恶意更新。
  8. Nox.exe将执行零星的更新请求。
  9. BigNox API服务器使用更新信息响应客户端,该信息表明更新存储在攻击者控制的基础结构中。
  10. 进一步的恶意软件将传递给选定的受害者。

借助此信息,我们可以重点介绍几件事:

  • 合法的BigNox基础架构正在提供针对特定更新的恶意软件。我们观察到这些恶意更新仅在2020年9月进行。
  • 此外,我们观察到,对于特定的受害者,随后以及整个2020年底和2021年初从攻击者控制的基础架构中下载了恶意更新。
  • 我们非常有信心,这些额外的更新被执行Nox.exe以提供特定参数NoxPack.exe,表明BigNox API机制也可能已经被泄露到提供量身定制的恶意更新。
  • 这也可能表明受害者遭受了MitM攻击的可能性,尽管我们认为这一假设不太可能,因为我们发现的受害者位于不同的国家,并且攻击者已经在BigNox基础设施上立足。
  • 此外,我们还能够从https://www.microsoft.com/en-us/library/resources.aspx从测试机上复制并下载https://res06.bignox.com上托管的恶意软件样本。这消除了使用MitM攻击篡改更新二进制文件的可能性。

还必须提及从攻击者控制的基础架构下载的恶意更新模仿了合法更新的路径:

 
此外,由攻击者控制的注册域名类似于BigNox CDN网络域名cloudfront.net。

这些指标表明,攻击者正试图避免被发现,以便他们可以留在雷达之下并实现长期持久性。

恶意软件

总共观察到三个不同的恶意更新变体,每个变体都丢弃了不同的恶意软件。这些变式如下:

恶意更新变体1

该变体是针对受损BigNox基础结构的初步更新之一。我们的分析是基于具有SHA-1 CA4276033A7CBDCCDE26105DEC911B215A1CE5CF的样本。

似乎以前没有记录过所提供的恶意软件。它不是非常复杂,但是具有监视受害者的足够功能。最初的RAR SFX存档将两个DLL放入C:\Program Files\Internet Explorer\,并通过rundll32.exe运行其中的一个,具体取决于体系结构。这些DLL的名称如下:

  • ieproxysocket64.dll
  • ieproxysocket.dll

还将一个名为KB911911.LOG的文本文件拖放到磁盘上,该文件将写入SFX安装程序的原始名称。DLL尝试打开并读取此日志文件,如果找不到该文件将停止执行,因此实现了执行保护栏。

然后,DLL将检查是否已被以下任何进程加载:如果有,它将停止自己的执行:

  • 短信程序
  • winlogon.exe
  • csrss.exe
  • wininit.exe
  • 服务
  • 资源管理器

将检查计算机的IP地址,以确认它既不是127.0.0.1也不是0.0.0.0;如果是,它将在无限循环中重新检查,直到更改为止。否则,它将继续通过WMI对象查询来提取当前计算机的UUID。使用MD5对返回的UUID进行哈希处理以序列化当前受害者。帐户名称信息也将被检索并保存。

一个加密的配置将从DLL的资源中检索。使用两字节XOR与0x5000加密此配置。鉴于所使用密钥的弱点,加密配置部分可见:

资源中的加密配置

此配置的格式如下(大致):

Offset尺寸评论
0x000x08假JPG标题魔术
0x080x12C缓冲区中包含令牌化的C&C信息
0x1340x14用于C&C通信的缓冲区保持端口
0x1480x14休眠时间
0x15C0x14操作标志;不能与已部署的网络监视工具一起使用或如果设置了此标志
0x1700x14不适用
0x1840x14DNS标志;根据该字段的值,在| UDP或 | DNS后面的主机名缓冲区的末尾附加一个标记。
0x1980x38解码配置缓冲区的变量保持偏移量开始

解析完配置后,在将执行转移到C&C循环之前,后门将检查几次网络监视进程。如果设置了Operate标志或正在运行以下任一进程,则操作停止:

  • netman.exe
  • Wireshark.exe

后门可以使用原始IP地址或域名与C&C服务器通信。成功连接到C&C之后,该恶意软件将能够执行以下命令:

命令ID规范
getfilelist-delete从磁盘删除指定的文件
getfilelist-run通过WinExec API运行命令
getfilelist-upload通过ScreenRDP.dll :: ConnectRDServer上传文件
getfilelist-downfile1下载特定文件
getfilelist-downfile2下载特定目录
getfilelist-downfile3与getfilelist-downfile2相同
<default>\\tsclient驱动器重定向某些目录(以A:开头, 表示range(0x1A))
恶意更新变体1的剖析

恶意更新变体2

还发现该恶意软件变种是从合法的BigNox基础结构下载的。我们的分析基于具有SHA-1 E45A5D9B03CFBE7EB2E90181756FDF0DD690C00C的样本。

它包含几个文件,其中包括所谓的三叉戟捆绑包,其中使用签名的可执行文件来加载恶意的DLL,该文件将解密并加载shellcode,从而为最终的有效负载实现反射式加载器。

此三叉戟捆绑包的主题是将恶意软件伪装成Sandboxie组件。捆绑的组件的名称如下:

文档名称描述
C:\ProgramData\Sandboxie\SandboxieBITS.exe签名的Sandboxie COM服务(BITS)
C:\ProgramData\Sandboxie\SbieDll.dll恶意劫持的DLL
C:\ProgramData\Sandboxie\SbieIni.dat恶意加密的有效负载;解密Gh0st RAT的反射加载实例
C:\Users\Administrator\AppData\Local\Temp\delself.bat自删除初始可执行文件的脚本
C:\Windows\System32\wmkawe_3636071.data包含句子“愚蠢的日语”的文本文件

我们还遇到了同一文本文件的其他实例,在2018年涉及缅甸总统办公室网站的供应链妥协中,一个非常相似的加载程序将其丢弃,并在2020年入侵了香港一所大学。

部署的最终有效载荷是具有按键记录程序功能的Gh0st RAT的变体。

恶意更新变体2剖析

恶意更新变体3

仅在从攻击者控制的基础架构下载了初始恶意更新之后,才发现此更新变体在活动中。我们的分析是基于具有SHA-1 AA3D31A1A6FE6888E4B455DADDA4755A6D42BEEB的样本。

同样,与以前的变体一样,此恶意更新捆绑在MFC文件中,并提取两个组件:良性签名文件及其依赖项。这些组件是:

文档名称描述
C:\ProgramData\LoGiTech\LoGitech.exe签署Logitech二进制文件
C:\ProgramData\LoGiTech\LBTServ.dll恶意DLL解密并以反射方式加载PoisonIvy的实例

对于最近发现的受害者,最初下载的二进制文件是用Delphi编写的,而对于以前的受害者,相同的攻击者控制的URL则丢弃了用C ++编写的二进制文件。这些二进制文件是初始的初步加载程序。尽管加载程序是用不同的编程语言编写的,但是两个版本都部署了相同的最终有效负载,这是PoisonIvy RAT的一个实例。

恶意更新变体3的剖析

危害指标(IoC)

档案

SHA-1ESET检测名称解密
CA4276033A7CBDCCDE26105DEC911B215A1CE5CFWin32/Agent.UOJ恶意更新变体1
E45A5D9B03CFBE7EB2E90181756FDF0DD690C00CWin32/GenKryptik.ENAT恶意更新变体2
AA3D31A1A6FE6888E4B455DADDA4755A6D42BEEBWin32/Kryptik.HHBQ恶意更新变体3
5732126743640525680C1F9460E52D361ACF6BB0Win32/Delf.UOD恶意更新变体3

C&C服务器

210.209.72.180
103.255.177.138
185.239.226.172
45.158.32.65
cdn.cloudistcdn.com
q.cloudistcdn.com
update.boshiamys.com

恶意更新网址

http://cdn.cloudfronter.com/player/upgrade/ext/20201030/1/35e3797508c555d5f5e19f721cf94700.exe
http://cdn.cloudfronter.com/player/upgrade/ext/20201101/1/bf571cb46afc144cab53bf940da88fe2.exe
http://cdn.cloudfronter.com/player/upgrade/ext/20201123/1/2ca0a5f57ada25657552b384cf33c5ec.exe
http://cdn.cloudfronter.com/player/upgrade/ext/20201225/7c21bb4e5c767da80ab1271d84cc026d.exe
http://cdn.cloudfronter.com/player/upgrade/ext/20210119/842497c20072fc9b92f2b18e1d690103.exe
https://cdn.cloudfronte.com/player/upgrade/ext/20201020/1/c697ad8c21ce7aca0a98e6bbd1b81dff.exe
http://cdn.cloudfronte.com/player/upgrade/ext/20201030/1/35e3797508c555d5f5e19f721cf94700.exe
http://res06.bignox.com/player/upgrade/202009/6c99c19d6da741af943a35016bb05b35.exe
http://res06.bignox.com/player/upgrade/202009/42af40f99512443cbee03d090658da64.exe

斜接ATT&CK技术

注意:此表是使用MITER ATT&CK框架的版本8构建的。

战术ID名称描述
初始访问T1195.002供应链妥协:损害软件供应链恶意软件通过NoxPlayer更新进行分发。
执行T1053.005预定任务/作业:预定任务恶意更新版本3实例将通过计划任务执行。
执行T1569.002系统服务:服务执行恶意更新版本2实例将通过服务执行来执行。
坚持不懈T1053.005预定任务/作业:预定任务恶意更新版本2实例将创建计划的任务以建立持久性。
防御规避T1140去混淆/解码文件或信息出于逃避目的,恶意更新变体2和3将包含在“三叉戟”捆绑中。
T1574.002劫持执行流程:DLL侧面加载作为“三叉戟”捆绑销售的恶意更新将执行DLL端加载。
采集T1056.001输入捕获:键盘记录一些最终的有效负载(例如PoisonIvy和Gh0st RAT)具有按键记录功能。
命令控制T1090.001代理:内部代理PoisonIvy最终有效载荷变体具有通过代理进行身份验证的功能。
T1095非应用层协议所有恶意更新实例均通过原始TCP或UDP进行通信。
T1573加密频道PosionIvy和Gh0st RAT都使用加密的TCP通信来避免检测。
渗出T1041通过C2通道渗透所有恶意更新实例中的渗透都是通过命令和控制通道完成的。

from