=Start=
缘由:
简单整理一下前段时间碰到的几个小问题,方便后面有需要的时候参考。
正文:
参考解答:
先记录一下安装pkg包失败的2种原因及解决办法。
安装pkg包报错:安装失败
报错信息:
“安装器遇到了一个错误,导致安装失败。请联系软件生产企业以获得帮助”
可能原因1:当前安全设置不允许非appstore和被认可的开发者的应用安装
# macOS Ventura 之前的系统
在【系统偏好设置】-【安全性与隐私】-【通用】-【允许从以下位置下载的应用】中选择「任何来源」,然后再安装。如果依然安装失败可以重启电脑后再试一次。
# macOS Ventura 及之后的系统
系统设置-隐私与安全性-安全性-允许从以下位置下载的应用程序(只有【App Store】和【App Store和被认可的开发者】这2个选项),需要用下面的disable命令开启【任何来源】的选项
$ spctl --status
assessments enabled #app store和被认可的开发者
$ sudo spctl --master-disable
$ spctl --status
assessments disabled #任何来源
$ man spctl
...
EXAMPLES
To check whether Mail.app is allowed to run on the local system:
spctl -a /Applications/Mail.app
To allow Frobozz.app to run on the local system:
spctl --add --label "My Stuff" /Applications/Frobozz.app
To forbid all code obtained from the Mac App Store from running:
spctl --disable --label "Mac App Store"
...
$ spctl kext-consent status
$ spctl kext-consent list
Allowed Team Identifiers:
99U9VSN546
$ sudo sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy
sqlite> SELECT * FROM kext_policy;
可能原因2:【安装器】没有“下载”文件夹的权限
一般是当前最新的 macOS Ventura 13.x 系统会出现这个情况,解决办法就是在:系统设置-隐私与安全性-完全磁盘访问权限
这里给【安装器】开启相应权限即可。
参考链接:
Getting the Team ID of kernel extensions in macOS 10.13 (and higher?)
https://technology.siprep.org/getting-the-team-id-of-kernel-extensions-in-macos-10-13-and-higher/
Mac安装pkg包报错:安装失败 “安装器遇到了一个错误,导致安装失败,请联系软件制造商以获得帮助
https://blog.csdn.net/magic_jiayu/article/details/105939865
Mac安装软件时提示已损坏的解决方法
https://www.jianshu.com/p/af740a944d25
Mac OS使用SSL常见问题
https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=38040
=END=
《 “macOS安全性之软件安装的限制” 》 有 13 条评论
如何查找Mac应用的bundle ID
Find the bundle ID of an app on Mac
https://www.hexnode.com/mobile-device-management/help/how-to-find-the-bundle-id-of-an-application-on-mac/
`
# Method 1
osascript -e ‘id of app “App Name”‘
osascript -e ‘id of app “Finder”‘
# Method 2 (This method is applicable only for apps available on the Mac App Store.)
…
# Method 3
1. Open Finder on your Mac.
2. Head on to Applications.
3. Right-click on the required application and select ‘Show Packaged Contents’.
4. Open the Contents folder of that application.
5. Open the info.plist file using either Xcode or TextEdit. You can find the bundle ID of that application in this file.
`
How to get Bundle ID of Mac application?
https://stackoverflow.com/questions/39464668/how-to-get-bundle-id-of-mac-application
`
osascript -e ‘id of app “SomeApp”‘
mdls -name kMDItemCFBundleIdentifier -r SomeApp.app
/usr/libexec/PlistBuddy -c ‘print CFBundleIdentifier’ /Applications/Xcode.app/Contents/Info.plist
defaults read /Applications/Xcode.app/Contents/Info.plist CFBundleIdentifier
# 查看应用的 info.plist 文件即可
if you just need it to launch the app look in the app’s info.plist file. the file is in the app bundle in the Contents directory. This works for a lot of apps.
`
Audits / Item Search
https://www.tenable.com/audits/items/search
`
As benchmarks are released from source authorities, Tenable Research implements the guidance in its audit language. These audit files are executed and evaluated by Tenable sensors, and reported in Tenable products. Tenable Research has published 1246 audits covering 452 benchmarks from source authorities and vendors that include Center for Internet Security, United States Defense Information Systems Agency, and Microsoft.
Tenable Research已经发布了1246项审计,涵盖了452项基准,这些基准来自源机构和供应商,包括互联网安全中心(CIS)、美国国防信息系统局和微软。
我的一些常用搜索关键词:
icloud
airdrop
enable
disable
因为相对来说网上的macOS相关的审计和安全设置文章相对较少,且不够权威,有这么一个在线检索功能真的是非常方便和有用。其它系统/软件的其实也很有用。
`
What Is MRT Process Mac: High CPU Usage [Updated 2023]
https://www.easeus.com/knowledge-center/mrt-process-mac.html
`
MRT, aka Malware Removal Tool, is considered a primary defense line against malicious software on the macOS. Hence, the objective of MRT is to eradicate spiteful software safely, whereas XProtect concentrates on catching it.
MRT 又名恶意软件移除工具,被认为是 macOS 上抵御恶意软件的主要防线。因此,MRT 的目标是安全地清除恶意软件,而 XProtect 则专注于捕获恶意软件。
/Library/Apple/System/Library/CoreServices/MRT.app
`
Apple 平台安全保护
https://help.apple.com/pdf/security/zh_CN/apple-platform-security-guide-cn.pdf
macOS 中的系统和内核扩展
https://support.apple.com/zh-cn/guide/deployment/depa5fb8376f/web
macOS 中的内核扩展
https://support.apple.com/zh-cn/guide/security/sec8e454101b/web
系统完整性保护
https://support.apple.com/zh-cn/guide/security/secb7ea06b49/web
其他 macOS 系统安全性功能
https://support.apple.com/zh-cn/guide/security/sec2fd2cc63d/1/web/1
macOS 中的系统和内核扩展
https://support.apple.com/zh-cn/guide/deployment/depa5fb8376f/web
`
macOS 10.15 或更高版本允许开发者通过安装和管理在用户空间而非内核层面运行的系统扩展来扩展 macOS 的功能。让系统扩展在用户空间运行提高了 macOS 的稳定性和安全性。尽管 Kext 本身可完全访问整个操作系统,但运行在用户空间的扩展只拥有执行其特定功能所需的许可。
系统扩展支持使用 MDM 的强力管理,包括允许来自特定开发者或特定类型(如网络扩展)的所有扩展无需用户交互即可载入的能力。MDM 可选择不允许用户将自己的系统扩展批准载入。
在 macOS 11.3 至 macOS 11.6.4 中,更改系统扩展描述文件会直接影响扩展的状态。例如,如果扩展正在等待批准且推送了允许扩展的配置描述文件,则允许载入扩展。相反,如果批准被撤销,则系统扩展会被卸载,且会被标记以在 Mac 下次重新启动时移除。如果系统扩展尝试自行卸载,会出现一个互动认证对话框要求管理员凭证来授权卸载。
在 macOS 12.0.1 或更高版本中,“系统扩展”有效负载中的词典 RemovableSystemExtensions 允许 MDM 管理员指定哪些 App 可以移除其自己的系统扩展。移除该类系统扩展无需本地管理员认证。此功能对于可能提供 App 自动卸载器的供应商特别有用。
# 内核扩展
在 macOS 11 或更高版本中,如果启用了第三方内核扩展 (Kext),就不能按需将其载入内核中。第三方内核扩展需要用户批准、重新启动 macOS 以将更改载入内核,还需要在搭载 Apple 芯片的 Mac 上将安全启动配置为“降低安全性”。
开发者可以使用各种框架(如 DriverKit 和 NetworkExtension)来写入 USB 和人机界面驱动程序、端点安全工具(如数据丢失预防或其他端点代理)以及 VPN 和网络工具,这一切都不需要编写 Kext。只有当第三方安全代理使用了这些 API 或者拥有过渡到这些 API 并不再使用内核扩展的清晰路线图,才应当使用这些第三方安全代理。
【重要事项】macOS 中不再推荐使用 Kext。Kext 会威胁到操作系统的完整性和可靠性。用户应当首选不需要扩展内核而是使用系统扩展的解决方案。
# Kext 替代项(macOS 10.15 或更高版本)
macOS 10.15 允许开发者通过安装和管理在用户空间而非内核层面运行的系统扩展来扩展 macOS 的功能。让系统扩展运行在用户空间提高了 macOS 的稳定性和安全性。尽管 Kext 本身拥有对整个操作系统的完全访问权限,但运行在用户空间的扩展只拥有执行其特定功能所需的权限。
开发者可以使用各种框架(包括 DriverKit、EndpointSecurity 和 NetworkExtension)来写入 USB 和人机界面驱动程序、端点安全工具(如数据丢失预防或其他端点代理)以及 VPN 和网络工具,这一切都不需要编写 Kext。只有当第三方安全代理使用了这些 API 或者拥有过渡到这些 API 并不再使用内核扩展的清晰路线图,才应当使用这些第三方安全代理。
`
删除内核扩展和系统扩展
https://www.readern.com/uninstall-kernel-ext.html
`
这几年macOS的安全性要求越来越高,Apple Silicon的Mac电脑发布后,已经默认取消了对第三方内核扩展(Kernel Extension)的支持;此外,Big Sur开始也强化对系统扩展的限制。但是,仍然有部分设备由于各种原因还没彻底完善驱动,比如Apogee系列产品,安装驱动软件时需要手工降低安全性要求,加载Kernel Extensions。这就带来一个问题,删软件的时候会删不干净。稍微搜索了一轮,终于找到了位置。
# 内核扩展
首先,到/Library/StagedExtensions/Library/Extensions/这个路径,可以看到安装的所有第三方内核扩展。如果和我一样装了Apogee驱动的,这里是5个驱动目录。
找到地方就容易卸载了。关机后长按电源/TouhID键,启动电脑时选择进入“选项”后,在菜单栏进入“终端”:
cd /Library/StagedExtensions/Library/Extensions/
ls
rm -rf *.kext
如果只是删除某一个驱动,当然可以把最后一条指令改成特定的驱动名。
最后关闭终端并重启电脑就行了。
顺便说一句,Apogee的安装包里有卸载程序,要先运行卸载程序后再做上面的手工步骤。安装包里面信息也不太全,对Apple Silicon的电脑,建议参考官方安装文档。
# 系统扩展
有些软件为了系统级权限等,用了系统扩展(System Extension)。它和内核扩展是不同的,内核扩展基本上是硬件驱动程序,系统扩展可能还包括网络类,比如一些代理、过滤器等。系统扩展可以用这个指令查询:
systemextensionsctl list
如果你安装了Adguard,在这里就可以看到com.adguard.mac.adguard.network-extension。同时这里会有TeamID字段。
一般来说,软件本身会管理扩展,这个扩展会跟着软件卸载干净。如果极个别情况需要手工操作,那还是上面这个指令就行(注意替换):
systemextensionsctl uninstall
**总之,现在还在让你装内核扩展的,都是反应偏慢的厂家了。**最后吐槽下,Apogee号称迭代推出了新一代的控制软件Apogee Control 2,但每次在我的电脑上打开时,都有个ApogeeMessager的进程疯狂占用CPU,唯一值得欣慰的是它只占一个核。应该有几个月了,还没看到修复的希望(外站也有抱怨的,也没官方回应),只能手工干净卸载了,反正我的Apogee Duet现在只是个备用DAC。
`
移除 macOS 无用的系统扩展和内核扩展
https://yyl125.top/post/remove_completely_macos_system_extensions_and_kext/
`
macOS 虽然安装 App 十分简单方便,但卸载起来真的是让人头大
一不小心安装了 Samsung 的 SSD 工具和某款同时还需要 macFUSE 搭配使用的 NTFS 工具。由于 macOS 中已不再推荐使用 Kext,需要用户手动降低设备安全策略并重启以启用系统扩展(系统扩展已被阻止)。之前还卸载了 AdGuard,但似乎还有部分系统扩展残留在系统中。而对于像我这种有「系统洁癖」的人来说,当务之急必然是尝试清除
以前其实就尝试清理过 Samsung 的 SSD 工具所放入系统的系统扩展,当时还找到了源文件,删除后以为万事大吉,这次发现并非如此
# 开始之前
在正式进行任何操作之前,我们需要确定我们需要修改的内容,以及对所修改的文件做好备份工作,条件允许时,应该进行整机 Time Machine 备份
对于 macOS,系统扩展和内核扩展一般在以下几个位置:
/Library/StagedExtensions/Library/Extensions/ 这个位置一般包含了所有安装的 Kext[1]
/private/var/db/KernelExtensionManagement 这个位置一般包含了诸如 AdGuard 网络系统扩展等内容,具体在其 AuxKC 目录中。可以先行在 Terminal 中通过 systemextensionsctl list 查询是否存在(比如 com.adguard.mac.adguard.network-extension)
/Library/SystemExtensions 这个位置一般包含了某些不在以上目录的扩展
想要对 macOS 系统文件进行修改,则需要关闭 macOS 的系统完整性保护(System Integrity Protection,SIP)。具体方法为进入 macOS 的恢复模式,依次选择 Menu Bar 中的「实用工具」>「终端」,然后在 Terminal 中输入 csrutil disable 关闭 SIP,随后重新启动 Mac 即可
# 移除 AuxKC 目录下的系统扩展
想要移除 AuxKC 目录下的系统扩展十分简单,只需要先使用 systemextensionsctl list 查询系统扩展的详细信息,随后在 Terminal 中输入 systemextensionsctl uninstall 即可[2]。以移除 AdGuard 的网络系统扩展为例(此例中 teamID 为 TC3Q7MAJXF,具体请以 list 中所列信息为准):
systemextensionsctl uninstall TC3Q7MAJXF com.adguard.mac.adguard.network-extension
等待 Terminal 完成操作(显示 Successful)后,重新启动 Mac。此系统扩展即将在重新启动过程中被移除
# 移除所有已安装的 Kext
开始之前,我们需要先修复 /S/L/E(System/Library/Extensions)和 /L/E(Library/Extensions)文件夹中的权限[3]
在 Terminal 中依次单独键入以下每个命令:
sudo chmod -Rf 755 /S*/L*/E*
sudo chmod -Rf 755 /L*/E*
sudo chown -Rf 0:0 /S*/L*/E*
sudo chown -Rf 0:0 /L*/E*
随后在 Terminal 中键入以下命令后重新启动你的 Mac:
sudo kextcache -i /
最后,请记得在恢复模式的 Terminal 使用 csrutil enable 命令重新启用设备的系统完整性保护(SIP)
`
系统扩展正在取代macOS内核扩展,这会对您有何影响?
https://www.manageengine.cn/news/ems201027.html
`
从一开始,Apple就热衷于保护用户的隐私和安全,而弃用内核扩展是它们实现其平台现代化的最新举措之一。但是,这家科技巨头在WWDC 2019上宣布,macOS Catalina中的内核扩展将被苹果的新技术系统扩展所取代。或许你会说“关我啥事?”接下来让我们分析分析。
# 什么是内核扩展?
内核是操作系统的核心。它促进了macOS与软件组件之间的交互,执行低级任务,例如磁盘管理,任务管理和内存管理。内核扩展(也称为KEXT)是一个应用程序捆绑包,用于通过允许软件直接加载到macOS内核中来扩展macOS的本机功能。防病毒软件,防火墙,VPN客户端和USB驱动程序都可以利用KEXT。
# KEXT风险
由于KEXT已编程为在受保护的内核空间中加载,因此如果KEXT崩溃或发生故障,可能会导致内核崩溃,并破坏整个系统。系统扩展的工作方式与KEXT类似,但它们与其他应用程序一样,在内核外部的用户空间中运行。这使系统扩展更可靠,更安全,并且更易于开发。
**在Catalina中可以构建三种系统扩展:网络扩展,驱动程序扩展和端点安全性扩展。**
使用网络扩展,您可以自定义OS X的网络功能,例如使用内置VPN协议,个人VPN或自定义VPN协议创建和管理VPN配置。
驱动程序扩展控制硬件设备,例如USB,串行,网络接口和人机接口设备。
使用Apple的Endpoint Security框架构建的扩展程序可以监视系统事件,例如流程执行和发出潜在恶意活动的信号。
内核定义并执行系统安全策略的规则。加载KEXT时,它将成为内核的一部分,并可以访问计算机上的所有内容。由于KEXT是制定安全规则的内核的一部分,因此它位于规则之上。没有可以限制它的安全规则。**如果KEXT遭到破坏,它将接管整个机器,从而带来严重的安全性和可靠性问题。**
与KEXT不同,系统扩展在内核外部的用户空间中运行,因此它们必须遵循系统安全策略的规则。系统扩展被授予特殊特权,例如可以直接访问其关联的硬件设备,或者使用特殊的API与内核系统直接通信。如此,**如果系统扩展崩溃了,其余的系统和应用程序将不受影响并保持运行。**
# 这对您有什么影响?
随着KEXT的逐步淘汰,当Mac上的软件加载旧版KEXT时,您可能会开始从Apple接收警告消息。这是为了提前通知您,加载的扩展名将与以后的macOS版本不兼容。
现在,在macOS Catalina上安装第三方KEXT要求您重新启动Mac,然后再允许它们加载。
由于添加了与现有KEXT具有相同目的的系统扩展,因此将在macOS Catalina中逐渐替换KEXT。
像KEXT一样,需要授予系统扩展访问或修改操作系统组件的权限。该权限可以由管理员用户或MDM提供者手动授予。
`
macOS System Extensions
https://book.hacktricks.xyz/v/cn/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions
`
与内核扩展不同,系统扩展在用户空间中运行,而不是内核空间,降低了由于扩展故障导致系统崩溃的风险。
有三种类型的系统扩展:DriverKit扩展、Network扩展和Endpoint Security扩展。
## DriverKit扩展
DriverKit是用于提供硬件支持的内核扩展替代方案。它允许设备驱动程序(如USB、串行、NIC和HID驱动程序)在用户空间而不是内核空间中运行。DriverKit框架包括某些I/O Kit类的用户空间版本,内核将普通的I/O Kit事件转发到用户空间,为这些驱动程序提供更安全的运行环境。
## Network扩展
网络扩展提供自定义网络行为的能力。有几种类型的网络扩展:
* 应用代理:用于创建实现基于流的自定义VPN协议的VPN客户端。这意味着它根据连接(或流)处理网络流量,而不是单个数据包。
* 数据包隧道:用于创建实现基于数据包的自定义VPN协议的VPN客户端。这意味着它根据单个数据包处理网络流量。
* 过滤数据:用于过滤网络“流”。它可以监视或修改流级别的网络数据。
* 过滤数据包:用于过滤单个网络数据包。它可以监视或修改数据包级别的网络数据。
* DNS代理:用于创建自定义DNS提供程序。它可用于监视或修改DNS请求和响应。
## 端点安全框架
端点安全是苹果在macOS中提供的一个框架,提供一组用于系统安全的API。它旨在供安全供应商和开发人员使用,构建可以监视和控制系统活动以识别和防范恶意活动的产品。
该框架提供了一组API来监视和控制系统活动,如进程执行、文件系统事件、网络和内核事件。
`
系统扩展不完整开发指北
https://juejin.cn/post/6900877498566115341
`
历史的车轮
* 内核扩展的弊端
* 苹果的决心
* 未来的展望
系统扩展
* 概念及框架
* 网络扩展
* * 内容过滤器
* * 透明代理
* * DNS代理
* * VPN
* 端点安全
开发指南
* 开发准备
* 调试指南
* 系统扩展启动
* 系统扩展通信
App Group
DistributedNotificationCenter
XPC
IPC
* 验证及发布
友情感谢
`
Mac允许内核扩展的详细步骤
https://www.callmysoft.com/support/2180.html
`
简单来说,只有相关厂商来写的文章是更有动力写的通俗易懂的——因为他需要让他的(可能没什么技术能力/概念基础的)客户能够在短时间内能够上手完成操作。
==
作为一款非常出色的NTFS For Mac磁盘管理工具,金舟NTFS For Mac自推出后就广受用户喜爱。因为现在mac电脑存在多种不同芯片。为了方便大家能顺利的使用金舟ntfs for mac工具,下面就来教您Mac允许内核扩展的操作步骤。
一、intel芯片允许内核扩展操作介绍:
「关闭SIP」
1、按下开机键,长按住command+R键,直到出现进度条,代表此时已进入恢复模式。
2、输入解锁密码后,在左上角点击实用工具>点击终端
3、终端内输入命令:csrutil disable(注意中间有个空格),然后回车执行输入电脑密码。
4、等待执行结果,直到出现 System Integrity Protection is off.证明 SIP 已成关闭。
5、在终端内继续输入命令reboot即可重启电脑,或者点击Apple logo然后点击重启就可以了。
「允许内核扩展」
6、前往“系统偏好设置”并点击“安全性与隐私”面板,点击【允许】按钮,允许来自于开发者“Jiangxia Information Technology(huizhou)Co.,Ltd.”的内核扩展。
7、重启电脑,使用金舟NTFS for Mac
二、APPLE芯片允许内核扩展操作介绍:
「降低安全性」
1、开机按住command+R键或长按开机键,或者开机按住Option键在出现的启动选择菜单中选择RecoveryHD,进入恢复模式。
2、安全性实用工具面板中点击【安全策略…】
3、选中【降低安全性】,并勾选【允许用户管理来自被认可开发者的内核扩展】,点击【好】
「关闭SIP」
4、点击实用工具>点击终端
5、终端内输入命令:csrutil disable(注意中间有个空格),然后回车执行输入电脑密码。
6、等待执行结果,直到出现 System Integrity Protection is off.证明 SIP 已成关闭。
7、在终端内继续输入命令reboot即可重启电脑,或者点击Apple logo然后点击重启就可以了。
「允许内核扩展」
8、前往“系统偏好设置”并点击“安全性与隐私”面板,点击【允许】按钮,允许来自于开发者“Jiangxia Information Technology(huizhou)Co.,Ltd.”的内核扩展。
9、重启电脑,使用金舟NTFS for Mac
`
一些安全厂商在新macOS系统上提供的数据安全沙箱功能一般是通过关闭SIP来实现的。
* 关闭SIP来实现防护
* 移除应用程序本身的签名,然后进行dylib 动态注入来实现防护
除关闭SIP对应用进行数据安全DLP保护外,另一种方案是对应用程序的签名进行去除,去除签名后可使用 apple 提供的dylib 动态链接库进行注入和实现 DLP 防护。
脱签前:使用系统命令可查询到app 签名对应的厂家详细信息。
脱签后:系统命令无法查询到 app 签名信息。
但对应用程序的去除签名方案存在以下几个问题
1、部分应用启动时自身会检测软件完整性,如果应用不完整部分应用会认软件被损坏,会执行关闭软件、甚至封号等操作,可能会出现导致用户账号等关键数据的丢失情况。
2、对软件的脱签操作属于对应用的篡改行为,常用软件的用户许可协议均明确针对软件使用过程中的数据不得进行任何复制、修改、挂接允许,需要承担由此产生的一切法律责任。脱签的方案对第三方未授权软件存在较大的法律风险。