İçeriğe geç
Tüm blog yazıları

Kavram ve yöntem · Blog

macOS Red Team - XPC ile Kalıcılık ve Post-Exploitation

macOS filoları çoğu zaman Windows uçlarına sağlanan EDR görünürlüğünün dışında kalmaktadır. Bu yazı, red team çalışmalarımızda kullandığımız XPC tabanlı kalıcılık aracını ve karşısındaki BTM, SIP, TCC, Gatekeeper ve Keychain katmanlarını saha deneyimlerimizle anlatmaktadır.

Bu yazı, tamamen yetkilendirilmiş kırmızı takım (red team) çalışmaları ve kendi laboratuvar ortamımızdaki araştırmalar çerçevesinde hazırlanmıştır.

Bu yazıda anlatılan içeriğin beslendiği Github Repomuza buradan ulaşabilirsiniz: https://github.com/redinpulse/RinP-xpc-framework

Giriş

macOS ortamlarına yönelik red team çalışmalarımızın post-exploitation aşamasında kalıcılık sağlamak için kullandığımız araç, macOS BTM (Background Task Management) servisindeki tasarımsal bir zayıflıktan yararlanmaktadır. Yeni bir servis oluşturarak kendisini meşru bir Apple servisi gibi launchd yaşam döngüsüne yerleştirmektedir. Böylece mevcut oturum sonlansa dahi planlanan zamanda yeniden bağlantı kurulabilen ve imza tabanlı tespit mekanizmalarına yakalanma olasılığı azaltılmış bir komuta kanalı elde edilmektedir.

Kurumsal Mac filoları çoğu zaman Windows uç noktalarına sağlanan EDR görünürlüğünün dışında veya daha sınırlı bir izleme kapsamında kalmaktadır. Bu yazıda, söz konusu görünürlük boşluğunu hedefleyen iç aracımızın yeteneklerini ve karşı karşıya kaldığı macOS güvenlik katmanlarını - BTM, SIP, TCC, Gatekeeper ve Keychain ACL - saha deneyimlerimiz ışığında özetliyoruz.

Kalıcılık neden kritik?

Bir red team çalışmasının asıl değer üreten aşaması, yalnızca ilk erişimin sağlanması değil, bu erişimin sürdürülebilir olduğunun kanıtlanmasıdır. Meterpreter veya shell oturumları; ağ kesintisi, sistemin uyku moduna geçmesi ya da ilgili sürecin sonlandırılması gibi nedenlerle her an düşebilmektedir. Kırmızı takım açısından kalıcılık, temelde şu üç soruya yanıt vermektedir:

  • Ertesi gün yeniden erişim sağlayabiliyor muyuz?
  • Geri döndüğümüzde aynı ayrıcalık seviyesini koruyor muyuz?
  • Bu süreçte mavi takımın imza tabanlı tespit kurallarına yakalanıyor muyuz?

Aracımız, macOS’un kendi bileşenlerinden yararlanarak bu üç soruya yanıt vermeyi amaçlamaktadır.

Aracımızın yetenekleri

Kalıcılık ve iletişim

  • BTM kısıtlarını aşarak LaunchDaemon kurulumu - launchctl bootstrap ve kickstart zinciriyle BTM’nin engelleyici olmayan (advisory) denetim modelini aşmaktadır. Oluşturulan servis, sistem açılışlarında otomatik olarak başlatılmakta ve KeepAlive mekanizmasıyla çalışır durumda tutulmaktadır.
  • XPC tabanlı iletişim kanalı - İletişim, ağ soketleri yerine macOS’un Mach tabanlı IPC altyapısı ve launchd servis kayıt mekanizması üzerinden gerçekleştirilmektedir. Bu sayede iletişim ve dinleme modeli, meşru sistem servislerinin davranışına büyük ölçüde benzemektedir.
  • Dinamik servis adlandırması - Servis adı, her kurulumda com.apple.* desenine uygun biçimde rastgele üretilmektedir. Binary içinde gömülü bir hedef servis adı veya sabit bir IoC ifadesi bulunmamaktadır.
  • Oturumdan bağımsız çalışma - İstemci, tek amaçlı ve düşük ayak izine sahip küçük bir binary olarak tasarlanmıştır. Gerektiğinde çalıştırılmakta, işlemini tamamladıktan sonra kapanmaktadır.

Post-exploitation yetenekleri

  • Root bağlamında komut çalıştırma, argüman ve ortam değişkenleri belirlenerek yeni süreç oluşturma ve dosya okuma.
  • TCC veritabanını analiz etme ve dışa aktarma - Kamera, mikrofon, ekran kaydı ve tam disk erişimi gibi izinlerin haritasını çıkarmaktadır. SIP’in devre dışı bırakıldığı sistemlerde TCC kayıtlarının değiştirilmesini de desteklemektedir.
  • Keychain öğelerini keşfetme ve servis/hesap envanteri oluşturma; SSH anahtarlarını toplama ve kayıtlı Wi-Fi ağlarını (SSID) listeleme.
  • Gözetim ve sistem görünürlüğü - Yerel macOS API’leri üzerinden ekran görüntüsü alma, pano içeriğini okuma ve çalışan süreçleri listeleme.
  • Güvenlik ve ortam keşfi - SIP, Gatekeeper, FileVault ve güvenlik duvarı durumlarını denetleme; on dört farklı güvenlik ürününü tespit etme; sistemdeki XPC broker’larının erişilebilirliğini tarama ve ağ arayüzü envanteri oluşturma.

