macOS System Extensions

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

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

Sistem Uzantıları, Kernel Uzantıları'nın aksine kullanıcı alanında çalışır, böylece uzantı arızası nedeniyle sistem çökme riskini azaltır.

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

DriverKit Uzantıları

DriverKit, donanım desteği sağlayan kernel uzantılarının yerine geçen bir yapıdır. USB, Seri, NIC ve HID sürücüleri gibi aygıt sürücülerinin kernel alanı yerine kullanıcı alanında çalışmasına izin verir. DriverKit çerçevesi, belirli I/O Kit sınıflarının kullanıcı alanı sürümlerini içerir ve çekirdek, 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ştirmeyi sağlar. Birkaç tür Ağ Uzantısı bulunmaktadır:

  • Uygulama Proxy: Bu, bağlantılar (veya akışlar) yerine bireysel paketlere dayalı ağ trafiğini işleyen özel bir VPN istemcisi oluşturmak için kullanılır.

  • Paket Tüneli: Bu, bireysel paketlere dayalı ağ trafiğini işleyen özel bir VPN istemcisi oluşturmak için kullanılır.

  • Veri Filtresi: Bu, ağ "akışlarını" filtrelemek için kullanılır. Ağ verilerini akış düzeyinde izleyebilir veya değiştirebilir.

  • Paket Filtresi: Bu, bireysel ağ paketlerini filtrelemek için kullanılır. Ağ verilerini paket düzeyinde izleyebilir veya değiştirebilir.

  • DNS Proxy: Bu, özel bir DNS sağlayıcı 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'ın macOS'ta sağladığı bir çerçevedir ve sistem güvenliği için bir dizi API sağlar. Kötü niyetli faaliyetleri tanımlamak ve korumak için ürünler geliştirmek isteyen güvenlik satıcıları ve geliştiriciler tarafından kullanılması amaçlanmıştır.

Bu çerçeve, işlem yürütmeleri, dosya sistemi olayları, ağ ve çekirdek olayları gibi sistem etkinliklerini izlemek ve kontrol etmek için bir dizi API sağlar.

Bu çerçevenin çekirdeği, /System/Library/Extensions/EndpointSecurity.kext konumunda bulunan bir Kernel Uzantısı (KEXT) olarak uygulanmıştır. Bu KEXT'in birkaç temel bileşeni bulunmaktadır:

  • EndpointSecurityDriver: Bu, çekirdek uzantısının "giriş noktası" olarak hareket eder. İşletim sistemi ile Uç Nokta Güvenlik çerçevesi arasındaki ana etkileşim noktasıdır.

  • EndpointSecurityEventManager: Bu bileşen, çekirdek kancalarını uygulamaktan sorumludur. Çekirdek kancaları, çerçevenin sistem çağrılarını engelleyerek sistem olaylarını izlemesine olanak tanır.

  • EndpointSecurityClientManager: Bu, kullanıcı alanı istemcileriyle iletişimi yönetir, hangi istemcilerin bağlı olduğunu ve olay bildirimleri alması gerektiğini takip eder.

  • EndpointSecurityMessageManager: Bu, mesajları ve olay bildirimlerini kullanıcı alanı istemcilerine gönderir.

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

  • Dosya olayları

  • İşlem olayları

  • Soket olayları

  • Çekirdek olayları (örneğin bir çekirdek uzantısını yükleme/boşaltma veya bir I/O Kit cihazını açma)

Uç Nokta Güvenlik Çerçevesi Mimarisi

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

  • EndpointSecurityDriverClient: Bu, yalnızca sistem işlemi 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çevesiyle etkileşimde bulunması gereken üçüncü taraf güvenlik yazılımı tarafından kullanılır.

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

endpointsecurityd, özellikle erken başlatma sürecinde uç nokta güvenlik sistem uzantılarını yöneten ve başlatan önemli bir sistem hizmetidir. Yalnızca Info.plist dosyasındaki NSEndpointSecurityEarlyBoot ile işaretlenmiş yalnızca sistem uzantıları, bu erken başlatma işleminden faydalanır.

Başka bir sistem hizmeti olan sysextd, sistem uzantılarını doğrular ve bunları uygun sistem konumlarına taşır. Daha sonra ilgili hizmetten uzantının yüklenmesini ister. SystemExtensions.framework, sistem uzantılarını etkinleştirme ve devre dışı bırakma işlevinden sorumludur.

ESF'nin Atlatılması

ESF, kırmızı takımı tespit etmeye çalışacak güvenlik araçları tarafından kullanılır, bu nedenle bunun nasıl atlatılabileceğine dair herhangi bir bilgi ilginç gelebilir.

CVE-2021-30965

İşin aslı, güvenlik uygulamasının Tam Disk Erişimi izinlerine sahip olması gerekmektedir. Bu izni kaldırabilen bir saldırgan, yazılımın çalışmasını engelleyebilir:

tccutil reset All

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

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

Referanslar

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated