macOS Sistem Uzantıları

Reading time: 5 minutes

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Sistem Uzantıları / Uç Nokta Güvenlik Çerçevesi

Kernel Uzantılarının aksine, Sistem Uzantıları kullanıcı alanında çalışır ve bu da uzantı arızası nedeniyle sistem çökmesi riskini azaltır.

https://knight.sc/images/system-extension-internals-1.png

Üç tür sistem uzantısı vardır: DriverKit Uzantıları, Uzantıları ve Uç Nokta Güvenliği Uzantıları.

DriverKit Uzantıları

DriverKit, donanım desteği sağlayan kernel uzantılarının yerini alır. Cihaz sürücülerinin (USB, Seri, NIC ve HID sürücüleri gibi) kernel alanı yerine kullanıcı alanında çalışmasına olanak tanır. DriverKit çerçevesi, belirli I/O Kit sınıflarının kullanıcı alanı sürümlerini içerir ve kernel, normal I/O Kit olaylarını kullanıcı alanına ileterek bu sürücülerin çalışması için daha güvenli bir ortam sunar.

Ağ Uzantıları

Ağ Uzantıları, ağ davranışlarını özelleştirme yeteneği sağlar. Birkaç tür Ağ Uzantısı vardır:

  • Uygulama Proxy: Akış odaklı, özel bir VPN protokolü uygulayan bir VPN istemcisi oluşturmak için kullanılır. Bu, ağ trafiğini bağlantılara (veya akışlara) göre yönetmesi anlamına gelir, bireysel paketler yerine.
  • Paket Tüneli: Bireysel paketlere dayalı, özel bir VPN protokolü uygulayan bir VPN istemcisi oluşturmak için kullanılır. Bu, ağ trafiğini bireysel paketler bazında yönetmesi anlamına gelir.
  • Veri Filtreleme: Ağ "akışlarını" filtrelemek için kullanılır. Akış düzeyinde ağ verilerini izleyebilir veya değiştirebilir.
  • Paket Filtreleme: Bireysel ağ paketlerini filtrelemek için kullanılır. Paket düzeyinde ağ verilerini izleyebilir veya değiştirebilir.
  • DNS Proxy: Özel bir DNS sağlayıcısı oluşturmak için kullanılır. DNS isteklerini ve yanıtlarını izlemek veya değiştirmek için kullanılabilir.

Uç Nokta Güvenlik Çerçevesi

Uç Nokta Güvenliği, Apple tarafından macOS'ta sağlanan bir çerçevedir ve sistem güvenliği için bir dizi API sunar. Güvenlik satıcıları ve geliştiricilerin kötü niyetli etkinlikleri tanımlamak ve korumak için sistem etkinliğini izleyip kontrol edebilecekleri ürünler geliştirmeleri amacıyla kullanılır.

Bu çerçeve, sistem etkinliğini izlemek ve kontrol etmek için bir dizi API sağlar; örneğin, işlem yürütmeleri, dosya sistemi olayları, ağ ve kernel olayları gibi.

Bu çerçevenin temeli, /System/Library/Extensions/EndpointSecurity.kext konumunda bulunan bir Kernel Uzantısı (KEXT) olarak kernel'de uygulanmıştır. Bu KEXT, birkaç ana bileşenden oluşur:

  • EndpointSecurityDriver: Bu, kernel uzantısı için "giriş noktası" olarak işlev görür. OS ile Uç Nokta Güvenlik çerçevesi arasındaki ana etkileşim noktasıdır.
  • EndpointSecurityEventManager: Bu bileşen, kernel kancalarını uygulamaktan sorumludur. Kernel kancaları, çerçevenin sistem olaylarını izleyebilmesi için sistem çağrılarını kesmesine olanak tanır.
  • EndpointSecurityClientManager: Bu, kullanıcı alanı istemcileriyle iletişimi yönetir, hangi istemcilerin bağlı olduğunu ve olay bildirimlerini alması gerektiğini takip eder.
  • EndpointSecurityMessageManager: Bu, kullanıcı alanı istemcilerine mesajlar ve olay bildirimleri gönderir.

Uç Nokta Güvenlik çerçevesinin izleyebileceği olaylar şunlara ayrılır:

  • Dosya olayları
  • İşlem olayları
  • Soket olayları
  • Kernel olayları (örneğin, bir kernel uzantısının yüklenmesi/boşaltılması veya bir I/O Kit cihazının açılması)

Uç Nokta Güvenlik Çerçevesi Mimarisi

https://www.youtube.com/watch?v=jaVkpM1UqOs

Kullanıcı alanı iletişimi, IOUserClient sınıfı aracılığıyla Uç Nokta Güvenlik çerçevesi ile gerçekleşir. İki farklı alt sınıf, çağıran türüne bağlı olarak kullanılır:

  • EndpointSecurityDriverClient: Bu, yalnızca sistem süreci endpointsecurityd tarafından tutulan com.apple.private.endpoint-security.manager yetkisini gerektirir.
  • EndpointSecurityExternalClient: Bu, com.apple.developer.endpoint-security.client yetkisini gerektirir. Bu genellikle Uç Nokta Güvenlik çerçevesi ile etkileşimde bulunması gereken üçüncü taraf güvenlik yazılımları tarafından kullanılır.

Uç Nokta Güvenlik Uzantıları:libEndpointSecurity.dylib sistem uzantılarının kernel ile iletişim kurmak için kullandığı C kütüphanesidir. Bu kütüphane, Uç Nokta Güvenlik KEXT ile iletişim kurmak için I/O Kit (IOKit) kullanır.

endpointsecurityd uç nokta güvenlik sistem uzantılarını yönetmek ve başlatmakla ilgili önemli bir sistem daemon'udur, özellikle erken önyükleme sürecinde. Sadece sistem uzantıları, Info.plist dosyalarında NSEndpointSecurityEarlyBoot ile işaretlenmiş olanlar bu erken önyükleme muamelesini alır.

Başka bir sistem daemon'u, sysextd, sistem uzantılarını doğrular ve bunları uygun sistem konumlarına taşır. Ardından ilgili daemon'dan uzantıyı yüklemesini ister. SystemExtensions.framework sistem uzantılarını etkinleştirmek ve devre dışı bırakmakla sorumludur.

ESF'yi Aşmak

ESF, bir kırmızı takım üyesini tespit etmeye çalışan güvenlik araçları tarafından kullanılır, bu nedenle bunun nasıl önlenebileceğine dair herhangi bir bilgi ilginçtir.

CVE-2021-30965

Sorun, güvenlik uygulamasının Tam Disk Erişimi izinlerine sahip olması gerektiğidir. Yani, bir saldırgan bunu kaldırabilirse, yazılımın çalışmasını engelleyebilir:

bash
tccutil reset All

Daha fazla bilgi için bu bypass ve ilgili olanlar hakkında #OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba konuşmasına bakın.

Sonunda, bu, tccd tarafından yönetilen güvenlik uygulamasına yeni izin kTCCServiceEndpointSecurityClient verilerek düzeltildi, böylece tccutil izinlerini temizlemeyecek ve çalışmasını engellemeyecek.

Referanslar

tip

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin