macOS System Extensions

AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitimi AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitimi GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin

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

Kernel Uzantılarından farklı olarak, Sistem Uzantıları kernel alanı yerine kullanıcı alanında çalışır, bu da uzantı arızası nedeniyle sistem çökme 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üvenlik Uzantıları.

DriverKit Uzantıları

DriverKit, donanım desteği sağlayan kernel uzantılarının yerine geçen bir sistemdir. USB, Seri, NIC ve HID sürücüleri gibi cihaz 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ı vardır:

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

  • Paket Tüneli: Bu, bireysel paketlere dayalı olarak 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ı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'ın macOS'ta sağladığı bir çerçevedir ve sistem güvenliği için bir dizi API sağlar. Kötü amaçlı faaliyetleri tanımlamak ve korumak için sistem etkinliğini izlemek ve kontrol etmek üzere 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 koleksiyonu 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, birkaç temel bileşenden oluşur:

  • EndpointSecurityDriver: Bu, çekirdek uzantısının "giriş noktası" olarak hareket eder. OS 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

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

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 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ç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 daemonudur. Yalnızca Info.plist dosyasındaki NSEndpointSecurityEarlyBoot ile işaretlenen sistem uzantıları, bu erken başlatma işleminden faydalanır.

Başka bir sistem daemonu olan sysextd, sistem uzantılarını doğrular ve bunları uygun sistem konumlarına taşır. Daha sonra ilgili daemonun uzantıyı yüklemesini 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 yüzden bunun nasıl atlatılabileceği hakkında herhangi bir bilgi ilginç gelebilir.

CVE-2021-30965

İşin aslı, güvenlik uygulamasının Tam Disk Erişimi izinlerine sahip olması gerekmektedir. Bu nedenle, bir saldırgan bunu kaldırabilirse, 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ğu" - Fitzl Csaba konuşmasına bakabilirsiniz.

Sonunda, tccd tarafından yönetilen güvenlik uygulamasına yeni izin kTCCServiceEndpointSecurityClient verilerek bu izinlerini temizlemesini önleyerek çalışmasını engellemesi engellendi.

Referanslar

AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitimi AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitimi GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Last updated