Operasyonel verimlilik

  • On dokuz Metasploit post modülü ve tek komutla çalıştırılabilen altı aşamalı otomasyon zinciri: sistem envanteri, güvenlik değerlendirmesi, kimlik bilgisi toplama, TCC analizi, kanıt üretimi ve operasyonel izlerin temizlenmesi. Elde edilen tüm çıktılar loot olarak kaydedilmektedir.
  • Çıktı bir pipe’a yönlendirildiğinde tek satırlık JSON üretmekte, böylece otomasyon ve mevcut iş akışlarıyla doğrudan bütünleşebilmektedir.
  • Apple Silicon ve Intel tabanlı Mac sistemleri için universal binary desteği sunmaktadır.

Karşımızdaki mimari: macOS kalıcılık unsurları ve güvenlik mekanizmaları

Aracı tasarlarken dikkate almak zorunda olduğumuz her katman, aynı zamanda kurumların Mac filolarındaki gerçek savunma kapasitesine ilişkin önemli ipuçları sunmaktadır.

launchd ve LaunchDaemon’lar. macOS’ta sistem düzeyinde kalıcılığın doğal adreslerinden biri, /Library/LaunchDaemons altındaki plist dosyaları ve root ayrıcalıklarıyla çalışan binary’lerdir. Meşru yazılımlar da aynı mekanizmayı kullandığından bu dizin, tespit açısından oldukça gürültülüdür. Bu nedenle ayırt edici göstergeler yalnızca dosyanın konumu değildir; kod imzası, kaynağı ve koşu zamanı (runtime) davranışıdır.

BTM (Background Task Management). BTM, Apple’ın kullanıcı onayı gerektirmeden arka planda çalışan kalıcılık öğelerini izlemek için kullandığı denetim katmanıdır. Tasarımındaki kritik zayıflık, disposition bilgisinin danışma niteliğinde olmasıdır: BTM bir servisi işaretleyebilmekte ve kayda alabilmekte, ancak koşu anında doğrudan engellememektedir. Aracımızın kullandığı bootstrap ve kickstart zinciri tam olarak bu boşluktan yararlanmaktadır. Laboratuvar testlerimizde BTM, ilgili servisi [enabled, allowed] durumuyla kaydetmiş ancak çalışmasını engellememiştir. Bu davranış, klasik anlamda bir yazılım zafiyetinin sömürülmesinden çok mimari bir denetim tercihinden kaynaklanmaktadır. BTM telemetrisini izlemeyen kurumlar açısından ise sessiz bir görünürlük boşluğu oluşturmaktadır.

SIP (System Integrity Protection). SIP devre dışı bırakıldığında root kullanıcısının etki alanı önemli ölçüde genişlemektedir; buna TCC veritabanına doğrudan yazma imkânı da dahildir. SIP etkin olduğunda ise platform korumaları bu yolu kapatmaktadır. Bu nedenle hedef sistemin SIP durumunu önceden belirlemek, red team çalışmasında kullanılacak zincirin ve erişilebilecek yeteneklerin seçimi açısından kritik önem taşımaktadır.

TCC (Transparency, Consent and Control). TCC; kamera, mikrofon, ekran kaydı ve tam disk erişimi gibi hassas izinleri merkezi olarak yönetmektedir. Root ayrıcalığına sahip bir süreç dahi, desteklenen API’ler üzerinden kendisine keyfî biçimde izin atayamamaktadır. Bununla birlikte SIP’in devre dışı olduğu laboratuvar ortamlarında TCC veritabanı üzerinde doğrudan değişiklik yapılabilmektedir. Testlerimiz sırasında örnek bir uygulamaya kamera izni eklenmiş, değişiklik veritabanı dökümü üzerinden doğrulanmış ve test sonunda geri alınmıştır.

Keychain ve ACL modeli. Keychain, macOS’un en dirençli güvenlik katmanlarından biridir. Wi-Fi parolaları ve diğer gizli bilgiler, kullanıcı etkileşimi gerektirebilen ACL politikalarıyla korunmaktadır. Bu nedenle root ayrıcalığı, özellikle kullanıcı arayüzü bulunmayan daemon bağlamında, her öğeye otomatik erişim sağlamamaktadır; erişim girişimleri errSecInteractionNotAllowed hatasıyla sonuçlanabilmektedir. Aracımız bu sınırı dikkate alarak servis adları, hesap bilgileri ve SSID listeleri gibi erişilebilir veriler üzerinden envanter oluşturmaktadır. Bir güvenlik sınırının nerede başladığını bilmek, saldırı yeteneği kadar önemli bir mühendislik gereksinimidir.

