macOS Sandbox
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
MacOS Sandbox (ilk adı Seatbelt) sandbox içinde çalışan uygulamaları uygulamanın çalıştığı Sandbox profilinde belirtilen izin verilen eylemlerle sınırlar. Bu, uygulamanın yalnızca beklenen kaynaklara erişmesini sağlamaya yardımcı olur.
com.apple.security.app-sandbox
yetkisine sahip herhangi bir uygulama sandbox içinde çalıştırılacaktır. Apple ikili dosyaları genellikle bir Sandbox içinde çalıştırılır ve App Store'da yayınlamak için bu yetki zorunludur. Bu nedenle, çoğu uygulama sandbox içinde çalıştırılacaktır.
Bir sürecin ne yapabileceğini veya ne yapamayacağını kontrol etmek için Sandbox, çekirdek boyunca tüm syscalls'da kancalara sahiptir. Uygulamanın yetkilerine bağlı olarak Sandbox belirli eylemleri izin verir.
Sandbox'ın bazı önemli bileşenleri şunlardır:
çekirdek uzantısı
/System/Library/Extensions/Sandbox.kext
özel çerçeve
/System/Library/PrivateFrameworks/AppSandbox.framework
Kullanıcı alanında çalışan bir daemon
/usr/libexec/sandboxd
kapsayıcılar
~/Library/Containers
Kapsayıcılar klasörü içinde, sandbox içinde çalıştırılan her uygulama için bir klasör bulabilirsiniz ve bu klasörün adı bundle id'sidir:
Her bir bundle id klasörünün içinde plist ve uygulamanın Data dizini bulunabilir:
Not edin ki, symlinkler Sandbox'tan "kaçmak" ve diğer klasörlere erişmek için orada olsa da, Uygulamanın yine de onlara erişim için izinlere sahip olması gerekir. Bu izinler .plist
dosyasının içindedir.
Sandboxed bir uygulama tarafından oluşturulan/değiştirilen her şey karantina niteliği alacaktır. Bu, sandbox uygulaması open
ile bir şey çalıştırmaya çalıştığında Gatekeeper'ı tetikleyerek bir sandbox alanını engelleyecektir.
Sandbox Profilleri
Sandbox profilleri, o Sandbox içinde neyin izin verileceğini/yasaklanacağını belirten yapılandırma dosyalarıdır. Sandbox Profil Dili (SBPL) kullanır ve bu dil Scheme programlama dilini temel alır.
Burada bir örnek bulabilirsiniz:
Bu araştırmaya izin verilebilecek veya reddedilebilecek daha fazla eylemi kontrol etmek için bakın.
Önemli sistem hizmetleri kendi özel sandbox'larında çalışır, örneğin mdnsresponder
hizmeti. Bu özel sandbox profillerini şu konumda görüntüleyebilirsiniz:
/usr/share/sandbox
/System/Library/Sandbox/Profiles
Diğer sandbox profilleri https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles adresinde kontrol edilebilir.
App Store uygulamaları /System/Library/Sandbox/Profiles/application.sb
profilini kullanır. Bu profilde com.apple.security.network.server
gibi yetkilendirmelerin bir sürecin ağı kullanmasına nasıl izin verdiğini kontrol edebilirsiniz.
SIP, /System/Library/Sandbox/rootless.conf içinde platform_profile olarak adlandırılan bir Sandbox profilidir.
Sandbox Profil Örnekleri
Belirli bir sandbox profili ile bir uygulamayı başlatmak için şunu kullanabilirsiniz:
Not edin ki Apple tarafından yazılmış yazılım, Windows üzerinde ek güvenlik önlemlerine sahip değildir, örneğin uygulama sandboxing.
Atlatma örnekleri:
https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c (sandbox dışına
~$
ile başlayan dosyalar yazabiliyorlar).
MacOS Sandbox Profilleri
macOS, sistem sandbox profillerini iki konumda saklar: /usr/share/sandbox/ ve /System/Library/Sandbox/Profiles.
Ve eğer bir üçüncü taraf uygulama com.apple.security.app-sandbox yetkisine sahipse, sistem bu süreç için /System/Library/Sandbox/Profiles/application.sb profilini uygular.
iOS Sandbox Profili
Varsayılan profil container olarak adlandırılır ve SBPL metin temsiline sahip değiliz. Bellekte, bu sandbox, sandbox'tan her izin için Allow/Deny ikili ağacı olarak temsil edilir.
Debug & Sandbox'ı Atlatma
macOS'ta, iOS'tan farklı olarak, süreçler başlangıçta çekirdek tarafından sandbox'a alınmaz, süreçlerin kendilerinin sandbox'a katılmayı seçmesi gerekir. Bu, macOS'ta bir sürecin, aktif olarak girmeye karar vermediği sürece sandbox tarafından kısıtlanmadığı anlamına gelir.
Süreçler, com.apple.security.app-sandbox
yetkisine sahip olduklarında kullanıcı alanından otomatik olarak sandbox'a alınır. Bu sürecin detaylı açıklaması için kontrol edin:
PID Yetkilerini Kontrol Et
Buna göre, sandbox_check
(bu bir __mac_syscall
), belirli bir PID'de bir işlemin izinli olup olmadığını kontrol edebilir.
sbtool aracı, bir PID'nin belirli bir eylemi gerçekleştirip gerçekleştiremeyeceğini kontrol edebilir:
App Store uygulamalarında Özel SBPL
Şirketlerin uygulamalarını özel Sandbox profilleriyle çalıştırmaları mümkün olabilir (varsayılan olan yerine). Bunun için Apple tarafından yetkilendirilmesi gereken com.apple.security.temporary-exception.sbpl
yetkisini kullanmaları gerekir.
Bu yetkinin tanımını /System/Library/Sandbox/Profiles/application.sb:
dosyasında kontrol etmek mümkündür.
Bu, bu yetki sonrasındaki dizeyi bir Sandbox profili olarak değerlendirecektir.
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)
Last updated