macOS Memory Dumping
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Файли обміну, такі як /private/var/vm/swapfile0
, слугують як кеші, коли фізична пам'ять заповнена. Коли в фізичній пам'яті більше немає місця, її дані передаються у файл обміну, а потім повертаються у фізичну пам'ять за потреби. Можуть бути присутніми кілька файлів обміну з іменами, такими як swapfile0, swapfile1 тощо.
Файл, розташований за адресою /private/var/vm/sleepimage
, є критично важливим під час режиму гібернації. Дані з пам'яті зберігаються в цьому файлі, коли OS X переходить у гібернацію. Після пробудження комп'ютера система отримує дані пам'яті з цього файлу, що дозволяє користувачу продовжити з того місця, де він зупинився.
Варто зазначити, що на сучасних системах MacOS цей файл зазвичай зашифрований з міркувань безпеки, що ускладнює відновлення.
Щоб перевірити, чи увімкнено шифрування для sleepimage, можна виконати команду sysctl vm.swapusage
. Це покаже, чи файл зашифрований.
Ще один важливий файл, пов'язаний з пам'яттю, у системах MacOS - це журнал тиску пам'яті. Ці журнали розташовані в /var/log
і містять детальну інформацію про використання пам'яті системи та події тиску. Вони можуть бути особливо корисними для діагностики проблем, пов'язаних з пам'яттю, або для розуміння того, як система управляє пам'яттю з часом.
Щоб скинути пам'ять на машині MacOS, ви можете використовувати osxpmem.
Note: Наступні інструкції працюватимуть лише для Mac з архітектурою Intel. Цей інструмент зараз архівований, а останній реліз був у 2017 році. Бінарний файл, завантажений за допомогою наведених нижче інструкцій, націлений на чіпи Intel, оскільки Apple Silicon не існувала в 2017 році. Можливо, ви зможете скомпілювати бінарний файл для архітектури arm64, але вам доведеться спробувати самостійно.
Якщо ви знайдете цю помилку: 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)
Ви можете виправити це, виконавши:
Інші помилки можуть бути виправлені дозволивши завантаження kext в "Безпека та конфіденційність --> Загальні", просто дозвольте це.
Ви також можете використовувати цей однорядник для завантаження програми, завантаження kext і дампу пам'яті:
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)