macOS Memory Dumping

Support HackTricks

メモリアーティファクト

スワップファイル

スワップファイル(例:/private/var/vm/swapfile0)は、物理メモリが満杯のときのキャッシュとして機能します。物理メモリに空きがなくなると、そのデータはスワップファイルに転送され、必要に応じて物理メモリに戻されます。スワップファイルは複数存在する可能性があり、名前はswapfile0、swapfile1などとなります。

ハイバネートイメージ

/private/var/vm/sleepimageにあるファイルは、ハイバネーションモードの際に重要です。OS Xがハイバネートするとき、メモリのデータはこのファイルに保存されます。コンピュータが復帰すると、システムはこのファイルからメモリデータを取得し、ユーザーは前回の作業を続けることができます。

現代のMacOSシステムでは、このファイルは通常、セキュリティ上の理由から暗号化されており、復元が難しいことに注意が必要です。

  • sleepimageの暗号化が有効かどうかを確認するには、sysctl vm.swapusageコマンドを実行します。これにより、ファイルが暗号化されているかどうかが表示されます。

メモリプレッシャーログ

MacOSシステムにおけるもう一つの重要なメモリ関連ファイルは、メモリプレッシャーログです。これらのログは/var/logにあり、システムのメモリ使用状況やプレッシャーイベントに関する詳細情報を含んでいます。メモリ関連の問題を診断したり、システムが時間の経過とともにメモリをどのように管理しているかを理解するのに特に役立ちます。

osxpmemを使用したメモリダンプ

MacOSマシンのメモリをダンプするには、osxpmemを使用できます。

注意:以下の手順は、IntelアーキテクチャのMacにのみ適用されます。このツールは現在アーカイブされており、最後のリリースは2017年でした。以下の手順でダウンロードしたバイナリは、2017年にはApple Siliconが存在しなかったため、Intelチップを対象としています。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を読み込み、メモリをダンプすることもできます:

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
HackTricksをサポートする

Last updated