macOS Security Protections

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Gatekeeper

Gatekeeper to zazwyczaj odniesienie do kombinacji Kwarantanna + Gatekeeper + XProtect, 3 modułów bezpieczeństwa macOS, które będą próbować zapobiec użytkownikom uruchamiania potencjalnie złośliwego oprogramowania pobranego.

Więcej informacji w:

pagemacOS Gatekeeper / Quarantine / XProtect

Ograniczenia procesów

SIP - Ochrona Integralności Systemu

pagemacOS SIP

Piaskownica

Piaskownica macOS ogranicza działanie aplikacji uruchamianych wewnątrz piaskownicy do dozwolonych działań określonych w profilu piaskownicy, z jakim aplikacja jest uruchamiana. Pomaga to zapewnić, że aplikacja będzie uzyskiwać dostęp tylko do oczekiwanych zasobów.

pagemacOS Sandbox

TCC - Przejrzystość, Zgoda i Kontrola

TCC (Przejrzystość, Zgoda i Kontrola) to framework bezpieczeństwa. Został zaprojektowany do zarządzania uprawnieniami aplikacji, w szczególności poprzez regulowanie ich dostępu do wrażliwych funkcji. Obejmuje to elementy takie jak usługi lokalizacyjne, kontakty, zdjęcia, mikrofon, kamera, dostępność i pełny dostęp do dysku. TCC zapewnia, że aplikacje mogą uzyskać dostęp do tych funkcji dopiero po uzyskaniu wyraźnej zgody użytkownika, wzmacniając tym samym prywatność i kontrolę nad danymi osobowymi.

pagemacOS TCC

Ograniczenia uruchamiania/środowiska i pamięć podręczna zaufania

Ograniczenia uruchamiania w macOS to funkcja bezpieczeństwa, która reguluje inicjowanie procesu, określając kto może uruchomić proces, jak i skąd. Wprowadzone w macOS Ventura, kategoryzują binaria systemowe do kategorii ograniczeń w pamięci podręcznej zaufania. Każdy binarny plik wykonywalny ma określone zasady dla swojego uruchamiania, w tym ograniczenia własne, rodzica i odpowiedzialne. Rozszerzone na aplikacje innych firm jako Ograniczenia Środowiskowe w macOS Sonoma, te funkcje pomagają zmniejszyć potencjalne wykorzystania systemu, regulując warunki uruchamiania procesu.

pagemacOS Launch/Environment Constraints & Trust Cache

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

Narzędzie do usuwania złośliwego oprogramowania (MRT) to kolejna część infrastruktury bezpieczeństwa macOS. Jak sugeruje nazwa, główną funkcją MRT jest usuwanie znanego złośliwego oprogramowania z zainfekowanych systemów.

Gdy złośliwe oprogramowanie zostanie wykryte na Macu (zarówno przez XProtect, jak i innymi środkami), MRT może być używane do automatycznego usunięcia złośliwego oprogramowania. MRT działa w tle i zazwyczaj uruchamia się za każdym razem, gdy system jest aktualizowany lub gdy pobierana jest nowa definicja złośliwego oprogramowania (wygląda na to, że reguły, według których MRT wykrywa złośliwe oprogramowanie, znajdują się wewnątrz binariów).

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

  • XProtect to narzędzie zapobiegawcze. Sprawdza pliki podczas pobierania (za pośrednictwem określonych aplikacji) i jeśli wykryje jakiekolwiek znane rodzaje złośliwego oprogramowania, zapobiega otwarciu pliku, uniemożliwiając tym samym zainfekowanie systemu złośliwym oprogramowaniem na samym początku.

  • MRT natomiast jest narzędziem reaktywnym. 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 w Tle

macOS teraz informuje za każdym razem, gdy narzędzie wykorzystuje dobrze znaną technikę trwałego wykonywania kodu (taką jak Elementy logowania, Daemony...), dzięki czemu użytkownik lepiej wie, które oprogramowanie jest trwałe.

To działa z daemonem 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 trwałym folderze, polega na uzyskiwaniu zdarzeń FSEvents i tworzeniu pewnych obsług dla nich.

Co więcej, istnieje plik plist zawierający dobrze znane aplikacje, które często są trwałe, utrzymywane przez Apple, znajdujący się pod adresem: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

[...]
"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"
}
[...]

Wyliczanie

Możliwe jest wyliczenie wszystkich skonfigurowanych elementów w tle za pomocą narzędzia wiersza poleceń Apple:

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

Ponadto istnieje możliwość wyświetlenia tych informacji za pomocą DumpBTM.

# 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.

Bawienie się z BTM

Kiedy zostanie znalezione nowe trwałe zdarzenie typu ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Więc, każdy sposób na zapobieżenie wysłania tego zdarzenia lub powiadomienia agenta użytkownika pomoże atakującemu w obejściu BTM.

  • Zresetowanie bazy danych: Uruchomienie poniższej komendy zresetuje bazę danych (powinno ją odbudować od nowa), jednakże, z jakiegoś powodu, po jej uruchomieniu, żadne nowe trwałe zdarzenie nie zostanie zgłoszone aż do ponownego uruchomienia systemu.

  • Wymagane jest bycie root.

# Reset the database
sfltool resettbtm
  • Zatrzymaj agenta: Istnieje możliwość wysłania sygnału zatrzymania do agenta, dzięki czemu nie będzie on alarmował użytkownika, gdy zostaną znalezione nowe wykrycia.

# 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 utworzył trwałość, istnieje szybko zaraz po tym, demon spróbuje uzyskać informacje na jego temat, zawiódł, i nie będzie w stanie wysłać zdarzenia wskazującego, że coś nowego jest trwałe.

Odnośniki i więcej informacji o BTM:

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated