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

5.4 KiB
Raw Blame History

macOS内存转储

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

内存遗留物

交换文件

  • /private/var/vm/swapfile0:当物理内存填满时,此文件用作缓存。物理内存中的数据将被推送到交换文件中如果需要再次交换回物理内存。这里可以存在多个文件。例如你可能会看到swapfile0、swapfile1等等。
  • /private/var/vm/sleepimage当OS X进入休眠状态时,存储在内存中的数据被放入sleepimage文件中。当用户回来并唤醒计算机时内存将从sleepimage中恢复用户可以继续之前的工作。

在现代的MacOS系统中默认情况下此文件将被加密因此可能无法恢复。

  • 但是,此文件的加密可能已被禁用。检查sysctl vm.swapusage的输出。

使用osxpmem转储内存

为了在MacOS机器上转储内存你可以使用osxpmem

注意以下说明仅适用于使用Intel架构的Mac。该工具现已存档最后一次发布是在2017年。使用下面的说明下载的二进制文件针对的是Intel芯片因为在2017年时还没有Apple Silicon。可能可以为arm64架构编译二进制文件但你需要自行尝试。

#Dump raw format
sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem

#Dump aff4 format
sudo osxpmem.app/osxpmem -o /tmp/dump_mem.aff4

如果你遇到这个错误:osxpmem.app/MacPmem.kext加载失败 - (libkern/kext)身份验证失败(文件所有权/权限);检查系统/内核日志以查找错误或尝试kextutil(8),你可以通过以下方法修复:

sudo cp -r osxpmem.app/MacPmem.kext "/tmp/"
sudo kextutil "/tmp/MacPmem.kext"
#Allow the kext in "Security & Privacy --> General"
sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem

其他错误可能通过在“安全与隐私 --> 通用”中允许加载kext来修复,只需允许即可。

您还可以使用以下一行命令来下载应用程序加载kext并转储内存

{% code overflow="wrap" %}

sudo su
cd /tmp; wget https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip; unzip osxpmem-2.1.post4.zip; chown -R root:wheel osxpmem.app/MacPmem.kext; kextload osxpmem.app/MacPmem.kext; osxpmem.app/osxpmem --format raw -o /tmp/dump_mem

{% endcode %}

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