<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
* **/Library**: Można tu znaleźć wiele podkatalogów i plików związanych z preferencjami, pamięci podręcznej i logami. Istnieje folder Library w głównym katalogu oraz w katalogu każdego użytkownika.
* **/.vol**: Uruchamiając `stat a.txt` otrzymasz coś w rodzaju `16777223 7545753 -rw-r--r-- 1 nazwaużytkownika grupa ...`, gdzie pierwsza liczba to numer id woluminu, w którym plik istnieje, a druga to numer i-węzła. Możesz uzyskać dostęp do zawartości tego pliku poprzez /.vol/ z tymi informacjami, uruchamiając `cat /.vol/16777223/7545753`
* Dane aplikacji można znaleźć w `/Library/Application Support` dla aplikacji działających jako root oraz `~/Library/Application Support` dla aplikacji działających jako użytkownik.
* Aplikacje **demona** firm trzecich, które **muszą działać jako root**, zazwyczaj znajdują się w `/Library/PrivilegedHelperTools/`
* **Aplikacje z piaskownicą** są mapowane do folderu `~/Library/Containers`. Każda aplikacja ma folder nazwany zgodnie z identyfikatorem pakietu aplikacji (`com.apple.Safari`).
Na macOS (i iOS) wszystkie systemowe biblioteki współdzielone, takie jak frameworki i dyliby, są **łączone w pojedynczy plik**, zwany **buforem bibliotek współdzielonych dyld**. Poprawia to wydajność, ponieważ kod może być ładowany szybciej.
Znajduje się to w macOS w `/System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/`, a w starszych wersjach można było znaleźć **bufor współdzielonych bibliotek** w **`/System/Library/dyld/`**.\
W iOS można je znaleźć w **`/System/Library/Caches/com.apple.dyld/`**.
Podobnie jak bufor bibliotek współdzielonych dyld, jądro i rozszerzenia jądra są również kompilowane do bufora jądra, który jest ładowany podczas uruchamiania systemu.
Aby wyodrębnić biblioteki z pojedynczego pliku bufora współdzielonych dylibów, można było użyć binarnego [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip), który obecnie może nie działać, ale można również użyć [**dyldextractor**](https://github.com/arandomdev/dyldextractor):
Zauważ, że nawet jeśli narzędzie `dyld_shared_cache_util` nie działa, możesz przekazać **wspólny binarny dyld do Hoppera** i Hopper będzie w stanie zidentyfikować wszystkie biblioteki i pozwolić Ci **wybrać, którą** chcesz zbadać:
Możliwe jest również pobranie Udostępnionego Cache Bibliotek innych urządzeń \*OS w systemie macOS za pomocą emulatora w Xcode. Zostaną one pobrane do: ls `$HOME/Library/Developer/Xcode/<*>OS\ DeviceSupport/<version>/Symbols/System/Library/Caches/com.apple.dyld/`, na przykład:`$HOME/Library/Developer/Xcode/iOS\ DeviceSupport/14.1\ (18A8395)/Symbols/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64`
**`dyld`** używa wywołania systemowego **`shared_region_check_np`** aby sprawdzić, czy SLC został zmapowany (co zwraca adres) i **`shared_region_map_and_slide_np`** aby zmapować SLC.
Zauważ, że nawet jeśli SLC jest przesunięty przy pierwszym użyciu, wszystkie **procesy** używają **tej samej kopii**, co **eliminuje ochronę ASLR**, jeśli atakujący był w stanie uruchomić procesy w systemie. Zostało to faktycznie wykorzystane w przeszłości i naprawione za pomocą współdzielonego regionu pagera.
Pule gałęzi to małe dyliby Mach-O, które tworzą małe przestrzenie między mapowaniami obrazów, co uniemożliwia interweniowanie w funkcje.
### Nadpisywanie SLC
Korzystając z zmiennych środowiskowych:
* **`DYLD_DHARED_REGION=private DYLD_SHARED_CACHE_DIR=</path/dir> DYLD_SHARED_CACHE_DONT_VALIDATE=1`** -> To pozwoli na załadowanie nowego wspólnego cache'a bibliotek
* **`DYLD_SHARED_CACHE_DIR=avoid`** i ręczne zastąpienie bibliotek dowiązaniami symbolicznymi do cache'a wspólnego z rzeczywistymi (będziesz musiał je wyodrębnić)
W **folderze**, **odczyt** pozwala na **wylistowanie go**, **zapis** pozwala na **usunięcie** i **zapis** plików w nim, a **wykonanie** pozwala na **przejście** po katalogu. Na przykład użytkownik z **uprawnieniem do odczytu pliku** wewnątrz katalogu, w którym **nie ma uprawnień do wykonania**, **nie będzie w stanie odczytać** pliku.
Istnieją pewne flagi, które można ustawić w plikach, które sprawią, że plik będzie zachowywał się inaczej. Możesz **sprawdzić flagi** plików wewnątrz katalogu za pomocą `ls -lO /ścieżka/do/katalogu`
* **`uchg`**: Znana jako flaga **uchange** uniemożliwi **dokonanie jakiejkolwiek akcji** zmieniającej lub usuwającej **plik**. Aby ją ustawić, wykonaj: `chflags uchg plik.txt`
* **`Sticky bit`**: Jeśli katalog ma ustawiony bit sticky, **tylko** właściciel katalogu lub root mogą zmienić nazwę lub usunąć pliki. Zazwyczaj jest to ustawione na katalogu /tmp, aby zapobiec zwykłym użytkownikom usuwania lub przenoszenia plików innych użytkowników.
Rozszerzone atrybuty posiadają nazwę oraz wartość i można je zobaczyć za pomocą `ls -@`, a także manipulować nimi za pomocą polecenia `xattr`. Niektóre wspólne rozszerzone atrybuty to:
-`com.apple.resourceFork`: Kompatybilność z widłami zasobów. Widoczne także jako `filename/..namedfork/rsrc`
-`com.apple.cprotect`: \*OS: Dane szyfrowania na poziomie pliku (III/11)
-`com.apple.installd.*`: \*OS: Metadane używane przez installd, np. `installType`, `uniqueInstallID`
### Widły zasobów | macOS ADS
To sposób na uzyskanie **Alternatywnych Strumieni Danych w maszynach MacOS**. Możesz zapisać zawartość wewnątrz rozszerzonego atrybutu o nazwie **com.apple.ResourceFork** wewnątrz pliku, zapisując go w **file/..namedfork/rsrc**.
Rozszerzony atrybut `com.apple.decmpfs` wskazuje, że plik jest przechowywany zaszyfrowany, `ls -l` będzie raportować **rozmiar 0** i skompresowane dane znajdują się w tym atrybucie. Za każdym razem, gdy plik jest dostępny, zostanie zdeszyfrowany w pamięci.
Ten atrybut można zobaczyć za pomocą `ls -lO` oznaczonego jako skompresowany, ponieważ skompresowane pliki są również oznaczone flagą `UF_COMPRESSED`. Jeśli skompresowany plik zostanie usunięty z tą flagą za pomocą `chflags nocompressed </ścieżka/do/pliku>`, system nie będzie wiedział, że plik był skompresowany i dlatego nie będzie w stanie zdekompresować i uzyskać dostępu do danych (będzie myślał, że jest pusty).
Binarki systemu Mac OS zazwyczaj są kompilowane jako **uniwersalne binarne**. **Uniwersalny binarny** może **obsługiwać wiele architektur w tym samym pliku**.
Katalog `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System` to miejsce, gdzie przechowywane są informacje o **ryzyku związanym z różnymi rozszerzeniami plików**. Ten katalog kategoryzuje pliki na różne poziomy ryzyka, wpływając na to, w jaki sposób Safari traktuje te pliki po pobraniu. Kategorie to:
* **LSRiskCategoryUnsafeExecutable**: Pliki w tej kategorii **wywołują ostrzeżenie**, wskazując, że plik jest aplikacją. Jest to środek bezpieczeństwa mający na celu poinformowanie użytkownika.
* **LSRiskCategoryMayContainUnsafeExecutable**: Ta kategoria jest przeznaczona dla plików, takich jak archiwa, które mogą zawierać plik wykonywalny. Safari **wywoła ostrzeżenie**, chyba że może zweryfikować, że wszystkie zawartości są bezpieczne lub neutralne.
* **`$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**: Zawiera informacje o pobranych plikach, takie jak adres URL, z którego zostały pobrane.
* **`/var/log/system.log`**: Główny dziennik systemów OSX. com.apple.syslogd.plist jest odpowiedzialny za wykonywanie syslogging (możesz sprawdzić, czy jest wyłączony, szukając "com.apple.syslogd" w `launchctl list`.
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.