macOS Ochrona Bezpieczeństwa

Reading time: 6 minutes

tip

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) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Gatekeeper

Gatekeeper zazwyczaj odnosi się do kombinacji Quarantine + Gatekeeper + XProtect, 3 modułów zabezpieczeń macOS, które próbują zapobiec użytkownikom w uruchamianiu potencjalnie złośliwego oprogramowania pobranego.

Więcej informacji w:

macOS Gatekeeper / Quarantine / XProtect

Ograniczenia Procesów

MACF

SIP - Ochrona Integralności Systemu

macOS SIP

Sandbox

MacOS Sandbox ogranicza aplikacje działające w piaskownicy do dozwolonych działań określonych w profilu Sandbox, z którym działa aplikacja. Pomaga to zapewnić, że aplikacja będzie miała dostęp tylko do oczekiwanych zasobów.

macOS Sandbox

TCC - Przejrzystość, Zgoda i Kontrola

TCC (Przejrzystość, Zgoda i Kontrola) to ramy zabezpieczeń. Zostały zaprojektowane, aby zarządzać uprawnieniami aplikacji, regulując ich dostęp do wrażliwych funkcji. Obejmuje to elementy takie jak usługi lokalizacji, kontakty, zdjęcia, mikrofon, kamera, dostęp do pełnego dysku. TCC zapewnia, że aplikacje mogą uzyskać dostęp do tych funkcji tylko po uzyskaniu wyraźnej zgody użytkownika, co wzmacnia prywatność i kontrolę nad danymi osobowymi.

macOS TCC

Ograniczenia Uruchamiania/Środowiska i Pamięć Zaufania

Ograniczenia uruchamiania w macOS to funkcja zabezpieczeń, która reguluje inicjację procesów poprzez definiowanie kto może uruchomić proces, jak i skąd. Wprowadzona w macOS Ventura, klasyfikuje binaria systemowe w kategorie ograniczeń w ramach pamięci zaufania. Każdy wykonywalny plik binarny ma ustalone zasady dotyczące swojego uruchomienia, w tym własne, rodzica i odpowiedzialne ograniczenia. Rozszerzone na aplikacje innych firm jako Ograniczenia Środowiska w macOS Sonoma, te funkcje pomagają łagodzić potencjalne wykorzystania systemu poprzez regulowanie warunków uruchamiania procesów.

macOS Launch/Environment Constraints & Trust Cache

MRT - Narzędzie Usuwania Złośliwego Oprogramowania

Narzędzie Usuwania Złośliwego Oprogramowania (MRT) to kolejna część infrastruktury zabezpieczeń macOS. Jak sama nazwa wskazuje, główną funkcją MRT jest usuwanie znanego złośliwego oprogramowania z zainfekowanych systemów.

Gdy złośliwe oprogramowanie zostanie wykryte na Macu (czy to przez XProtect, czy w inny sposób), MRT może być użyte do automatycznego usunięcia złośliwego oprogramowania. MRT działa cicho w tle i zazwyczaj uruchamia się, gdy system jest aktualizowany lub gdy pobierana jest nowa definicja złośliwego oprogramowania (wygląda na to, że zasady, które MRT ma do wykrywania złośliwego oprogramowania, są w binarnym pliku).

Chociaż zarówno XProtect, jak i MRT są częścią środków zabezpieczeń macOS, pełnią różne funkcje:

  • XProtect to narzędzie zapobiegawcze. Sprawdza pliki w momencie ich pobierania (za pośrednictwem niektórych aplikacji), a jeśli wykryje jakiekolwiek znane rodzaje złośliwego oprogramowania, zapobiega otwarciu pliku, tym samym zapobiegając infekcji systemu od samego początku.
  • MRT, z drugiej strony, to narzędzie reaktywne. Działa po wykryciu złośliwego oprogramowania w systemie, mając na celu usunięcie szkodliwego oprogramowania w celu oczyszczenia systemu.

Aplikacja MRT znajduje się w /Library/Apple/System/Library/CoreServices/MRT.app

Zarządzanie Zadaniami Tła

macOS teraz powiadamia za każdym razem, gdy narzędzie używa znanej techniki do utrzymywania wykonania kodu (takiej jak Elementy Logowania, Demony...), aby użytkownik lepiej wiedział które oprogramowanie się utrzymuje.

Działa to z demonem znajdującym się w /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd oraz agentem w /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app

Sposób, w jaki backgroundtaskmanagementd wie, że coś jest zainstalowane w folderze persistent, polega na uzyskaniu FSEvents i utworzeniu kilku handlerów dla nich.

Ponadto istnieje plik plist, który zawiera znane aplikacje, które często się utrzymują, zarządzany przez Apple, znajdujący się w: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

json
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]

Enumeracja

Możliwe jest wyenumerowanie wszystkich skonfigurowanych elementów w tle za pomocą narzędzia Apple cli:

bash
# The tool will always ask for the users password
sfltool dumpbtm

Ponadto możliwe jest również wylistowanie tych informacji za pomocą DumpBTM.

bash
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM

Te informacje są przechowywane w /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm i Terminal potrzebuje FDA.

Manipulowanie BTM

Gdy zostanie znalezione nowe utrwalenie, występuje zdarzenie typu ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Zatem wszelkie sposoby na zapobieżenie wysłaniu tego zdarzenia lub powiadomieniu użytkownika przez agenta pomogą atakującemu w obejściu BTM.

  • Resetowanie bazy danych: Uruchomienie następującego polecenia zresetuje bazę danych (powinno odbudować ją od podstaw), jednak z jakiegoś powodu, po uruchomieniu tego, żadne nowe utrwalenie nie będzie zgłaszane, dopóki system nie zostanie ponownie uruchomiony.
  • Wymagany jest root.
bash
# Reset the database
sfltool resettbtm
  • Zatrzymaj Agenta: Możliwe jest wysłanie sygnału zatrzymania do agenta, aby nie informował użytkownika o nowych wykryciach.
bash
# Get PID
pgrep BackgroundTaskManagementAgent
1011

# Stop it
kill -SIGSTOP 1011

# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
  • Błąd: Jeśli proces, który stworzył persistencję, istnieje szybko zaraz po nim, demon spróbuje uzyskać informacje na jego temat, nie powiedzie się i nie będzie w stanie wysłać zdarzenia wskazującego, że nowa rzecz się utrzymuje.

References and więcej informacji o BTM:

tip

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) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks