macOS Mühürlenmiş Sistem Bölümü & DataVault

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin

Sealed System Volume (SSV)

Temel Bilgiler

macOS Big Sur (11.0) ile başlayarak, sistem hacmi APFS snapshot hash tree kullanılarak kriptografik olarak mühürlenir. Bu, Sealed System Volume (SSV) olarak adlandırılır. Sistem bölümü yalnızca okunur olarak bağlanır ve yapılacak herhangi bir değişiklik, önyükleme sırasında doğrulanan mührü bozar.

SSV şunları sağlar:

  • Tamper detection — sistem ikili dosyalarına/framework’lerine yapılan herhangi bir değişiklik kırılmış kriptografik mühür aracılığıyla tespit edilebilir
  • Rollback protection — önyükleme işlemi sistem anlık görüntüsünün bütünlüğünü doğrular
  • Rootkit prevention — root bile sistem hacmindeki dosyaları kalıcı olarak değiştiremez (mührü kırmadan)

SSV Durumunu Kontrol Etme

# Check if authenticated root is enabled (SSV seal verification)
csrutil authenticated-root status

# List APFS snapshots (the sealed snapshot is the boot volume)
diskutil apfs listSnapshots disk3s1

# Check mount status (should show read-only)
mount | grep " / "

# Verify the system volume seal
diskutil apfs listVolumeGroups

SSV Writer İzinleri

Certain Apple system binaries have entitlements that allow them to modify or manage the sealed system volume:

İzinAmaç
com.apple.private.apfs.revert-to-snapshotSystem volume’u önceki bir snapshot’a geri döndürür
com.apple.private.apfs.create-sealed-snapshotSistem güncellemelerinden sonra yeni bir sealed snapshot oluşturur
com.apple.rootless.install.heritableSIP korumalı yollara yazma izni verir (alt süreçler tarafından devralınır)
com.apple.rootless.installSIP korumalı yollara yazma izni verir

SSV Writer’larını Bulma

# Search for binaries with SSV-related entitlements
find /System /usr -type f -perm +111 -exec sh -c '
ents=$(codesign -d --entitlements - "{}" 2>&1)
echo "$ents" | grep -q "apfs.revert-to-snapshot\|apfs.create-sealed-snapshot\|rootless.install" && echo "{}"
' \; 2>/dev/null

# Using the scanner database
sqlite3 /tmp/executables.db "
SELECT e.path, c.name
FROM executables e
JOIN executable_capabilities ec ON e.id = ec.executable_id
JOIN capabilities c ON ec.capability_id = c.id
WHERE c.name = 'ssv_writer';"

Saldırı Senaryoları

Snapshot Rollback Attack

Bir saldırgan com.apple.private.apfs.revert-to-snapshot etiketine sahip bir binary’i ele geçirirse, sistem hacmini güncelleme öncesi bir duruma geri alabilir, bilinen zafiyetleri geri yükleyerek:

# Conceptual — the snapshot revert operation would:
# 1. List available snapshots
diskutil apfs listSnapshots disk3s1

# 2. Revert to an older snapshot (requires the entitlement)
# This restores the system to a state with known, patched vulnerabilities

Warning

Anlık görüntü (snapshot) geri alımı aslında güvenlik güncellemelerini geri alır, daha önce yamalanmış çekirdek ve sistem zafiyetlerini geri yükler. Bu, modern macOS’ta mümkün olan en tehlikeli işlemlerden biridir.

Sistem İkili Değiştirme

With SIP bypass + SSV write capability, an attacker can:

  1. Sistem hacmini okuma-yazma olarak bağlamak
  2. Bir system daemon’ını veya framework kütüphanesini trojaned bir sürümle değiştirmek
  3. Snapshot’i yeniden mühürlemek (veya SIP zaten zayıflatılmışsa kırık mühürü kabul etmek)
  4. Rootkit yeniden başlatmalar arasında kalıcı olur ve userland tespit araçlarına görünmez

Gerçek Dünya CVE’leri

CVEAçıklama
CVE-2021-30892Shrootlesssystem_installd üzerinden SSV değişikliğine izin veren SIP bypass’ı
CVE-2022-22583PackageKit’in snapshot işleme mekanizması üzerinden SSV bypass’ı
CVE-2022-46689SIP korumalı dosyalara yazmaya izin veren race condition

DataVault

Temel Bilgiler

