9 KiB
Systemowe rozszerzenia macOS
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów GitHub.
Systemowe rozszerzenia / Framework Endpoint Security
W przeciwieństwie do rozszerzeń jądra, systemowe rozszerzenia działają w przestrzeni użytkownika zamiast w przestrzeni jądra, co zmniejsza ryzyko awarii systemu spowodowanej nieprawidłowym działaniem rozszerzenia.
![https://knight.sc/images/system-extension-internals-1.png](/Mirrors/hacktricks/media/commit/8b570c467e13fa00e2acf1ba5ef2a8c91a62147e/.gitbook/assets/image%20%281%29%20%283%29%20%281%29%20%281%29.png)
Istnieją trzy rodzaje systemowych rozszerzeń: Rozszerzenia DriverKit, Rozszerzenia Network i Rozszerzenia Endpoint Security.
Rozszerzenia DriverKit
DriverKit to zastępstwo dla rozszerzeń jądra, które zapewniają obsługę sprzętu. Pozwala sterownikom urządzeń (takim jak sterowniki USB, szeregowe, NIC i HID) działać w przestrzeni użytkownika zamiast w przestrzeni jądra. Framework DriverKit zawiera wersje przestrzeni użytkownika niektórych klas I/O Kit, a jądro przekazuje normalne zdarzenia I/O Kit do przestrzeni użytkownika, oferując bezpieczniejsze środowisko dla tych sterowników.
Rozszerzenia Network
Rozszerzenia Network umożliwiają dostosowywanie zachowań sieciowych. Istnieje kilka rodzajów rozszerzeń sieciowych:
- App Proxy: Służy do tworzenia klienta VPN, który implementuje protokół VPN oparty na przepływach. Oznacza to, że obsługuje ruch sieciowy na podstawie połączeń (lub przepływów), a nie pojedynczych pakietów.
- Packet Tunnel: Służy do tworzenia klienta VPN, który implementuje protokół VPN oparty na pakietach. Oznacza to, że obsługuje ruch sieciowy na podstawie pojedynczych pakietów.
- Filter Data: Służy do filtrowania "przepływów" sieciowych. Może monitorować lub modyfikować dane sieciowe na poziomie przepływu.
- Filter Packet: Służy do filtrowania pojedynczych pakietów sieciowych. Może monitorować lub modyfikować dane sieciowe na poziomie pakietu.
- DNS Proxy: Służy do tworzenia niestandardowego dostawcy DNS. Może być używany do monitorowania lub modyfikowania żądań i odpowiedzi DNS.
Framework Endpoint Security
Endpoint Security to framework dostarczany przez Apple w macOS, który zapewnia zestaw interfejsów API do zabezpieczeń systemowych. Jest przeznaczony do użytku przez dostawców zabezpieczeń i programistów w celu budowania produktów, które mogą monitorować i kontrolować aktywność systemu w celu identyfikacji i ochrony przed działaniami szkodliwymi.
Ten framework zapewnia zbiór interfejsów API do monitorowania i kontrolowania aktywności systemu, takich jak wykonywanie procesów, zdarzenia systemu plików, zdarzenia sieciowe i jądra.
Rdzeń tego frameworka jest zaimplementowany w jądrze jako rozszerzenie jądra (KEXT) znajdujące się w /System/Library/Extensions/EndpointSecurity.kext
. KEXT ten składa się z kilku kluczowych komponentów:
- EndpointSecurityDriver: Działa jako "punkt wejścia" do rozszerzenia jądra. Jest głównym punktem interakcji między systemem operacyjnym a frameworkiem Endpoint Security.
- EndpointSecurityEventManager: Odpowiada za implementację haków jądra. Haki jądra pozwalają frameworkowi monitorować zdarzenia systemowe poprzez przechwytywanie wywołań systemowych.
- EndpointSecurityClientManager: Zarządza komunikacją z klientami przestrzeni użytkownika, śledząc, które klienty są podłączone i wymagają otrzymywania powiadomień o zdarzeniach.
- EndpointSecurityMessageManager: Wysyła wiadomości i powiadomienia o zdarzeniach do klientów przestrzeni użytkownika.
Zdarzenia, które framework Endpoint Security może monitorować, są kategoryzowane jako:
- Zdarzenia plików
- Zdarzenia procesów
- Zdarzenia gniazd
- Zdarzenia jądra (takie jak ładowanie/odładowanie rozszerzenia jądra lub otwieranie urządzenia I/O Kit)
Architektura frameworka Endpoint Security
![https://www.youtube.com/watch?v=jaVkpM1UqOs](/Mirrors/hacktricks/media/commit/8b570c467e13fa00e2acf1ba5ef2a8c91a62147e/.gitbook/assets/image%20%283%29%20%288%29.png)
Komunikacja przestrzeni użytkownika z frameworkiem Endpoint Security odbywa się za pomocą klasy IOUserClient. Używane są dwie różne podklasy, w zależności od rodzaju wywołującego:
- EndpointSecurityDriverClient: Wymaga uprawnienia
com.apple.private.endpoint-security.manager
, które posiada tylko proces systemowyendpointsecurityd
. - EndpointSecurityExternalClient: Wymaga uprawnienia
com.apple.developer.endpoint-security.client
. Zazwyczaj jest to używane przez oprogramowanie zewnętrznych dostawców zabezpieczeń, które musi współdziałać z frameworkiem Endpoint Security.
Rozszerzenia Endpoint Security:libEndpointSecurity.dylib
to biblioteka C, którą rozszerzenia systemowe używają do komunikacji z jądrem. Ta biblioteka korzysta z I/O Kit (IOKit
) do komunikacji z rozszerzeniem Endpoint Security KEXT.
endpointsecurityd
to kluczowy demon systemowy odpowiedzialny za zarządzanie i uruchamianie rozszerzeń systemowych związanych z bezpieczeństwem punktu końcowego, zwłaszcza podczas wczesnego procesu uruchamiania. Tylko rozszerzenia systemowe oznaczone jako NSEndpointSecurityEarlyBoot
w pliku Info.plist
otrzymują to wczesne traktowanie podczas uruchamiania.
Inny demon systemowy, sysextd
, sprawdza poprawność rozszerzeń systemowych i przenosi je do odpowiednich lokalizacji systemowych. Następnie prosi odpowiedniego demona o załadowanie rozszerzenia. SystemExtensions.framework
jest odpowiedzialny za aktywowanie i dezaktywowanie rozszerzeń systemowych.
Omijanie ESF
ESF jest używany przez narzędzia zabezpieczeń, które próbują wykryć red teamera, więc jakiekolwiek informacje na temat tego, jak można tego uniknąć, brzmią interesująco.
CVE-2021-30965
Rzecz w tym, że aplikacja zabezpieczająca musi mieć pełny dostęp do dysku. Jeśli atakujący mógłby to usunąć, mógłby zapobiec uruchomieniu oprogramowania:
tccutil reset All
Dla więcej informacji na temat tego obejścia i powiązanych obejść, sprawdź prezentację #OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba
Na końcu problem ten został naprawiony poprzez nadanie nowego uprawnienia kTCCServiceEndpointSecurityClient
aplikacji zabezpieczeń zarządzanej przez tccd
, dzięki czemu tccutil
nie będzie usuwał jej uprawnień, co uniemożliwia jej uruchomienie.
Referencje
- OBTS v3.0: "Endpoint Security & Insecurity" - Scott Knight
- https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.