macOS Security Protections

Support HackTricks

Gatekeeper

Gatekeeper se obično koristi da se odnosi na kombinaciju Quarantine + Gatekeeper + XProtect, 3 macOS sigurnosna modula koja će pokušati da spreče korisnike da izvršavaju potencijalno zlonamerni softver preuzet.

Više informacija u:

macOS Gatekeeper / Quarantine / XProtect

Processes Limitants

SIP - System Integrity Protection

macOS SIP

Sandbox

MacOS Sandbox ograničava aplikacije koje se izvršavaju unutar sandboxes na dozvoljene radnje specificirane u Sandbox profilu sa kojim aplikacija radi. Ovo pomaže da se osigura da aplikacija pristupa samo očekivanim resursima.

macOS Sandbox

TCC (Transparency, Consent, and Control) je sigurnosni okvir. Dizajniran je da upravlja dozvolama aplikacija, posebno regulisanjem njihovog pristupa osetljivim funkcijama. Ovo uključuje elemente kao što su usluge lokacije, kontakti, fotografije, mikrofon, kamera, pristupačnost i pristup celom disku. TCC osigurava da aplikacije mogu pristupiti ovim funkcijama samo nakon dobijanja eksplicitne saglasnosti korisnika, čime se jača privatnost i kontrola nad ličnim podacima.

macOS TCC

Launch/Environment Constraints & Trust Cache

Ograničenja pokretanja u macOS-u su sigurnosna funkcija koja reguliše inicijaciju procesa definišući ko može pokrenuti proces, kako i odakle. Uvedena u macOS Ventura, kategorizuju sistemske binarne datoteke u kategorije ograničenja unutar trust cache. Svaka izvršna binarna datoteka ima postavljena pravila za svoje pokretanje, uključujući self, parent i responsible ograničenja. Proširena na aplikacije trećih strana kao Environment Constraints u macOS Sonoma, ove funkcije pomažu u ublažavanju potencijalnih sistemskih eksploatacija regulisanjem uslova pokretanja procesa.

macOS Launch/Environment Constraints & Trust Cache

MRT - Malware Removal Tool

Alat za uklanjanje zlonamernog softvera (MRT) je još jedan deo sigurnosne infrastrukture macOS-a. Kao što ime sugeriše, glavna funkcija MRT-a je da ukloni poznati zlonamerni softver sa zaraženih sistema.

Kada se zlonamerni softver otkrije na Mac-u (bilo putem XProtect-a ili nekim drugim sredstvima), MRT se može koristiti za automatsko uklanjanje zlonamernog softvera. MRT radi tiho u pozadini i obično se pokreće svaki put kada se sistem ažurira ili kada se preuzima nova definicija zlonamernog softvera (izgleda da su pravila koja MRT ima za otkrivanje zlonamernog softvera unutar binarne datoteke).

Dok su i XProtect i MRT deo sigurnosnih mera macOS-a, oni obavljaju različite funkcije:

  • XProtect je preventivni alat. Proverava datoteke dok se preuzimaju (putem određenih aplikacija), i ako otkrije bilo koje poznate vrste zlonamernog softvera, sprečava otvaranje datoteke, čime sprečava zlonamerni softver da inficira vaš sistem u prvom redu.

  • MRT, s druge strane, je reaktivni alat. Deluje nakon što je zlonamerni softver otkriven na sistemu, sa ciljem da ukloni problematični softver kako bi očistio sistem.

Aplikacija MRT se nalazi u /Library/Apple/System/Library/CoreServices/MRT.app

Background Tasks Management

macOS sada obaveštava svaki put kada alat koristi dobro poznatu tehniku za persistenciju izvršavanja koda (kao što su Login Items, Daemons...), tako da korisnik bolje zna koji softver persistira.

Ovo se pokreće sa daemon-om lociranim u /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd i agentom u /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app

Način na koji backgroundtaskmanagementd zna da je nešto instalirano u persistentnom folderu je dobijanje FSEvents i kreiranje nekih handler-a za njih.

Štaviše, postoji plist datoteka koja sadrži dobro poznate aplikacije koje često persistiraju, a koju održava Apple, locirana u: /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"
}
[...]

Enumeration

Moguće je enumerisati sve konfigurirane pozadinske stavke koristeći Apple cli alat:

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

Pored toga, takođe je moguće prikazati ove informacije pomoću DumpBTM.

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

Ove informacije se čuvaju u /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm i Terminalu je potrebna FDA.

Mešanje sa BTM

Kada se pronađe nova perzistencija, događa se događaj tipa ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD. Dakle, bilo koji način da se spreči slanje ovog događaja ili da agent ne obavesti korisnika će pomoći napadaču da zaobiđe BTM.

  • Resetovanje baze podataka: Pokretanje sledeće komande će resetovati bazu podataka (trebalo bi da je ponovo izgradi od nule), međutim, iz nekog razloga, nakon pokretanja ovoga, nema novih perzistencija koje će biti obaveštene dok se sistem ne restartuje.

  • root je potreban.

# Reset the database
sfltool resettbtm
  • Zaustavite agenta: Moguće je poslati signal za zaustavljanje agentu tako da neće obaveštavati korisnika kada se pronađu nova otkrića.

# 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
  • Greška: Ako proces koji je stvorio postojanost brzo nestane nakon njega, demon će pokušati da dobije informacije o njemu, neće uspeti i neće moći da pošalje događaj koji ukazuje na to da nova stvar postojano traje.

Reference i više informacija o BTM:

Support HackTricks

Last updated