hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md
2023-08-03 19:12:22 +00:00

12 KiB
Raw Blame History

macOS文件、文件夹、二进制文件和内存

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

文件层次结构布局

  • /Applications:已安装的应用程序应位于此处。所有用户都可以访问它们。
  • /bin:命令行二进制文件
  • /cores:如果存在,用于存储核心转储
  • /dev:一切都被视为文件,因此您可能会在此处看到存储的硬件设备。
  • /etc:配置文件
  • /Library可以在此处找到与首选项、缓存和日志相关的许多子目录和文件。根目录和每个用户目录中都存在一个Library文件夹。
  • /private未记录但是许多提到的文件夹都是指向private目录的符号链接。
  • /sbin:基本系统二进制文件(与管理相关)
  • /System使OS X运行的文件。您应该在这里找到大多数仅适用于Apple的文件而不是第三方文件
  • /tmp文件将在3天后被删除它是指向/private/tmp的软链接
  • /Users:用户的主目录。
  • /usr:配置和系统二进制文件
  • /var:日志文件
  • /Volumes:挂载的驱动器将显示在此处。
  • /.vol:运行stat a.txt,您将获得类似于16777223 7545753 -rw-r--r-- 1 username wheel ...的内容其中第一个数字是文件所在卷的ID号第二个数字是inode号。您可以通过/.vol/和这些信息访问此文件的内容,运行cat /.vol/16777223/7545753

应用程序文件夹

  • 系统应用程序位于/System/Applications
  • 已安装的应用程序通常安装在/Applications~/Applications
  • 应用程序数据可以在/Library/Application Support中找到用于以root身份运行的应用程序以及在~/Library/Application Support中找到,用于以用户身份运行的应用程序。
  • 需要以root身份运行的第三方应用程序守护程序通常位于/Library/PrivilegedHelperTools/
  • 沙盒化的应用程序映射到~/Library/Containers文件夹中。每个应用程序都有一个根据应用程序的bundle IDcom.apple.Safari)命名的文件夹。
  • 内核位于/System/Library/Kernels/kernel
  • Apple的内核扩展位于/System/Library/Extensions
  • 第三方内核扩展存储在/Library/Extensions

包含敏感信息的文件

MacOS将密码等信息存储在多个位置

{% content-ref url="macos-sensitive-locations.md" %} macos-sensitive-locations.md {% endcontent-ref %}

有漏洞的pkg安装程序

{% content-ref url="macos-installers-abuse.md" %} macos-installers-abuse.md {% endcontent-ref %}

OS X特定扩展名

  • .dmgApple磁盘映像文件在安装程序中非常常见。
  • .kext它必须遵循特定的结构是驱动程序的OS X版本它是一个bundle
  • .plist也称为属性列表以XML或二进制格式存储信息。
  • 可以是XML或二进制。可以使用以下命令读取二进制文件
  • defaults read config.plist
  • /usr/libexec/PlistBuddy -c print config.plsit
  • plutil -p ~/Library/Preferences/com.apple.screensaver.plist
  • plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -
  • plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -
  • .app遵循目录结构的Apple应用程序它是一个bundle
  • .dylib动态库类似于Windows的DLL文件
  • .pkg与xar可扩展存档格式相同。可以使用installer命令安装这些文件的内容。
  • .DS_Store:此文件位于每个目录中,保存目录的属性和自定义设置。
  • .Spotlight-V100:此文件夹出现在系统上每个卷的根目录中。
  • .metadata_never_index如果此文件位于卷的根目录中Spotlight将不会对该卷进行索引。
  • .noindex具有此扩展名的文件和文件夹将不会被Spotlight索引。

macOS捆绑包

基本上捆绑包是文件系统中的一个目录结构。有趣的是默认情况下这个目录在Finder中看起来像一个单一的对象比如.app)。

{% content-ref url="macos-bundles.md" %} macos-bundles.md {% endcontent-ref %}

特殊文件权限

文件夹权限

在一个文件夹中,读取权限允许列出它,写入权限允许删除写入文件,执行权限允许遍历目录。所以,例如,一个用户对一个文件具有读取权限,但在该目录中没有执行权限,则无法读取该文件。

标志修饰符

有一些标志可以设置在文件中,使文件的行为不同。您可以使用ls -lO /path/directory命令检查目录中文件的标志。

  • uchg:被称为uchange标志,将阻止任何更改或删除文件的操作。设置方法:chflags uchg file.txt
  • root用户可以移除该标志并修改文件
  • restricted此标志使文件受到SIP的保护您无法将此标志添加到文件中
  • Sticky bit:如果一个目录具有粘性位,只有目录的所有者或root用户可以重命名或删除文件。通常在/tmp目录上设置此标志以防止普通用户删除或移动其他用户的文件。

文件ACLs

文件的ACLs包含了ACE(访问控制项),可以为不同的用户分配更细粒度的权限。

可以为目录授予以下权限:listsearchadd_fileadd_subdirectorydelete_childdelete_child
可以为文件授予以下权限:readwriteappendexecute

当文件包含ACLs时您将在列出权限时找到一个"+",例如:

ls -ld Movies
drwx------+   7 username  staff     224 15 Apr 19:42 Movies

您可以使用以下命令读取文件的ACL

ls -lde Movies
drwx------+ 7 username  staff  224 15 Apr 19:42 Movies
0: group:everyone deny delete

您可以使用以下命令(这个命令非常慢)找到所有带有ACL的文件

ls -RAle / 2>/dev/null | grep -E -B1 "\d: "

资源分支 | macOS ADS

这是一种在MacOS机器上获取备用数据流的方法。您可以通过将内容保存在名为com.apple.ResourceFork的扩展属性中,并将其保存在file/..namedfork/rsrc中的文件中。

echo "Hello" > a.txt
echo "Hello Mac ADS" > a.txt/..namedfork/rsrc

xattr -l a.txt #Read extended attributes
com.apple.ResourceFork: Hello Mac ADS

ls -l a.txt #The file length is still q
-rw-r--r--@ 1 username  wheel  6 17 Jul 01:15 a.txt

您可以使用以下命令查找包含此扩展属性的所有文件

{% code overflow="wrap" %}

find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork"

{% endcode %}

通用二进制文件和 Mach-o 格式

Mac OS 二进制文件通常被编译为通用二进制文件通用二进制文件可以在同一个文件中支持多个架构

{% content-ref url="universal-binaries-and-mach-o-format.md" %} universal-binaries-and-mach-o-format.md {% endcontent-ref %}

macOS 内存转储

{% content-ref url="macos-memory-dumping.md" %} macos-memory-dumping.md {% endcontent-ref %}

风险类别文件 Mac OS

文件 /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System 包含与文件扩展名相关的风险。

可能的类别包括以下内容:

  • LSRiskCategorySafe: 完全 安全Safari 下载后会自动打开
  • LSRiskCategoryNeutral: 没有警告,但不会自动打开
  • LSRiskCategoryUnsafeExecutable: 触发一个警告“此文件是一个应用程序…”
  • LSRiskCategoryMayContainUnsafeExecutable: 适用于包含可执行文件的存档等内容。除非 Safari 能确定所有内容都是安全或中性的,否则会触发警告

日志文件

  • $HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2: 包含有关下载文件的信息,如下载文件的 URL。
  • /var/log/system.log: OSX 系统的主要日志。com.apple.syslogd.plist 负责执行系统日志记录(您可以通过查找 launchctl list 中的 "com.apple.syslogd" 来检查是否已禁用)。
  • /private/var/log/asl/*.asl: 这些是可能包含有趣信息的 Apple 系统日志。
  • $HOME/Library/Preferences/com.apple.recentitems.plist: 存储最近通过 "Finder" 访问的文件和应用程序。
  • $HOME/Library/Preferences/com.apple.loginitems.plsit: 存储系统启动时要启动的项目
  • $HOME/Library/Logs/DiskUtility.log: DiskUtility 应用程序的日志文件(包含有关驱动器(包括 USB的信息
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist: 无线访问点的数据。
  • /private/var/db/launchd.db/com.apple.launchd/overrides.plist: 停用的守护程序列表。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