macOS XPC Connecting Process Check
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Bir XPC hizmetine bağlantı kurulduğunda, sunucu bağlantının izinli olup olmadığını kontrol eder. Genellikle gerçekleştireceği kontroller şunlardır:
Bağlanan sürecin Apple imzalı bir sertifika ile imzalanıp imzalanmadığını kontrol et.
Eğer bu doğrulanmazsa, bir saldırgan herhangi bir diğer kontrolle eşleşecek sahte bir sertifika oluşturabilir.
Bağlanan sürecin kuruluşun sertifikasıyla imzalanıp imzalanmadığını kontrol et (takım ID doğrulaması).
Eğer bu doğrulanmazsa, Apple'dan alınan herhangi bir geliştirici sertifikası imzalamak için kullanılabilir ve hizmete bağlanabilir.
Bağlanan sürecin uygun bir paket kimliğine sahip olup olmadığını kontrol et.
Eğer bu doğrulanmazsa, aynı kuruluş tarafından imzalanmış herhangi bir araç XPC hizmeti ile etkileşimde bulunmak için kullanılabilir.
(4 veya 5) Bağlanan sürecin uygun bir yazılım sürüm numarasına sahip olup olmadığını kontrol et.
Eğer bu doğrulanmazsa, eski, güvensiz istemciler, süreç enjeksiyonuna karşı savunmasız olarak XPC hizmetine bağlanmak için kullanılabilir.
(4 veya 5) Bağlanan sürecin tehlikeli yetkilere sahip olmadan sertleştirilmiş çalışma zamanı olup olmadığını kontrol et (örneğin, rastgele kütüphaneleri yüklemeye veya DYLD ortam değişkenlerini kullanmaya izin verenler gibi).
Eğer bu doğrulanmazsa, istemci kod enjeksiyonuna karşı savunmasız olabilir.
Bağlanan sürecin hizmete bağlanmasına izin veren bir yetkiye sahip olup olmadığını kontrol et. Bu, Apple ikili dosyaları için geçerlidir.
Doğrulama, bağlanan istemcinin denetim belirtecine dayanmalıdır ve süreç ID'sine (PID) değil çünkü ilki PID yeniden kullanım saldırılarını önler.
Geliştiriciler denetim belirteci API çağrısını nadiren kullanır çünkü bu özeldir, bu nedenle Apple istediği zaman değiştirebilir. Ayrıca, özel API kullanımı Mac App Store uygulamalarında yasaklanmıştır.
processIdentifier
yöntemi kullanılıyorsa, savunmasız olabilir.
xpc_dictionary_get_audit_token
yerine xpc_connection_get_audit_token
kullanılmalıdır, çünkü sonuncusu belirli durumlarda savunmasız olabilir.
PID yeniden kullanım saldırısı hakkında daha fazla bilgi için kontrol edin:
xpc_connection_get_audit_token
saldırısı hakkında daha fazla bilgi için kontrol edin:
Trustcache, yalnızca izin verilen değiştirilmemiş ikili dosyaların çalıştırılmasını sağlayan Apple Silicon makinelerinde tanıtılan savunma yöntemidir. Bu, aşağı sürüm versiyonlarının çalıştırılmasını önler.
Sunucu bu doğrulamayı shouldAcceptNewConnection
adlı bir işlevde uygulayacaktır.
NSXPCConnection nesnesinin özel bir özelliği auditToken
(kullanılması gereken ama değişebilecek olan) ve genel bir özelliği processIdentifier
(kullanılmaması gereken) vardır.
Bağlanan süreç, şu şekilde doğrulanabilir:
Eğer bir geliştirici istemcinin sürümünü kontrol etmek istemiyorsa, en azından istemcinin işlem enjeksiyonuna karşı savunmasız olmadığını kontrol edebilir:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)