Gatekeeper, FileVault ve EDR. Kod imzası doğrulaması, disk şifreleme ve uç nokta güvenlik çözümleri savunma zincirinin dış katmanlarını oluşturmaktadır. Aracın imza tabanlı tespit yüzeyi azaltılmış olsa da tamamen görünmez değildir. Yeni bir plist oluşturulması, imzasız bir binary’nin yerleştirilmesi ve launchctl bootstrap kullanılması gibi davranışlar üzerinden tespit edilmesi hâlâ mümkündür. Engagement raporlarımızda bu göstergeleri, mavi takımın kullanabileceği tespit ve izleme noktaları olarak ayrıca belgeliyoruz.

Tüm bu katmanlar tek bir temel ilkeye işaret etmektedir: macOS’ta ayrıcalık kazanmak ile gizli verilere erişmek aynı şey değildir. Root erişimi, TCC veya Keychain tarafından korunan her veriye otomatik olarak ulaşılabileceği anlamına gelmemektedir. Başarılı bir macOS red team çalışması, yalnızca root seviyesine ulaşıldığını göstermekle kalmamakta; bu ayrıcalığın nerede etkili olduğunu ve hangi güvenlik duvarlarında sınırlandığını da açık biçimde haritalandırmaktadır.

Kurumlar için anlamı

Mac filoları büyüdükçe kurumlarda sık karşılaşılan bir görünürlük farkı ortaya çıkmaktadır: Windows uç noktalarında kapsamlı EDR takibi, macOS sistemlerinde ise parçalı ve sınırlı izleme.

BTM telemetrisi takip edilmiyor, imzasız LaunchDaemon’lar denetlenmiyor ve TCC değişiklikleri alarm üretmiyorsa, saldırganların düşük gürültüyle kalıcılık sağlaması hâlâ görece kolaydır. Kendi aracımızı geliştirmemizin temel nedeni, müşteri ortamlarındaki bu kör noktaları varsayımlarla değil, doğrulanmış bulgularla ortaya koymaktır. Hangi aşamalarda tespit edilmediğimizi ve savunma mekanizmalarının hangi noktalarda devreye girdiğini aynı şeffaflıkla raporluyoruz.

Nitelikli bir red team çalışmasının değeri, yalnızca görünmeden ilerleyebilmekte değil, kurumun mevcut savunma kapasitesinin nerede etkili olduğunu ve nerede yetersiz kaldığını ölçebilmekte yatmaktadır.

Red Team hizmetlerimiz

Red in Pulse olarak macOS’un da dahil olduğu çok platformlu red team, saldırgan simülasyonu (adversary simulation) ve purple team çalışmaları yürütüyoruz. Elde ettiğimiz bulguları yalnızca teknik zafiyetler olarak sunmakla kalmıyor; mavi takımınızın doğrudan kullanabileceği, önceliklendirilmiş ve tekrarlanabilir tespit senaryolarına dönüştürüyoruz.

macOS güvenlik durumunuzu gerçek bir saldırganın yöntem ve bakış açısıyla değerlendirmek isterseniz, red team hizmetlerimiz hakkında görüşmek için bizimle iletişime geçebilirsiniz.

Yazıda Geçen Kavramlar ve Kısaltmalar

BTM (Background Task Management)

Apple'ın kullanıcı onayı gerektirmeden arka planda çalışan kalıcılık öğelerini izlediği denetim katmanıdır. Bir öğeyi işaretleyip kaydetmekte, ancak koşu anında doğrudan engellememektedir.

LaunchDaemon (launchd)

macOS'ta sistem servislerini başlatan ve yöneten `launchd` süreci ile bu sürece root ayrıcalıklarıyla kaydedilen servis tanımlarıdır. Sistem düzeyinde kalıcılığın doğal adreslerinden biridir.

XPC (Mach tabanlı IPC)

macOS'un süreçler arası iletişim altyapısıdır. Ağ soketi yerine bu kanalın kullanılması, iletişimi meşru sistem servislerinin davranışına benzetmektedir.

TCC (Transparency, Consent and Control)

Kamera, mikrofon, ekran kaydı ve tam disk erişimi gibi hassas izinleri merkezi olarak yöneten katmandır. Root ayrıcalığı dahi desteklenen API'ler üzerinden keyfî izin atamamaktadır.

SIP (System Integrity Protection)

macOS'un platform korumalarını uygulayan katmandır. Devre dışı bırakıldığında root kullanıcısının etki alanı genişlemekte, buna TCC veritabanına doğrudan yazma da dahil olmaktadır.

// BLOG

macOS filonuzun kalıcılık görünürlüğünü ölçtürün

BTM telemetrisinin, imzasız LaunchDaemon'ların ve TCC değişikliklerinin sizin ortamınızda gerçekten görülüp görülmediğini; hangi aşamada tespit edildiğimizi ve savunmanın nerede devreye girdiğini kanıtlarla gösteren bir red team çalışması için kapsam görüşmesi planlayabilirsiniz.

macOS Red Team: XPC Kalıcılık ve BTM Boşluğu | RinP · Offensive Security