DataVault, hassas sistem veritabanları için Apple’ın koruma katmanıdır. Hatta root, DataVault korumalı dosyalara erişemez — sadece belirli entitlements’a sahip prosesler bunları okuyup değiştirebilir. Korunan depolar şunları içerir:

Korunan VeritabanıYolİçerik
TCC (system)/Library/Application Support/com.apple.TCC/TCC.dbSistem genelinde TCC gizlilik kararları
TCC (user)~/Library/Application Support/com.apple.TCC/TCC.dbKullanıcı başına TCC gizlilik kararları
Keychain (system)/Library/Keychains/System.keychainSistem keychain’i
Keychain (user)~/Library/Keychains/login.keychain-dbKullanıcı keychain’i

DataVault koruması, çekirdek tarafından doğrulanan genişletilmiş öznitelikler ve hacim koruma bayrakları kullanılarak dosya sistemi düzeyinde uygulanır.

DataVault Denetleyici Entitlements

com.apple.private.tcc.manager         — Full TCC database read/write
com.apple.private.tcc.manager.check-by-audit-token — TCC checks via audit token
com.apple.private.tcc.allow           — Access specific TCC-protected resources
com.apple.rootless.storage.TCC        — Write to TCC database (SIP-related)

DataVault Denetleyicilerini Bulma

# Check DataVault protection on the TCC database
ls -le@ "/Library/Application Support/com.apple.TCC/TCC.db"

# Find binaries with TCC management entitlements
find /System /usr -type f -perm +111 -exec sh -c '
ents=$(codesign -d --entitlements - "{}" 2>&1)
echo "$ents" | grep -q "private.tcc\|datavault\|rootless.storage.TCC" && echo "{}"
' \; 2>/dev/null

# Using the scanner
sqlite3 /tmp/executables.db "
SELECT e.path, c.name
FROM executables e
JOIN executable_capabilities ec ON e.id = ec.executable_id
JOIN capabilities c ON ec.capability_id = c.id
WHERE c.name = 'datavault_controller';"

Saldırı Senaryoları

Doğrudan TCC veritabanı değişikliği

Bir saldırgan bir DataVault controller binary’sini ele geçirirse (ör. bir işleme com.apple.private.tcc.manager ile kod enjeksiyonu yoluyla), herhangi bir uygulamaya herhangi bir TCC izni vermek için TCC veritabanını doğrudan değiştirebilir:

-- Grant Full Disk Access to a malicious binary (conceptual)
INSERT INTO access (service, client, client_type, auth_value, auth_reason, auth_version)
VALUES ('kTCCServiceSystemPolicyAllFiles', 'com.attacker.malware', 0, 2, 4, 1);

-- Grant camera access without a prompt
INSERT INTO access (service, client, client_type, auth_value, auth_reason, auth_version)
VALUES ('kTCCServiceCamera', 'com.attacker.malware', 0, 2, 4, 1);

Caution

TCC veritabanı değişikliği nihai gizlilik atlatmasıdır — herhangi bir izni sessizce, kullanıcıya bir istem veya görünür bir gösterge olmadan verir. Tarihsel olarak, çok sayıda macOS ayrıcalık yükseltme zinciri son payload olarak TCC veritabanı yazmalarıyla sonlanmıştır.

Keychain Veritabanı Erişimi

DataVault ayrıca keychain’i destekleyen dosyaları da korur. İhlal edilmiş bir DataVault kontrolcüsü şunları yapabilir:

  1. Keychain’in ham veritabanı dosyalarını okuyabilir
  2. Şifrelenmiş keychain öğelerini çıkarabilir
  3. Kullanıcının parolası veya kurtarılan anahtarlar kullanılarak çevrimdışı şifre çözme girişiminde bulunabilir

Real-World CVEs Involving DataVault/TCC Bypass

CVEDescription
CVE-2023-40424DataVault tarafından korunan dosyaya symlink aracılığıyla TCC bypass
CVE-2023-32364TCC veritabanı değişikliğine yol açan sandbox bypass
CVE-2021-30713XCSSET malware’in TCC.db’yi değiştirerek gerçekleştirdiği TCC bypass
CVE-2020-9934Ortam değişkeni manipülasyonu yoluyla TCC bypass
CVE-2020-29621Music app’in TCC bypass’ı DataVault’a erişim sağlıyor

Referanslar

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin