攻击者针对企业传播macOS恶意软件的7种方式(2)
时间:2023-03-09 16:07 来源:网络整理 作者:默认发布 点击:次
开发者是大规模攻击、供应链攻击、间谍活动和政治操纵等攻击行为的高价值目标。毫无疑问,迄今为止对苹果开发者最成功的攻击是 XcodeGhost,这是 2015 年在中国服务器上托管的苹果 Xcode IDE 的恶意版本。许多中国开发者选择下载他们认为是 Xcode 的本地镜像,因为从苹果在美国的服务器下载合法版本非常慢。 XcodeGhost 将恶意代码插入到任何使用它构建的 iOS 应用程序中,许多受攻击的应用程序随后在苹果应用商店发布。受攻击的应用程序能够窃取敏感信息,如设备的唯一标识符和用户的 Apple ID,并在受攻击的 iOS 设备上执行任意代码。 更常见的是,攻击者试图通过共享代码来攻击开发人员。因为开发人员希望通过借助已有成果来提高工作效率,他们通常会寻找共享代码,而不是尝试自己编写复杂或不熟悉的 API 调用。 在 Github 等网站上托管的公共存储库中可以找到有用的代码,但这些代码也可能带有恶意软件或代码,从而为攻击者打开攻击后门。XCSSET 恶意软件和 XcodeSpy 都利用共享的 Xcode 项目危害 macOS 和 iOS 软件的开发人员。 在 XCSSET 中,项目的 .xcodeproj/project.xcworkspace/contents.xcworkspace 数据被修改为包含对隐藏在项目 xcuserdata 文件夹中的恶意文件的文件引用。构建该项目导致恶意软件被执行,然后在开发人员的设备上进行多阶段感染,包括后门。 在 XcodeSpy 中,攻击者在 GitHub 上发布了一个合法开源项目的篡改版本。项目的构建阶段包括一个模糊的运行脚本,它将在开发人员的构建目标启动时执行。 在 XcodeSpy 示例中发现的模糊脚本 脚本在 /private/tmp/.tag 目录下创建了一个隐藏文件,其中包含一个命令:mdbcmd。这反过来又通过反向 shell 传输到攻击者 C2。文件路径链接到 VirusTotal 上的两个自定义 EggShell 后门。 在执行时,自定义的 EggShell 二进制文件会在 ~/Library/LaunchAgents/com.apple.usgestatistics.plist 或 ~/Liblery/LaunchAgents.com.appstore.checkupdate.plist 处放置 LaunchAgent。此 plist 检查原始可执行文件是否正在运行;如果没有,它将从 ~/Library/Application Support.com/apple.AppStore/.update 的‘ master ’ 版本创建可执行文件的副本,然后执行它。 链接到 XcodeSpy 的 EggShell 后门使用的持久性代理 将开发环境与运行环境隔离; 要求所有共享开发人员项目在下载或在公司设备上构建之前都要经过审查和授权; 实施安全开发,如安全编码指南、代码审查和代码加密; 教育开发人员使用外部代码的危险; 使用终端保护软件监控可疑和恶意代码的执行。 4. 开源包存储库 当攻击者以开放源代码包存储库为目标时,情况开始变得更加严重。通过这些共享的代码在企业中的许多项目中广泛使用,安全审查既薄弱又困难。在不同的平台和语言中有许多应用,包括: Python Package Index ( PyPI ) Crates.io ( Rust ) Node Package Manager ( NPM ) Go Module Index ( Go ) NuGet Gallery ( .NET ) RubyGems ( Ruby ) Packagist ( PHP ) Chocolatey ( Windows ) Scoop ( Windows ) Homebrew ( macOS ) CocoaPods ( Swift, iOS ) Carthage ( Swift, macOS ) Fedora Package Database ( Linux ) CentOS Package Repository ( Linux ) Arch Linux User Repository ( Linux ) Ubuntu Package Repositories ( Linux ) Alpine Package Repository ( Linux ) Maven Central ( Java ) 包存储库可能容易受到拼写错误攻击和依赖混淆攻击。在某些情况下,合法软件包的所有权被劫持或转移给开发者。 在 2022 年 5 月,一个流行的 PyPI 包 "PyKafka" 成为了一个名为 "PyMafka" 的包的拼写攻击的目标。PyMafka 包包含一个 Python 脚本,用于检查主机并确定操作系统。 如果设备运行的是 macOS,它会连接到 C2,下载一个名为 "macOS" 的 Mach-O 二进制文件,并将其写入名为 "zad" 的 /private/var/tmp。二进制文件是 upx 封装的,且进行了模糊处理,还释放了一个 Cobalt Strike 信标。 (责任编辑:admin) |


