关于M1芯片,我们尝试提供一个安全的视角,与大家一同探讨安全的变化。
背景-M1 芯片的前世今生
从 PowerPC 到 x86,再到 ARM64
从2015年,苹果宣布放弃 PowerPC,使用基于 x86 的 Inter Core CPU,再到2020 年,苹果发布了基于 ARM64 架构的 M1 芯片的 MacBook。架构的选择,是苹果在做产品时,追求芯片高性能和高能耗比的表现。
多专用核心单元
超高能耗
比其实,M1 是苹果自研的 A 系列 SoC 中最新的 A14 的变种,自从苹果的第一款支持 ARMv8 指令集的 A8开始,A 系列的 IPC、单核性能一直很强。这次的 M1,应用在苹果自家的 MacBook、Mac Mini 上,功耗限制放宽了不少。同样基于苹果的 macOS,第一次正面挑战 x86,苹果交出了一份让大家满意甚至惊讶的成绩。既然 macOS 已经使用上了 ARM64 架构,那么能否运行 iOS 上的 ARM64 架构应用?运行的时候有什么限制?这样会对 iOS 安全带来怎样的影响?自然成为大家尤为关心的问题。
在MacBook M1芯片上
运行iOS应用方案
如何在 macOS 上运行 iOS 应用?
2021 年 1 月16日,苹果更新了一种服务器端阻止机制,以防止 M1 Mac 用户侧加载 iOS 应用。过去几个月,开发者没有主动上架 Mac App Store,想在 M1 Mac 上运行 iOS 应用的用户利用有效 Apple ID 下载 .ipa 文件,再通过特别的工具(如 iMazing)在 Mac 上安装。而在新的机制之下,已经安装在 M1 的 Mac 上的应用能正常使用但无法更新,未安装的 iOS 应用将无法被安装。 在最新的 macOS 11.2 Beta 系统上,苹果的提示更加具体:“无法安装该应用,因为开发人员不打算在该平台上运行它。”以下方案基于 2021 年 1 月 18 日的 AppStore 及运行 macOS 11.1 的 M1 MacBook Air 进行。
苹果官方推荐的方案
关于这个问题,苹果官方表示,这块将由 iOS 的开发者自行决定,是否在 Mac App Store 上架自己的应用。此外,开发者还需要在 iOS 应用针对 iPad 适配的基础上,针对 macOS 再做些许适配,否则用户的交互体验,势必会受到影响。
从 AppStore 手动导出
使用同一个 AppleID 的账户,从 iPhone 上导出苹果 App 的 .ipa 文件,在使用相同账号的 M1 芯片的 MacBook 电脑上即可直接运行 ARM64 架构的应用。
-
在 Mac 上的 App Store 下载苹果官方的 「Apple Configurator 2」,使用数据线连接设备,点击「添加」或「Add」,选择「应用」或「Apps」,登陆购买应用的 AppleID,等待拉取数据后,即看到该账户下购买过的应用的列表。
-
在应用列表中选择要导出的应用。被选择的应用必须是在手机上已经安装了的,否则「Apple Configurator 2」将直接安装到设备上,而不会在 macOS 上缓存,也就达不到我们提取的效果。
-
等待下载完应用后,如果没有弹出下面的界面,可能是应为设备上没有该应用,只需再下载一次便会提示「应用已存在」。等到出现该界面的时候,打开「终端」输入下面的命令:
-
在 macOS 的下载目录中,便可找到该应用的 .ipa 文件。在 macOS 上双击,便会安装运行。如果遇到“你没有权限打开应用” 或 “You do not have permission to open the application ’XXX‘”,在「终端」输入sudo xattr -rd com.apple.quarantine /Applications/应用文件名.app,输入 MacBook 的用户名密码即可。
如果遇到崩溃,多半是该应用没有完全兼容 macOS 运行。
使用自己的开发者证书进行签名
在自己的 Apple Developer 账号中的设备描述文件中,添加 MacBook M1 的 UDID 到设备中,使用该描述文件签名的 App 即可直接在该 MacBook M1 上直接运行。
-
获取 M1 MacBook 的 UDID
-
访问 developer.apple.com,登录你的开发者账号,在「证书, 标识和描述文件」中的 iOS 设备中添加该 UDID
-
在 macOS 上的 Xcode 或者钥匙串中更新「描述文件」
-
使用新的「描述文件」签名应用或者 .ipa 文件
-
在 macOS 上双击,便会安装用行。
如果没有应用的开发工程源码,则需要从 AppStore 导出 .ipa砸壳后用包含该 M1 芯片的 MacBook 的 UDID 重签名即可。此处不做展开。
首次运行可能会提示「无法打开应用」。根据提示去系统设置的「安全与隐私」中允许即可。
如果确认按照上面的步骤操作,遇到崩溃,多半是该应用无法兼容 macOS 运行。
使用企业证书
使用 Apple Developer Enterprise Program 证书,对 App 进行打包,理论上便可直接在任意 M1 芯片的 MacBook 上运行。
原理分析
不难发现,能否在 MacBook M1 上直接运行 iOS 应用,取决于 App 进行打包签名时使用的证书和运行应用的 MacBook M1 的 macOS 系统上的安全策略共同决定。也就是说,想在 M1 的 MacBook 上运行 iOS 应用,只要获取 iOS 应用的 .ipa 文件后使用合适的描述文件重新签名应用,并关闭 macOS 的 SIP(System Integrity Protection) 即可。在正常系统打开「终端」,输入csrutil status 后回车,即可查看当前 macOS 的 SIP 状态:
对安全的影响
M1 芯片是否会成为黑产的潘多拉魔盒?
对 iOS 安全的影响
我们试着归纳一下给 iOS 带来的影响:
-
原来 iOS 应用没法运行在 x86 的 macOS 上,现在可以运行在 M1 的 MacBook 上
-
macOS 上的黑产工具更丰富,逆向更为方便
-
苹果暂时没有给在 macOS 上运行的 iOS 应用增加和 iOS 上运行时强度相当的安全机制
显然,降低了 iOS 群控应用的门槛,一台 ARM64 的 macOS 电脑可能成为利用群控和多开进行黑产活动的从业人员的福音。也不难预见的,ARM64 上黑产工具链,随着 M 系列芯片逐步推广,未来会越来越齐全,对 ARM64 的支持也会越来越好。意味着在 M1 芯片的 MacBook 上对 iOS 应用进行逆向分析将更为方便。
这些对黑产的种种利好,无疑将给现有的反破解、反外挂、风控等技术带来新的挑战和冲击。
对相关行业的影响
很多 iOS 头部游戏都很积极地在 macOS 上的 App Store 上下架,所以大多需要通过上述方法手动安装。2020 年的年度游戏《原神》甚至是直接闪退,有可能做了相应的检测措施。除了群控外,未来针对 M1 升级的变速器、模拟器等外挂,给大家的安全压力还是相当大的,这里不再做过多的解读。希望能在 macOS 上看到如同 iPad 游戏那样大放异彩,弥补 macOS 系统游戏不丰富、娱乐性相较其他平台较为欠缺的遗憾。
在 M1 MacBook 上吃鸡
除了游戏行业外以外,涉及养号、薅羊毛、刷榜等等都将受影响。这个在之前苹果的M1芯片,黑产的恶魔果实有提到过:
图源:科技博主@蒸米spark而这趟操作下来,从iPhone上拖下来的ipa,一点修改都不用做就可以在macOS上跑,想运行啥版本就运行啥版本,想hook就hook,想多开就多开,用脚本执行任意函数也可以,甚至写个脚本用鼠标自动点击也可以。对于黑产而言,简直就是春天。
未来苹果的态度
这次苹果通过自己强大的生态整合能力,让 iOS 应用登陆 Mac 平台,扎扎实实地扩充了一波 macOS 生态的应用。尤其是 iPad 平台的优质应用让我们可以很方便地将 iPad 上的使用体验无缝迁移到 Mac 平台上,大部分日常接触到的应用都有不错的表现。而对于适配不够完美的应用,主要需要应用本身针对不同平台的系统进行适配和优化。这只需要给开发者一些时间,让开发者投入一些资源,macOS 的未来可期。现在 iOS 应用运行在 M1 芯片的 MacBook 上「非官方」的方案,可行性非常高,意味给 iOS 开的 「安全漏洞」会产生相当的影响。未来这个方案能否持续,主要看苹果未来对两个平台应用的规划。不过以我们对苹果以往在生态上的掌控力度的了解,尤其是这几天 App Store 服务端的策略调整及未来 macOS 11.2 的相关调整,苹果未来大概率会逐步收紧在 macOS 上运行 iOS 应用,使 iOS 应用在 macOS 上运行越来越规范。
来源:freebuf.com 2021-03-08 10:36:28 by: GEETEST极验
请登录后发表评论
注册