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)
Pliki wymiany, takie jak /private/var/vm/swapfile0
, służą jako bufory, gdy pamięć fizyczna jest pełna. Gdy nie ma już miejsca w pamięci fizycznej, jej dane są przenoszone do pliku wymiany, a następnie przywracane do pamięci fizycznej w razie potrzeby. Może być obecnych wiele plików wymiany, o nazwach takich jak swapfile0, swapfile1 itd.
Plik znajdujący się w /private/var/vm/sleepimage
jest kluczowy podczas trybu hibernacji. Dane z pamięci są przechowywane w tym pliku, gdy OS X hibernuje. Po obudzeniu komputera system odzyskuje dane pamięci z tego pliku, co pozwala użytkownikowi kontynuować tam, gdzie przerwał.
Warto zauważyć, że w nowoczesnych systemach MacOS ten plik jest zazwyczaj szyfrowany z powodów bezpieczeństwa, co utrudnia odzyskiwanie.
Aby sprawdzić, czy szyfrowanie jest włączone dla sleepimage, można uruchomić polecenie sysctl vm.swapusage
. Pokaże to, czy plik jest szyfrowany.
Innym ważnym plikiem związanym z pamięcią w systemach MacOS jest dziennik ciśnienia pamięci. Te dzienniki znajdują się w /var/log
i zawierają szczegółowe informacje o użyciu pamięci systemu oraz zdarzeniach ciśnienia. Mogą być szczególnie przydatne do diagnozowania problemów związanych z pamięcią lub zrozumienia, jak system zarządza pamięcią w czasie.
Aby zrzucić pamięć w maszynie MacOS, można użyć osxpmem.
Uwaga: Poniższe instrukcje będą działać tylko na Macach z architekturą Intel. To narzędzie jest teraz archiwizowane, a ostatnia wersja została wydana w 2017 roku. Pobrany binarny plik za pomocą poniższych instrukcji jest skierowany na chipy Intel, ponieważ Apple Silicon nie istniał w 2017 roku. Może być możliwe skompilowanie binarnego pliku dla architektury arm64, ale będziesz musiał spróbować samodzielnie.
Jeśli napotkasz ten błąd: 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)
Możesz to naprawić, wykonując:
Inne błędy mogą być naprawione przez zezwolenie na załadowanie kext w "Bezpieczeństwo i prywatność --> Ogólne", po prostu zezwól na to.
Możesz również użyć tego onelinera, aby pobrać aplikację, załadować kext i zrzucić pamięć:
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)