macOS Installers Abuse

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

Pkg基本信息

macOS的安装程序包(也称为.pkg文件)是macOS用于分发软件的文件格式。这些文件就像一个包含软件安装和运行所需的一切的盒子。

安装程序包本身是一个存档,其中包含将安装在目标计算机上的文件和目录层次结构。它还可以包括脚本,用于在安装前后执行任务,如设置配置文件或清理旧版本的软件。

层次结构

  • Distribution(xml):自定义内容(标题,欢迎文本...)和脚本/安装检查

  • PackageInfo(xml):信息,安装要求,安装位置,要运行的脚本路径

  • 材料清单(bom):要安装、更新或删除的文件列表,带有文件权限

  • Payload(CPIO存档gzip压缩):要在PackageInfo中的install-location中安装的文件

  • 脚本(CPIO存档gzip压缩):预安装和后安装脚本以及提取到临时目录以供执行的其他资源。

解压缩

# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"

# Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"

# Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts

DMG基本信息

DMG文件,或苹果磁盘映像,是苹果macOS用于磁盘映像的文件格式。DMG文件本质上是一个可挂载的磁盘映像(包含自己的文件系统),通常包含原始块数据,通常经过压缩并有时加密。当您打开一个DMG文件时,macOS会将其挂载为物理磁盘,从而允许您访问其内容。

请注意,.dmg安装程序支持许多格式,过去一些包含漏洞的安装程序被滥用以获取内核代码执行

层次结构

DMG文件的层次结构可以根据内容而异。但是,对于应用程序DMG,通常遵循以下结构:

  • 顶层:这是磁盘映像的根。通常包含应用程序,可能还包含到应用程序文件夹的链接。

  • 应用程序(.app):这是实际的应用程序。在macOS中,应用程序通常是一个包,其中包含许多组成应用程序的单独文件和文件夹。

  • 应用程序链接:这是指向macOS中应用程序文件夹的快捷方式。其目的是让您轻松安装应用程序。您可以将.app文件拖到此快捷方式以安装应用程序。

通过pkg滥用提权

从公共目录执行

例如,如果预安装或后安装脚本从**/var/tmp/Installerutil**执行,并且攻击者可以控制该脚本,那么他可以在执行时提升权限。或者另一个类似的例子:

AuthorizationExecuteWithPrivileges

这是一个公共函数,几个安装程序和更新程序会调用它来以root身份执行某些操作。该函数接受要执行的文件的路径作为参数,但是,如果攻击者可以修改此文件,他将能够滥用其以root身份执行以提升权限

# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig

通过挂载执行

如果安装程序写入 /tmp/fixedname/bla/bla,就有可能在 /tmp/fixedname 上创建一个没有所有者的挂载,这样你就可以在安装过程中修改任何文件,以滥用安装过程。

一个例子是 CVE-2021-26089,成功覆盖了一个周期性脚本以获取 root 执行权限。欲了解更多信息,请查看演讲:OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl

将 pkg 当作恶意软件

空载荷

可以只生成一个带有预安装和后安装脚本但没有任何有效载荷的 .pkg 文件。

Distribution xml 中的 JS

可以在软件包的 distribution xml 文件中添加 <script> 标签,该代码将被执行,可以使用 system.run执行命令

参考资料

最后更新于