hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections
2024-02-10 18:14:16 +00:00
..
macos-fs-tricks Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-sandbox Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-tcc Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-dangerous-entitlements.md Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-gatekeeper.md Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-launch-environment-constraints.md Translated to Turkish 2024-02-10 18:14:16 +00:00
macos-sip.md Translated to Turkish 2024-02-10 18:14:16 +00:00
README.md Translated to Turkish 2024-02-10 18:14:16 +00:00

macOS Güvenlik Korumaları

AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Gatekeeper

Gatekeeper genellikle Karantina + Gatekeeper + XProtect kombinasyonunu ifade etmek için kullanılır. Bu 3 macOS güvenlik modülü, kullanıcıların potansiyel olarak zararlı yazılımları çalıştırmasını engellemeye çalışır.

Daha fazla bilgi için:

{% content-ref url="macos-gatekeeper.md" %} macos-gatekeeper.md {% endcontent-ref %}

İşlem Sınırlayıcıları

SIP - Sistem Bütünlük Koruması

{% content-ref url="macos-sip.md" %} macos-sip.md {% endcontent-ref %}

Sandbox

MacOS Sandbox, 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şeceğini sağlamaya yardımcı olur.

{% content-ref url="macos-sandbox/" %} macos-sandbox {% endcontent-ref %}

TCC - Şeffaflık, Onay ve Kontrol

TCC (Şeffaflık, Onay ve Kontrol) bir güvenlik çerçevesidir. Uygulamaların izinlerini yönetmek için tasarlanmıştır, özellikle hassas özelliklere erişimlerini düzenleyerek. Bu, konum hizmetleri, kişiler, fotoğraflar, mikrofon, kamera, erişilebilirlik ve tam disk erişimi gibi unsurları içerir. TCC, uygulamaların bu özelliklere yalnızca açıkça kullanıcı onayı aldıktan sonra erişebilmesini sağlayarak, gizlilik ve kişisel veriler üzerinde kontrolü güçlendirir.

{% content-ref url="macos-tcc/" %} macos-tcc {% endcontent-ref %}

Başlatma/Çevre Kısıtlamaları ve Güven Önbelleği

MacOS'ta başlatma kısıtlamaları, bir işlemi başlatanın kimin, nasıl ve nereden başlatabileceğini tanımlayarak işlem başlatmayı düzenleyen bir güvenlik özelliğidir. macOS Ventura'da tanıtılan bir güven önbelleği içinde sistem ikili dosyalarını kısıtlama kategorilerine ayırır. Her yürütülebilir ikili dosya, kendisi, ebeveyni ve sorumlu kısıtlamaları için belirli kurallara sahiptir. macOS Sonoma'da üçüncü taraf uygulamalara Çevre Kısıtlamaları olarak genişletilen bu özellikler, işlem başlatma koşullarını düzenleyerek potansiyel sistem açıklarını azaltmaya yardımcı olur.

{% content-ref url="macos-launch-environment-constraints.md" %} macos-launch-environment-constraints.md {% endcontent-ref %}

MRT - Zararlı Yazılım Kaldırma Aracı

Zararlı Yazılım Kaldırma Aracı (MRT), macOS'ın güvenlik altyapısının bir parçasıdır. Adından da anlaşılacağı gibi, MRT'nin temel işlevi, enfekte sistemlerden bilinen zararlı yazılımları kaldırmaktır.

Bir Mac'te zararlı yazılım tespit edildiğinde (XProtect veya başka bir yöntemle), MRT, zararlı yazılımı otomatik olarak kaldırmak için kullanılabilir. MRT sessizce arka planda çalışır ve genellikle sistem güncellendiğinde veya yeni bir zararlı yazılım tanımı indirildiğinde çalışır (zararlı yazılımı tespit etmek için MRT'nin kurallarının içinde olduğu gibi görünüyor).

XProtect ve MRT, macOS'ın güvenlik önlemlerinin bir parçası olsa da, farklı işlevlere sahiptir:

  • XProtect, önleyici bir araçtır. İndirilen dosyaları (belirli uygulamalar aracılığıyla) kontrol eder ve bilinen herhangi bir zararlı yazılım türünü tespit ederse, dosyanın ılmasını engeller, böylece zararlı yazılımın sisteminize bulaşmasını önler.
  • Öte yandan, MRT, tepkisel bir araçtır. Zararlı yazılım bir sisteme tespit edildikten sonra, hedef yazılımı temizlemek için çalışır.

MRT uygulaması /Library/Apple/System/Library/CoreServices/MRT.app konumundadır.

Arka Plan Görevleri Yönetimi

macOS, artık bir aracın kod yürütmesini kalıcı hale getirmek için bilinen bir teknik kullandığında her zaman uyarı verir (örneğin, Giriş Öğeleri, Daemon'lar...), böylece kullanıcı hangi yazılımın kalıcı olduğunu daha iyi bilir.

Bu, /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd konumunda bir daemon ve /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app konumunda bir ajan ile çalışır.

backgroundtaskmanagementd'nin bir kalıcı klasöre bir şeyin yüklendiğini bilmesinin yolu, FSEvents'leri alması ve bunlar için bazı işleyiciler oluşturmasıdır.

Ayrıca, Apple tarafından sık sık kalıcı olan bilinen uygulamaları içeren bir plist dosyası bulunur: /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist

[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]

Numaralandırma

Apple cli aracını kullanarak yapılandırılmış tüm arka plan öğelerini numaralandırmak mümkündür:

# The tool will always ask for the users password
sfltool dumpbtm

Ayrıca, bu bilgileri DumpBTM ile de listeleyebilirsiniz.

# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM

Bu bilgi /private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm dosyasında saklanmaktadır ve Terminal FDA'ya ihtiyaç duyar.

BTM ile Oynamak

Yeni bir kalıcılık bulunduğunda ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD türünde bir olay meydana gelir. Bu nedenle, bu olayın gönderilmesini veya ajanın kullanıcıyı uyarılmasını engelleyen herhangi bir yol, bir saldırganın BTM'yi atlamasına yardımcı olacaktır.

  • Veritabanını sıfırlama: Aşağıdaki komutu çalıştırmak veritabanını sıfırlayacak (temelden yeniden oluşturmalıdır), ancak bir şekilde, bu komutu çalıştırdıktan sonra sistem yeniden başlatılana kadar yeni bir kalıcılık uyarılmayacaktır.
  • root yetkisi gereklidir.
# Reset the database
sfltool resettbtm
  • Ajanı Durdurun: Yeni tespitler bulunduğunda kullanıcıya uyarı göndermeyecek şekilde ajanı durdurmak mümkündür.
# Get PID
pgrep BackgroundTaskManagementAgent
1011

# Stop it
kill -SIGSTOP 1011

# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
  • Hata: Kalıcılığı oluşturan işlem hemen ardından hızlı bir şekilde sona ererse, arka plan süreci onun hakkında bilgi almaya çalışacak, başarısız olacak ve yeni bir şeyin kalıcı olduğunu gösteren olayı gönderemeyecektir.

BTM hakkında daha fazla bilgi ve referanslar:

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Red Team Expert) ile öğrenin!

HackTricks'i desteklemenin diğer yolları: