hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md

4.9 KiB
Raw Blame History

macOS内存转储

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

内存遗留物

交换文件

交换文件,例如/private/var/vm/swapfile0,在物理内存已满时充当缓存。当物理内存没有足够空间时数据会被转移到交换文件中然后根据需要重新转移到物理内存中。可能会存在多个交换文件名称类似swapfile0、swapfile1等。

休眠镜像

位于/private/var/vm/sleepimage的文件在休眠模式下至关重要。当OS X休眠时内存中的数据存储在此文件中。唤醒计算机时,系统会从该文件中检索内存数据,使用户可以继续之前的操作。

值得注意的是在现代MacOS系统上出于安全原因该文件通常是加密的这使得恢复变得困难。

  • 要检查休眠镜像是否启用了加密,可以运行命令sysctl vm.swapusage。这将显示文件是否已加密。

内存压力日志

MacOS系统中另一个重要的与内存相关的文件是内存压力日志。这些日志位于/var/log中,包含有关系统内存使用情况和压力事件的详细信息。它们对诊断与内存相关的问题或了解系统如何随时间管理内存非常有用。

使用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 failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try 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 %}

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式