macOS XPC Connecting Process Check
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kada se uspostavi veza sa XPC servisom, server će proveriti da li je veza dozvoljena. Ovo su provere koje bi obično izvršio:
Proveri da li je proces koji se povezuje potpisan Apple-ovim sertifikatom (samo ga Apple izdaje).
Ako ovo nije verifikovano, napadač bi mogao da kreira lažni sertifikat koji bi odgovarao bilo kojoj drugoj proveri.
Proveri da li je proces koji se povezuje potpisan sertifikatom organizacije (verifikacija tim ID-a).
Ako ovo nije verifikovano, bilo koji developerski sertifikat od Apple-a može se koristiti za potpisivanje i povezivanje sa servisom.
Proveri da li proces koji se povezuje sadrži odgovarajući bundle ID.
Ako ovo nije verifikovano, bilo koji alat potpisan od iste organizacije mogao bi se koristiti za interakciju sa XPC servisom.
(4 ili 5) Proveri da li proces koji se povezuje ima odgovarajući broj verzije softvera.
Ako ovo nije verifikovano, stari, nesigurni klijenti, ranjivi na injekciju procesa mogli bi se koristiti za povezivanje sa XPC servisom čak i uz druge provere.
(4 ili 5) Proveri da li proces koji se povezuje ima ojačanu runtime bez opasnih prava (kao što su ona koja omogućavaju učitavanje proizvoljnih biblioteka ili korišćenje DYLD env varijabli).
Ako ovo nije verifikovano, klijent bi mogao biti ranjiv na injekciju koda.
Proveri da li proces koji se povezuje ima pravo koje mu omogućava povezivanje sa servisom. Ovo se primenjuje na Apple binarne datoteke.
Verifikacija mora biti zasnovana na audit token-u klijenta umesto na njegovom ID-u procesa (PID) jer prvi sprečava napade ponovne upotrebe PID-a.
Programeri retko koriste audit token API poziv jer je privatan, tako da Apple može promeniti u bilo kojem trenutku. Pored toga, korišćenje privatnog API-ja nije dozvoljeno u aplikacijama Mac App Store-a.
Ako se koristi metoda processIdentifier
, može biti ranjiva.
xpc_dictionary_get_audit_token
treba koristiti umesto xpc_connection_get_audit_token
, jer bi poslednji mogao biti ranjiv u određenim situacijama.
Za više informacija o napadu ponovne upotrebe PID-a proverite:
macOS PID ReuseZa više informacija o napadu xpc_connection_get_audit_token
proverite:
Trustcache je odbrambena metoda uvedena u Apple Silicon mašinama koja čuva bazu podataka CDHSAH Apple binarnih datoteka tako da samo dozvoljene neizmenjene binarne datoteke mogu biti izvršene. Što sprečava izvršavanje verzija sa smanjenim nivoom.
Server će implementirati ovu verifikaciju u funkciji pod nazivom shouldAcceptNewConnection
.
Objekat NSXPCConnection ima privatnu osobinu auditToken
(onu koja bi trebala da se koristi, ali može da se promeni) i javnu osobinu processIdentifier
(onu koja ne bi trebala da se koristi).
Povezani proces može se verifikovati sa nečim poput:
Ako programer ne želi da proveri verziju klijenta, mogao bi da proveri da klijent nije podložan injekciji procesa barem:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)